openapi: 3.0.1
info:
  title: Pipedrive API v2
  version: 2.0.0
servers:
  - url: 'https://api.pipedrive.com/api/v2'
tags:
  - name: Activities
    description: |
      Activities are appointments/tasks/events on a calendar that can be associated with a deal, a lead, a person and an organization. Activities can be of different type (such as call, meeting, lunch or a custom type - see ActivityTypes object) and can be assigned to a particular user. Note that activities can also be created without a specific date/time.
  - name: ActivityFields
    description: |
      Activity fields represent different fields that an activity has.
  - name: Deals
    description: |
      Deals represent ongoing, lost or won sales to an organization or to a person. Each deal has a monetary value and must be placed in a stage. Deals can be owned by a user, and followed by one or many users. Each deal consists of standard data fields but can also contain a number of custom fields. The custom fields can be recognized by long hashes as keys. These hashes can be mapped against `DealField.key`. The corresponding label for each such custom field can be obtained from `DealField.name`.
  - name: DealProducts
    description: |
      Deal products are goods or services attached to a deal. Each deal product links a product to a deal with configurable quantity, pricing, and discounts, and contributes to the total value of the deal.
  - name: DealInstallments
    description: |
      Deal installments are scheduled payment entries attached to a deal, enabling split payment arrangements.
  - name: DealFields
    description: |
      Deal fields represent the schema for a deal in the context of the company of the authorized user. Each company can have a different schema for their deals, with various custom fields.
  - name: Products
    description: |
      Products are the goods or services you are dealing with. Each product can have N different price points - firstly, each product can have a price in N different currencies, and secondly, each product can have N variations of itself, each having N prices in different currencies. Note that only one price per variation per currency is supported. Products can be instantiated to deals. In the context of instantiation, a custom price, quantity and discount can be applied.
  - name: ProductFields
    description: |
      Product fields represent the schema for a product in the context of the company of the authorized user. Each company can have a different schema for their products, with various custom fields.
  - name: Leads
    description: |
      Leads are potential deals stored in Leads Inbox before they are archived or converted to a deal. Each lead needs to be named (using the `title` field) and be linked to a person or an organization. In addition to that, a lead can contain most of the fields a deal can (such as `value` or `expected_close_date`).
  - name: Organizations
    description: |
      Organizations are companies and other kinds of organizations you are making deals with. Persons can be associated with organizations so that each organization can contain one or more persons.
  - name: OrganizationFields
    description: |
      Organization fields represent the schema for an organization in the context of the company of the authorized user. Each company can have a different schema for their organizations, with various custom fields.
  - name: Persons
    description: |
      Persons are your contacts, the customers you are doing deals with. Each person can belong to an organization. Persons should not be confused with users.
  - name: PersonFields
    description: |
      Person fields represent the schema for a person in the context of the company of the authorized user. Each company can have a different schema for their persons, with various custom fields.
  - name: ItemSearch
    description: |
      Ordered reference objects, pointing to either deals, persons, organizations, leads, products, files or mail attachments.
  - name: Stages
    description: |
      Stage is a logical component of a pipeline, and essentially a bucket that can hold a number of deals. In the context of the pipeline a stage belongs to, it has an order number which defines the order of stages in that pipeline.
  - name: Pipelines
    description: |
      Pipelines are essentially ordered collections of stages.
  - name: Users
    description: |
      Users are individuals who have a Pipedrive account and can interact with its features.
  - name: Projects
    description: |
      Projects are used to plan and manage work that spans across deals, activities, and tasks. Each project can have a board, phases, and associated activities and tasks.
  - name: ProjectBoards
    description: |
      Project boards are the top-level containers for organizing projects into phases. Each board contains one or more phases that define the workflow stages for projects.
  - name: ProjectPhases
    description: |
      Project phases are the stages within a project board that define the workflow for projects. Each phase belongs to a board and can contain multiple projects.
  - name: ProjectTemplates
    description: |
      Project templates are reusable blueprints for creating projects with predefined structure and settings.
  - name: ProjectFields
    description: |
      Project fields represent the schema for a project in the context of the company of the authorized user. Each company can have a different schema for their projects, with various custom fields.
  - name: Tasks
    description: |
      Tasks are action items that can be associated with a project.
  - name: Beta
    description: |
      Beta endpoints are endpoints that may have changes without a regular 60-90 day notice period.
paths:
  /activities:
    get:
      summary: Get all activities
      description: Returns data about all activities.
      x-token-cost: 10
      operationId: getActivities
      tags:
        - Activities
      security:
        - api_key: []
        - oauth2:
            - 'activities:read'
            - 'activities:full'
      parameters:
        - in: query
          name: filter_id
          schema:
            type: integer
          description: 'If supplied, only activities matching the specified filter are returned'
        - in: query
          name: ids
          description: 'Optional comma separated string array of up to 100 entity ids to fetch. If filter_id is provided, this is ignored. If any of the requested entities do not exist or are not visible, they are not included in the response.'
          schema:
            type: string
        - in: query
          name: owner_id
          schema:
            type: integer
          description: 'If supplied, only activities owned by the specified user are returned. If filter_id is provided, this is ignored.'
        - in: query
          name: deal_id
          schema:
            type: integer
          description: 'If supplied, only activities linked to the specified deal are returned. If filter_id is provided, this is ignored.'
        - in: query
          name: lead_id
          schema:
            type: string
          description: 'If supplied, only activities linked to the specified lead are returned. If filter_id is provided, this is ignored.'
        - in: query
          name: person_id
          schema:
            type: integer
          description: 'If supplied, only activities whose primary participant is the given person are returned. If filter_id is provided, this is ignored.'
        - in: query
          name: org_id
          schema:
            type: integer
          description: 'If supplied, only activities linked to the specified organization are returned. If filter_id is provided, this is ignored.'
        - in: query
          name: done
          schema:
            type: boolean
          description: 'If supplied, only activities with specified ''done'' flag value are returned'
        - in: query
          name: updated_since
          schema:
            type: string
          description: 'If set, only activities with an `update_time` later than or equal to this time are returned. In RFC3339 format, e.g. 2025-01-01T10:20:00Z.'
        - in: query
          name: updated_until
          schema:
            type: string
          description: 'If set, only activities with an `update_time` earlier than this time are returned. In RFC3339 format, e.g. 2025-01-01T10:20:00Z.'
        - in: query
          name: sort_by
          description: 'The field to sort by. Supported fields: `id`, `update_time`, `add_time`, `due_date`.'
          schema:
            type: string
            default: id
            enum:
              - id
              - update_time
              - add_time
              - due_date
        - in: query
          name: sort_direction
          description: 'The sorting direction. Supported values: `asc`, `desc`.'
          schema:
            type: string
            default: asc
            enum:
              - asc
              - desc
        - in: query
          name: include_fields
          description: Optional comma separated string array of additional fields to include
          schema:
            type: string
            enum:
              - attendees
        - in: query
          name: limit
          description: 'For pagination, the limit of entries to be returned. If not provided, 100 items will be returned. Please note that a maximum value of 500 is allowed.'
          schema:
            type: integer
            example: 100
        - in: query
          name: cursor
          required: false
          schema:
            type: string
          description: 'For pagination, the marker (an opaque string value) representing the first item on the next page'
      responses:
        '200':
          description: Get all activities
          content:
            application/json:
              schema:
                type: object
                title: GetActivitiesResponse
                allOf:
                  - title: baseResponse
                    type: object
                    properties:
                      success:
                        type: boolean
                        description: If the response is successful or not
                  - type: object
                    properties:
                      data:
                        type: array
                        description: Activities array
                        items:
                          type: object
                          properties:
                            id:
                              type: integer
                              description: The ID of the activity
                            subject:
                              type: string
                              description: The subject of the activity
                            type:
                              type: string
                              description: The type of the activity
                            owner_id:
                              type: integer
                              description: The ID of the user who owns the activity
                            creator_user_id:
                              type: integer
                              description: The ID of the user who created the activity
                            is_deleted:
                              type: boolean
                              description: Whether the activity is deleted or not
                            add_time:
                              type: string
                              description: The creation date and time of the activity
                            update_time:
                              type: string
                              description: The last updated date and time of the activity
                            deal_id:
                              type: integer
                              description: The ID of the deal linked to the activity
                            lead_id:
                              type: string
                              description: The ID of the lead linked to the activity
                            person_id:
                              type: integer
                              description: The ID of the person linked to the activity
                            org_id:
                              type: integer
                              description: The ID of the organization linked to the activity
                            project_id:
                              type: integer
                              description: The ID of the project linked to the activity
                            due_date:
                              type: string
                              description: The due date of the activity
                            due_time:
                              type: string
                              description: The due time of the activity
                            duration:
                              type: string
                              description: The duration of the activity
                            busy:
                              type: boolean
                              description: Whether the activity marks the assignee as busy or not in their calendar
                            done:
                              type: boolean
                              description: Whether the activity is marked as done or not
                            marked_as_done_time:
                              type: string
                              description: The date and time when the activity was marked as done
                            location:
                              type: object
                              description: Location of the activity
                              properties:
                                value:
                                  type: string
                                  description: The full address of the activity
                                country:
                                  type: string
                                  description: Country of the activity
                                admin_area_level_1:
                                  type: string
                                  description: Admin area level 1 (e.g. state) of the activity
                                admin_area_level_2:
                                  type: string
                                  description: Admin area level 2 (e.g. county) of the activity
                                locality:
                                  type: string
                                  description: Locality (e.g. city) of the activity
                                sublocality:
                                  type: string
                                  description: Sublocality (e.g. neighborhood) of the activity
                                route:
                                  type: string
                                  description: Route (e.g. street) of the activity
                                street_number:
                                  type: string
                                  description: Street number of the activity
                                subpremise:
                                  type: string
                                  description: Subpremise (e.g. apartment/suite number) of the activity
                                postal_code:
                                  type: string
                                  description: Postal code of the activity
                            participants:
                              type: array
                              description: The participants of the activity
                              items:
                                type: object
                                properties:
                                  person_id:
                                    type: integer
                                    description: The ID of the person
                                  primary:
                                    type: boolean
                                    description: Whether the person is the primary participant or not
                            attendees:
                              type: array
                              description: The attendees of the activity
                              items:
                                type: object
                                properties:
                                  email:
                                    type: string
                                    description: The email address of the attendee
                                  name:
                                    type: string
                                    description: The name of the attendee
                                  status:
                                    type: string
                                    description: The status of the attendee
                                  is_organizer:
                                    type: boolean
                                    description: Whether the attendee is the organizer or not
                                  person_id:
                                    type: integer
                                    description: The ID of the person if the attendee has a person record
                                  user_id:
                                    type: integer
                                    description: The ID of the user if the attendee is a user
                            conference_meeting_client:
                              type: string
                              description: The client used for the conference meeting
                            conference_meeting_url:
                              type: string
                              description: The URL of the conference meeting
                            conference_meeting_id:
                              type: string
                              description: The ID of the conference meeting
                            public_description:
                              type: string
                              description: The public description of the activity
                            priority:
                              type: integer
                              description: The priority of the activity. Mappable to a specific string using activityFields API.
                            note:
                              type: string
                              description: The note of the activity
                      additional_data:
                        type: object
                        description: The additional data of the list
                        properties:
                          next_cursor:
                            type: string
                            description: The first item on the next page. The value of the `next_cursor` field will be `null` if you have reached the end of the dataset and there’s no more pages to be returned.
              example:
                success: true
                data:
                  - id: 1
                    subject: Activity Subject
                    type: activity_type
                    owner_id: 1
                    creator_user_id: 1
                    is_deleted: false
                    add_time: '2021-01-01T00:00:00Z'
                    update_time: '2021-01-01T00:00:00Z'
                    deal_id: 5
                    lead_id: abc-def
                    person_id: 6
                    org_id: 7
                    project_id: 8
                    due_date: '2021-01-01'
                    due_time: '15:00:00'
                    duration: '01:00:00'
                    busy: true
                    done: true
                    marked_as_done_time: '2021-01-01T00:00:00Z'
                    location:
                      value: 123 Main St
                      country: USA
                      admin_area_level_1: CA
                      admin_area_level_2: Santa Clara
                      locality: Sunnyvale
                      sublocality: Downtown
                      route: Main St
                      street_number: '123'
                      subpremise: Apt 1
                      postal_code: '94085'
                    participants:
                      - person_id: 1
                        primary: true
                    attendees:
                      - email: some@email.com
                        name: Some Name
                        status: accepted
                        is_organizer: true
                        person_id: 1
                        user_id: 1
                    conference_meeting_client: google_meet
                    conference_meeting_url: 'https://meet.google.com/abc-xyz'
                    conference_meeting_id: abc-xyz
                    public_description: Public Description
                    priority: 263
                    note: Note
                additional_data:
                  next_cursor: eyJmaWVsZCI6ImlkIiwiZmllbGRWYWx1ZSI6Nywic29ydERpcmVjdGlvbiI6ImFzYyIsImlkIjo3fQ
    post:
      summary: Add a new activity
      description: Adds a new activity.
      x-token-cost: 5
      operationId: addActivity
      tags:
        - Activities
      security:
        - api_key: []
        - oauth2:
            - 'activities:full'
      requestBody:
        content:
          application/json:
            schema:
              type: object
              properties:
                subject:
                  type: string
                  description: The subject of the activity
                type:
                  type: string
                  description: The type of the activity
                owner_id:
                  type: integer
                  description: The ID of the user who owns the activity
                deal_id:
                  type: integer
                  description: The ID of the deal linked to the activity
                lead_id:
                  type: string
                  description: The ID of the lead linked to the activity
                person_id:
                  type: integer
                  description: The ID of the person linked to the activity
                org_id:
                  type: integer
                  description: The ID of the organization linked to the activity
                project_id:
                  type: integer
                  description: The ID of the project linked to the activity
                due_date:
                  type: string
                  description: The due date of the activity
                due_time:
                  type: string
                  description: The due time of the activity
                duration:
                  type: string
                  description: The duration of the activity
                busy:
                  type: boolean
                  description: Whether the activity marks the assignee as busy or not in their calendar
                done:
                  type: boolean
                  description: Whether the activity is marked as done or not
                location:
                  type: object
                  description: Location of the activity
                  properties:
                    value:
                      type: string
                      description: The full address of the activity
                    country:
                      type: string
                      description: Country of the activity
                    admin_area_level_1:
                      type: string
                      description: Admin area level 1 (e.g. state) of the activity
                    admin_area_level_2:
                      type: string
                      description: Admin area level 2 (e.g. county) of the activity
                    locality:
                      type: string
                      description: Locality (e.g. city) of the activity
                    sublocality:
                      type: string
                      description: Sublocality (e.g. neighborhood) of the activity
                    route:
                      type: string
                      description: Route (e.g. street) of the activity
                    street_number:
                      type: string
                      description: Street number of the activity
                    subpremise:
                      type: string
                      description: Subpremise (e.g. apartment/suite number) of the activity
                    postal_code:
                      type: string
                      description: Postal code of the activity
                participants:
                  type: array
                  description: The participants of the activity
                  items:
                    type: object
                    properties:
                      person_id:
                        type: integer
                        description: The ID of the person
                      primary:
                        type: boolean
                        description: Whether the person is the primary participant or not
                attendees:
                  type: array
                  description: The attendees of the activity
                  items:
                    type: object
                    properties:
                      email:
                        type: string
                        description: The email address of the attendee
                      name:
                        type: string
                        description: The name of the attendee
                      status:
                        type: string
                        description: The status of the attendee
                      is_organizer:
                        type: boolean
                        description: Whether the attendee is the organizer or not
                      person_id:
                        type: integer
                        description: The ID of the person if the attendee has a person record
                      user_id:
                        type: integer
                        description: The ID of the user if the attendee is a user
                public_description:
                  type: string
                  description: The public description of the activity
                priority:
                  type: integer
                  description: The priority of the activity. Mappable to a specific string using activityFields API.
                note:
                  type: string
                  description: The note of the activity
      responses:
        '200':
          description: Add activity
          content:
            application/json:
              schema:
                type: object
                title: UpsertActivityResponse
                allOf:
                  - title: baseResponse
                    type: object
                    properties:
                      success:
                        type: boolean
                        description: If the response is successful or not
                  - type: object
                    title: UpsertActivityResponseData
                    properties:
                      data:
                        type: object
                        properties:
                          id:
                            type: integer
                            description: The ID of the activity
                          subject:
                            type: string
                            description: The subject of the activity
                          type:
                            type: string
                            description: The type of the activity
                          owner_id:
                            type: integer
                            description: The ID of the user who owns the activity
                          creator_user_id:
                            type: integer
                            description: The ID of the user who created the activity
                          is_deleted:
                            type: boolean
                            description: Whether the activity is deleted or not
                          add_time:
                            type: string
                            description: The creation date and time of the activity
                          update_time:
                            type: string
                            description: The last updated date and time of the activity
                          deal_id:
                            type: integer
                            description: The ID of the deal linked to the activity
                          lead_id:
                            type: string
                            description: The ID of the lead linked to the activity
                          person_id:
                            type: integer
                            description: The ID of the person linked to the activity
                          org_id:
                            type: integer
                            description: The ID of the organization linked to the activity
                          project_id:
                            type: integer
                            description: The ID of the project linked to the activity
                          due_date:
                            type: string
                            description: The due date of the activity
                          due_time:
                            type: string
                            description: The due time of the activity
                          duration:
                            type: string
                            description: The duration of the activity
                          busy:
                            type: boolean
                            description: Whether the activity marks the assignee as busy or not in their calendar
                          done:
                            type: boolean
                            description: Whether the activity is marked as done or not
                          marked_as_done_time:
                            type: string
                            description: The date and time when the activity was marked as done
                          location:
                            type: object
                            description: Location of the activity
                            properties:
                              value:
                                type: string
                                description: The full address of the activity
                              country:
                                type: string
                                description: Country of the activity
                              admin_area_level_1:
                                type: string
                                description: Admin area level 1 (e.g. state) of the activity
                              admin_area_level_2:
                                type: string
                                description: Admin area level 2 (e.g. county) of the activity
                              locality:
                                type: string
                                description: Locality (e.g. city) of the activity
                              sublocality:
                                type: string
                                description: Sublocality (e.g. neighborhood) of the activity
                              route:
                                type: string
                                description: Route (e.g. street) of the activity
                              street_number:
                                type: string
                                description: Street number of the activity
                              subpremise:
                                type: string
                                description: Subpremise (e.g. apartment/suite number) of the activity
                              postal_code:
                                type: string
                                description: Postal code of the activity
                          participants:
                            type: array
                            description: The participants of the activity
                            items:
                              type: object
                              properties:
                                person_id:
                                  type: integer
                                  description: The ID of the person
                                primary:
                                  type: boolean
                                  description: Whether the person is the primary participant or not
                          attendees:
                            type: array
                            description: The attendees of the activity
                            items:
                              type: object
                              properties:
                                email:
                                  type: string
                                  description: The email address of the attendee
                                name:
                                  type: string
                                  description: The name of the attendee
                                status:
                                  type: string
                                  description: The status of the attendee
                                is_organizer:
                                  type: boolean
                                  description: Whether the attendee is the organizer or not
                                person_id:
                                  type: integer
                                  description: The ID of the person if the attendee has a person record
                                user_id:
                                  type: integer
                                  description: The ID of the user if the attendee is a user
                          conference_meeting_client:
                            type: string
                            description: The client used for the conference meeting
                          conference_meeting_url:
                            type: string
                            description: The URL of the conference meeting
                          conference_meeting_id:
                            type: string
                            description: The ID of the conference meeting
                          public_description:
                            type: string
                            description: The public description of the activity
                          priority:
                            type: integer
                            description: The priority of the activity. Mappable to a specific string using activityFields API.
                          note:
                            type: string
                            description: The note of the activity
              example:
                success: true
                data:
                  id: 1
                  subject: Activity Subject
                  type: activity_type
                  owner_id: 1
                  creator_user_id: 1
                  is_deleted: false
                  add_time: '2021-01-01T00:00:00Z'
                  update_time: '2021-01-01T00:00:00Z'
                  deal_id: 5
                  lead_id: abc-def
                  person_id: 6
                  org_id: 7
                  project_id: 8
                  due_date: '2021-01-01'
                  due_time: '15:00:00'
                  duration: '01:00:00'
                  busy: true
                  done: true
                  marked_as_done_time: '2021-01-01T00:00:00Z'
                  location:
                    value: 123 Main St
                    country: USA
                    admin_area_level_1: CA
                    admin_area_level_2: Santa Clara
                    locality: Sunnyvale
                    sublocality: Downtown
                    route: Main St
                    street_number: '123'
                    subpremise: Apt 1
                    postal_code: '94085'
                  participants:
                    - person_id: 1
                      primary: true
                  attendees:
                    - email: some@email.com
                      name: Some Name
                      status: accepted
                      is_organizer: true
                      person_id: 1
                      user_id: 1
                  conference_meeting_client: google_meet
                  conference_meeting_url: 'https://meet.google.com/abc-xyz'
                  conference_meeting_id: abc-xyz
                  public_description: Public Description
                  priority: 263
                  note: Note
  '/activities/{id}':
    delete:
      summary: Delete an activity
      description: 'Marks an activity as deleted. After 30 days, the activity will be permanently deleted.'
      x-token-cost: 3
      operationId: deleteActivity
      tags:
        - Activities
      security:
        - api_key: []
        - oauth2:
            - 'activities:full'
      parameters:
        - in: path
          name: id
          description: The ID of the activity
          required: true
          schema:
            type: integer
      responses:
        '200':
          description: Delete activity
          content:
            application/json:
              schema:
                title: DeleteActivityResponse
                type: object
                properties:
                  success:
                    type: boolean
                    description: If the response is successful or not
                  data:
                    type: object
                    properties:
                      id:
                        type: integer
                        description: Deleted activity ID
              example:
                success: true
                data:
                  id: 1
    get:
      summary: Get details of an activity
      description: Returns the details of a specific activity.
      x-token-cost: 1
      operationId: getActivity
      tags:
        - Activities
      security:
        - api_key: []
        - oauth2:
            - 'activities:read'
            - 'activities:full'
      parameters:
        - in: path
          name: id
          description: The ID of the activity
          required: true
          schema:
            type: integer
        - in: query
          name: include_fields
          description: Optional comma separated string array of additional fields to include
          schema:
            type: string
            enum:
              - attendees
      responses:
        '200':
          description: Get activity
          content:
            application/json:
              schema:
                type: object
                title: UpsertActivityResponse
                allOf:
                  - title: baseResponse
                    type: object
                    properties:
                      success:
                        type: boolean
                        description: If the response is successful or not
                  - type: object
                    title: UpsertActivityResponseData
                    properties:
                      data:
                        type: object
                        properties:
                          id:
                            type: integer
                            description: The ID of the activity
                          subject:
                            type: string
                            description: The subject of the activity
                          type:
                            type: string
                            description: The type of the activity
                          owner_id:
                            type: integer
                            description: The ID of the user who owns the activity
                          creator_user_id:
                            type: integer
                            description: The ID of the user who created the activity
                          is_deleted:
                            type: boolean
                            description: Whether the activity is deleted or not
                          add_time:
                            type: string
                            description: The creation date and time of the activity
                          update_time:
                            type: string
                            description: The last updated date and time of the activity
                          deal_id:
                            type: integer
                            description: The ID of the deal linked to the activity
                          lead_id:
                            type: string
                            description: The ID of the lead linked to the activity
                          person_id:
                            type: integer
                            description: The ID of the person linked to the activity
                          org_id:
                            type: integer
                            description: The ID of the organization linked to the activity
                          project_id:
                            type: integer
                            description: The ID of the project linked to the activity
                          due_date:
                            type: string
                            description: The due date of the activity
                          due_time:
                            type: string
                            description: The due time of the activity
                          duration:
                            type: string
                            description: The duration of the activity
                          busy:
                            type: boolean
                            description: Whether the activity marks the assignee as busy or not in their calendar
                          done:
                            type: boolean
                            description: Whether the activity is marked as done or not
                          marked_as_done_time:
                            type: string
                            description: The date and time when the activity was marked as done
                          location:
                            type: object
                            description: Location of the activity
                            properties:
                              value:
                                type: string
                                description: The full address of the activity
                              country:
                                type: string
                                description: Country of the activity
                              admin_area_level_1:
                                type: string
                                description: Admin area level 1 (e.g. state) of the activity
                              admin_area_level_2:
                                type: string
                                description: Admin area level 2 (e.g. county) of the activity
                              locality:
                                type: string
                                description: Locality (e.g. city) of the activity
                              sublocality:
                                type: string
                                description: Sublocality (e.g. neighborhood) of the activity
                              route:
                                type: string
                                description: Route (e.g. street) of the activity
                              street_number:
                                type: string
                                description: Street number of the activity
                              subpremise:
                                type: string
                                description: Subpremise (e.g. apartment/suite number) of the activity
                              postal_code:
                                type: string
                                description: Postal code of the activity
                          participants:
                            type: array
                            description: The participants of the activity
                            items:
                              type: object
                              properties:
                                person_id:
                                  type: integer
                                  description: The ID of the person
                                primary:
                                  type: boolean
                                  description: Whether the person is the primary participant or not
                          attendees:
                            type: array
                            description: The attendees of the activity
                            items:
                              type: object
                              properties:
                                email:
                                  type: string
                                  description: The email address of the attendee
                                name:
                                  type: string
                                  description: The name of the attendee
                                status:
                                  type: string
                                  description: The status of the attendee
                                is_organizer:
                                  type: boolean
                                  description: Whether the attendee is the organizer or not
                                person_id:
                                  type: integer
                                  description: The ID of the person if the attendee has a person record
                                user_id:
                                  type: integer
                                  description: The ID of the user if the attendee is a user
                          conference_meeting_client:
                            type: string
                            description: The client used for the conference meeting
                          conference_meeting_url:
                            type: string
                            description: The URL of the conference meeting
                          conference_meeting_id:
                            type: string
                            description: The ID of the conference meeting
                          public_description:
                            type: string
                            description: The public description of the activity
                          priority:
                            type: integer
                            description: The priority of the activity. Mappable to a specific string using activityFields API.
                          note:
                            type: string
                            description: The note of the activity
              example:
                success: true
                data:
                  id: 1
                  subject: Activity Subject
                  type: activity_type
                  owner_id: 1
                  creator_user_id: 1
                  is_deleted: false
                  add_time: '2021-01-01T00:00:00Z'
                  update_time: '2021-01-01T00:00:00Z'
                  deal_id: 5
                  lead_id: abc-def
                  person_id: 6
                  org_id: 7
                  project_id: 8
                  due_date: '2021-01-01'
                  due_time: '15:00:00'
                  duration: '01:00:00'
                  busy: true
                  done: true
                  marked_as_done_time: '2021-01-01T00:00:00Z'
                  location:
                    value: 123 Main St
                    country: USA
                    admin_area_level_1: CA
                    admin_area_level_2: Santa Clara
                    locality: Sunnyvale
                    sublocality: Downtown
                    route: Main St
                    street_number: '123'
                    subpremise: Apt 1
                    postal_code: '94085'
                  participants:
                    - person_id: 1
                      primary: true
                  attendees:
                    - email: some@email.com
                      name: Some Name
                      status: accepted
                      is_organizer: true
                      person_id: 1
                      user_id: 1
                  conference_meeting_client: google_meet
                  conference_meeting_url: 'https://meet.google.com/abc-xyz'
                  conference_meeting_id: abc-xyz
                  public_description: Public Description
                  priority: 263
                  note: Note
    patch:
      summary: Update an activity
      description: Updates the properties of an activity.
      x-token-cost: 5
      operationId: updateActivity
      tags:
        - Activities
      security:
        - api_key: []
        - oauth2:
            - 'activities:full'
      parameters:
        - in: path
          name: id
          description: The ID of the activity
          required: true
          schema:
            type: integer
      requestBody:
        content:
          application/json:
            schema:
              type: object
              properties:
                subject:
                  type: string
                  description: The subject of the activity
                type:
                  type: string
                  description: The type of the activity
                owner_id:
                  type: integer
                  description: The ID of the user who owns the activity
                deal_id:
                  type: integer
                  description: The ID of the deal linked to the activity
                lead_id:
                  type: string
                  description: The ID of the lead linked to the activity
                person_id:
                  type: integer
                  description: The ID of the person linked to the activity
                org_id:
                  type: integer
                  description: The ID of the organization linked to the activity
                project_id:
                  type: integer
                  description: The ID of the project linked to the activity
                due_date:
                  type: string
                  description: The due date of the activity
                due_time:
                  type: string
                  description: The due time of the activity
                duration:
                  type: string
                  description: The duration of the activity
                busy:
                  type: boolean
                  description: Whether the activity marks the assignee as busy or not in their calendar
                done:
                  type: boolean
                  description: Whether the activity is marked as done or not
                location:
                  type: object
                  description: Location of the activity
                  properties:
                    value:
                      type: string
                      description: The full address of the activity
                    country:
                      type: string
                      description: Country of the activity
                    admin_area_level_1:
                      type: string
                      description: Admin area level 1 (e.g. state) of the activity
                    admin_area_level_2:
                      type: string
                      description: Admin area level 2 (e.g. county) of the activity
                    locality:
                      type: string
                      description: Locality (e.g. city) of the activity
                    sublocality:
                      type: string
                      description: Sublocality (e.g. neighborhood) of the activity
                    route:
                      type: string
                      description: Route (e.g. street) of the activity
                    street_number:
                      type: string
                      description: Street number of the activity
                    subpremise:
                      type: string
                      description: Subpremise (e.g. apartment/suite number) of the activity
                    postal_code:
                      type: string
                      description: Postal code of the activity
                participants:
                  type: array
                  description: The participants of the activity
                  items:
                    type: object
                    properties:
                      person_id:
                        type: integer
                        description: The ID of the person
                      primary:
                        type: boolean
                        description: Whether the person is the primary participant or not
                attendees:
                  type: array
                  description: The attendees of the activity
                  items:
                    type: object
                    properties:
                      email:
                        type: string
                        description: The email address of the attendee
                      name:
                        type: string
                        description: The name of the attendee
                      status:
                        type: string
                        description: The status of the attendee
                      is_organizer:
                        type: boolean
                        description: Whether the attendee is the organizer or not
                      person_id:
                        type: integer
                        description: The ID of the person if the attendee has a person record
                      user_id:
                        type: integer
                        description: The ID of the user if the attendee is a user
                public_description:
                  type: string
                  description: The public description of the activity
                priority:
                  type: integer
                  description: The priority of the activity. Mappable to a specific string using activityFields API.
                note:
                  type: string
                  description: The note of the activity
      responses:
        '200':
          description: Edit activity
          content:
            application/json:
              schema:
                type: object
                title: UpsertActivityResponse
                allOf:
                  - title: baseResponse
                    type: object
                    properties:
                      success:
                        type: boolean
                        description: If the response is successful or not
                  - type: object
                    title: UpsertActivityResponseData
                    properties:
                      data:
                        type: object
                        properties:
                          id:
                            type: integer
                            description: The ID of the activity
                          subject:
                            type: string
                            description: The subject of the activity
                          type:
                            type: string
                            description: The type of the activity
                          owner_id:
                            type: integer
                            description: The ID of the user who owns the activity
                          creator_user_id:
                            type: integer
                            description: The ID of the user who created the activity
                          is_deleted:
                            type: boolean
                            description: Whether the activity is deleted or not
                          add_time:
                            type: string
                            description: The creation date and time of the activity
                          update_time:
                            type: string
                            description: The last updated date and time of the activity
                          deal_id:
                            type: integer
                            description: The ID of the deal linked to the activity
                          lead_id:
                            type: string
                            description: The ID of the lead linked to the activity
                          person_id:
                            type: integer
                            description: The ID of the person linked to the activity
                          org_id:
                            type: integer
                            description: The ID of the organization linked to the activity
                          project_id:
                            type: integer
                            description: The ID of the project linked to the activity
                          due_date:
                            type: string
                            description: The due date of the activity
                          due_time:
                            type: string
                            description: The due time of the activity
                          duration:
                            type: string
                            description: The duration of the activity
                          busy:
                            type: boolean
                            description: Whether the activity marks the assignee as busy or not in their calendar
                          done:
                            type: boolean
                            description: Whether the activity is marked as done or not
                          marked_as_done_time:
                            type: string
                            description: The date and time when the activity was marked as done
                          location:
                            type: object
                            description: Location of the activity
                            properties:
                              value:
                                type: string
                                description: The full address of the activity
                              country:
                                type: string
                                description: Country of the activity
                              admin_area_level_1:
                                type: string
                                description: Admin area level 1 (e.g. state) of the activity
                              admin_area_level_2:
                                type: string
                                description: Admin area level 2 (e.g. county) of the activity
                              locality:
                                type: string
                                description: Locality (e.g. city) of the activity
                              sublocality:
                                type: string
                                description: Sublocality (e.g. neighborhood) of the activity
                              route:
                                type: string
                                description: Route (e.g. street) of the activity
                              street_number:
                                type: string
                                description: Street number of the activity
                              subpremise:
                                type: string
                                description: Subpremise (e.g. apartment/suite number) of the activity
                              postal_code:
                                type: string
                                description: Postal code of the activity
                          participants:
                            type: array
                            description: The participants of the activity
                            items:
                              type: object
                              properties:
                                person_id:
                                  type: integer
                                  description: The ID of the person
                                primary:
                                  type: boolean
                                  description: Whether the person is the primary participant or not
                          attendees:
                            type: array
                            description: The attendees of the activity
                            items:
                              type: object
                              properties:
                                email:
                                  type: string
                                  description: The email address of the attendee
                                name:
                                  type: string
                                  description: The name of the attendee
                                status:
                                  type: string
                                  description: The status of the attendee
                                is_organizer:
                                  type: boolean
                                  description: Whether the attendee is the organizer or not
                                person_id:
                                  type: integer
                                  description: The ID of the person if the attendee has a person record
                                user_id:
                                  type: integer
                                  description: The ID of the user if the attendee is a user
                          conference_meeting_client:
                            type: string
                            description: The client used for the conference meeting
                          conference_meeting_url:
                            type: string
                            description: The URL of the conference meeting
                          conference_meeting_id:
                            type: string
                            description: The ID of the conference meeting
                          public_description:
                            type: string
                            description: The public description of the activity
                          priority:
                            type: integer
                            description: The priority of the activity. Mappable to a specific string using activityFields API.
                          note:
                            type: string
                            description: The note of the activity
              example:
                success: true
                data:
                  id: 1
                  subject: Activity Subject
                  type: activity_type
                  owner_id: 1
                  creator_user_id: 1
                  is_deleted: false
                  add_time: '2021-01-01T00:00:00Z'
                  update_time: '2021-01-01T00:00:00Z'
                  deal_id: 5
                  lead_id: abc-def
                  person_id: 6
                  org_id: 7
                  project_id: 8
                  due_date: '2021-01-01'
                  due_time: '15:00:00'
                  duration: '01:00:00'
                  busy: true
                  done: true
                  marked_as_done_time: '2021-01-01T00:00:00Z'
                  location:
                    value: 123 Main St
                    country: USA
                    admin_area_level_1: CA
                    admin_area_level_2: Santa Clara
                    locality: Sunnyvale
                    sublocality: Downtown
                    route: Main St
                    street_number: '123'
                    subpremise: Apt 1
                    postal_code: '94085'
                  participants:
                    - person_id: 1
                      primary: true
                  attendees:
                    - email: some@email.com
                      name: Some Name
                      status: accepted
                      is_organizer: true
                      person_id: 1
                      user_id: 1
                  conference_meeting_client: google_meet
                  conference_meeting_url: 'https://meet.google.com/abc-xyz'
                  conference_meeting_id: abc-xyz
                  public_description: Public Description
                  priority: 263
                  note: Note
  /activityFields:
    get:
      summary: Get all activity fields
      description: Returns metadata about all activity fields in the company.
      x-token-cost: 10
      operationId: getActivityFields
      tags:
        - ActivityFields
      security:
        - api_key: []
        - oauth2:
            - admin
      parameters:
        - in: query
          name: include_fields
          description: Optional comma separated string array of additional data namespaces to include in response
          schema:
            type: string
            enum:
              - ui_visibility
        - in: query
          name: limit
          description: 'For pagination, the limit of entries to be returned. If not provided, 100 items will be returned. Please note that a maximum value of 500 is allowed.'
          schema:
            type: integer
            example: 100
        - in: query
          name: cursor
          required: false
          schema:
            type: string
          description: 'For pagination, the marker (an opaque string value) representing the first item on the next page'
      responses:
        '200':
          description: Get all activity fields
          content:
            application/json:
              schema:
                type: object
                properties:
                  success:
                    type: boolean
                    description: Whether the request was successful
                  data:
                    type: array
                    items:
                      type: object
                      required:
                        - field_name
                        - field_code
                        - field_type
                        - is_custom_field
                        - is_optional_response_field
                      properties:
                        field_name:
                          type: string
                          description: The display name/label of the field
                        field_code:
                          type: string
                          description: The unique identifier for the field (40-character hash for custom fields)
                        field_type:
                          type: string
                          description: The type of the field
                          enum:
                            - int
                            - double
                            - boolean
                            - varchar
                            - text
                            - phone
                            - varchar_options
                            - varchar_auto
                            - date
                            - daterange
                            - time
                            - timerange
                            - enum
                            - set
                            - address
                            - monetary
                            - deal
                            - deals
                            - lead
                            - org
                            - people
                            - project
                            - stage
                            - user
                            - activity
                            - json
                            - picture
                            - status
                            - visible_to
                            - price_list
                            - billing_frequency
                            - projects_board
                            - projects_phase
                        options:
                          type: array
                          nullable: true
                          description: 'Array of available options for enum/set fields, null for other field types'
                          items:
                            type: object
                            properties:
                              id:
                                type: integer
                                description: The option ID
                              label:
                                type: string
                                description: The option display label
                              color:
                                type: string
                                nullable: true
                                description: Optional color code for the option
                              update_time:
                                type: string
                                format: date-time
                                nullable: true
                                description: When the option was last updated
                              add_time:
                                type: string
                                format: date-time
                                nullable: true
                                description: When the option was created
                        subfields:
                          type: array
                          nullable: true
                          description: 'Array of subfields for complex field types (address, monetary), null for simple field types'
                          items:
                            type: object
                            properties:
                              field_code:
                                type: string
                                description: The subfield identifier
                              field_name:
                                type: string
                                description: The subfield display name
                              field_type:
                                type: string
                                description: The subfield type
                        is_custom_field:
                          type: boolean
                          description: Whether this is a user-created custom field
                        is_optional_response_field:
                          type: boolean
                          description: Whether this field is not returned by default in entity responses
                        ui_visibility:
                          type: object
                          description: UI visibility settings (only included when requested via include_fields parameter)
                          properties:
                            add_visible_flag:
                              type: boolean
                              description: Whether the field is shown in the add modal
                            details_visible_flag:
                              type: boolean
                              description: Whether the field is shown in the details view (read-only)
                  additional_data:
                    type: object
                    properties:
                      next_cursor:
                        type: string
                        nullable: true
                        description: 'Base64url-encoded cursor for fetching the next page of results, null if no more pages'
              example:
                success: true
                data:
                  - field_name: Subject
                    field_code: subject
                    description: The subject or title of the activity
                    field_type: varchar
                    options: null
                    subfields: null
                    is_custom_field: false
                    is_optional_response_field: false
                    ui_visibility:
                      add_visible_flag: true
                      details_visible_flag: true
                  - field_name: Status
                    field_code: 40characterhashforcustomfieldidentifier
                    description: Current status of the activity
                    field_type: enum
                    options:
                      - id: 1
                        label: Not Started
                      - id: 2
                        label: In Progress
                      - id: 3
                        label: Completed
                    subfields: null
                    is_custom_field: true
                    is_optional_response_field: false
                    ui_visibility:
                      add_visible_flag: true
                      details_visible_flag: true
                  - field_name: Location
                    field_code: location
                    description: Physical location where the activity takes place
                    field_type: address
                    options: null
                    subfields:
                      - field_code: value
                        field_name: Address value of Location
                        field_type: varchar
                      - field_code: street_number
                        field_name: House number of Location
                        field_type: varchar
                      - field_code: route
                        field_name: Street/road name of Location
                        field_type: varchar
                      - field_code: subpremise
                        field_name: Apartment/suite of Location
                        field_type: varchar
                      - field_code: locality
                        field_name: District of Location
                        field_type: varchar
                      - field_code: admin_area_level_1
                        field_name: State/province of Location
                        field_type: varchar
                      - field_code: admin_area_level_2
                        field_name: County of Location
                        field_type: varchar
                      - field_code: country
                        field_name: Country of Location
                        field_type: varchar
                      - field_code: postal_code
                        field_name: Postal code of Location
                        field_type: varchar
                      - field_code: formatted_address
                        field_name: Formatted address of Location
                        field_type: varchar
                    is_custom_field: false
                    is_optional_response_field: false
                    ui_visibility:
                      add_visible_flag: true
                      details_visible_flag: true
                additional_data:
                  next_cursor: eyJmaWVsZCI6ImlkIiwiZmllbGRWYWx1ZSI6Nywic29ydERpcmVjdGlvbiI6ImFzYyIsImlkIjo3fQ
  '/activityFields/{field_code}':
    get:
      summary: Get one activity field
      description: Returns metadata about a specific activity field.
      x-token-cost: 1
      operationId: getActivityField
      tags:
        - ActivityFields
      security:
        - api_key: []
        - oauth2:
            - admin
      parameters:
        - in: path
          name: field_code
          description: The unique code identifying the field
          required: true
          schema:
            type: string
        - in: query
          name: include_fields
          description: Optional comma separated string array of additional data namespaces to include in response
          schema:
            type: string
            enum:
              - ui_visibility
      responses:
        '200':
          description: Get one activity field
          content:
            application/json:
              schema:
                type: object
                properties:
                  success:
                    type: boolean
                    description: Whether the request was successful
                  data:
                    type: object
                    required:
                      - field_name
                      - field_code
                      - field_type
                      - is_custom_field
                      - is_optional_response_field
                    properties:
                      field_name:
                        type: string
                        description: The display name/label of the field
                      field_code:
                        type: string
                        description: The unique identifier for the field (40-character hash for custom fields)
                      field_type:
                        type: string
                        description: The type of the field
                        enum:
                          - int
                          - double
                          - boolean
                          - varchar
                          - text
                          - phone
                          - varchar_options
                          - varchar_auto
                          - date
                          - daterange
                          - time
                          - timerange
                          - enum
                          - set
                          - address
                          - monetary
                          - deal
                          - deals
                          - lead
                          - org
                          - people
                          - project
                          - stage
                          - user
                          - activity
                          - json
                          - picture
                          - status
                          - visible_to
                          - price_list
                          - billing_frequency
                          - projects_board
                          - projects_phase
                      options:
                        type: array
                        nullable: true
                        description: 'Array of available options for enum/set fields, null for other field types'
                        items:
                          type: object
                          properties:
                            id:
                              type: integer
                              description: The option ID
                            label:
                              type: string
                              description: The option display label
                            color:
                              type: string
                              nullable: true
                              description: Optional color code for the option
                            update_time:
                              type: string
                              format: date-time
                              nullable: true
                              description: When the option was last updated
                            add_time:
                              type: string
                              format: date-time
                              nullable: true
                              description: When the option was created
                      subfields:
                        type: array
                        nullable: true
                        description: 'Array of subfields for complex field types (address, monetary), null for simple field types'
                        items:
                          type: object
                          properties:
                            field_code:
                              type: string
                              description: The subfield identifier
                            field_name:
                              type: string
                              description: The subfield display name
                            field_type:
                              type: string
                              description: The subfield type
                      is_custom_field:
                        type: boolean
                        description: Whether this is a user-created custom field
                      is_optional_response_field:
                        type: boolean
                        description: Whether this field is not returned by default in entity responses
                      ui_visibility:
                        type: object
                        description: UI visibility settings (only included when requested via include_fields parameter)
                        properties:
                          add_visible_flag:
                            type: boolean
                            description: Whether the field is shown in the add modal
                          details_visible_flag:
                            type: boolean
                            description: Whether the field is shown in the details view (read-only)
              example:
                success: true
                data:
                  field_name: Subject
                  field_code: subject
                  description: The subject or title of the activity
                  field_type: varchar
                  options: null
                  subfields: null
                  is_custom_field: false
                  is_optional_response_field: false
                  ui_visibility:
                    add_visible_flag: true
                    details_visible_flag: true
  /deals:
    get:
      summary: Get all deals
      description: Returns data about all not archived deals.
      x-tool-description: 'Retrieves paginated active deals with filtering by owner, person, organization, pipeline, stage, status, and time ranges. Essential for analytics, reporting, dashboard views, and bulk operations. Filters combine for precise selection; filter_id overrides individual filters.'
      x-token-cost: 10
      operationId: getDeals
      tags:
        - Deals
      security:
        - api_key: []
        - oauth2:
            - 'deals:read'
            - 'deals:full'
      parameters:
        - in: query
          name: filter_id
          schema:
            type: integer
          description: 'If supplied, only deals matching the specified filter are returned'
        - in: query
          name: ids
          description: 'Optional comma separated string array of up to 100 entity ids to fetch. If filter_id is provided, this is ignored. If any of the requested entities do not exist or are not visible, they are not included in the response.'
          schema:
            type: string
        - in: query
          name: owner_id
          schema:
            type: integer
          description: 'If supplied, only deals owned by the specified user are returned. If filter_id is provided, this is ignored.'
        - in: query
          name: person_id
          schema:
            type: integer
          description: 'If supplied, only deals linked to the specified person are returned. If filter_id is provided, this is ignored.'
        - in: query
          name: org_id
          schema:
            type: integer
          description: 'If supplied, only deals linked to the specified organization are returned. If filter_id is provided, this is ignored.'
        - in: query
          name: pipeline_id
          schema:
            type: integer
          description: 'If supplied, only deals in the specified pipeline are returned. If filter_id is provided, this is ignored.'
        - in: query
          name: stage_id
          schema:
            type: integer
          description: 'If supplied, only deals in the specified stage are returned. If filter_id is provided, this is ignored.'
        - in: query
          name: status
          schema:
            type: string
            enum:
              - open
              - won
              - lost
              - deleted
          description: 'Only fetch deals with a specific status. If omitted, all not deleted deals are returned. If set to deleted, deals that have been deleted up to 30 days ago will be included. Multiple statuses can be included as a comma separated array. If filter_id is provided, this is ignored.'
        - in: query
          name: updated_since
          schema:
            type: string
          description: 'If set, only deals with an `update_time` later than or equal to this time are returned. In RFC3339 format, e.g. 2025-01-01T10:20:00Z.'
        - in: query
          name: updated_until
          schema:
            type: string
          description: 'If set, only deals with an `update_time` earlier than this time are returned. In RFC3339 format, e.g. 2025-01-01T10:20:00Z.'
        - in: query
          name: sort_by
          description: 'The field to sort by. Supported fields: `id`, `update_time`, `add_time`.'
          schema:
            type: string
            default: id
            enum:
              - id
              - update_time
              - add_time
        - in: query
          name: sort_direction
          description: 'The sorting direction. Supported values: `asc`, `desc`.'
          schema:
            type: string
            default: asc
            enum:
              - asc
              - desc
        - in: query
          name: include_fields
          description: Optional comma separated string array of additional fields to include
          schema:
            type: string
            enum:
              - next_activity_id
              - last_activity_id
              - first_won_time
              - products_count
              - files_count
              - notes_count
              - followers_count
              - email_messages_count
              - activities_count
              - done_activities_count
              - undone_activities_count
              - participants_count
              - last_incoming_mail_time
              - last_outgoing_mail_time
              - smart_bcc_email
              - source_lead_id
        - in: query
          name: custom_fields
          description: 'Optional comma separated string array of custom fields keys to include. If you are only interested in a particular set of custom fields, please use this parameter for faster results and smaller response.<br/>A maximum of 15 keys is allowed.'
          schema:
            type: string
        - in: query
          name: include_option_labels
          description: 'When provided with a ''true'' value, single option and multiple option custom fields values contain objects in the form of ''{ id: number, label: string }'' instead of plain id'
          schema:
            type: boolean
        - in: query
          name: include_labels
          description: 'When provided with ''true'' value, response will include an array of label objects in the form of ''{ id: number, label: string }'''
          schema:
            type: boolean
        - in: query
          name: limit
          description: 'For pagination, the limit of entries to be returned. If not provided, 100 items will be returned. Please note that a maximum value of 500 is allowed.'
          schema:
            type: integer
            example: 100
        - in: query
          name: cursor
          required: false
          schema:
            type: string
          description: 'For pagination, the marker (an opaque string value) representing the first item on the next page'
      responses:
        '200':
          description: Get all not archived deals
          content:
            application/json:
              schema:
                type: object
                title: GetDealsResponse
                allOf:
                  - title: baseResponse
                    type: object
                    properties:
                      success:
                        type: boolean
                        description: If the response is successful or not
                  - type: object
                    properties:
                      data:
                        type: array
                        description: Deals array
                        items:
                          type: object
                          properties:
                            id:
                              type: integer
                              description: The ID of the deal
                            title:
                              type: string
                              description: The title of the deal
                            owner_id:
                              type: integer
                              description: The ID of the user who owns the deal
                            person_id:
                              type: integer
                              description: The ID of the person linked to the deal
                            org_id:
                              type: integer
                              description: The ID of the organization linked to the deal
                            pipeline_id:
                              type: integer
                              description: The ID of the pipeline associated with the deal
                            stage_id:
                              type: integer
                              description: The ID of the deal stage
                            value:
                              type: number
                              description: The value of the deal
                            currency:
                              type: string
                              description: The currency associated with the deal
                            add_time:
                              type: string
                              description: The creation date and time of the deal
                            update_time:
                              type: string
                              description: The last updated date and time of the deal
                            stage_change_time:
                              type: string
                              description: The last updated date and time of the deal stage
                            is_deleted:
                              type: boolean
                              description: Whether the deal is deleted or not
                            is_archived:
                              type: boolean
                              description: Whether the deal is archived or not
                            status:
                              type: string
                              description: The status of the deal
                            probability:
                              type: number
                              nullable: true
                              description: The success probability percentage of the deal
                            lost_reason:
                              type: string
                              nullable: true
                              description: The reason for losing the deal
                            visible_to:
                              type: integer
                              description: The visibility of the deal
                            close_time:
                              type: string
                              nullable: true
                              description: The date and time of closing the deal
                            won_time:
                              type: string
                              description: The date and time of changing the deal status as won
                            lost_time:
                              type: string
                              description: The date and time of changing the deal status as lost
                            expected_close_date:
                              type: string
                              format: date
                              description: The expected close date of the deal
                            label_ids:
                              type: array
                              description: The IDs of labels assigned to the deal
                              items:
                                type: integer
                            origin:
                              type: string
                              description: The way this Deal was created. `origin` field is set by Pipedrive when Deal is created and cannot be changed.
                            origin_id:
                              type: string
                              nullable: true
                              description: The optional ID to further distinguish the origin of the deal - e.g. Which API integration created this Deal.
                            channel:
                              type: integer
                              nullable: true
                              description: 'The ID of your Marketing channel this Deal was created from. Recognized Marketing channels can be configured in your <a href="https://app.pipedrive.com/settings/fields" target="_blank" rel="noopener noreferrer">Company settings</a>.'
                            channel_id:
                              type: string
                              nullable: true
                              description: The optional ID to further distinguish the Marketing channel.
                            source_lead_id:
                              type: string
                              format: uuid
                              nullable: true
                              description: The ID of the lead if the deal was converted from a lead. Only included when requested via include_fields parameter.
                            arr:
                              type: number
                              nullable: true
                              description: |
                                Only available in Growth and above plans

                                The Annual Recurring Revenue of the deal

                                Null if there are no products attached to the deal
                            mrr:
                              type: number
                              nullable: true
                              description: |
                                Only available in Growth and above plans

                                The Monthly Recurring Revenue of the deal

                                Null if there are no products attached to the deal
                            acv:
                              type: number
                              nullable: true
                              description: |
                                Only available in Growth and above plans

                                The Annual Contract Value of the deal

                                Null if there are no products attached to the deal
                            custom_fields:
                              type: object
                              additionalProperties: true
                              description: 'An object where each key represents a custom field. All custom fields are referenced as randomly generated 40-character hashes. To clear a custom field value, set it to `null`. For multi-option fields (field type `set`), use `null` to clear the selection — sending an empty array `[]` is not supported and will result in a validation error.'
                      additional_data:
                        type: object
                        description: The additional data of the list
                        properties:
                          next_cursor:
                            type: string
                            description: The first item on the next page. The value of the `next_cursor` field will be `null` if you have reached the end of the dataset and there’s no more pages to be returned.
              example:
                success: true
                data:
                  - id: 1
                    title: Deal Title
                    creator_user_id: 1
                    owner_id: 1
                    value: 200
                    person_id: 1
                    org_id: 1
                    stage_id: 1
                    pipeline_id: 1
                    currency: USD
                    archive_time: '2021-01-01T00:00:00Z'
                    add_time: '2021-01-01T00:00:00Z'
                    update_time: '2021-01-01T00:00:00Z'
                    stage_change_time: '2021-01-01T00:00:00Z'
                    status: open
                    is_archived: false
                    is_deleted: false
                    probability: 90
                    lost_reason: Lost Reason
                    visible_to: 7
                    close_time: '2021-01-01T00:00:00Z'
                    won_time: '2021-01-01T00:00:00Z'
                    lost_time: '2021-01-01T00:00:00Z'
                    local_won_date: '2021-01-01'
                    local_lost_date: '2021-01-01'
                    local_close_date: '2021-01-01'
                    expected_close_date: '2021-01-01'
                    label_ids:
                      - 1
                      - 2
                      - 3
                    origin: ManuallyCreated
                    origin_id: null
                    channel: 52
                    channel_id: Jun23 Billboards
                    source_lead_id: 35b0d604-eb0d-42d0-be11-eac8832051f0
                    acv: 120
                    arr: 120
                    mrr: 10
                    custom_fields: {}
                additional_data:
                  next_cursor: eyJmaWVsZCI6ImlkIiwiZmllbGRWYWx1ZSI6Nywic29ydERpcmVjdGlvbiI6ImFzYyIsImlkIjo3fQ
    post:
      summary: Add a new deal
      description: Adds a new deal.
      x-tool-description: 'Creates new sales deals with customizable properties: title (required), value, person, organization, pipeline stage, and custom fields. Essential for lead conversion, sales processes, and integrations. Automatically assigns timestamps and ownership.'
      x-token-cost: 5
      operationId: addDeal
      tags:
        - Deals
      security:
        - api_key: []
        - oauth2:
            - 'deals:full'
      requestBody:
        content:
          application/json:
            schema:
              required:
                - title
              type: object
              properties:
                title:
                  type: string
                  description: The title of the deal
                owner_id:
                  type: integer
                  description: The ID of the user who owns the deal
                person_id:
                  type: integer
                  description: The ID of the person linked to the deal
                org_id:
                  type: integer
                  description: The ID of the organization linked to the deal
                pipeline_id:
                  type: integer
                  description: The ID of the pipeline associated with the deal
                stage_id:
                  type: integer
                  description: The ID of the deal stage
                value:
                  type: number
                  description: The value of the deal
                currency:
                  type: string
                  description: The currency associated with the deal
                is_deleted:
                  type: boolean
                  description: Whether the deal is deleted or not
                is_archived:
                  type: boolean
                  description: Whether the deal is archived or not
                archive_time:
                  type: string
                  description: 'The optional date and time of archiving the deal in UTC. Format: YYYY-MM-DD HH:MM:SS. If omitted and `is_archived` is true, it will be set to the current date and time.'
                status:
                  type: string
                  description: The status of the deal
                probability:
                  type: number
                  nullable: true
                  description: The success probability percentage of the deal
                lost_reason:
                  type: string
                  nullable: true
                  description: The reason for losing the deal. Can only be set if deal status is lost.
                visible_to:
                  type: integer
                  description: The visibility of the deal
                close_time:
                  type: string
                  nullable: true
                  description: The date and time of closing the deal. Can only be set if deal status is won or lost.
                won_time:
                  type: string
                  description: The date and time of changing the deal status as won. Can only be set if deal status is won.
                lost_time:
                  type: string
                  description: The date and time of changing the deal status as lost. Can only be set if deal status is lost.
                expected_close_date:
                  type: string
                  format: date
                  description: The expected close date of the deal
                label_ids:
                  type: array
                  description: The IDs of labels assigned to the deal
                  items:
                    type: integer
                custom_fields:
                  type: object
                  additionalProperties: true
                  description: 'An object where each key represents a custom field. All custom fields are referenced as randomly generated 40-character hashes. To clear a custom field value, set it to `null`. For multi-option fields (field type `set`), use `null` to clear the selection — sending an empty array `[]` is not supported and will result in a validation error.'
      responses:
        '200':
          description: Add deal
          content:
            application/json:
              schema:
                type: object
                title: UpsertDealResponse
                allOf:
                  - title: baseResponse
                    type: object
                    properties:
                      success:
                        type: boolean
                        description: If the response is successful or not
                  - type: object
                    title: UpsertDealResponseData
                    properties:
                      data:
                        type: object
                        properties:
                          id:
                            type: integer
                            description: The ID of the deal
                          title:
                            type: string
                            description: The title of the deal
                          owner_id:
                            type: integer
                            description: The ID of the user who owns the deal
                          person_id:
                            type: integer
                            description: The ID of the person linked to the deal
                          org_id:
                            type: integer
                            description: The ID of the organization linked to the deal
                          pipeline_id:
                            type: integer
                            description: The ID of the pipeline associated with the deal
                          stage_id:
                            type: integer
                            description: The ID of the deal stage
                          value:
                            type: number
                            description: The value of the deal
                          currency:
                            type: string
                            description: The currency associated with the deal
                          add_time:
                            type: string
                            description: The creation date and time of the deal
                          update_time:
                            type: string
                            description: The last updated date and time of the deal
                          stage_change_time:
                            type: string
                            description: The last updated date and time of the deal stage
                          is_deleted:
                            type: boolean
                            description: Whether the deal is deleted or not
                          is_archived:
                            type: boolean
                            description: Whether the deal is archived or not
                          status:
                            type: string
                            description: The status of the deal
                          probability:
                            type: number
                            nullable: true
                            description: The success probability percentage of the deal
                          lost_reason:
                            type: string
                            nullable: true
                            description: The reason for losing the deal
                          visible_to:
                            type: integer
                            description: The visibility of the deal
                          close_time:
                            type: string
                            nullable: true
                            description: The date and time of closing the deal
                          won_time:
                            type: string
                            description: The date and time of changing the deal status as won
                          lost_time:
                            type: string
                            description: The date and time of changing the deal status as lost
                          expected_close_date:
                            type: string
                            format: date
                            description: The expected close date of the deal
                          label_ids:
                            type: array
                            description: The IDs of labels assigned to the deal
                            items:
                              type: integer
                          origin:
                            type: string
                            description: The way this Deal was created. `origin` field is set by Pipedrive when Deal is created and cannot be changed.
                          origin_id:
                            type: string
                            nullable: true
                            description: The optional ID to further distinguish the origin of the deal - e.g. Which API integration created this Deal.
                          channel:
                            type: integer
                            nullable: true
                            description: 'The ID of your Marketing channel this Deal was created from. Recognized Marketing channels can be configured in your <a href="https://app.pipedrive.com/settings/fields" target="_blank" rel="noopener noreferrer">Company settings</a>.'
                          channel_id:
                            type: string
                            nullable: true
                            description: The optional ID to further distinguish the Marketing channel.
                          source_lead_id:
                            type: string
                            format: uuid
                            nullable: true
                            description: The ID of the lead if the deal was converted from a lead. Only included when requested via include_fields parameter.
                          arr:
                            type: number
                            nullable: true
                            description: |
                              Only available in Growth and above plans

                              The Annual Recurring Revenue of the deal

                              Null if there are no products attached to the deal
                          mrr:
                            type: number
                            nullable: true
                            description: |
                              Only available in Growth and above plans

                              The Monthly Recurring Revenue of the deal

                              Null if there are no products attached to the deal
                          acv:
                            type: number
                            nullable: true
                            description: |
                              Only available in Growth and above plans

                              The Annual Contract Value of the deal

                              Null if there are no products attached to the deal
                          custom_fields:
                            type: object
                            additionalProperties: true
                            description: 'An object where each key represents a custom field. All custom fields are referenced as randomly generated 40-character hashes. To clear a custom field value, set it to `null`. For multi-option fields (field type `set`), use `null` to clear the selection — sending an empty array `[]` is not supported and will result in a validation error.'
              example:
                success: true
                data:
                  id: 1
                  title: Deal Title
                  creator_user_id: 1
                  owner_id: 1
                  value: 200
                  person_id: 1
                  org_id: 1
                  stage_id: 1
                  pipeline_id: 1
                  currency: USD
                  archive_time: '2021-01-01T00:00:00Z'
                  add_time: '2021-01-01T00:00:00Z'
                  update_time: '2021-01-01T00:00:00Z'
                  stage_change_time: '2021-01-01T00:00:00Z'
                  status: open
                  is_archived: false
                  is_deleted: false
                  probability: 90
                  lost_reason: Lost Reason
                  visible_to: 7
                  close_time: '2021-01-01T00:00:00Z'
                  won_time: '2021-01-01T00:00:00Z'
                  lost_time: '2021-01-01T00:00:00Z'
                  local_won_date: '2021-01-01'
                  local_lost_date: '2021-01-01'
                  local_close_date: '2021-01-01'
                  expected_close_date: '2021-01-01'
                  label_ids:
                    - 1
                    - 2
                    - 3
                  origin: ManuallyCreated
                  origin_id: null
                  channel: 52
                  channel_id: Jun23 Billboards
                  source_lead_id: 35b0d604-eb0d-42d0-be11-eac8832051f0
                  acv: 120
                  arr: 120
                  mrr: 10
                  custom_fields: {}
  /deals/archived:
    get:
      summary: Get all archived deals
      description: Returns data about all archived deals.
      x-tool-description: 'Retrieves paginated archived deals with same filtering as active deals. Essential for historical analysis, closed opportunity reporting, data recovery, and audit trails. Supports filtering by owner, person, organization, pipeline, stage, and time ranges.'
      x-token-cost: 20
      operationId: getArchivedDeals
      tags:
        - Deals
      security:
        - api_key: []
        - oauth2:
            - 'deals:read'
            - 'deals:full'
      parameters:
        - in: query
          name: filter_id
          schema:
            type: integer
          description: 'If supplied, only deals matching the specified filter are returned'
        - in: query
          name: ids
          description: 'Optional comma separated string array of up to 100 entity ids to fetch. If filter_id is provided, this is ignored. If any of the requested entities do not exist or are not visible, they are not included in the response.'
          schema:
            type: string
        - in: query
          name: owner_id
          schema:
            type: integer
          description: 'If supplied, only deals owned by the specified user are returned. If filter_id is provided, this is ignored.'
        - in: query
          name: person_id
          schema:
            type: integer
          description: 'If supplied, only deals linked to the specified person are returned. If filter_id is provided, this is ignored.'
        - in: query
          name: org_id
          schema:
            type: integer
          description: 'If supplied, only deals linked to the specified organization are returned. If filter_id is provided, this is ignored.'
        - in: query
          name: pipeline_id
          schema:
            type: integer
          description: 'If supplied, only deals in the specified pipeline are returned. If filter_id is provided, this is ignored.'
        - in: query
          name: stage_id
          schema:
            type: integer
          description: 'If supplied, only deals in the specified stage are returned. If filter_id is provided, this is ignored.'
        - in: query
          name: status
          schema:
            type: string
            enum:
              - open
              - won
              - lost
              - deleted
          description: 'Only fetch deals with a specific status. If omitted, all not deleted deals are returned. If set to deleted, deals that have been deleted up to 30 days ago will be included. Multiple statuses can be included as a comma separated array. If filter_id is provided, this is ignored.'
        - in: query
          name: updated_since
          schema:
            type: string
          description: 'If set, only deals with an `update_time` later than or equal to this time are returned. In RFC3339 format, e.g. 2025-01-01T10:20:00Z.'
        - in: query
          name: updated_until
          schema:
            type: string
          description: 'If set, only deals with an `update_time` earlier than this time are returned. In RFC3339 format, e.g. 2025-01-01T10:20:00Z.'
        - in: query
          name: sort_by
          description: 'The field to sort by. Supported fields: `id`, `update_time`, `add_time`.'
          schema:
            type: string
            default: id
            enum:
              - id
              - update_time
              - add_time
        - in: query
          name: sort_direction
          description: 'The sorting direction. Supported values: `asc`, `desc`.'
          schema:
            type: string
            default: asc
            enum:
              - asc
              - desc
        - in: query
          name: include_fields
          description: Optional comma separated string array of additional fields to include
          schema:
            type: string
            enum:
              - next_activity_id
              - last_activity_id
              - first_won_time
              - products_count
              - files_count
              - notes_count
              - followers_count
              - email_messages_count
              - activities_count
              - done_activities_count
              - undone_activities_count
              - participants_count
              - last_incoming_mail_time
              - last_outgoing_mail_time
              - smart_bcc_email
              - source_lead_id
        - in: query
          name: custom_fields
          description: 'Optional comma separated string array of custom fields keys to include. If you are only interested in a particular set of custom fields, please use this parameter for faster results and smaller response.<br/>A maximum of 15 keys is allowed.'
          schema:
            type: string
        - in: query
          name: limit
          description: 'For pagination, the limit of entries to be returned. If not provided, 100 items will be returned. Please note that a maximum value of 500 is allowed.'
          schema:
            type: integer
            example: 100
        - in: query
          name: cursor
          required: false
          schema:
            type: string
          description: 'For pagination, the marker (an opaque string value) representing the first item on the next page'
      responses:
        '200':
          description: Get all archived deals
          content:
            application/json:
              schema:
                type: object
                title: GetDealsResponse
                allOf:
                  - title: baseResponse
                    type: object
                    properties:
                      success:
                        type: boolean
                        description: If the response is successful or not
                  - type: object
                    properties:
                      data:
                        type: array
                        description: Deals array
                        items:
                          type: object
                          properties:
                            id:
                              type: integer
                              description: The ID of the deal
                            title:
                              type: string
                              description: The title of the deal
                            owner_id:
                              type: integer
                              description: The ID of the user who owns the deal
                            person_id:
                              type: integer
                              description: The ID of the person linked to the deal
                            org_id:
                              type: integer
                              description: The ID of the organization linked to the deal
                            pipeline_id:
                              type: integer
                              description: The ID of the pipeline associated with the deal
                            stage_id:
                              type: integer
                              description: The ID of the deal stage
                            value:
                              type: number
                              description: The value of the deal
                            currency:
                              type: string
                              description: The currency associated with the deal
                            add_time:
                              type: string
                              description: The creation date and time of the deal
                            update_time:
                              type: string
                              description: The last updated date and time of the deal
                            stage_change_time:
                              type: string
                              description: The last updated date and time of the deal stage
                            is_deleted:
                              type: boolean
                              description: Whether the deal is deleted or not
                            is_archived:
                              type: boolean
                              description: Whether the deal is archived or not
                            status:
                              type: string
                              description: The status of the deal
                            probability:
                              type: number
                              nullable: true
                              description: The success probability percentage of the deal
                            lost_reason:
                              type: string
                              nullable: true
                              description: The reason for losing the deal
                            visible_to:
                              type: integer
                              description: The visibility of the deal
                            close_time:
                              type: string
                              nullable: true
                              description: The date and time of closing the deal
                            won_time:
                              type: string
                              description: The date and time of changing the deal status as won
                            lost_time:
                              type: string
                              description: The date and time of changing the deal status as lost
                            expected_close_date:
                              type: string
                              format: date
                              description: The expected close date of the deal
                            label_ids:
                              type: array
                              description: The IDs of labels assigned to the deal
                              items:
                                type: integer
                            origin:
                              type: string
                              description: The way this Deal was created. `origin` field is set by Pipedrive when Deal is created and cannot be changed.
                            origin_id:
                              type: string
                              nullable: true
                              description: The optional ID to further distinguish the origin of the deal - e.g. Which API integration created this Deal.
                            channel:
                              type: integer
                              nullable: true
                              description: 'The ID of your Marketing channel this Deal was created from. Recognized Marketing channels can be configured in your <a href="https://app.pipedrive.com/settings/fields" target="_blank" rel="noopener noreferrer">Company settings</a>.'
                            channel_id:
                              type: string
                              nullable: true
                              description: The optional ID to further distinguish the Marketing channel.
                            source_lead_id:
                              type: string
                              format: uuid
                              nullable: true
                              description: The ID of the lead if the deal was converted from a lead. Only included when requested via include_fields parameter.
                            arr:
                              type: number
                              nullable: true
                              description: |
                                Only available in Growth and above plans

                                The Annual Recurring Revenue of the deal

                                Null if there are no products attached to the deal
                            mrr:
                              type: number
                              nullable: true
                              description: |
                                Only available in Growth and above plans

                                The Monthly Recurring Revenue of the deal

                                Null if there are no products attached to the deal
                            acv:
                              type: number
                              nullable: true
                              description: |
                                Only available in Growth and above plans

                                The Annual Contract Value of the deal

                                Null if there are no products attached to the deal
                            custom_fields:
                              type: object
                              additionalProperties: true
                              description: 'An object where each key represents a custom field. All custom fields are referenced as randomly generated 40-character hashes. To clear a custom field value, set it to `null`. For multi-option fields (field type `set`), use `null` to clear the selection — sending an empty array `[]` is not supported and will result in a validation error.'
                      additional_data:
                        type: object
                        description: The additional data of the list
                        properties:
                          next_cursor:
                            type: string
                            description: The first item on the next page. The value of the `next_cursor` field will be `null` if you have reached the end of the dataset and there’s no more pages to be returned.
              example:
                success: true
                data:
                  - id: 1
                    title: Deal Title
                    creator_user_id: 1
                    owner_id: 1
                    value: 200
                    person_id: 1
                    org_id: 1
                    stage_id: 1
                    pipeline_id: 1
                    currency: USD
                    archive_time: '2021-01-01T00:00:00Z'
                    add_time: '2021-01-01T00:00:00Z'
                    update_time: '2021-01-01T00:00:00Z'
                    stage_change_time: '2021-01-01T00:00:00Z'
                    status: open
                    is_archived: true
                    is_deleted: false
                    probability: 90
                    lost_reason: Lost Reason
                    visible_to: 7
                    close_time: '2021-01-01T00:00:00Z'
                    won_time: '2021-01-01T00:00:00Z'
                    lost_time: '2021-01-01T00:00:00Z'
                    local_won_date: '2021-01-01'
                    local_lost_date: '2021-01-01'
                    local_close_date: '2021-01-01'
                    expected_close_date: '2021-01-01'
                    label_ids:
                      - 1
                      - 2
                      - 3
                    origin: ManuallyCreated
                    origin_id: null
                    channel: 52
                    channel_id: Jun23 Billboards
                    source_lead_id: 35b0d604-eb0d-42d0-be11-eac8832051f0
                    acv: 120
                    arr: 120
                    mrr: 10
                    custom_fields: {}
                additional_data:
                  next_cursor: eyJmaWVsZCI6ImlkIiwiZmllbGRWYWx1ZSI6Nywic29ydERpcmVjdGlvbiI6ImFzYyIsImlkIjo3fQ
  '/deals/{id}':
    delete:
      summary: Delete a deal
      description: 'Marks a deal as deleted. After 30 days, the deal will be permanently deleted.'
      x-tool-description: 'Soft-deletes deals with 30-day recovery period before permanent removal. Essential for deal cleanup, error correction, and removing unwanted opportunities. Becomes inaccessible via standard APIs but recoverable during grace period.'
      x-token-cost: 3
      operationId: deleteDeal
      tags:
        - Deals
      security:
        - api_key: []
        - oauth2:
            - 'deals:full'
      parameters:
        - in: path
          name: id
          description: The ID of the deal
          required: true
          schema:
            type: integer
      responses:
        '200':
          description: Delete deal
          content:
            application/json:
              schema:
                title: DeleteDealResponse
                type: object
                properties:
                  success:
                    type: boolean
                    description: If the response is successful or not
                  data:
                    type: object
                    properties:
                      id:
                        type: integer
                        description: Deleted deal ID
              example:
                success: true
                data:
                  id: 1
    get:
      summary: Get details of a deal
      description: Returns the details of a specific deal.
      x-tool-description: 'Fetches comprehensive details of a specific deal by ID, including all properties, custom fields, associated contacts, and metadata. Use this endpoint for deal detail pages, updating deal information, or when you need complete deal context. Supports optional field inclusion for optimized data retrieval and custom field expansion for enhanced deal analysis.'
      x-token-cost: 1
      operationId: getDeal
      tags:
        - Deals
      security:
        - api_key: []
        - oauth2:
            - 'deals:read'
            - 'deals:full'
      parameters:
        - in: path
          name: id
          description: The ID of the deal
          required: true
          schema:
            type: integer
        - in: query
          name: include_fields
          description: Optional comma separated string array of additional fields to include
          schema:
            type: string
            enum:
              - next_activity_id
              - last_activity_id
              - first_won_time
              - products_count
              - files_count
              - notes_count
              - followers_count
              - email_messages_count
              - activities_count
              - done_activities_count
              - undone_activities_count
              - participants_count
              - last_incoming_mail_time
              - last_outgoing_mail_time
              - smart_bcc_email
              - source_lead_id
        - in: query
          name: custom_fields
          description: 'Optional comma separated string array of custom fields keys to include. If you are only interested in a particular set of custom fields, please use this parameter for faster results and smaller response.<br/>A maximum of 15 keys is allowed.'
          schema:
            type: string
        - in: query
          name: include_option_labels
          description: 'When provided with a ''true'' value, single option and multiple option custom fields values contain objects in the form of ''{ id: number, label: string }'' instead of plain id'
          schema:
            type: boolean
        - in: query
          name: include_labels
          description: 'When provided with ''true'' value, response will include an array of label objects in the form of ''{ id: number, label: string }'''
          schema:
            type: boolean
      responses:
        '200':
          description: Get deal
          content:
            application/json:
              schema:
                type: object
                title: UpsertDealResponse
                allOf:
                  - title: baseResponse
                    type: object
                    properties:
                      success:
                        type: boolean
                        description: If the response is successful or not
                  - type: object
                    title: UpsertDealResponseData
                    properties:
                      data:
                        type: object
                        properties:
                          id:
                            type: integer
                            description: The ID of the deal
                          title:
                            type: string
                            description: The title of the deal
                          owner_id:
                            type: integer
                            description: The ID of the user who owns the deal
                          person_id:
                            type: integer
                            description: The ID of the person linked to the deal
                          org_id:
                            type: integer
                            description: The ID of the organization linked to the deal
                          pipeline_id:
                            type: integer
                            description: The ID of the pipeline associated with the deal
                          stage_id:
                            type: integer
                            description: The ID of the deal stage
                          value:
                            type: number
                            description: The value of the deal
                          currency:
                            type: string
                            description: The currency associated with the deal
                          add_time:
                            type: string
                            description: The creation date and time of the deal
                          update_time:
                            type: string
                            description: The last updated date and time of the deal
                          stage_change_time:
                            type: string
                            description: The last updated date and time of the deal stage
                          is_deleted:
                            type: boolean
                            description: Whether the deal is deleted or not
                          is_archived:
                            type: boolean
                            description: Whether the deal is archived or not
                          status:
                            type: string
                            description: The status of the deal
                          probability:
                            type: number
                            nullable: true
                            description: The success probability percentage of the deal
                          lost_reason:
                            type: string
                            nullable: true
                            description: The reason for losing the deal
                          visible_to:
                            type: integer
                            description: The visibility of the deal
                          close_time:
                            type: string
                            nullable: true
                            description: The date and time of closing the deal
                          won_time:
                            type: string
                            description: The date and time of changing the deal status as won
                          lost_time:
                            type: string
                            description: The date and time of changing the deal status as lost
                          expected_close_date:
                            type: string
                            format: date
                            description: The expected close date of the deal
                          label_ids:
                            type: array
                            description: The IDs of labels assigned to the deal
                            items:
                              type: integer
                          origin:
                            type: string
                            description: The way this Deal was created. `origin` field is set by Pipedrive when Deal is created and cannot be changed.
                          origin_id:
                            type: string
                            nullable: true
                            description: The optional ID to further distinguish the origin of the deal - e.g. Which API integration created this Deal.
                          channel:
                            type: integer
                            nullable: true
                            description: 'The ID of your Marketing channel this Deal was created from. Recognized Marketing channels can be configured in your <a href="https://app.pipedrive.com/settings/fields" target="_blank" rel="noopener noreferrer">Company settings</a>.'
                          channel_id:
                            type: string
                            nullable: true
                            description: The optional ID to further distinguish the Marketing channel.
                          source_lead_id:
                            type: string
                            format: uuid
                            nullable: true
                            description: The ID of the lead if the deal was converted from a lead. Only included when requested via include_fields parameter.
                          arr:
                            type: number
                            nullable: true
                            description: |
                              Only available in Growth and above plans

                              The Annual Recurring Revenue of the deal

                              Null if there are no products attached to the deal
                          mrr:
                            type: number
                            nullable: true
                            description: |
                              Only available in Growth and above plans

                              The Monthly Recurring Revenue of the deal

                              Null if there are no products attached to the deal
                          acv:
                            type: number
                            nullable: true
                            description: |
                              Only available in Growth and above plans

                              The Annual Contract Value of the deal

                              Null if there are no products attached to the deal
                          custom_fields:
                            type: object
                            additionalProperties: true
                            description: 'An object where each key represents a custom field. All custom fields are referenced as randomly generated 40-character hashes. To clear a custom field value, set it to `null`. For multi-option fields (field type `set`), use `null` to clear the selection — sending an empty array `[]` is not supported and will result in a validation error.'
              example:
                success: true
                data:
                  id: 1
                  title: Deal Title
                  creator_user_id: 1
                  owner_id: 1
                  value: 200
                  person_id: 1
                  org_id: 1
                  stage_id: 1
                  pipeline_id: 1
                  currency: USD
                  archive_time: '2021-01-01T00:00:00Z'
                  add_time: '2021-01-01T00:00:00Z'
                  update_time: '2021-01-01T00:00:00Z'
                  stage_change_time: '2021-01-01T00:00:00Z'
                  status: open
                  is_archived: false
                  is_deleted: false
                  probability: 90
                  lost_reason: Lost Reason
                  visible_to: 7
                  close_time: '2021-01-01T00:00:00Z'
                  won_time: '2021-01-01T00:00:00Z'
                  lost_time: '2021-01-01T00:00:00Z'
                  local_won_date: '2021-01-01'
                  local_lost_date: '2021-01-01'
                  local_close_date: '2021-01-01'
                  expected_close_date: '2021-01-01'
                  label_ids:
                    - 1
                    - 2
                    - 3
                  origin: ManuallyCreated
                  origin_id: null
                  channel: 52
                  channel_id: Jun23 Billboards
                  source_lead_id: 35b0d604-eb0d-42d0-be11-eac8832051f0
                  acv: 120
                  arr: 120
                  mrr: 10
                  custom_fields: {}
    patch:
      summary: Update a deal
      description: Updates the properties of a deal.
      x-tool-description: 'Modifies deal properties using PATCH semantics for partial updates without affecting unchanged fields. Essential for deal progression, value updates, stage changes, and workflow automation. Preserves data integrity by updating only provided fields.'
      x-token-cost: 5
      operationId: updateDeal
      tags:
        - Deals
      security:
        - api_key: []
        - oauth2:
            - 'deals:full'
      parameters:
        - in: path
          name: id
          description: The ID of the deal
          required: true
          schema:
            type: integer
      requestBody:
        content:
          application/json:
            schema:
              type: object
              properties:
                title:
                  type: string
                  description: The title of the deal
                owner_id:
                  type: integer
                  description: The ID of the user who owns the deal
                person_id:
                  type: integer
                  description: The ID of the person linked to the deal
                org_id:
                  type: integer
                  description: The ID of the organization linked to the deal
                pipeline_id:
                  type: integer
                  description: The ID of the pipeline associated with the deal
                stage_id:
                  type: integer
                  description: The ID of the deal stage
                value:
                  type: number
                  description: The value of the deal
                currency:
                  type: string
                  description: The currency associated with the deal
                is_deleted:
                  type: boolean
                  description: Whether the deal is deleted or not
                is_archived:
                  type: boolean
                  description: Whether the deal is archived or not
                archive_time:
                  type: string
                  description: 'The optional date and time of archiving the deal in UTC. Format: YYYY-MM-DD HH:MM:SS. If omitted and `is_archived` is true, it will be set to the current date and time.'
                status:
                  type: string
                  description: The status of the deal
                probability:
                  type: number
                  nullable: true
                  description: The success probability percentage of the deal
                lost_reason:
                  type: string
                  nullable: true
                  description: The reason for losing the deal. Can only be set if deal status is lost.
                visible_to:
                  type: integer
                  description: The visibility of the deal
                close_time:
                  type: string
                  nullable: true
                  description: The date and time of closing the deal. Can only be set if deal status is won or lost.
                won_time:
                  type: string
                  description: The date and time of changing the deal status as won. Can only be set if deal status is won.
                lost_time:
                  type: string
                  description: The date and time of changing the deal status as lost. Can only be set if deal status is lost.
                expected_close_date:
                  type: string
                  format: date
                  description: The expected close date of the deal
                label_ids:
                  type: array
                  description: The IDs of labels assigned to the deal
                  items:
                    type: integer
                custom_fields:
                  type: object
                  additionalProperties: true
                  description: 'An object where each key represents a custom field. All custom fields are referenced as randomly generated 40-character hashes. To clear a custom field value, set it to `null`. For multi-option fields (field type `set`), use `null` to clear the selection — sending an empty array `[]` is not supported and will result in a validation error.'
      responses:
        '200':
          description: Edit deal
          content:
            application/json:
              schema:
                type: object
                title: UpsertDealResponse
                allOf:
                  - title: baseResponse
                    type: object
                    properties:
                      success:
                        type: boolean
                        description: If the response is successful or not
                  - type: object
                    title: UpsertDealResponseData
                    properties:
                      data:
                        type: object
                        properties:
                          id:
                            type: integer
                            description: The ID of the deal
                          title:
                            type: string
                            description: The title of the deal
                          owner_id:
                            type: integer
                            description: The ID of the user who owns the deal
                          person_id:
                            type: integer
                            description: The ID of the person linked to the deal
                          org_id:
                            type: integer
                            description: The ID of the organization linked to the deal
                          pipeline_id:
                            type: integer
                            description: The ID of the pipeline associated with the deal
                          stage_id:
                            type: integer
                            description: The ID of the deal stage
                          value:
                            type: number
                            description: The value of the deal
                          currency:
                            type: string
                            description: The currency associated with the deal
                          add_time:
                            type: string
                            description: The creation date and time of the deal
                          update_time:
                            type: string
                            description: The last updated date and time of the deal
                          stage_change_time:
                            type: string
                            description: The last updated date and time of the deal stage
                          is_deleted:
                            type: boolean
                            description: Whether the deal is deleted or not
                          is_archived:
                            type: boolean
                            description: Whether the deal is archived or not
                          status:
                            type: string
                            description: The status of the deal
                          probability:
                            type: number
                            nullable: true
                            description: The success probability percentage of the deal
                          lost_reason:
                            type: string
                            nullable: true
                            description: The reason for losing the deal
                          visible_to:
                            type: integer
                            description: The visibility of the deal
                          close_time:
                            type: string
                            nullable: true
                            description: The date and time of closing the deal
                          won_time:
                            type: string
                            description: The date and time of changing the deal status as won
                          lost_time:
                            type: string
                            description: The date and time of changing the deal status as lost
                          expected_close_date:
                            type: string
                            format: date
                            description: The expected close date of the deal
                          label_ids:
                            type: array
                            description: The IDs of labels assigned to the deal
                            items:
                              type: integer
                          origin:
                            type: string
                            description: The way this Deal was created. `origin` field is set by Pipedrive when Deal is created and cannot be changed.
                          origin_id:
                            type: string
                            nullable: true
                            description: The optional ID to further distinguish the origin of the deal - e.g. Which API integration created this Deal.
                          channel:
                            type: integer
                            nullable: true
                            description: 'The ID of your Marketing channel this Deal was created from. Recognized Marketing channels can be configured in your <a href="https://app.pipedrive.com/settings/fields" target="_blank" rel="noopener noreferrer">Company settings</a>.'
                          channel_id:
                            type: string
                            nullable: true
                            description: The optional ID to further distinguish the Marketing channel.
                          source_lead_id:
                            type: string
                            format: uuid
                            nullable: true
                            description: The ID of the lead if the deal was converted from a lead. Only included when requested via include_fields parameter.
                          arr:
                            type: number
                            nullable: true
                            description: |
                              Only available in Growth and above plans

                              The Annual Recurring Revenue of the deal

                              Null if there are no products attached to the deal
                          mrr:
                            type: number
                            nullable: true
                            description: |
                              Only available in Growth and above plans

                              The Monthly Recurring Revenue of the deal

                              Null if there are no products attached to the deal
                          acv:
                            type: number
                            nullable: true
                            description: |
                              Only available in Growth and above plans

                              The Annual Contract Value of the deal

                              Null if there are no products attached to the deal
                          custom_fields:
                            type: object
                            additionalProperties: true
                            description: 'An object where each key represents a custom field. All custom fields are referenced as randomly generated 40-character hashes. To clear a custom field value, set it to `null`. For multi-option fields (field type `set`), use `null` to clear the selection — sending an empty array `[]` is not supported and will result in a validation error.'
              example:
                success: true
                data:
                  id: 1
                  title: Deal Title
                  creator_user_id: 1
                  owner_id: 1
                  value: 200
                  person_id: 1
                  org_id: 1
                  stage_id: 1
                  pipeline_id: 1
                  currency: USD
                  archive_time: '2021-01-01T00:00:00Z'
                  add_time: '2021-01-01T00:00:00Z'
                  update_time: '2021-01-01T00:00:00Z'
                  stage_change_time: '2021-01-01T00:00:00Z'
                  status: open
                  is_archived: false
                  is_deleted: false
                  probability: 90
                  lost_reason: Lost Reason
                  visible_to: 7
                  close_time: '2021-01-01T00:00:00Z'
                  won_time: '2021-01-01T00:00:00Z'
                  lost_time: '2021-01-01T00:00:00Z'
                  local_won_date: '2021-01-01'
                  local_lost_date: '2021-01-01'
                  local_close_date: '2021-01-01'
                  expected_close_date: '2021-01-01'
                  label_ids:
                    - 1
                    - 2
                    - 3
                  origin: ManuallyCreated
                  origin_id: null
                  channel: 52
                  channel_id: Jun23 Billboards
                  source_lead_id: 35b0d604-eb0d-42d0-be11-eac8832051f0
                  acv: 120
                  arr: 120
                  mrr: 10
                  custom_fields: {}
  '/deals/{id}/followers':
    get:
      summary: List followers of a deal
      description: Lists users who are following the deal.
      x-tool-description: 'Retrieves users following a deal for visibility into collaboration and stakeholder involvement. Essential for team coordination, notification management, and understanding deal ownership in collaborative sales environments.'
      x-token-cost: 10
      operationId: getDealFollowers
      tags:
        - Deals
      security:
        - api_key: []
        - oauth2:
            - 'deals:read'
            - 'deals:full'
      parameters:
        - in: path
          name: id
          description: The ID of the deal
          required: true
          schema:
            type: integer
        - in: query
          name: limit
          description: 'For pagination, the limit of entries to be returned. If not provided, 100 items will be returned. Please note that a maximum value of 500 is allowed.'
          schema:
            type: integer
            example: 100
        - in: query
          name: cursor
          required: false
          schema:
            type: string
          description: 'For pagination, the marker (an opaque string value) representing the first item on the next page'
      responses:
        '200':
          description: List entity followers
          content:
            application/json:
              schema:
                type: object
                title: GetFollowersResponse
                allOf:
                  - title: baseResponse
                    type: object
                    properties:
                      success:
                        type: boolean
                        description: If the response is successful or not
                  - type: object
                    properties:
                      data:
                        type: array
                        description: Followers array
                        items:
                          type: object
                          properties:
                            user_id:
                              type: integer
                              description: The ID of the user following the entity
                            add_time:
                              type: string
                              description: The add time of the following
                      additional_data:
                        type: object
                        description: The additional data of the list
                        properties:
                          next_cursor:
                            type: string
                            description: The first item on the next page. The value of the `next_cursor` field will be `null` if you have reached the end of the dataset and there’s no more pages to be returned.
              example:
                success: true
                data:
                  - user_id: 1
                    add_time: '2021-01-01T00:00:00Z'
                additional_data:
                  next_cursor: eyJmaWVsZCI6ImlkIiwiZmllbGRWYWx1ZSI6Nywic29ydERpcmVjdGlvbiI6ImFzYyIsImlkIjo3fQ
    post:
      summary: Add a follower to a deal
      description: Adds a user as a follower to the deal.
      x-tool-description: 'Adds user as deal follower to receive notifications and updates about progress. Essential for team collaboration, manager oversight, stakeholder visibility, and proper deal communication.'
      x-token-cost: 5
      operationId: addDealFollower
      tags:
        - Deals
      security:
        - api_key: []
        - oauth2:
            - 'deals:full'
      parameters:
        - in: path
          name: id
          description: The ID of the deal
          required: true
          schema:
            type: integer
      requestBody:
        content:
          application/json:
            schema:
              required:
                - user_id
              type: object
              properties:
                user_id:
                  type: integer
                  description: The ID of the user to add as a follower
      responses:
        '201':
          description: Add a follower
          content:
            application/json:
              schema:
                type: object
                title: AddFollowerResponse
                allOf:
                  - title: baseResponse
                    type: object
                    properties:
                      success:
                        type: boolean
                        description: If the response is successful or not
                  - type: object
                    properties:
                      data:
                        type: object
                        properties:
                          user_id:
                            type: integer
                            description: The ID of the user following the entity
                          add_time:
                            type: string
                            description: The add time of the following
              example:
                success: true
                data:
                  user_id: 1
                  add_time: '2021-01-01T00:00:00Z'
  '/deals/{id}/followers/changelog':
    get:
      summary: List followers changelog of a deal
      description: Lists changelogs about users have followed the deal.
      x-tool-description: 'Retrieves historical log of deal follower changes including start and stop events. Essential for audit trails, team collaboration analysis, compliance, and tracking deal stakeholder evolution over time.'
      x-token-cost: 10
      operationId: getDealFollowersChangelog
      tags:
        - Deals
      security:
        - api_key: []
        - oauth2:
            - 'deals:read'
            - 'deals:full'
      parameters:
        - in: path
          name: id
          description: The ID of the deal
          required: true
          schema:
            type: integer
        - in: query
          name: limit
          description: 'For pagination, the limit of entries to be returned. If not provided, 100 items will be returned. Please note that a maximum value of 500 is allowed.'
          schema:
            type: integer
            example: 100
        - in: query
          name: cursor
          required: false
          schema:
            type: string
          description: 'For pagination, the marker (an opaque string value) representing the first item on the next page'
      responses:
        '200':
          description: List entity followers
          content:
            application/json:
              schema:
                type: object
                title: GetFollowerChangelogsResponse
                allOf:
                  - title: baseResponse
                    type: object
                    properties:
                      success:
                        type: boolean
                        description: If the response is successful or not
                  - type: object
                    properties:
                      data:
                        type: array
                        description: Follower changelogs array
                        items:
                          type: object
                          title: FollowerChangelogItem
                          properties:
                            action:
                              type: string
                              description: The type of change
                            actor_user_id:
                              type: integer
                              description: The ID of the user who did the change
                            follower_user_id:
                              type: integer
                              description: The ID of the user who was following the entity
                            time:
                              type: string
                              description: The time at which the change happened
                      additional_data:
                        type: object
                        description: The additional data of the list
                        properties:
                          next_cursor:
                            type: string
                            description: The first item on the next page. The value of the `next_cursor` field will be `null` if you have reached the end of the dataset and there’s no more pages to be returned.
              example:
                success: true
                data:
                  - action: added
                    actor_user_id: 1
                    follower_user_id: 1
                    time: '2024-01-01T00:00:00Z'
                additional_data:
                  next_cursor: eyJmaWVsZCI6ImlkIiwiZmllbGRWYWx1ZSI6Nywic29ydERpcmVjdGlvbiI6ImFzYyIsImlkIjo3fQ
  '/deals/{id}/followers/{follower_id}':
    delete:
      summary: Delete a follower from a deal
      description: Deletes a user follower from the deal.
      x-tool-description: 'Removes user from deal''s follower list by follower ID, stopping notifications and updates. Essential for team restructuring, role changes, access control, and managing stakeholder lists.'
      x-token-cost: 3
      operationId: deleteDealFollower
      tags:
        - Deals
      security:
        - api_key: []
        - oauth2:
            - 'deals:full'
      parameters:
        - in: path
          name: id
          description: The ID of the deal
          required: true
          schema:
            type: integer
        - in: path
          name: follower_id
          required: true
          schema:
            type: integer
          description: The ID of the following user
      responses:
        '200':
          description: Remove a follower
          content:
            application/json:
              schema:
                title: DeleteFollowerResponse
                type: object
                properties:
                  success:
                    type: boolean
                    description: If the response is successful or not
                  data:
                    type: object
                    properties:
                      user_id:
                        type: integer
                        description: Deleted follower user ID
              example:
                success: true
                data:
                  user_id: 1
  /deals/products:
    get:
      summary: Get deal products of several deals
      description: Returns data about products attached to deals
      x-tool-description: 'Retrieves product attachments across multiple deals (up to 100 IDs) in single request. Essential for bulk product analysis, revenue calculations, sales analytics, and commission calculations across deal portfolios.'
      x-token-cost: 10
      operationId: getDealsProducts
      tags:
        - DealProducts
      security:
        - api_key: []
        - oauth2:
            - 'products:read'
            - 'products:full'
            - 'deals:read'
            - 'deals:full'
      parameters:
        - in: query
          name: deal_ids
          required: true
          schema:
            type: array
            items:
              type: integer
          description: An array of integers with the IDs of the deals for which the attached products will be returned. A maximum of 100 deal IDs can be provided.
        - in: query
          name: cursor
          required: false
          schema:
            type: string
          description: 'For pagination, the marker (an opaque string value) representing the first item on the next page'
        - in: query
          name: limit
          description: 'For pagination, the limit of entries to be returned. If not provided, 100 items will be returned. Please note that a maximum value of 500 is allowed.'
          schema:
            type: integer
            example: 100
        - in: query
          name: sort_by
          description: 'The field to sort by. Supported fields: `id`, `deal_id`, `add_time`, `update_time`, `order_nr`.'
          schema:
            type: string
            default: id
            enum:
              - id
              - deal_id
              - add_time
              - update_time
              - order_nr
        - in: query
          name: sort_direction
          description: 'The sorting direction. Supported values: `asc`, `desc`.'
          schema:
            type: string
            default: asc
            enum:
              - asc
              - desc
      responses:
        '200':
          description: List of products attached to deals
          content:
            application/json:
              schema:
                title: GetDealsProductsResponse
                type: object
                properties:
                  success:
                    type: boolean
                    description: If the response is successful or not
                  data:
                    type: array
                    description: Array containing data for all products attached to deals
                    items:
                      allOf:
                        - type: object
                          properties:
                            id:
                              type: integer
                              description: The ID of the deal-product (the ID of the product attached to the deal)
                            sum:
                              type: number
                              description: The sum of all the products attached to the deal
                            tax:
                              type: number
                              description: The product tax
                            deal_id:
                              type: integer
                              description: The ID of the deal
                            name:
                              type: string
                              description: The product name
                            product_id:
                              type: integer
                              description: The ID of the product
                            product_variation_id:
                              type: integer
                              nullable: true
                              description: The ID of the product variation
                            order_nr:
                              type: integer
                              nullable: true
                              description: The order number of the product within the deal
                            add_time:
                              type: string
                              description: The date and time when the product was added to the deal
                            update_time:
                              type: string
                              description: The date and time when the deal product was last updated
                            comments:
                              type: string
                              description: The comments of the product
                            currency:
                              type: string
                              description: The currency associated with the deal product
                            discount:
                              type: number
                              default: 0
                              description: The value of the discount. The `discount_type` field can be used to specify whether the value is an amount or a percentage
                            discount_type:
                              type: string
                              enum:
                                - percentage
                                - amount
                              default: percentage
                              description: The type of the discount's value
                            quantity:
                              type: integer
                              description: The quantity of the product
                            item_price:
                              type: number
                              description: The price value of the product
                            tax_method:
                              type: string
                              enum:
                                - exclusive
                                - inclusive
                                - none
                              description: 'The tax option to be applied to the products. When using `inclusive`, the tax percentage will already be included in the price. When using `exclusive`, the tax will not be included in the price. When using `none`, no tax will be added. Use the `tax` field for defining the tax percentage amount. By default, the user setting value for tax options will be used. Changing this in one product affects the rest of the products attached to the deal'
                            is_enabled:
                              type: boolean
                              description: Whether this product is enabled for the deal
                              default: true
                        - type: object
                          properties:
                            billing_frequency:
                              default: one-time
                              type: string
                              enum:
                                - one-time
                                - annually
                                - semi-annually
                                - quarterly
                                - monthly
                                - weekly
                              description: |
                                Only available in Growth and above plans

                                How often a customer is billed for access to a service or product

                                To set `billing_frequency` different than `one-time`, the deal must not have installments associated

                                A deal can have up to 20 products attached with `billing_frequency` different than `one-time`
                        - type: object
                          properties:
                            billing_frequency_cycles:
                              default: null
                              type: integer
                              nullable: true
                              description: |
                                Only available in Growth and above plans

                                The number of times the billing frequency repeats for a product in a deal

                                When `billing_frequency` is set to `one-time`, this field must be `null`

                                When `billing_frequency` is set to `weekly`, this field cannot be `null`

                                For all the other values of `billing_frequency`, `null` represents a product billed indefinitely

                                Must be a positive integer less or equal to 208
                        - type: object
                          properties:
                            billing_start_date:
                              default: null
                              type: string
                              format: YYYY-MM-DD
                              nullable: true
                              description: |
                                Only available in Growth and above plans

                                The billing start date. Must be between 10 years in the past and 10 years in the future
                  additional_data:
                    type: object
                    description: Pagination related data
                    properties:
                      next_cursor:
                        type: string
                        description: The first item on the next page. The value of the `next_cursor` field will be `null` if you have reached the end of the dataset and there’s no more pages to be returned.
              example:
                success: true
                data:
                  - id: 3
                    sum: 90
                    tax: 0
                    deal_id: 1
                    name: Mechanical Pencil
                    product_id: 1
                    product_variation_id: null
                    order_nr: 50
                    add_time: '2019-12-19T11:36:49Z'
                    update_time: '2019-12-19T11:36:49Z'
                    comments: ''
                    currency: USD
                    discount: 0
                    quantity: 1
                    item_price: 90
                    tax_method: inclusive
                    discount_type: percentage
                    is_enabled: true
                    billing_frequency: one-time
                    billing_frequency_cycles: null
                    billing_start_date: '2019-12-19'
                additional_data:
                  next_cursor: eyJmaWVsZCI6ImlkIiwiZmllbGRWYWx1ZSI6Nywic29ydERpcmVjdGlvbiI6ImFzYyIsImlkIjo3fQ
  /deals/search:
    get:
      summary: Search deals
      description: 'Searches all deals by title, notes and/or custom fields. This endpoint is a wrapper of <a href="https://developers.pipedrive.com/docs/api/v1/ItemSearch#searchItem">/v1/itemSearch</a> with a narrower OAuth scope. Found deals can be filtered by the person ID and the organization ID.'
      x-tool-description: 'Performs full-text search across deal titles, notes, and custom fields with advanced filtering. Essential for search functionality, autocomplete features, and deal discovery. Supports exact matching, field-specific searches, and filtering by person, organization, or status.'
      x-token-cost: 20
      operationId: searchDeals
      tags:
        - Deals
      security:
        - api_key: []
        - oauth2:
            - 'deals:read'
            - 'deals:full'
            - 'search:read'
      parameters:
        - in: query
          name: term
          required: true
          schema:
            type: string
          description: The search term to look for. Minimum 2 characters (or 1 if using `exact_match`). Please note that the search term has to be URL encoded.
        - in: query
          name: fields
          schema:
            type: string
            enum:
              - custom_fields
              - notes
              - title
          description: 'A comma-separated string array. The fields to perform the search from. Defaults to all of them. Only the following custom field types are searchable: `address`, `varchar`, `text`, `varchar_auto`, `double`, `monetary` and `phone`. Read more about searching by custom fields <a href="https://support.pipedrive.com/en/article/search-finding-what-you-need#searching-by-custom-fields" target="_blank" rel="noopener noreferrer">here</a>.'
        - in: query
          name: exact_match
          schema:
            type: boolean
          description: 'When enabled, only full exact matches against the given term are returned. It is <b>not</b> case sensitive.'
        - in: query
          name: person_id
          schema:
            type: integer
          description: Will filter deals by the provided person ID. The upper limit of found deals associated with the person is 2000.
        - in: query
          name: organization_id
          schema:
            type: integer
          description: Will filter deals by the provided organization ID. The upper limit of found deals associated with the organization is 2000.
        - in: query
          name: status
          schema:
            type: string
            enum:
              - open
              - won
              - lost
          description: 'Will filter deals by the provided specific status. open = Open, won = Won, lost = Lost. The upper limit of found deals associated with the status is 2000.'
        - in: query
          name: include_fields
          schema:
            type: string
            enum:
              - deal.cc_email
          description: Supports including optional fields in the results which are not provided by default
        - in: query
          name: limit
          description: 'For pagination, the limit of entries to be returned. If not provided, 100 items will be returned. Please note that a maximum value of 500 is allowed.'
          schema:
            type: integer
            example: 100
        - in: query
          name: cursor
          required: false
          schema:
            type: string
          description: 'For pagination, the marker (an opaque string value) representing the first item on the next page'
      responses:
        '200':
          description: Success
          content:
            application/json:
              schema:
                title: GetDealSearchResponse
                allOf:
                  - title: baseResponse
                    type: object
                    properties:
                      success:
                        type: boolean
                        description: If the response is successful or not
                  - type: object
                    properties:
                      data:
                        type: object
                        properties:
                          items:
                            type: array
                            description: The array of deals
                            items:
                              type: object
                              properties:
                                result_score:
                                  type: number
                                  description: Search result relevancy
                                item:
                                  type: object
                                  properties:
                                    id:
                                      type: integer
                                      description: The ID of the deal
                                    type:
                                      type: string
                                      description: The type of the item
                                    title:
                                      type: string
                                      description: The title of the deal
                                    value:
                                      type: integer
                                      description: The value of the deal
                                    currency:
                                      type: string
                                      description: The currency of the deal
                                    status:
                                      type: string
                                      description: The status of the deal
                                    visible_to:
                                      type: integer
                                      description: The visibility of the deal
                                    owner:
                                      type: object
                                      properties:
                                        id:
                                          type: integer
                                          description: The ID of the owner of the deal
                                    stage:
                                      type: object
                                      properties:
                                        id:
                                          type: integer
                                          description: The ID of the stage of the deal
                                        name:
                                          type: string
                                          description: The name of the stage of the deal
                                    person:
                                      type: object
                                      nullable: true
                                      properties:
                                        id:
                                          type: integer
                                          description: The ID of the person the deal is associated with
                                        name:
                                          type: string
                                          description: The name of the person the deal is associated with
                                    organization:
                                      type: object
                                      nullable: true
                                      properties:
                                        id:
                                          type: integer
                                          description: The ID of the organization the deal is associated with
                                        name:
                                          type: string
                                          description: The name of the organization the deal is associated with
                                    custom_fields:
                                      type: array
                                      items:
                                        type: string
                                      description: Custom fields
                                    notes:
                                      type: array
                                      description: An array of notes
                                      items:
                                        type: string
                                    is_archived:
                                      type: boolean
                                      description: A flag indicating whether the deal is archived or not
                      additional_data:
                        type: object
                        description: Pagination related data
                        properties:
                          next_cursor:
                            type: string
                            description: The first item on the next page. The value of the `next_cursor` field will be `null` if you have reached the end of the dataset and there’s no more pages to be returned.
              example:
                success: true
                data:
                  items:
                    - result_score: 1.22
                      item:
                        id: 1
                        type: deal
                        title: Jane Doe deal
                        value: 100
                        currency: USD
                        status: open
                        visible_to: 3
                        owner:
                          id: 1
                        stage:
                          id: 1
                          name: Lead In
                        person:
                          id: 1
                          name: Jane Doe
                        organization: null
                        custom_fields: []
                        notes: []
                        is_archived: false
                additional_data:
                  next_cursor: eyJmaWVsZCI6ImlkIiwiZmllbGRWYWx1ZSI6Nywic29ydERpcmVjdGlvbiI6ImFzYyIsImlkIjo3fQ
  '/deals/{id}/products':
    get:
      summary: List products attached to a deal
      description: Lists products attached to a deal.
      x-tool-description: 'Retrieves products attached to deal with detailed information: quantities, prices, and configurations. Essential for deal value analysis, product management, accurate summaries, and pricing calculations.'
      x-token-cost: 10
      operationId: getDealProducts
      tags:
        - DealProducts
      security:
        - api_key: []
        - oauth2:
            - 'products:read'
            - 'products:full'
            - 'deals:read'
            - 'deals:full'
      parameters:
        - in: path
          name: id
          description: The ID of the deal
          required: true
          schema:
            type: integer
        - in: query
          name: cursor
          required: false
          schema:
            type: string
          description: 'For pagination, the marker (an opaque string value) representing the first item on the next page'
        - in: query
          name: limit
          description: 'For pagination, the limit of entries to be returned. If not provided, 100 items will be returned. Please note that a maximum value of 500 is allowed.'
          schema:
            type: integer
            example: 100
        - in: query
          name: sort_by
          description: 'The field to sort by. Supported fields: `id`, `add_time`, `update_time`, `order_nr`.'
          schema:
            default: id
            type: string
            enum:
              - id
              - add_time
              - update_time
              - order_nr
        - in: query
          name: sort_direction
          description: 'The sorting direction. Supported values: `asc`, `desc`.'
          schema:
            default: asc
            type: string
            enum:
              - asc
              - desc
      responses:
        '200':
          description: List of products attached to deals
          content:
            application/json:
              schema:
                title: GetDealsProductsResponse
                type: object
                properties:
                  success:
                    type: boolean
                    description: If the response is successful or not
                  data:
                    type: array
                    description: Array containing data for all products attached to deals
                    items:
                      allOf:
                        - type: object
                          properties:
                            id:
                              type: integer
                              description: The ID of the deal-product (the ID of the product attached to the deal)
                            sum:
                              type: number
                              description: The sum of all the products attached to the deal
                            tax:
                              type: number
                              description: The product tax
                            deal_id:
                              type: integer
                              description: The ID of the deal
                            name:
                              type: string
                              description: The product name
                            product_id:
                              type: integer
                              description: The ID of the product
                            product_variation_id:
                              type: integer
                              nullable: true
                              description: The ID of the product variation
                            order_nr:
                              type: integer
                              nullable: true
                              description: The order number of the product within the deal
                            add_time:
                              type: string
                              description: The date and time when the product was added to the deal
                            update_time:
                              type: string
                              description: The date and time when the deal product was last updated
                            comments:
                              type: string
                              description: The comments of the product
                            currency:
                              type: string
                              description: The currency associated with the deal product
                            discount:
                              type: number
                              default: 0
                              description: The value of the discount. The `discount_type` field can be used to specify whether the value is an amount or a percentage
                            discount_type:
                              type: string
                              enum:
                                - percentage
                                - amount
                              default: percentage
                              description: The type of the discount's value
                            quantity:
                              type: integer
                              description: The quantity of the product
                            item_price:
                              type: number
                              description: The price value of the product
                            tax_method:
                              type: string
                              enum:
                                - exclusive
                                - inclusive
                                - none
                              description: 'The tax option to be applied to the products. When using `inclusive`, the tax percentage will already be included in the price. When using `exclusive`, the tax will not be included in the price. When using `none`, no tax will be added. Use the `tax` field for defining the tax percentage amount. By default, the user setting value for tax options will be used. Changing this in one product affects the rest of the products attached to the deal'
                            is_enabled:
                              type: boolean
                              description: Whether this product is enabled for the deal
                              default: true
                        - type: object
                          properties:
                            billing_frequency:
                              default: one-time
                              type: string
                              enum:
                                - one-time
                                - annually
                                - semi-annually
                                - quarterly
                                - monthly
                                - weekly
                              description: |
                                Only available in Growth and above plans

                                How often a customer is billed for access to a service or product

                                To set `billing_frequency` different than `one-time`, the deal must not have installments associated

                                A deal can have up to 20 products attached with `billing_frequency` different than `one-time`
                        - type: object
                          properties:
                            billing_frequency_cycles:
                              default: null
                              type: integer
                              nullable: true
                              description: |
                                Only available in Growth and above plans

                                The number of times the billing frequency repeats for a product in a deal

                                When `billing_frequency` is set to `one-time`, this field must be `null`

                                When `billing_frequency` is set to `weekly`, this field cannot be `null`

                                For all the other values of `billing_frequency`, `null` represents a product billed indefinitely

                                Must be a positive integer less or equal to 208
                        - type: object
                          properties:
                            billing_start_date:
                              default: null
                              type: string
                              format: YYYY-MM-DD
                              nullable: true
                              description: |
                                Only available in Growth and above plans

                                The billing start date. Must be between 10 years in the past and 10 years in the future
                  additional_data:
                    type: object
                    description: Pagination related data
                    properties:
                      next_cursor:
                        type: string
                        description: The first item on the next page. The value of the `next_cursor` field will be `null` if you have reached the end of the dataset and there’s no more pages to be returned.
              example:
                success: true
                data:
                  - id: 3
                    sum: 90
                    tax: 0
                    deal_id: 1
                    name: Mechanical Pencil
                    product_id: 1
                    product_variation_id: null
                    order_nr: 50
                    add_time: '2019-12-19T11:36:49Z'
                    update_time: '2019-12-19T11:36:49Z'
                    comments: ''
                    currency: USD
                    discount: 0
                    quantity: 1
                    item_price: 90
                    tax_method: inclusive
                    discount_type: percentage
                    is_enabled: true
                    billing_frequency: one-time
                    billing_frequency_cycles: null
                    billing_start_date: '2019-12-19'
                additional_data:
                  next_cursor: eyJmaWVsZCI6ImlkIiwiZmllbGRWYWx1ZSI6Nywic29ydERpcmVjdGlvbiI6ImFzYyIsImlkIjo3fQ
    post:
      summary: Add a product to a deal
      description: 'Adds a product to a deal, creating a new item called a deal-product.'
      x-tool-description: 'Attaches product to deal with configurable quantity, pricing, and discounts. Essential for sales processes, quote generation, and deal composition. Automatically updates deal values and maintains accurate sales tracking.'
      x-token-cost: 5
      operationId: addDealProduct
      tags:
        - DealProducts
      security:
        - api_key: []
        - oauth2:
            - 'products:full'
            - 'deals:full'
      parameters:
        - in: path
          name: id
          description: The ID of the deal
          required: true
          schema:
            type: integer
      requestBody:
        content:
          application/json:
            schema:
              title: addDealProductRequest
              required:
                - item_price
                - quantity
                - product_id
              allOf:
                - required:
                    - product_id
                    - item_price
                    - quantity
                  title: dealProductRequestBody
                  type: object
                  properties:
                    product_id:
                      type: integer
                      description: The ID of the product
                    item_price:
                      type: number
                      description: The price value of the product
                    quantity:
                      type: number
                      description: The quantity of the product
                    tax:
                      type: number
                      default: 0
                      description: The product tax
                    comments:
                      type: string
                      description: The comments of the product
                    discount:
                      type: number
                      default: 0
                      description: The value of the discount. The `discount_type` field can be used to specify whether the value is an amount or a percentage
                    is_enabled:
                      type: boolean
                      description: |
                        Whether this product is enabled for the deal

                        Not possible to disable the product if the deal has installments associated and the product is the last one enabled

                        Not possible to enable the product if the deal has installments associated and the product is recurring
                      default: true
                    tax_method:
                      type: string
                      enum:
                        - exclusive
                        - inclusive
                        - none
                      description: 'The tax option to be applied to the products. When using `inclusive`, the tax percentage will already be included in the price. When using `exclusive`, the tax will not be included in the price. When using `none`, no tax will be added. Use the `tax` field for defining the tax percentage amount. By default, the user setting value for tax options will be used. Changing this in one product affects the rest of the products attached to the deal'
                    discount_type:
                      type: string
                      enum:
                        - percentage
                        - amount
                      default: percentage
                      description: The value of the discount. The `discount_type` field can be used to specify whether the value is an amount or a percentage
                    product_variation_id:
                      type: integer
                      nullable: true
                      description: The ID of the product variation
                - type: object
                  properties:
                    billing_frequency:
                      default: one-time
                      type: string
                      enum:
                        - one-time
                        - annually
                        - semi-annually
                        - quarterly
                        - monthly
                        - weekly
                      description: |
                        Only available in Growth and above plans

                        How often a customer is billed for access to a service or product

                        To set `billing_frequency` different than `one-time`, the deal must not have installments associated

                        A deal can have up to 20 products attached with `billing_frequency` different than `one-time`
                - type: object
                  properties:
                    billing_frequency_cycles:
                      default: null
                      type: integer
                      nullable: true
                      description: |
                        Only available in Growth and above plans

                        The number of times the billing frequency repeats for a product in a deal

                        When `billing_frequency` is set to `one-time`, this field must be `null`

                        When `billing_frequency` is set to `weekly`, this field cannot be `null`

                        For all the other values of `billing_frequency`, `null` represents a product billed indefinitely

                        Must be a positive integer less or equal to 208
                - type: object
                  properties:
                    billing_start_date:
                      default: null
                      type: string
                      format: YYYY-MM-DD
                      nullable: true
                      description: |
                        Only available in Growth and above plans

                        The billing start date. Must be between 10 years in the past and 10 years in the future
      responses:
        '201':
          description: Add a product to the deal
          content:
            application/json:
              schema:
                title: AddDealProductResponse
                type: object
                properties:
                  success:
                    type: boolean
                    description: If the response is successful or not
                  data:
                    allOf:
                      - type: object
                        properties:
                          id:
                            type: integer
                            description: The ID of the deal-product (the ID of the product attached to the deal)
                          sum:
                            type: number
                            description: The sum of all the products attached to the deal
                          tax:
                            type: number
                            description: The product tax
                          deal_id:
                            type: integer
                            description: The ID of the deal
                          name:
                            type: string
                            description: The product name
                          product_id:
                            type: integer
                            description: The ID of the product
                          product_variation_id:
                            type: integer
                            nullable: true
                            description: The ID of the product variation
                          order_nr:
                            type: integer
                            nullable: true
                            description: The order number of the product within the deal
                          add_time:
                            type: string
                            description: The date and time when the product was added to the deal
                          update_time:
                            type: string
                            description: The date and time when the deal product was last updated
                          comments:
                            type: string
                            description: The comments of the product
                          currency:
                            type: string
                            description: The currency associated with the deal product
                          discount:
                            type: number
                            default: 0
                            description: The value of the discount. The `discount_type` field can be used to specify whether the value is an amount or a percentage
                          discount_type:
                            type: string
                            enum:
                              - percentage
                              - amount
                            default: percentage
                            description: The type of the discount's value
                          quantity:
                            type: integer
                            description: The quantity of the product
                          item_price:
                            type: number
                            description: The price value of the product
                          tax_method:
                            type: string
                            enum:
                              - exclusive
                              - inclusive
                              - none
                            description: 'The tax option to be applied to the products. When using `inclusive`, the tax percentage will already be included in the price. When using `exclusive`, the tax will not be included in the price. When using `none`, no tax will be added. Use the `tax` field for defining the tax percentage amount. By default, the user setting value for tax options will be used. Changing this in one product affects the rest of the products attached to the deal'
                          is_enabled:
                            type: boolean
                            description: Whether this product is enabled for the deal
                            default: true
                      - type: object
                        properties:
                          billing_frequency:
                            default: one-time
                            type: string
                            enum:
                              - one-time
                              - annually
                              - semi-annually
                              - quarterly
                              - monthly
                              - weekly
                            description: |
                              Only available in Growth and above plans

                              How often a customer is billed for access to a service or product

                              To set `billing_frequency` different than `one-time`, the deal must not have installments associated

                              A deal can have up to 20 products attached with `billing_frequency` different than `one-time`
                      - type: object
                        properties:
                          billing_frequency_cycles:
                            default: null
                            type: integer
                            nullable: true
                            description: |
                              Only available in Growth and above plans

                              The number of times the billing frequency repeats for a product in a deal

                              When `billing_frequency` is set to `one-time`, this field must be `null`

                              When `billing_frequency` is set to `weekly`, this field cannot be `null`

                              For all the other values of `billing_frequency`, `null` represents a product billed indefinitely

                              Must be a positive integer less or equal to 208
                      - type: object
                        properties:
                          billing_start_date:
                            default: null
                            type: string
                            format: YYYY-MM-DD
                            nullable: true
                            description: |
                              Only available in Growth and above plans

                              The billing start date. Must be between 10 years in the past and 10 years in the future
              example:
                success: true
                data:
                  id: 3
                  sum: 90
                  tax: 0
                  deal_id: 1
                  name: Mechanical Pencil
                  product_id: 1
                  product_variation_id: null
                  order_nr: 50
                  add_time: '2019-12-19T11:36:49Z'
                  update_time: '2019-12-19T11:36:49Z'
                  comments: ''
                  currency: USD
                  discount: 0
                  quantity: 1
                  item_price: 90
                  tax_method: inclusive
                  discount_type: percentage
                  is_enabled: true
                  billing_frequency: one-time
                  billing_frequency_cycles: null
                  billing_start_date: '2019-12-19'
    delete:
      summary: Delete many products from a deal
      description: 'Deletes multiple products from a deal. If no product IDs are specified, up to 100 products will be removed from the deal. A maximum of 100 product IDs can be provided per request.'
      x-tool-description: 'Bulk-deletes products from a deal to simplify management and cleanup. Supports selective deletion (by specifying product IDs) or full removal of up to 100 products per request, enabling efficient deal maintenance and product update workflows.'
      x-token-cost: 15
      operationId: deleteManyDealProducts
      tags:
        - DealProducts
      security:
        - api_key: []
        - oauth2:
            - 'products:full'
            - 'deals:full'
      parameters:
        - in: path
          name: id
          description: The ID of the deal
          required: true
          schema:
            type: integer
        - in: query
          name: ids
          required: false
          description: 'Comma-separated list of deal product IDs to delete. If not provided, all deal products will be deleted up to 100 items. Maximum 100 IDs allowed.'
          schema:
            type: string
            example: '1,2,3'
      responses:
        '200':
          description: Delete many products from a deal
          content:
            application/json:
              schema:
                title: DeleteManyDealProductResponse
                type: object
                properties:
                  success:
                    type: boolean
                    description: If the response is successful or not
                  data:
                    type: object
                    properties:
                      ids:
                        type: array
                        description: Array of IDs of products that were deleted from the deal
                        items:
                          type: integer
                  additional_data:
                    type: object
                    nullable: true
                    properties:
                      more_items_in_collection:
                        type: boolean
                        description: Whether there are more products to delete (when the deal has more than 100 products)
              example:
                success: true
                data:
                  ids:
                    - 1
                    - 2
                    - 3
                additional_data:
                  more_items_in_collection: false
  '/deals/{id}/products/{product_attachment_id}':
    patch:
      summary: Update the product attached to a deal
      description: Updates the details of the product that has been attached to a deal.
      x-tool-description: 'Modifies product attachment configuration within deal: quantity, pricing, discounts, and properties. Essential for negotiations, quantity updates, configuration corrections, and maintaining accurate deal values.'
      x-token-cost: 5
      operationId: updateDealProduct
      tags:
        - DealProducts
      security:
        - api_key: []
        - oauth2:
            - 'products:full'
            - 'deals:full'
      parameters:
        - in: path
          name: id
          description: The ID of the deal
          required: true
          schema:
            type: integer
        - in: path
          name: product_attachment_id
          required: true
          schema:
            type: integer
          description: The ID of the deal-product (the ID of the product attached to the deal)
      requestBody:
        content:
          application/json:
            schema:
              title: updateDealProductRequest
              allOf:
                - title: dealProductRequestBody
                  type: object
                  properties:
                    product_id:
                      type: integer
                      description: The ID of the product
                    item_price:
                      type: number
                      description: The price value of the product
                    quantity:
                      type: number
                      description: The quantity of the product
                    tax:
                      type: number
                      default: 0
                      description: The product tax
                    comments:
                      type: string
                      description: The comments of the product
                    discount:
                      type: number
                      default: 0
                      description: The value of the discount. The `discount_type` field can be used to specify whether the value is an amount or a percentage
                    is_enabled:
                      type: boolean
                      description: |
                        Whether this product is enabled for the deal

                        Not possible to disable the product if the deal has installments associated and the product is the last one enabled

                        Not possible to enable the product if the deal has installments associated and the product is recurring
                      default: true
                    tax_method:
                      type: string
                      enum:
                        - exclusive
                        - inclusive
                        - none
                      description: 'The tax option to be applied to the products. When using `inclusive`, the tax percentage will already be included in the price. When using `exclusive`, the tax will not be included in the price. When using `none`, no tax will be added. Use the `tax` field for defining the tax percentage amount. By default, the user setting value for tax options will be used. Changing this in one product affects the rest of the products attached to the deal'
                    discount_type:
                      type: string
                      enum:
                        - percentage
                        - amount
                      default: percentage
                      description: The value of the discount. The `discount_type` field can be used to specify whether the value is an amount or a percentage
                    product_variation_id:
                      type: integer
                      nullable: true
                      description: The ID of the product variation
                - type: object
                  properties:
                    billing_frequency:
                      type: string
                      enum:
                        - one-time
                        - annually
                        - semi-annually
                        - quarterly
                        - monthly
                        - weekly
                      description: |
                        Only available in Growth and above plans

                        How often a customer is billed for access to a service or product

                        To set `billing_frequency` different than `one-time`, the deal must not have installments associated

                        A deal can have up to 20 products attached with `billing_frequency` different than `one-time`
                - type: object
                  properties:
                    billing_frequency_cycles:
                      type: integer
                      nullable: true
                      description: |
                        Only available in Growth and above plans

                        The number of times the billing frequency repeats for a product in a deal

                        When `billing_frequency` is set to `one-time`, this field must be `null`

                        When `billing_frequency` is set to `weekly`, this field cannot be `null`

                        For all the other values of `billing_frequency`, `null` represents a product billed indefinitely

                        Must be a positive integer less or equal to 208
                - type: object
                  properties:
                    billing_start_date:
                      type: string
                      format: YYYY-MM-DD
                      nullable: true
                      description: |
                        Only available in Growth and above plans

                        The billing start date. Must be between 10 years in the past and 10 years in the future
      responses:
        '200':
          description: Add a product to the deal
          content:
            application/json:
              schema:
                title: AddDealProductResponse
                type: object
                properties:
                  success:
                    type: boolean
                    description: If the response is successful or not
                  data:
                    allOf:
                      - type: object
                        properties:
                          id:
                            type: integer
                            description: The ID of the deal-product (the ID of the product attached to the deal)
                          sum:
                            type: number
                            description: The sum of all the products attached to the deal
                          tax:
                            type: number
                            description: The product tax
                          deal_id:
                            type: integer
                            description: The ID of the deal
                          name:
                            type: string
                            description: The product name
                          product_id:
                            type: integer
                            description: The ID of the product
                          product_variation_id:
                            type: integer
                            nullable: true
                            description: The ID of the product variation
                          order_nr:
                            type: integer
                            nullable: true
                            description: The order number of the product within the deal
                          add_time:
                            type: string
                            description: The date and time when the product was added to the deal
                          update_time:
                            type: string
                            description: The date and time when the deal product was last updated
                          comments:
                            type: string
                            description: The comments of the product
                          currency:
                            type: string
                            description: The currency associated with the deal product
                          discount:
                            type: number
                            default: 0
                            description: The value of the discount. The `discount_type` field can be used to specify whether the value is an amount or a percentage
                          discount_type:
                            type: string
                            enum:
                              - percentage
                              - amount
                            default: percentage
                            description: The type of the discount's value
                          quantity:
                            type: integer
                            description: The quantity of the product
                          item_price:
                            type: number
                            description: The price value of the product
                          tax_method:
                            type: string
                            enum:
                              - exclusive
                              - inclusive
                              - none
                            description: 'The tax option to be applied to the products. When using `inclusive`, the tax percentage will already be included in the price. When using `exclusive`, the tax will not be included in the price. When using `none`, no tax will be added. Use the `tax` field for defining the tax percentage amount. By default, the user setting value for tax options will be used. Changing this in one product affects the rest of the products attached to the deal'
                          is_enabled:
                            type: boolean
                            description: Whether this product is enabled for the deal
                            default: true
                      - type: object
                        properties:
                          billing_frequency:
                            default: one-time
                            type: string
                            enum:
                              - one-time
                              - annually
                              - semi-annually
                              - quarterly
                              - monthly
                              - weekly
                            description: |
                              Only available in Growth and above plans

                              How often a customer is billed for access to a service or product

                              To set `billing_frequency` different than `one-time`, the deal must not have installments associated

                              A deal can have up to 20 products attached with `billing_frequency` different than `one-time`
                      - type: object
                        properties:
                          billing_frequency_cycles:
                            default: null
                            type: integer
                            nullable: true
                            description: |
                              Only available in Growth and above plans

                              The number of times the billing frequency repeats for a product in a deal

                              When `billing_frequency` is set to `one-time`, this field must be `null`

                              When `billing_frequency` is set to `weekly`, this field cannot be `null`

                              For all the other values of `billing_frequency`, `null` represents a product billed indefinitely

                              Must be a positive integer less or equal to 208
                      - type: object
                        properties:
                          billing_start_date:
                            default: null
                            type: string
                            format: YYYY-MM-DD
                            nullable: true
                            description: |
                              Only available in Growth and above plans

                              The billing start date. Must be between 10 years in the past and 10 years in the future
              example:
                success: true
                data:
                  id: 3
                  sum: 90
                  tax: 0
                  deal_id: 1
                  name: Mechanical Pencil
                  product_id: 1
                  product_variation_id: null
                  order_nr: 50
                  add_time: '2019-12-19T11:36:49Z'
                  update_time: '2019-12-19T11:36:49Z'
                  comments: ''
                  currency: USD
                  discount: 0
                  quantity: 1
                  item_price: 90
                  tax_method: inclusive
                  discount_type: percentage
                  is_enabled: true
                  billing_frequency: one-time
                  billing_frequency_cycles: null
                  billing_start_date: '2019-12-19'
    delete:
      summary: Delete an attached product from a deal
      description: 'Deletes a product attachment from a deal, using the `product_attachment_id`.'
      x-tool-description: 'Removes product attachment from deal by ID, automatically recalculating values and maintaining data integrity. Essential for negotiations, quote revisions, composition changes, and clean product-deal relationships.'
      x-token-cost: 3
      operationId: deleteDealProduct
      tags:
        - DealProducts
      security:
        - api_key: []
        - oauth2:
            - 'deals:full'
            - 'products:full'
      parameters:
        - in: path
          name: id
          description: The ID of the deal
          required: true
          schema:
            type: integer
        - in: path
          name: product_attachment_id
          required: true
          schema:
            type: integer
          description: The product attachment ID
      responses:
        '200':
          description: Delete an attached product from a deal
          content:
            application/json:
              schema:
                title: DeleteDealProductResponse
                type: object
                properties:
                  success:
                    type: boolean
                    description: If the response is successful or not
                  data:
                    type: object
                    properties:
                      id:
                        type: integer
                        description: The ID of an attached product that was deleted from the deal
              example:
                success: true
                data:
                  id: 123
  '/deals/{id}/products/bulk':
    post:
      summary: Add multiple products to a deal
      description: Adds multiple products to a deal in a single request. Maximum of 100 products allowed per request.
      x-tool-description: 'Bulk attaches multiple products to deal with configurable quantities, pricing, and discounts. Essential for efficient deal composition, batch product management, and streamlined sales processes. Automatically calculates deal values and maintains sales tracking.'
      x-token-cost: 25
      operationId: addManyDealProducts
      tags:
        - DealProducts
      security:
        - api_key: []
        - oauth2:
            - 'products:full'
            - 'deals:full'
      parameters:
        - in: path
          name: id
          description: The ID of the deal
          required: true
          schema:
            type: integer
      requestBody:
        content:
          application/json:
            schema:
              title: createManyDealProductRequest
              type: object
              required:
                - data
              properties:
                data:
                  type: array
                  description: Array of products to attach to the deal. Each product object may have the following properties.
                  maxItems: 100
                  items:
                    title: addDealProductRequest
                    required:
                      - item_price
                      - quantity
                      - product_id
                    allOf:
                      - required:
                          - product_id
                          - item_price
                          - quantity
                        title: dealProductRequestBody
                        type: object
                        properties:
                          product_id:
                            type: integer
                            description: The ID of the product
                          item_price:
                            type: number
                            description: The price value of the product
                          quantity:
                            type: number
                            description: The quantity of the product
                          tax:
                            type: number
                            default: 0
                            description: The product tax
                          comments:
                            type: string
                            description: The comments of the product
                          discount:
                            type: number
                            default: 0
                            description: The value of the discount. The `discount_type` field can be used to specify whether the value is an amount or a percentage
                          is_enabled:
                            type: boolean
                            description: |
                              Whether this product is enabled for the deal

                              Not possible to disable the product if the deal has installments associated and the product is the last one enabled

                              Not possible to enable the product if the deal has installments associated and the product is recurring
                            default: true
                          tax_method:
                            type: string
                            enum:
                              - exclusive
                              - inclusive
                              - none
                            description: 'The tax option to be applied to the products. When using `inclusive`, the tax percentage will already be included in the price. When using `exclusive`, the tax will not be included in the price. When using `none`, no tax will be added. Use the `tax` field for defining the tax percentage amount. By default, the user setting value for tax options will be used. Changing this in one product affects the rest of the products attached to the deal'
                          discount_type:
                            type: string
                            enum:
                              - percentage
                              - amount
                            default: percentage
                            description: The value of the discount. The `discount_type` field can be used to specify whether the value is an amount or a percentage
                          product_variation_id:
                            type: integer
                            nullable: true
                            description: The ID of the product variation
                      - type: object
                        properties:
                          billing_frequency:
                            default: one-time
                            type: string
                            enum:
                              - one-time
                              - annually
                              - semi-annually
                              - quarterly
                              - monthly
                              - weekly
                            description: |
                              Only available in Growth and above plans

                              How often a customer is billed for access to a service or product

                              To set `billing_frequency` different than `one-time`, the deal must not have installments associated

                              A deal can have up to 20 products attached with `billing_frequency` different than `one-time`
                      - type: object
                        properties:
                          billing_frequency_cycles:
                            default: null
                            type: integer
                            nullable: true
                            description: |
                              Only available in Growth and above plans

                              The number of times the billing frequency repeats for a product in a deal

                              When `billing_frequency` is set to `one-time`, this field must be `null`

                              When `billing_frequency` is set to `weekly`, this field cannot be `null`

                              For all the other values of `billing_frequency`, `null` represents a product billed indefinitely

                              Must be a positive integer less or equal to 208
                      - type: object
                        properties:
                          billing_start_date:
                            default: null
                            type: string
                            format: YYYY-MM-DD
                            nullable: true
                            description: |
                              Only available in Growth and above plans

                              The billing start date. Must be between 10 years in the past and 10 years in the future
      responses:
        '201':
          description: Add many products to a deal
          content:
            application/json:
              schema:
                title: AddManyDealProductResponse
                type: object
                properties:
                  success:
                    type: boolean
                    description: If the response is successful or not
                  data:
                    type: array
                    description: Array of created deal products
                    items:
                      allOf:
                        - type: object
                          properties:
                            id:
                              type: integer
                              description: The ID of the deal-product (the ID of the product attached to the deal)
                            sum:
                              type: number
                              description: The sum of all the products attached to the deal
                            tax:
                              type: number
                              description: The product tax
                            deal_id:
                              type: integer
                              description: The ID of the deal
                            name:
                              type: string
                              description: The product name
                            product_id:
                              type: integer
                              description: The ID of the product
                            product_variation_id:
                              type: integer
                              nullable: true
                              description: The ID of the product variation
                            order_nr:
                              type: integer
                              nullable: true
                              description: The order number of the product within the deal
                            add_time:
                              type: string
                              description: The date and time when the product was added to the deal
                            update_time:
                              type: string
                              description: The date and time when the deal product was last updated
                            comments:
                              type: string
                              description: The comments of the product
                            currency:
                              type: string
                              description: The currency associated with the deal product
                            discount:
                              type: number
                              default: 0
                              description: The value of the discount. The `discount_type` field can be used to specify whether the value is an amount or a percentage
                            discount_type:
                              type: string
                              enum:
                                - percentage
                                - amount
                              default: percentage
                              description: The type of the discount's value
                            quantity:
                              type: integer
                              description: The quantity of the product
                            item_price:
                              type: number
                              description: The price value of the product
                            tax_method:
                              type: string
                              enum:
                                - exclusive
                                - inclusive
                                - none
                              description: 'The tax option to be applied to the products. When using `inclusive`, the tax percentage will already be included in the price. When using `exclusive`, the tax will not be included in the price. When using `none`, no tax will be added. Use the `tax` field for defining the tax percentage amount. By default, the user setting value for tax options will be used. Changing this in one product affects the rest of the products attached to the deal'
                            is_enabled:
                              type: boolean
                              description: Whether this product is enabled for the deal
                              default: true
                        - type: object
                          properties:
                            billing_frequency:
                              default: one-time
                              type: string
                              enum:
                                - one-time
                                - annually
                                - semi-annually
                                - quarterly
                                - monthly
                                - weekly
                              description: |
                                Only available in Growth and above plans

                                How often a customer is billed for access to a service or product

                                To set `billing_frequency` different than `one-time`, the deal must not have installments associated

                                A deal can have up to 20 products attached with `billing_frequency` different than `one-time`
                        - type: object
                          properties:
                            billing_frequency_cycles:
                              default: null
                              type: integer
                              nullable: true
                              description: |
                                Only available in Growth and above plans

                                The number of times the billing frequency repeats for a product in a deal

                                When `billing_frequency` is set to `one-time`, this field must be `null`

                                When `billing_frequency` is set to `weekly`, this field cannot be `null`

                                For all the other values of `billing_frequency`, `null` represents a product billed indefinitely

                                Must be a positive integer less or equal to 208
                        - type: object
                          properties:
                            billing_start_date:
                              default: null
                              type: string
                              format: YYYY-MM-DD
                              nullable: true
                              description: |
                                Only available in Growth and above plans

                                The billing start date. Must be between 10 years in the past and 10 years in the future
              example:
                success: true
                data:
                  - id: 1
                    sum: 60.46
                    tax: 0
                    deal_id: 1
                    name: Product 1
                    product_id: 1
                    product_variation_id: null
                    order_nr: 10
                    add_time: '2019-12-19T11:36:49Z'
                    update_time: '2019-12-19T11:36:49Z'
                    comments: ''
                    currency: USD
                    discount: 0
                    quantity: 2
                    item_price: 30.23
                    tax_method: none
                    discount_type: percentage
                    is_enabled: true
                    billing_frequency: one-time
                    billing_frequency_cycles: null
                    billing_start_date: null
                  - id: 2
                    sum: 40.5
                    tax: 0
                    deal_id: 1
                    name: Product 2
                    product_id: 2
                    product_variation_id: null
                    order_nr: 20
                    add_time: '2019-12-19T11:36:49Z'
                    update_time: '2019-12-19T11:36:49Z'
                    comments: ''
                    currency: USD
                    discount: 0
                    quantity: 1
                    item_price: 40.5
                    tax_method: none
                    discount_type: percentage
                    is_enabled: true
                    billing_frequency: one-time
                    billing_frequency_cycles: null
                    billing_start_date: null
  '/deals/{id}/discounts':
    get:
      summary: List discounts added to a deal
      description: Lists discounts attached to a deal.
      x-tool-description: 'Retrieves discount configurations applied to deal including percentage and fixed-amount discounts. Essential for discount analysis, deal value calculations, accurate pricing summaries, and complex promotional arrangements.'
      x-token-cost: 10
      operationId: getAdditionalDiscounts
      tags:
        - Deals
      security:
        - api_key: []
        - oauth2:
            - 'deals:read'
            - 'deals:full'
      parameters:
        - in: path
          name: id
          description: The ID of the deal
          required: true
          schema:
            type: integer
      responses:
        '200':
          description: List of discounts added to deal
          content:
            application/json:
              schema:
                title: GetAdditionalDiscountsResponse
                type: object
                properties:
                  success:
                    type: boolean
                    description: If the response is successful or not
                  data:
                    type: array
                    description: Array containing data for all discounts added to a deal
                    items:
                      type: object
                      properties:
                        id:
                          type: string
                          description: The ID of the additional discount
                        type:
                          type: string
                          enum:
                            - percentage
                            - amount
                          description: Determines whether the discount is applied as a percentage or a fixed amount.
                        amount:
                          type: number
                          description: The discount amount.
                        description:
                          type: string
                          description: The name of the discount.
                        deal_id:
                          type: integer
                          description: The ID of the deal the discount was added to.
                        created_at:
                          type: string
                          description: The date and time of when the discount was created in the ISO 8601 format.
                        created_by:
                          type: integer
                          description: The ID of the user that created the discount.
                        updated_at:
                          type: string
                          description: The date and time of when the discount was created in the ISO 8601 format.
                        updated_by:
                          type: integer
                          description: The ID of the user that last updated the discount.
              example:
                success: true
                data:
                  - id: 30195b0e-7577-4f52-a5cf-f3ee39b9d1e0
                    description: 10%
                    amount: 10
                    type: percentage
                    deal_id: 1
                    created_at: '2024-03-12T10:30:05Z'
                    created_by: 1
                    updated_at: '2024-03-12T10:30:05Z'
                    updated_by: 1
    post:
      summary: Add a discount to a deal
      description: 'Adds a discount to a deal, changing the deal value if the deal has one-time products attached.'
      x-tool-description: 'Applies new discount to deal, automatically recalculating values for one-time products. Essential for negotiations, promotional campaigns, volume discounts, and maintaining accurate financial tracking.'
      x-token-cost: 5
      operationId: postAdditionalDiscount
      tags:
        - Deals
      security:
        - api_key: []
        - oauth2:
            - 'deals:read'
            - 'deals:full'
      parameters:
        - in: path
          name: id
          description: The ID of the deal
          required: true
          schema:
            type: integer
      requestBody:
        content:
          application/json:
            schema:
              title: AddAdditionalDiscountRequestBody
              required:
                - description
                - amount
                - type
              properties:
                description:
                  type: string
                  description: The name of the discount.
                amount:
                  type: number
                  description: The discount amount. Must be a positive number (excluding 0).
                type:
                  type: string
                  enum:
                    - percentage
                    - amount
                  description: Determines whether the discount is applied as a percentage or a fixed amount.
      responses:
        '201':
          description: Discount added to deal
          content:
            application/json:
              schema:
                title: AddAdditionalDiscountResponse
                type: object
                properties:
                  success:
                    type: boolean
                    description: If the response is successful or not
                  data:
                    type: object
                    properties:
                      id:
                        type: string
                        description: The ID of the additional discount
                      type:
                        type: string
                        enum:
                          - percentage
                          - amount
                        description: Determines whether the discount is applied as a percentage or a fixed amount.
                      amount:
                        type: number
                        description: The discount amount.
                      description:
                        type: string
                        description: The name of the discount.
                      deal_id:
                        type: integer
                        description: The ID of the deal the discount was added to.
                      created_at:
                        type: string
                        description: The date and time of when the discount was created in the ISO 8601 format.
                      created_by:
                        type: integer
                        description: The ID of the user that created the discount.
                      updated_at:
                        type: string
                        description: The date and time of when the discount was created in the ISO 8601 format.
                      updated_by:
                        type: integer
                        description: The ID of the user that last updated the discount.
              example:
                success: true
                data:
                  id: 30195b0e-7577-4f52-a5cf-f3ee39b9d1e0
                  description: 10%
                  amount: 10
                  type: percentage
                  deal_id: 1
                  created_at: '2024-03-12T10:30:05Z'
                  created_by: 1
                  updated_at: '2024-03-12T10:30:05Z'
                  updated_by: 1
  '/deals/{id}/discounts/{discount_id}':
    patch:
      summary: Update a discount added to a deal
      description: 'Edits a discount added to a deal, changing the deal value if the deal has one-time products attached.'
      x-tool-description: 'Modifies existing discount configuration on deal, automatically recalculating values for one-time products. Essential for discount adjustments, corrections, promotional updates, and maintaining pricing integrity.'
      x-token-cost: 5
      operationId: updateAdditionalDiscount
      tags:
        - Deals
      security:
        - api_key: []
        - oauth2:
            - 'deals:read'
            - 'deals:full'
      parameters:
        - in: path
          name: id
          description: The ID of the deal
          required: true
          schema:
            type: integer
        - in: path
          name: discount_id
          required: true
          schema:
            type: string
            format: uuid
          description: The ID of the discount
      requestBody:
        content:
          application/json:
            schema:
              title: updateAdditionalDiscountRequestBody
              properties:
                description:
                  type: string
                  description: The name of the discount.
                amount:
                  type: number
                  description: The discount amount. Must be a positive number (excluding 0).
                type:
                  type: string
                  enum:
                    - percentage
                    - amount
                  description: Determines whether the discount is applied as a percentage or a fixed amount.
      responses:
        '200':
          description: Edited discount.
          content:
            application/json:
              schema:
                title: UpdateAdditionalDiscountResponse
                type: object
                properties:
                  success:
                    type: boolean
                    description: If the response is successful or not
                  data:
                    type: object
                    properties:
                      id:
                        type: string
                        description: The ID of the additional discount
                      type:
                        type: string
                        enum:
                          - percentage
                          - amount
                        description: Determines whether the discount is applied as a percentage or a fixed amount.
                      amount:
                        type: number
                        description: The discount amount.
                      description:
                        type: string
                        description: The name of the discount.
                      deal_id:
                        type: integer
                        description: The ID of the deal the discount was added to.
                      created_at:
                        type: string
                        description: The date and time of when the discount was created in the ISO 8601 format.
                      created_by:
                        type: integer
                        description: The ID of the user that created the discount.
                      updated_at:
                        type: string
                        description: The date and time of when the discount was created in the ISO 8601 format.
                      updated_by:
                        type: integer
                        description: The ID of the user that last updated the discount.
              example:
                success: true
                data:
                  id: 30195b0e-7577-4f52-a5cf-f3ee39b9d1e0
                  description: 10%
                  amount: 10
                  type: percentage
                  deal_id: 1
                  created_at: '2024-03-12T10:30:05Z'
                  created_by: 1
                  updated_at: '2024-03-12T10:30:05Z'
                  updated_by: 1
    delete:
      summary: Delete a discount from a deal
      description: 'Removes a discount from a deal, changing the deal value if the deal has one-time products attached.'
      x-tool-description: 'Removes discount from deal by ID, automatically recalculating values for one-time products. Essential when discounts become inapplicable, negotiations change, or pricing corrections are needed.'
      x-token-cost: 3
      operationId: deleteAdditionalDiscount
      tags:
        - Deals
      security:
        - api_key: []
        - oauth2:
            - 'deals:read'
            - 'deals:full'
      parameters:
        - in: path
          name: id
          description: The ID of the deal
          required: true
          schema:
            type: integer
        - in: path
          name: discount_id
          required: true
          schema:
            type: string
            format: uuid
          description: The ID of the discount
      responses:
        '200':
          description: The ID of the deleted discount.
          content:
            application/json:
              schema:
                title: DeleteAdditionalDiscountResponse
                type: object
                properties:
                  success:
                    type: boolean
                    description: If the response is successful or not
                  data:
                    type: object
                    properties:
                      id:
                        type: integer
                        description: The ID of the discount that was deleted from the deal
              example:
                success: true
                data:
                  id: 123
  /deals/installments:
    get:
      summary: List installments added to a list of deals
      description: |
        Lists installments attached to a list of deals.

        Only available in Growth and above plans.
      x-tool-description: 'Retrieves payment installments across multiple deals (up to 100 IDs) in single request. Restricted to Growth+ plans. Essential for bulk installment analysis, payment reporting, and enterprise cash flow management.'
      x-token-cost: 10
      operationId: getInstallments
      tags:
        - DealInstallments
      security:
        - api_key: []
        - oauth2:
            - 'deals:read'
            - 'deals:full'
      parameters:
        - in: query
          name: deal_ids
          required: true
          schema:
            type: array
            items:
              type: integer
          description: An array of integers with the IDs of the deals for which the attached installments will be returned. A maximum of 100 deal IDs can be provided.
        - in: query
          name: cursor
          required: false
          schema:
            type: string
          description: 'For pagination, the marker (an opaque string value) representing the first item on the next page'
        - in: query
          name: limit
          description: 'For pagination, the limit of entries to be returned. If not provided, 100 items will be returned. Please note that a maximum value of 500 is allowed.'
          schema:
            type: integer
            example: 100
        - in: query
          name: sort_by
          description: 'The field to sort by. Supported fields: `id`, `billing_date`, `deal_id`.'
          schema:
            default: id
            type: string
            enum:
              - id
              - billing_date
              - deal_id
        - in: query
          name: sort_direction
          description: 'The sorting direction. Supported values: `asc`, `desc`.'
          schema:
            default: asc
            type: string
            enum:
              - asc
              - desc
      responses:
        '200':
          description: List installments added to a deal
          content:
            application/json:
              schema:
                title: GetInstallmentsResponse
                type: object
                properties:
                  success:
                    type: boolean
                    description: If the response is successful or not
                  data:
                    type: array
                    description: Array containing data for all installments added to a deal
                    items:
                      type: object
                      properties:
                        id:
                          type: integer
                          description: The ID of the installment
                        amount:
                          type: number
                          description: The installment amount.
                        billing_date:
                          type: string
                          description: The date on which the installment will be charged.
                        description:
                          type: string
                          description: The name of installment.
                        deal_id:
                          type: integer
                          description: The ID of the deal the installment was added to.
              example:
                success: true
                data:
                  - id: 1
                    amount: 10
                    billing_date: '2025-03-10'
                    deal_id: 1
                    description: Delivery Fee
  '/deals/{id}/installments':
    post:
      summary: Add an installment to a deal
      description: |
        Adds an installment to a deal.

        An installment can only be added if the deal includes at least one one-time product. 
        If the deal contains at least one recurring product, adding installments is not allowed.

        Only available in Growth and above plans.
      x-tool-description: 'Creates payment installment for deals with one-time products, enabling split payment schedules. Restricted to Growth+ plans and incompatible with recurring products. Essential for enterprise deals and custom payment terms.'
      x-token-cost: 5
      operationId: postInstallment
      tags:
        - DealInstallments
      security:
        - api_key: []
        - oauth2:
            - 'deals:read'
            - 'deals:full'
      parameters:
        - in: path
          name: id
          description: The ID of the deal
          required: true
          schema:
            type: integer
      requestBody:
        content:
          application/json:
            schema:
              title: AddInstallmentRequestBody
              required:
                - description
                - amount
                - billing_date
              properties:
                description:
                  type: string
                  description: The name of the installment.
                amount:
                  type: number
                  description: The installment amount. Must be a positive number (excluding 0).
                billing_date:
                  type: string
                  description: The date on which the installment will be charged. Must be in the format YYYY-MM-DD.
      responses:
        '200':
          description: Installment added to deal
          content:
            application/json:
              schema:
                title: AddAInstallmentResponse
                type: object
                properties:
                  success:
                    type: boolean
                    description: If the response is successful or not
                  data:
                    type: object
                    properties:
                      id:
                        type: integer
                        description: The ID of the installment
                      amount:
                        type: number
                        description: The installment amount.
                      billing_date:
                        type: string
                        description: The date on which the installment will be charged.
                      description:
                        type: string
                        description: The name of installment.
                      deal_id:
                        type: integer
                        description: The ID of the deal the installment was added to.
              example:
                success: true
                data:
                  id: 1
                  amount: 10
                  billing_date: '2025-03-10'
                  deal_id: 1
                  description: Delivery Fee
  '/deals/{id}/installments/{installment_id}':
    patch:
      summary: Update an installment added to a deal
      description: |
        Edits an installment added to a deal.

        Only available in Growth and above plans.
      x-tool-description: 'Modifies existing payment installment within deal: amounts, dates, or terms. Restricted to Growth+ plans. Essential for renegotiating schedules, corrections, and maintaining flexible payment arrangements.'
      x-token-cost: 5
      operationId: updateInstallment
      tags:
        - DealInstallments
      security:
        - api_key: []
        - oauth2:
            - 'deals:read'
            - 'deals:full'
      parameters:
        - in: path
          name: id
          description: The ID of the deal
          required: true
          schema:
            type: integer
        - in: path
          name: installment_id
          required: true
          schema:
            type: integer
          description: The ID of the installment
      requestBody:
        content:
          application/json:
            schema:
              title: UpdateInstallmentRequestBody
              properties:
                description:
                  type: string
                  description: The name of the installment.
                amount:
                  type: number
                  description: The installment amount. Must be a positive number (excluding 0).
                billing_date:
                  type: string
                  description: The date on which the installment will be charged. Must be in the format YYYY-MM-DD.
      responses:
        '200':
          description: Edited installment.
          content:
            application/json:
              schema:
                title: UpdateInstallmentResponse
                type: object
                properties:
                  success:
                    type: boolean
                    description: If the response is successful or not
                  data:
                    type: object
                    properties:
                      id:
                        type: integer
                        description: The ID of the installment
                      amount:
                        type: number
                        description: The installment amount.
                      billing_date:
                        type: string
                        description: The date on which the installment will be charged.
                      description:
                        type: string
                        description: The name of installment.
                      deal_id:
                        type: integer
                        description: The ID of the deal the installment was added to.
              example:
                success: true
                data:
                  id: 1
                  amount: 10
                  billing_date: '2025-03-10'
                  deal_id: 1
                  description: Delivery Fee
    delete:
      summary: Delete an installment from a deal
      description: |
        Removes an installment from a deal.

        Only available in Growth and above plans.
      x-tool-description: 'Removes payment installment from deal by ID, simplifying schedules or correcting structures. Restricted to Growth+ plans. Essential when payment terms change or installments are no longer needed.'
      x-token-cost: 3
      operationId: deleteInstallment
      tags:
        - DealInstallments
      security:
        - api_key: []
        - oauth2:
            - 'deals:read'
            - 'deals:full'
      parameters:
        - in: path
          name: id
          description: The ID of the deal
          required: true
          schema:
            type: integer
        - in: path
          name: installment_id
          required: true
          schema:
            type: integer
          description: The ID of the installment
      responses:
        '200':
          description: The ID of the deleted installment.
          content:
            application/json:
              schema:
                title: DeleteInstallmentResponse
                type: object
                properties:
                  success:
                    type: boolean
                    description: If the response is successful or not
                  data:
                    type: object
                    properties:
                      id:
                        type: integer
                        description: The ID of the installment that was deleted from the deal
              example:
                success: true
                data:
                  id: 1
  '/deals/{id}/convert/lead':
    post:
      security:
        - api_key: []
        - oauth2:
            - 'deals:full'
      tags:
        - Deals
      summary: Convert a deal to a lead
      description: 'Initiates a conversion of a deal to a lead. The return value is an ID of a job that was assigned to perform the conversion. Related entities (notes, files, emails, activities, ...) are transferred during the process to the target entity. There are exceptions for entities like invoices or history that are not transferred and remain linked to the original deal. If the conversion is successful, the deal is marked as deleted. To retrieve the created entity ID and the result of the conversion, call the <a href="https://developers.pipedrive.com/docs/api/v1/Deals#getDealConversionStatus">/api/v2/deals/{deal_id}/convert/status/{conversion_id}</a> endpoint.'
      operationId: convertDealToLead
      x-token-cost: 40
      parameters:
        - in: path
          name: id
          required: true
          schema:
            type: integer
          description: The ID of the deal to convert
      responses:
        '200':
          description: Successful response containing payload in the `data` field
          content:
            application/json:
              schema:
                title: AddConvertDealToLeadResponse
                type: object
                properties:
                  success:
                    type: boolean
                  data:
                    type: object
                    description: An object containing conversion job id that performs the conversion
                    required:
                      - conversion_id
                    properties:
                      conversion_id:
                        description: The ID of the conversion job that can be used to retrieve conversion status and details. The ID has UUID format.
                        type: string
                        format: uuid
                  additional_data:
                    type: object
                    nullable: true
                    example: null
              example:
                success: true
                data:
                  conversion_id: 4b40248b-945a-4802-b996-60fdff8c5c69
                additional_data: null
        '404':
          description: A resource describing an error
          content:
            application/json:
              schema:
                type: object
                title: GetConvertResponse
                properties:
                  success:
                    type: boolean
                    example: false
                  error:
                    type: string
                    description: The description of the error
                  error_info:
                    type: string
                    description: A message describing how to solve the problem
                  data:
                    type: object
                    nullable: true
                    example: null
                  additional_data:
                    type: object
                    nullable: true
                    example: null
              example:
                success: false
                error: Entity was not found
                error_info: Object was not found.
                data: null
                additional_data: null
  /dealFields:
    get:
      summary: Get all deal fields
      description: Returns metadata about all deal fields in the company.
      x-token-cost: 10
      operationId: getDealFields
      tags:
        - DealFields
      security:
        - api_key: []
        - oauth2:
            - 'deals:read'
            - 'deals:full'
            - admin
            - 'deal-fields:full'
      parameters:
        - in: query
          name: include_fields
          description: Optional comma separated string array of additional data namespaces to include in response
          schema:
            type: string
            enum:
              - ui_visibility
              - important_fields
              - required_fields
              - 'ui_visibility,important_fields'
              - 'ui_visibility,required_fields'
              - 'important_fields,required_fields'
              - 'ui_visibility,important_fields,required_fields'
        - in: query
          name: limit
          description: 'For pagination, the limit of entries to be returned. If not provided, 100 items will be returned. Please note that a maximum value of 500 is allowed.'
          schema:
            type: integer
            example: 100
        - in: query
          name: cursor
          required: false
          schema:
            type: string
          description: 'For pagination, the marker (an opaque string value) representing the first item on the next page'
      responses:
        '200':
          description: Get all deal fields
          content:
            application/json:
              schema:
                type: object
                properties:
                  success:
                    type: boolean
                    description: Whether the request was successful
                  data:
                    type: array
                    items:
                      type: object
                      required:
                        - field_name
                        - field_code
                        - description
                        - field_type
                        - is_custom_field
                        - is_optional_response_field
                      properties:
                        field_name:
                          type: string
                          description: The display name/label of the field
                        field_code:
                          type: string
                          description: The unique identifier for the field (40-character hash for custom fields)
                        description:
                          type: string
                          description: The description of the field
                        field_type:
                          type: string
                          description: The type of the field
                          enum:
                            - int
                            - double
                            - boolean
                            - varchar
                            - text
                            - phone
                            - varchar_options
                            - varchar_auto
                            - date
                            - daterange
                            - time
                            - timerange
                            - enum
                            - set
                            - address
                            - monetary
                            - deal
                            - deals
                            - lead
                            - org
                            - people
                            - project
                            - stage
                            - user
                            - activity
                            - json
                            - picture
                            - status
                            - visible_to
                            - price_list
                            - billing_frequency
                            - projects_board
                            - projects_phase
                        options:
                          type: array
                          nullable: true
                          description: 'Array of available options for enum/set fields, null for other field types'
                          items:
                            type: object
                            properties:
                              id:
                                type: integer
                                description: The option ID
                              label:
                                type: string
                                description: The option display label
                              color:
                                type: string
                                nullable: true
                                description: Optional color code for the option
                              update_time:
                                type: string
                                format: date-time
                                nullable: true
                                description: When the option was last updated
                              add_time:
                                type: string
                                format: date-time
                                nullable: true
                                description: When the option was created
                        subfields:
                          type: array
                          nullable: true
                          description: 'Array of subfields for complex field types (address, monetary), null for simple field types'
                          items:
                            type: object
                            properties:
                              field_code:
                                type: string
                                description: The subfield identifier
                              field_name:
                                type: string
                                description: The subfield display name
                              field_type:
                                type: string
                                description: The subfield type
                        is_custom_field:
                          type: boolean
                          description: Whether this is a user-created custom field
                        is_optional_response_field:
                          type: boolean
                          description: Whether this field is not returned by default in entity responses
                        ui_visibility:
                          type: object
                          description: UI visibility settings (only included when requested via include_fields parameter)
                          properties:
                            add_visible_flag:
                              type: boolean
                              description: Whether the field is shown in the add modal
                            details_visible_flag:
                              type: boolean
                              description: Whether the field is shown in the details view
                            projects_detail_visible_flag:
                              type: boolean
                              description: Whether the field is shown in project details view
                            show_in_pipelines:
                              type: object
                              description: Pipeline visibility configuration
                              properties:
                                show_in_all:
                                  type: boolean
                                  description: Whether the field is shown in all pipelines
                                pipeline_ids:
                                  type: array
                                  items:
                                    type: integer
                                  description: Specific pipeline IDs where the field is shown (if show_in_all is false)
                        important_fields:
                          type: object
                          description: Important fields configuration
                          properties:
                            enabled:
                              type: boolean
                              description: Whether the field is marked as important
                            stage_ids:
                              type: array
                              items:
                                type: integer
                              description: Array of stage IDs where the field is important
                        required_fields:
                          type: object
                          description: Required fields configuration
                          properties:
                            enabled:
                              type: boolean
                              description: Whether the field is required
                            stage_ids:
                              type: array
                              items:
                                type: integer
                              description: Array of stage IDs where the field is required
                            statuses:
                              type: object
                              description: 'Pipeline-specific status requirements, mapping pipeline ID to array of statuses'
                              additionalProperties:
                                type: array
                                items:
                                  type: string
                                  enum:
                                    - won
                                    - lost
                  additional_data:
                    type: object
                    properties:
                      next_cursor:
                        type: string
                        nullable: true
                        description: 'Base64url-encoded cursor for fetching the next page of results, null if no more pages'
              example:
                success: true
                data:
                  - field_name: Deal Title
                    field_code: title
                    description: The title or name of the deal
                    field_type: varchar
                    options: null
                    subfields: null
                    is_custom_field: false
                    is_optional_response_field: false
                    ui_visibility:
                      add_visible_flag: true
                      details_visible_flag: true
                      projects_detail_visible_flag: true
                      show_in_pipelines:
                        show_in_all: true
                        pipeline_ids: []
                    important_fields:
                      enabled: false
                      stage_ids: []
                    required_fields:
                      enabled: false
                      stage_ids: []
                      statuses: {}
                  - field_name: Value
                    field_code: value
                    description: The monetary value of the deal
                    field_type: monetary
                    options: null
                    subfields:
                      - field_code: value
                        field_name: Amount of Value
                        field_type: double
                      - field_code: currency
                        field_name: Currency of Value
                        field_type: varchar
                    is_custom_field: false
                    is_optional_response_field: false
                    ui_visibility:
                      add_visible_flag: true
                      details_visible_flag: true
                      projects_detail_visible_flag: true
                      show_in_pipelines:
                        show_in_all: true
                        pipeline_ids: []
                    important_fields:
                      enabled: true
                      stage_ids:
                        - 1
                        - 2
                        - 3
                    required_fields:
                      enabled: false
                      stage_ids: []
                      statuses: {}
                  - field_name: Priority
                    field_code: 40characterhashforcustomfieldidentifier
                    description: Priority level for the deal
                    field_type: enum
                    options:
                      - id: 1
                        label: Low
                        color: green
                      - id: 2
                        label: Medium
                        color: yellow
                      - id: 3
                        label: High
                        color: red
                    subfields: null
                    is_custom_field: true
                    is_optional_response_field: false
                    ui_visibility:
                      add_visible_flag: true
                      details_visible_flag: true
                      projects_detail_visible_flag: false
                      show_in_pipelines:
                        show_in_all: false
                        pipeline_ids:
                          - 1
                          - 2
                    important_fields:
                      enabled: true
                      stage_ids:
                        - 5
                        - 6
                    required_fields:
                      enabled: true
                      stage_ids:
                        - 5
                        - 6
                      statuses:
                        '1':
                          - won
                          - lost
                        '2':
                          - won
                additional_data:
                  next_cursor: eyJmaWVsZCI6ImlkIiwiZmllbGRWYWx1ZSI6Nywic29ydERpcmVjdGlvbiI6ImFzYyIsImlkIjo3fQ
    post:
      summary: Create one deal field
      description: Creates a new deal custom field.
      x-token-cost: 5
      operationId: addDealField
      tags:
        - DealFields
      security:
        - api_key: []
        - oauth2:
            - admin
            - 'deal-fields:full'
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              required:
                - field_name
                - field_type
              properties:
                field_name:
                  type: string
                  minLength: 1
                  maxLength: 255
                  description: Field name
                field_type:
                  type: string
                  description: 'The type of the field<table><tr><th>Value</th><th>Description</th></tr><tr><td>`varchar`</td><td>Text (up to 255 characters)</td><tr><td>`varchar_auto`</td><td>Autocomplete text (up to 255 characters)</td><tr><td>`text`</td><td>Long text (up to 65k characters)</td><tr><td>`double`</td><td>Numeric value</td><tr><td>`monetary`</td><td>Monetary field (has a numeric value and a currency value)</td><tr><td>`date`</td><td>Date (format YYYY-MM-DD)</td><tr><td>`set`</td><td>Options field with a possibility of having multiple chosen options</td><tr><td>`enum`</td><td>Options field with a single possible chosen option</td><tr><td>`user`</td><td>User field (contains a user ID of another Pipedrive user)</td><tr><td>`org`</td><td>Organization field (contains an organization ID which is stored on the same account)</td><tr><td>`people`</td><td>Person field (contains a person ID which is stored on the same account)</td><tr><td>`phone`</td><td>Phone field (up to 255 numbers and/or characters)</td><tr><td>`time`</td><td>Time field (format HH:MM:SS)</td><tr><td>`timerange`</td><td>Time-range field (has a start time and end time value, both HH:MM:SS)</td><tr><td>`daterange`</td><td>Date-range field (has a start date and end date value, both YYYY-MM-DD)</td><tr><td>`address`</td><td>Address field</dd></table>'
                  enum:
                    - varchar
                    - text
                    - double
                    - phone
                    - date
                    - daterange
                    - time
                    - timerange
                    - set
                    - enum
                    - varchar_auto
                    - address
                    - monetary
                    - org
                    - people
                    - user
                options:
                  type: array
                  description: Field options (required for enum and set field types)
                  items:
                    type: object
                    required:
                      - label
                    properties:
                      label:
                        type: string
                        description: The option label
                ui_visibility:
                  type: object
                  description: UI visibility settings for the field. Controls where the field appears in the Pipedrive web UI.
                  additionalProperties: true
                  properties:
                    add_visible_flag:
                      type: boolean
                      description: 'Whether the field is shown in the add deal modal. Default is false. Cannot be set to false for required system fields (title, pipeline, stage_id, probability).'
                      default: false
                    details_visible_flag:
                      type: boolean
                      description: Whether the field is shown in the deal details view. Default is true.
                      default: true
                    projects_detail_visible_flag:
                      type: boolean
                      description: Whether the field is shown in the project details view when the deal is linked to a project. Default is false.
                      default: false
                    show_in_pipelines:
                      type: object
                      description: Controls which pipelines display this field. Default is show_in_all=true. Note that fields marked as important or required must be visible in the pipelines where they are configured.
                      properties:
                        show_in_all:
                          type: boolean
                          description: 'When true, the field is visible in all pipelines. When false, visibility is controlled by pipeline_ids. Default is true.'
                          default: true
                        pipeline_ids:
                          type: array
                          items:
                            type: integer
                          description: 'Array of pipeline IDs where the field should be visible. Only used when show_in_all is false. Must reference valid, active pipelines.'
                important_fields:
                  type: object
                  description: Configuration for highlighting the field at specific stages.
                  additionalProperties: true
                  properties:
                    enabled:
                      type: boolean
                      description: 'Whether the field is marked as important. When false, the field is not highlighted. When true with empty stage_ids, the field is important everywhere. When true with specific stage_ids, the field is important only at those stages. Default is false.'
                      default: false
                    stage_ids:
                      type: array
                      items:
                        type: integer
                      description: 'Array of deal stage IDs where this field should be highlighted as important. Must reference valid, active deal stages. Empty array when enabled is false. The stages must be in pipelines where this field is visible (show_in_pipelines).'
                      default: []
                required_fields:
                  type: object
                  description: Required fields configuration for marking the field as mandatory when interacted with in the Pipedrive web UI.
                  additionalProperties: true
                  properties:
                    enabled:
                      type: boolean
                      description: 'Whether the field is required. When false, the field is optional. When true with empty stage_ids, the field is required everywhere. When true with specific stage_ids, the field is required only at those stages. Default is false.'
                      default: false
                    stage_ids:
                      type: array
                      items:
                        type: integer
                      description: 'Array of deal stage IDs where this field is required. Must reference valid, active deal stages. Empty array when enabled is false. The stages must be in pipelines where this field is visible (show_in_pipelines).'
                      default: []
                    statuses:
                      type: object
                      description: 'Pipeline-specific status requirements for when deals are won or lost. Keys are pipeline IDs (as strings), values are arrays of status strings (''won'', ''lost''). Example - {"1":["won","lost"],"2":["won"]} means the field is required when marking deals as won or lost in pipeline 1, and only when won in pipeline 2. Must reference valid, active pipelines.'
                      default: {}
                      additionalProperties:
                        type: array
                        items:
                          type: string
                          enum:
                            - won
                            - lost
                description:
                  type: string
                  nullable: true
                  description: Field description
      responses:
        '200':
          description: Create one deal field
          content:
            application/json:
              schema:
                type: object
                properties:
                  success:
                    type: boolean
                    description: Whether the request was successful
                  data:
                    type: object
                    required:
                      - field_name
                      - field_code
                      - description
                      - field_type
                      - is_custom_field
                      - is_optional_response_field
                    properties:
                      field_name:
                        type: string
                        description: The display name/label of the field
                      field_code:
                        type: string
                        description: The unique identifier for the field (40-character hash for custom fields)
                      description:
                        type: string
                        description: The description of the field
                      field_type:
                        type: string
                        description: The type of the field
                        enum:
                          - int
                          - double
                          - boolean
                          - varchar
                          - text
                          - phone
                          - varchar_options
                          - varchar_auto
                          - date
                          - daterange
                          - time
                          - timerange
                          - enum
                          - set
                          - address
                          - monetary
                          - deal
                          - deals
                          - lead
                          - org
                          - people
                          - project
                          - stage
                          - user
                          - activity
                          - json
                          - picture
                          - status
                          - visible_to
                          - price_list
                          - billing_frequency
                          - projects_board
                          - projects_phase
                      options:
                        type: array
                        nullable: true
                        description: 'Array of available options for enum/set fields, null for other field types'
                        items:
                          type: object
                          properties:
                            id:
                              type: integer
                              description: The option ID
                            label:
                              type: string
                              description: The option display label
                            color:
                              type: string
                              nullable: true
                              description: Optional color code for the option
                            update_time:
                              type: string
                              format: date-time
                              nullable: true
                              description: When the option was last updated
                            add_time:
                              type: string
                              format: date-time
                              nullable: true
                              description: When the option was created
                      subfields:
                        type: array
                        nullable: true
                        description: 'Array of subfields for complex field types (address, monetary), null for simple field types'
                        items:
                          type: object
                          properties:
                            field_code:
                              type: string
                              description: The subfield identifier
                            field_name:
                              type: string
                              description: The subfield display name
                            field_type:
                              type: string
                              description: The subfield type
                      is_custom_field:
                        type: boolean
                        description: Whether this is a user-created custom field
                      is_optional_response_field:
                        type: boolean
                        description: Whether this field is not returned by default in entity responses
                      ui_visibility:
                        type: object
                        description: UI visibility settings (only included when requested via include_fields parameter)
                        properties:
                          add_visible_flag:
                            type: boolean
                            description: Whether the field is shown in the add modal
                          details_visible_flag:
                            type: boolean
                            description: Whether the field is shown in the details view
                          projects_detail_visible_flag:
                            type: boolean
                            description: Whether the field is shown in project details view
                          show_in_pipelines:
                            type: object
                            description: Pipeline visibility configuration
                            properties:
                              show_in_all:
                                type: boolean
                                description: Whether the field is shown in all pipelines
                              pipeline_ids:
                                type: array
                                items:
                                  type: integer
                                description: Specific pipeline IDs where the field is shown (if show_in_all is false)
                      important_fields:
                        type: object
                        description: Important fields configuration
                        properties:
                          enabled:
                            type: boolean
                            description: Whether the field is marked as important
                          stage_ids:
                            type: array
                            items:
                              type: integer
                            description: Array of stage IDs where the field is important
                      required_fields:
                        type: object
                        description: Required fields configuration
                        properties:
                          enabled:
                            type: boolean
                            description: Whether the field is required
                          stage_ids:
                            type: array
                            items:
                              type: integer
                            description: Array of stage IDs where the field is required
                          statuses:
                            type: object
                            description: 'Pipeline-specific status requirements, mapping pipeline ID to array of statuses'
                            additionalProperties:
                              type: array
                              items:
                                type: string
                                enum:
                                  - won
                                  - lost
              example:
                success: true
                data:
                  field_name: Priority
                  field_code: 946947d1b02fd3ef20798d6112ec5d895a686a21
                  description: Priority level for the deal
                  field_type: enum
                  options:
                    - id: 1
                      label: Low
                      color: green
                    - id: 2
                      label: Medium
                      color: yellow
                    - id: 3
                      label: High
                      color: red
                  subfields: null
                  is_custom_field: true
                  is_optional_response_field: false
                  ui_visibility:
                    add_visible_flag: true
                    details_visible_flag: true
                    projects_detail_visible_flag: false
                    show_in_pipelines:
                      show_in_all: false
                      pipeline_ids:
                        - 1
                        - 2
                  important_fields:
                    enabled: true
                    stage_ids:
                      - 5
                      - 6
                  required_fields:
                    enabled: true
                    stage_ids:
                      - 5
                      - 6
  '/dealFields/{field_code}':
    get:
      summary: Get one deal field
      description: Returns metadata about a specific deal field.
      x-token-cost: 1
      operationId: getDealField
      tags:
        - DealFields
      security:
        - api_key: []
        - oauth2:
            - 'deals:read'
            - 'deals:full'
            - admin
            - 'deal-fields:full'
      parameters:
        - in: path
          name: field_code
          description: The unique code identifying the field
          required: true
          schema:
            type: string
        - in: query
          name: include_fields
          description: Optional comma separated string array of additional data namespaces to include in response
          schema:
            type: string
            enum:
              - ui_visibility
              - important_fields
              - required_fields
              - 'ui_visibility,important_fields'
              - 'ui_visibility,required_fields'
              - 'important_fields,required_fields'
              - 'ui_visibility,important_fields,required_fields'
      responses:
        '200':
          description: Get one deal field
          content:
            application/json:
              schema:
                type: object
                properties:
                  success:
                    type: boolean
                    description: Whether the request was successful
                  data:
                    type: object
                    required:
                      - field_name
                      - field_code
                      - description
                      - field_type
                      - is_custom_field
                      - is_optional_response_field
                    properties:
                      field_name:
                        type: string
                        description: The display name/label of the field
                      field_code:
                        type: string
                        description: The unique identifier for the field (40-character hash for custom fields)
                      description:
                        type: string
                        description: The description of the field
                      field_type:
                        type: string
                        description: The type of the field
                        enum:
                          - int
                          - double
                          - boolean
                          - varchar
                          - text
                          - phone
                          - varchar_options
                          - varchar_auto
                          - date
                          - daterange
                          - time
                          - timerange
                          - enum
                          - set
                          - address
                          - monetary
                          - deal
                          - deals
                          - lead
                          - org
                          - people
                          - project
                          - stage
                          - user
                          - activity
                          - json
                          - picture
                          - status
                          - visible_to
                          - price_list
                          - billing_frequency
                          - projects_board
                          - projects_phase
                      options:
                        type: array
                        nullable: true
                        description: 'Array of available options for enum/set fields, null for other field types'
                        items:
                          type: object
                          properties:
                            id:
                              type: integer
                              description: The option ID
                            label:
                              type: string
                              description: The option display label
                            color:
                              type: string
                              nullable: true
                              description: Optional color code for the option
                            update_time:
                              type: string
                              format: date-time
                              nullable: true
                              description: When the option was last updated
                            add_time:
                              type: string
                              format: date-time
                              nullable: true
                              description: When the option was created
                      subfields:
                        type: array
                        nullable: true
                        description: 'Array of subfields for complex field types (address, monetary), null for simple field types'
                        items:
                          type: object
                          properties:
                            field_code:
                              type: string
                              description: The subfield identifier
                            field_name:
                              type: string
                              description: The subfield display name
                            field_type:
                              type: string
                              description: The subfield type
                      is_custom_field:
                        type: boolean
                        description: Whether this is a user-created custom field
                      is_optional_response_field:
                        type: boolean
                        description: Whether this field is not returned by default in entity responses
                      ui_visibility:
                        type: object
                        description: UI visibility settings (only included when requested via include_fields parameter)
                        properties:
                          add_visible_flag:
                            type: boolean
                            description: Whether the field is shown in the add modal
                          details_visible_flag:
                            type: boolean
                            description: Whether the field is shown in the details view
                          projects_detail_visible_flag:
                            type: boolean
                            description: Whether the field is shown in project details view
                          show_in_pipelines:
                            type: object
                            description: Pipeline visibility configuration
                            properties:
                              show_in_all:
                                type: boolean
                                description: Whether the field is shown in all pipelines
                              pipeline_ids:
                                type: array
                                items:
                                  type: integer
                                description: Specific pipeline IDs where the field is shown (if show_in_all is false)
                      important_fields:
                        type: object
                        description: Important fields configuration
                        properties:
                          enabled:
                            type: boolean
                            description: Whether the field is marked as important
                          stage_ids:
                            type: array
                            items:
                              type: integer
                            description: Array of stage IDs where the field is important
                      required_fields:
                        type: object
                        description: Required fields configuration
                        properties:
                          enabled:
                            type: boolean
                            description: Whether the field is required
                          stage_ids:
                            type: array
                            items:
                              type: integer
                            description: Array of stage IDs where the field is required
                          statuses:
                            type: object
                            description: 'Pipeline-specific status requirements, mapping pipeline ID to array of statuses'
                            additionalProperties:
                              type: array
                              items:
                                type: string
                                enum:
                                  - won
                                  - lost
              example:
                success: true
                data:
                  field_name: Deal Title
                  field_code: title
                  description: The title or name of the deal
                  field_type: varchar
                  options: null
                  subfields: null
                  is_custom_field: false
                  is_optional_response_field: false
                  ui_visibility:
                    add_visible_flag: true
                    details_visible_flag: true
                    projects_detail_visible_flag: true
                    show_in_pipelines:
                      show_in_all: true
                      pipeline_ids: []
                  important_fields:
                    enabled: false
                    stage_ids: []
                  required_fields:
                    enabled: false
                    stage_ids: []
                    statuses: {}
    patch:
      summary: Update one deal field
      description: Updates a deal custom field. The field_code and field_type cannot be changed. At least one field must be provided in the request body.
      x-token-cost: 5
      operationId: updateDealField
      tags:
        - DealFields
      security:
        - api_key: []
        - oauth2:
            - 'deals:full'
            - admin
            - 'deal-fields:full'
      parameters:
        - in: path
          name: field_code
          description: The unique code identifying the field
          required: true
          schema:
            type: string
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              minProperties: 1
              properties:
                field_name:
                  type: string
                  minLength: 1
                  maxLength: 255
                  description: Field name
                ui_visibility:
                  type: object
                  description: UI visibility settings for the field. Controls where the field appears in the Pipedrive web UI.
                  additionalProperties: true
                  properties:
                    add_visible_flag:
                      type: boolean
                      description: 'Whether the field is shown in the add deal modal. Default is false. Cannot be set to false for required system fields (title, pipeline, stage_id, probability).'
                      default: false
                    details_visible_flag:
                      type: boolean
                      description: Whether the field is shown in the deal details view. Default is true.
                      default: true
                    projects_detail_visible_flag:
                      type: boolean
                      description: Whether the field is shown in the project details view when the deal is linked to a project. Default is false.
                      default: false
                    show_in_pipelines:
                      type: object
                      description: Controls which pipelines display this field. Default is show_in_all=true. Note that fields marked as important or required must be visible in the pipelines where they are configured.
                      properties:
                        show_in_all:
                          type: boolean
                          description: 'When true, the field is visible in all pipelines. When false, visibility is controlled by pipeline_ids. Default is true.'
                          default: true
                        pipeline_ids:
                          type: array
                          items:
                            type: integer
                          description: 'Array of pipeline IDs where the field should be visible. Only used when show_in_all is false. Must reference valid, active pipelines.'
                important_fields:
                  type: object
                  description: Configuration for highlighting the field at specific stages.
                  additionalProperties: true
                  properties:
                    enabled:
                      type: boolean
                      description: 'Whether the field is marked as important. When false, the field is not highlighted. When true with empty stage_ids, the field is important everywhere. When true with specific stage_ids, the field is important only at those stages. Default is false.'
                      default: false
                    stage_ids:
                      type: array
                      items:
                        type: integer
                      description: 'Array of deal stage IDs where this field should be highlighted as important. Must reference valid, active deal stages. Empty array when enabled is false. The stages must be in pipelines where this field is visible (show_in_pipelines).'
                      default: []
                required_fields:
                  type: object
                  description: Required fields configuration for marking the field as mandatory when interacted with in the Pipedrive web UI.
                  additionalProperties: true
                  properties:
                    enabled:
                      type: boolean
                      description: 'Whether the field is required. When false, the field is optional. When true with empty stage_ids, the field is required everywhere. When true with specific stage_ids, the field is required only at those stages. Default is false.'
                      default: false
                    stage_ids:
                      type: array
                      items:
                        type: integer
                      description: 'Array of deal stage IDs where this field is required. Must reference valid, active deal stages. Empty array when enabled is false. The stages must be in pipelines where this field is visible (show_in_pipelines).'
                      default: []
                    statuses:
                      type: object
                      description: 'Pipeline-specific status requirements for when deals are won or lost. Keys are pipeline IDs (as strings), values are arrays of status strings (''won'', ''lost''). Example - {"1":["won","lost"],"2":["won"]} means the field is required when marking deals as won or lost in pipeline 1, and only when won in pipeline 2. Must reference valid, active pipelines.'
                      default: {}
                      additionalProperties:
                        type: array
                        items:
                          type: string
                          enum:
                            - won
                            - lost
                description:
                  type: string
                  nullable: true
                  description: Field description
      responses:
        '200':
          description: Get one deal field
          content:
            application/json:
              schema:
                type: object
                properties:
                  success:
                    type: boolean
                    description: Whether the request was successful
                  data:
                    type: object
                    required:
                      - field_name
                      - field_code
                      - description
                      - field_type
                      - is_custom_field
                      - is_optional_response_field
                    properties:
                      field_name:
                        type: string
                        description: The display name/label of the field
                      field_code:
                        type: string
                        description: The unique identifier for the field (40-character hash for custom fields)
                      description:
                        type: string
                        description: The description of the field
                      field_type:
                        type: string
                        description: The type of the field
                        enum:
                          - int
                          - double
                          - boolean
                          - varchar
                          - text
                          - phone
                          - varchar_options
                          - varchar_auto
                          - date
                          - daterange
                          - time
                          - timerange
                          - enum
                          - set
                          - address
                          - monetary
                          - deal
                          - deals
                          - lead
                          - org
                          - people
                          - project
                          - stage
                          - user
                          - activity
                          - json
                          - picture
                          - status
                          - visible_to
                          - price_list
                          - billing_frequency
                          - projects_board
                          - projects_phase
                      options:
                        type: array
                        nullable: true
                        description: 'Array of available options for enum/set fields, null for other field types'
                        items:
                          type: object
                          properties:
                            id:
                              type: integer
                              description: The option ID
                            label:
                              type: string
                              description: The option display label
                            color:
                              type: string
                              nullable: true
                              description: Optional color code for the option
                            update_time:
                              type: string
                              format: date-time
                              nullable: true
                              description: When the option was last updated
                            add_time:
                              type: string
                              format: date-time
                              nullable: true
                              description: When the option was created
                      subfields:
                        type: array
                        nullable: true
                        description: 'Array of subfields for complex field types (address, monetary), null for simple field types'
                        items:
                          type: object
                          properties:
                            field_code:
                              type: string
                              description: The subfield identifier
                            field_name:
                              type: string
                              description: The subfield display name
                            field_type:
                              type: string
                              description: The subfield type
                      is_custom_field:
                        type: boolean
                        description: Whether this is a user-created custom field
                      is_optional_response_field:
                        type: boolean
                        description: Whether this field is not returned by default in entity responses
                      ui_visibility:
                        type: object
                        description: UI visibility settings (only included when requested via include_fields parameter)
                        properties:
                          add_visible_flag:
                            type: boolean
                            description: Whether the field is shown in the add modal
                          details_visible_flag:
                            type: boolean
                            description: Whether the field is shown in the details view
                          projects_detail_visible_flag:
                            type: boolean
                            description: Whether the field is shown in project details view
                          show_in_pipelines:
                            type: object
                            description: Pipeline visibility configuration
                            properties:
                              show_in_all:
                                type: boolean
                                description: Whether the field is shown in all pipelines
                              pipeline_ids:
                                type: array
                                items:
                                  type: integer
                                description: Specific pipeline IDs where the field is shown (if show_in_all is false)
                      important_fields:
                        type: object
                        description: Important fields configuration
                        properties:
                          enabled:
                            type: boolean
                            description: Whether the field is marked as important
                          stage_ids:
                            type: array
                            items:
                              type: integer
                            description: Array of stage IDs where the field is important
                      required_fields:
                        type: object
                        description: Required fields configuration
                        properties:
                          enabled:
                            type: boolean
                            description: Whether the field is required
                          stage_ids:
                            type: array
                            items:
                              type: integer
                            description: Array of stage IDs where the field is required
                          statuses:
                            type: object
                            description: 'Pipeline-specific status requirements, mapping pipeline ID to array of statuses'
                            additionalProperties:
                              type: array
                              items:
                                type: string
                                enum:
                                  - won
                                  - lost
              example:
                success: true
                data:
                  field_name: Deal Title
                  field_code: title
                  description: The title or name of the deal
                  field_type: varchar
                  options: null
                  subfields: null
                  is_custom_field: false
                  is_optional_response_field: false
                  ui_visibility:
                    add_visible_flag: true
                    details_visible_flag: true
                    projects_detail_visible_flag: true
                    show_in_pipelines:
                      show_in_all: true
                      pipeline_ids: []
                  important_fields:
                    enabled: false
                    stage_ids: []
                  required_fields:
                    enabled: false
                    stage_ids: []
                    statuses: {}
    delete:
      summary: Delete one deal field
      description: Marks a custom field as deleted.
      x-token-cost: 3
      operationId: deleteDealField
      tags:
        - DealFields
      security:
        - api_key: []
        - oauth2:
            - admin
            - 'deal-fields:full'
      parameters:
        - in: path
          name: field_code
          description: The unique code identifying the field
          required: true
          schema:
            type: string
      responses:
        '200':
          description: Delete one deal field
          content:
            application/json:
              schema:
                type: object
                properties:
                  success:
                    type: boolean
                    description: Whether the request was successful
                  data:
                    type: object
                    required:
                      - field_name
                      - field_code
                      - description
                      - field_type
                      - is_custom_field
                      - is_optional_response_field
                    properties:
                      field_name:
                        type: string
                        description: The display name/label of the field
                      field_code:
                        type: string
                        description: The unique identifier for the field (40-character hash for custom fields)
                      description:
                        type: string
                        description: The description of the field
                      field_type:
                        type: string
                        description: The type of the field
                      options:
                        type: array
                        nullable: true
                        description: 'Array of available options for enum/set fields, null for other field types'
                        items:
                          type: object
                      subfields:
                        type: array
                        nullable: true
                        description: 'Array of subfields for complex field types (address, monetary), null for simple field types'
                        items:
                          type: object
                      is_custom_field:
                        type: boolean
                        description: Whether this is a user-created custom field
                      is_optional_response_field:
                        type: boolean
                        description: Whether this field is not returned by default in entity responses
              example:
                success: true
                data:
                  field_name: Custom text field
                  field_code: 946947d1b02fd3ef20798d6112ec5d895a686a21
                  description: A custom text field
                  field_type: varchar
                  options: null
                  subfields: null
                  is_custom_field: true
                  is_optional_response_field: false
  '/dealFields/{field_code}/options':
    post:
      summary: Add deal field options in bulk
      description: Adds new options to a deal custom field that supports options (enum or set field types). This operation is atomic - all options are added or none are added. Returns only the newly added options.
      x-token-cost: 5
      operationId: addDealFieldOptions
      tags:
        - DealFields
      security:
        - api_key: []
        - oauth2:
            - 'deals:full'
            - admin
            - 'deal-fields:full'
      parameters:
        - in: path
          name: field_code
          description: The unique code identifying the field
          required: true
          schema:
            type: string
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: array
              description: Array of options to add. Each item must contain a label. At least one option is required.
              items:
                type: object
                required:
                  - label
                properties:
                  label:
                    type: string
                    minLength: 1
                    maxLength: 255
                    description: The display label for the new option
      responses:
        '200':
          description: Field options operation result
          content:
            application/json:
              schema:
                type: object
                properties:
                  success:
                    type: boolean
                  data:
                    type: array
                    items:
                      type: object
                      required:
                        - id
                        - label
                      properties:
                        id:
                          type: integer
                          description: The unique identifier of the option
                        label:
                          type: string
                          description: The display label of the option
                  additional_data:
                    type: object
                    nullable: true
              example:
                success: true
                data:
                  - id: 4
                    label: Critical
                additional_data: null
    delete:
      summary: Delete deal field options in bulk
      description: Removes existing options from a deal custom field. This operation is atomic and fails if any of the specified option IDs do not exist. Returns only the deleted options.
      x-token-cost: 3
      operationId: deleteDealFieldOptions
      tags:
        - DealFields
      security:
        - api_key: []
        - oauth2:
            - 'deals:full'
            - admin
            - 'deal-fields:full'
      parameters:
        - in: path
          name: field_code
          description: The unique code identifying the field
          required: true
          schema:
            type: string
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: array
              description: Array of option IDs to delete. Each item must contain an ID of the option to delete. At least one option ID is required. The entire request fails if any option does not exist.
              items:
                type: object
                required:
                  - id
                properties:
                  id:
                    type: integer
                    description: The unique identifier of the option to delete
      responses:
        '200':
          description: Field options operation result
          content:
            application/json:
              schema:
                type: object
                properties:
                  success:
                    type: boolean
                  data:
                    type: array
                    items:
                      type: object
                      required:
                        - id
                        - label
                      properties:
                        id:
                          type: integer
                          description: The unique identifier of the option
                        label:
                          type: string
                          description: The display label of the option
                  additional_data:
                    type: object
                    nullable: true
              example:
                success: true
                data:
                  - id: 4
                    label: Critical
                additional_data: null
    patch:
      summary: Update deal field options in bulk
      description: Updates existing options for a deal custom field. This operation is atomic and fails if any of the specified option IDs do not exist. Returns only the updated options.
      x-token-cost: 5
      operationId: updateDealFieldOptions
      tags:
        - DealFields
      security:
        - api_key: []
        - oauth2:
            - 'deals:full'
            - admin
            - 'deal-fields:full'
      parameters:
        - in: path
          name: field_code
          description: The unique code identifying the field
          required: true
          schema:
            type: string
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: array
              description: Array of options to update. Each item must contain an ID and the updated label. At least one option is required. The entire request fails if any option does not exist.
              items:
                type: object
                required:
                  - id
                  - label
                properties:
                  id:
                    type: integer
                    description: The unique identifier of the option to update
                  label:
                    type: string
                    minLength: 1
                    maxLength: 255
                    description: The new display label for the option
      responses:
        '200':
          description: Field options operation result
          content:
            application/json:
              schema:
                type: object
                properties:
                  success:
                    type: boolean
                  data:
                    type: array
                    items:
                      type: object
                      required:
                        - id
                        - label
                      properties:
                        id:
                          type: integer
                          description: The unique identifier of the option
                        label:
                          type: string
                          description: The display label of the option
                  additional_data:
                    type: object
                    nullable: true
              example:
                success: true
                data:
                  - id: 4
                    label: Critical
                additional_data: null
  '/deals/{id}/convert/status/{conversion_id}':
    get:
      security:
        - api_key: []
        - oauth2:
            - 'deals:full'
            - 'deals:read'
      tags:
        - Deals
      summary: Get Deal conversion status
      description: 'Returns information about the conversion. Status is always present and its value (not_started, running, completed, failed, rejected) represents the current state of the conversion. Lead ID is only present if the conversion was successfully finished. This data is only temporary and removed after a few days.'
      operationId: getDealConversionStatus
      x-token-cost: 1
      parameters:
        - in: path
          name: id
          required: true
          schema:
            type: integer
          description: The ID of a deal
        - in: path
          name: conversion_id
          required: true
          schema:
            type: string
            format: uuid
          description: The ID of the conversion
      responses:
        '200':
          description: Successful response containing payload in the `data` field
          content:
            application/json:
              example:
                success: true
                data:
                  lead_id: 9f3e6e50-9d99-11ee-9538-29c81a92c0d1
                  conversion_id: 4b40248b-945a-4802-b996-60fdff8c5c69
                  status: completed
                additional_data: null
              schema:
                title: GetConvertResponse
                type: object
                required:
                  - success
                  - data
                properties:
                  success:
                    type: boolean
                  data:
                    type: object
                    description: An object containing conversion status. After successful conversion the converted entity ID is also present.
                    required:
                      - conversion_id
                      - status
                    properties:
                      lead_id:
                        description: The ID of the new lead.
                        type: string
                        format: uuid
                      deal_id:
                        description: The ID of the new deal.
                        type: integer
                      conversion_id:
                        description: The ID of the conversion job. The ID can be used to retrieve conversion status and details. The ID has UUID format.
                        type: string
                        format: uuid
                      status:
                        description: Status of the conversion job.
                        type: string
                        enum:
                          - not_started
                          - running
                          - completed
                          - failed
                          - rejected
                  additional_data:
                    type: object
                    nullable: true
                    example: null
        '404':
          description: A resource describing an error
          content:
            application/json:
              schema:
                type: object
                title: GetConvertResponse
                properties:
                  success:
                    type: boolean
                    example: false
                  error:
                    type: string
                    description: The description of the error
                  error_info:
                    type: string
                    description: A message describing how to solve the problem
                  data:
                    type: object
                    nullable: true
                    example: null
                  additional_data:
                    type: object
                    nullable: true
                    example: null
              example:
                success: false
                error: Entity was not found
                error_info: Object was not found.
                data: null
                additional_data: null
  /persons:
    get:
      summary: Get all persons
      description: 'Returns data about all persons. Fields `ims`, `postal_address`, `notes`, `birthday`, and `job_title` are only included if contact sync is enabled for the company.'
      x-token-cost: 10
      operationId: getPersons
      tags:
        - Persons
      security:
        - api_key: []
        - oauth2:
            - 'contacts:read'
            - 'contacts:full'
      parameters:
        - in: query
          name: filter_id
          schema:
            type: integer
          description: 'If supplied, only persons matching the specified filter are returned'
        - in: query
          name: ids
          description: 'Optional comma separated string array of up to 100 entity ids to fetch. If filter_id is provided, this is ignored. If any of the requested entities do not exist or are not visible, they are not included in the response.'
          schema:
            type: string
        - in: query
          name: owner_id
          schema:
            type: integer
          description: 'If supplied, only persons owned by the specified user are returned. If filter_id is provided, this is ignored.'
        - in: query
          name: org_id
          schema:
            type: integer
          description: 'If supplied, only persons linked to the specified organization are returned. If filter_id is provided, this is ignored.'
        - in: query
          name: deal_id
          schema:
            type: integer
          description: 'If supplied, only persons linked to the specified deal are returned. If filter_id is provided, this is ignored.'
        - in: query
          name: updated_since
          schema:
            type: string
          description: 'If set, only persons with an `update_time` later than or equal to this time are returned. In RFC3339 format, e.g. 2025-01-01T10:20:00Z.'
        - in: query
          name: updated_until
          schema:
            type: string
          description: 'If set, only persons with an `update_time` earlier than this time are returned. In RFC3339 format, e.g. 2025-01-01T10:20:00Z.'
        - in: query
          name: sort_by
          description: 'The field to sort by. Supported fields: `id`, `update_time`, `add_time`.'
          schema:
            type: string
            default: id
            enum:
              - id
              - update_time
              - add_time
        - in: query
          name: sort_direction
          description: 'The sorting direction. Supported values: `asc`, `desc`.'
          schema:
            type: string
            default: asc
            enum:
              - asc
              - desc
        - in: query
          name: include_fields
          description: Optional comma separated string array of additional fields to include. `marketing_status` and `doi_status` can only be included if the company has marketing app enabled.
          schema:
            type: string
            enum:
              - next_activity_id
              - last_activity_id
              - open_deals_count
              - related_open_deals_count
              - closed_deals_count
              - related_closed_deals_count
              - participant_open_deals_count
              - participant_closed_deals_count
              - email_messages_count
              - activities_count
              - done_activities_count
              - undone_activities_count
              - files_count
              - notes_count
              - followers_count
              - won_deals_count
              - related_won_deals_count
              - lost_deals_count
              - related_lost_deals_count
              - last_incoming_mail_time
              - last_outgoing_mail_time
              - marketing_status
              - doi_status
              - smart_bcc_email
        - in: query
          name: custom_fields
          description: 'Optional comma separated string array of custom fields keys to include. If you are only interested in a particular set of custom fields, please use this parameter for faster results and smaller response.<br/>A maximum of 15 keys is allowed.'
          schema:
            type: string
        - in: query
          name: include_option_labels
          description: 'When provided with a ''true'' value, single option and multiple option custom fields values contain objects in the form of ''{ id: number, label: string }'' instead of plain id'
          schema:
            type: boolean
        - in: query
          name: include_labels
          description: 'When provided with ''true'' value, response will include an array of label objects in the form of ''{ id: number, label: string }'''
          schema:
            type: boolean
        - in: query
          name: limit
          description: 'For pagination, the limit of entries to be returned. If not provided, 100 items will be returned. Please note that a maximum value of 500 is allowed.'
          schema:
            type: integer
            example: 100
        - in: query
          name: cursor
          required: false
          schema:
            type: string
          description: 'For pagination, the marker (an opaque string value) representing the first item on the next page'
      responses:
        '200':
          description: Get all persons
          content:
            application/json:
              schema:
                type: object
                title: GetPersonsResponse
                allOf:
                  - title: baseResponse
                    type: object
                    properties:
                      success:
                        type: boolean
                        description: If the response is successful or not
                  - type: object
                    properties:
                      data:
                        type: array
                        description: Persons array
                        items:
                          type: object
                          properties:
                            id:
                              type: integer
                              description: The ID of the person
                            name:
                              type: string
                              description: The name of the person
                            first_name:
                              type: string
                              description: The first name of the person
                            last_name:
                              type: string
                              description: The last name of the person
                            owner_id:
                              type: integer
                              description: The ID of the user who owns the person
                            org_id:
                              type: integer
                              description: The ID of the organization linked to the person
                            add_time:
                              type: string
                              description: The creation date and time of the person
                            update_time:
                              type: string
                              description: The last updated date and time of the person
                            emails:
                              type: array
                              description: The emails of the person
                              items:
                                type: object
                                properties:
                                  value:
                                    type: string
                                    description: The email address of the person
                                  primary:
                                    type: boolean
                                    description: Whether the email is primary or not
                                  label:
                                    type: string
                                    description: The email address classification label
                            phones:
                              type: array
                              description: The phones of the person
                              items:
                                type: object
                                properties:
                                  value:
                                    type: string
                                    description: The phone number of the person
                                  primary:
                                    type: boolean
                                    description: Whether the phone number is primary or not
                                  label:
                                    type: string
                                    description: The phone number classification label
                            is_deleted:
                              type: boolean
                              description: Whether the person is deleted or not
                            visible_to:
                              type: integer
                              description: The visibility of the person
                            label_ids:
                              type: array
                              description: The IDs of labels assigned to the person
                              items:
                                type: integer
                            picture_id:
                              type: integer
                              description: The ID of the picture associated with the person
                            postal_address:
                              type: object
                              description: 'Postal address of the person, included if contact sync is enabled for the company'
                              properties:
                                value:
                                  type: string
                                  description: The full address of the person
                                country:
                                  type: string
                                  description: Country of the person
                                admin_area_level_1:
                                  type: string
                                  description: Admin area level 1 (e.g. state) of the person
                                admin_area_level_2:
                                  type: string
                                  description: Admin area level 2 (e.g. county) of the person
                                locality:
                                  type: string
                                  description: Locality (e.g. city) of the person
                                sublocality:
                                  type: string
                                  description: Sublocality (e.g. neighborhood) of the person
                                route:
                                  type: string
                                  description: Route (e.g. street) of the person
                                street_number:
                                  type: string
                                  description: Street number of the person
                                subpremise:
                                  type: string
                                  description: Subpremise (e.g. apartment/suite number) of the person
                                postal_code:
                                  type: string
                                  description: Postal code of the person
                            notes:
                              type: string
                              description: 'Contact sync notes of the person, maximum 10 000 characters, included if contact sync is enabled for the company'
                            im:
                              type: array
                              description: 'The instant messaging accounts of the person, included if contact sync is enabled for the company'
                              items:
                                type: object
                                properties:
                                  value:
                                    type: string
                                    description: The instant messaging account of the person
                                  primary:
                                    type: boolean
                                    description: Whether the instant messaging account is primary or not
                                  label:
                                    type: string
                                    description: The instant messaging account classification label
                            birthday:
                              type: string
                              description: 'The birthday of the person, included if contact sync is enabled for the company'
                            job_title:
                              type: string
                              description: 'The job title of the person, included if contact sync is enabled for the company'
                            custom_fields:
                              type: object
                              additionalProperties: true
                              description: 'An object where each key represents a custom field. All custom fields are referenced as randomly generated 40-character hashes. To clear a custom field value, set it to `null`. For multi-option fields (field type `set`), use `null` to clear the selection — sending an empty array `[]` is not supported and will result in a validation error.'
                      additional_data:
                        type: object
                        description: The additional data of the list
                        properties:
                          next_cursor:
                            type: string
                            description: The first item on the next page. The value of the `next_cursor` field will be `null` if you have reached the end of the dataset and there’s no more pages to be returned.
              example:
                success: true
                data:
                  - id: 1
                    name: Person Name
                    first_name: Person
                    last_name: Name
                    owner_id: 1
                    org_id: 1
                    add_time: '2021-01-01T00:00:00Z'
                    update_time: '2021-01-01T00:00:00Z'
                    emails:
                      - value: email1@email.com
                        primary: true
                        label: work
                      - value: email2@email.com
                        primary: false
                        label: home
                    phones:
                      - value: '12345'
                        primary: true
                        label: work
                      - value: '54321'
                        primary: false
                        label: home
                    is_deleted: false
                    visible_to: 7
                    label_ids:
                      - 1
                      - 2
                      - 3
                    picture_id: 1
                    custom_fields: {}
                    notes: Notes from contact sync
                    im:
                      - value: skypeusername
                        primary: true
                        label: skype
                      - value: whatsappusername
                        primary: false
                        label: whatsapp
                    birthday: '2000-12-31'
                    job_title: Manager
                    postal_address:
                      value: 123 Main St
                      country: USA
                      admin_area_level_1: CA
                      admin_area_level_2: Santa Clara
                      locality: Sunnyvale
                      sublocality: Downtown
                      route: Main St
                      street_number: '123'
                      subpremise: Apt 1
                      postal_code: '94085'
                additional_data:
                  next_cursor: eyJmaWVsZCI6ImlkIiwiZmllbGRWYWx1ZSI6Nywic29ydERpcmVjdGlvbiI6ImFzYyIsImlkIjo3fQ
    post:
      summary: Add a new person
      description: 'Adds a new person. If the company uses the [Campaigns product](https://pipedrive.readme.io/docs/campaigns-in-pipedrive-api), then this endpoint will also accept and return the `marketing_status` field.'
      x-token-cost: 5
      operationId: addPerson
      tags:
        - Persons
      security:
        - api_key: []
        - oauth2:
            - 'contacts:full'
      requestBody:
        content:
          application/json:
            schema:
              type: object
              properties:
                name:
                  type: string
                  description: The name of the person
                owner_id:
                  type: integer
                  description: The ID of the user who owns the person
                org_id:
                  type: integer
                  description: The ID of the organization linked to the person
                add_time:
                  type: string
                  description: The creation date and time of the person
                update_time:
                  type: string
                  description: The last updated date and time of the person
                emails:
                  type: array
                  description: The emails of the person
                  items:
                    type: object
                    properties:
                      value:
                        type: string
                        description: The email address of the person
                      primary:
                        type: boolean
                        description: Whether the email is primary or not
                      label:
                        type: string
                        description: The email address classification label
                phones:
                  type: array
                  description: The phones of the person
                  items:
                    type: object
                    properties:
                      value:
                        type: string
                        description: The phone number of the person
                      primary:
                        type: boolean
                        description: Whether the phone number is primary or not
                      label:
                        type: string
                        description: The phone number classification label
                visible_to:
                  type: integer
                  description: The visibility of the person
                label_ids:
                  type: array
                  description: The IDs of labels assigned to the person
                  items:
                    type: integer
                marketing_status:
                  type: string
                  description: 'If the person does not have a valid email address, then the marketing status is **not set** and `no_consent` is returned for the `marketing_status` value when the new person is created. If the change is forbidden, the status will remain unchanged for every call that tries to modify the marketing status. Please be aware that it is only allowed **once** to change the marketing status from an old status to a new one.<table><tr><th>Value</th><th>Description</th></tr><tr><td>`no_consent`</td><td>The customer has not given consent to receive any marketing communications</td></tr><tr><td>`unsubscribed`</td><td>The customers have unsubscribed from ALL marketing communications</td></tr><tr><td>`subscribed`</td><td>The customers are subscribed and are counted towards marketing caps</td></tr><tr><td>`archived`</td><td>The customers with `subscribed` status can be moved to `archived` to save consent, but they are not paid for</td></tr></table>'
                  enum:
                    - no_consent
                    - unsubscribed
                    - subscribed
                    - archived
                custom_fields:
                  type: object
                  additionalProperties: true
                  description: 'An object where each key represents a custom field. All custom fields are referenced as randomly generated 40-character hashes. To clear a custom field value, set it to `null`. For multi-option fields (field type `set`), use `null` to clear the selection — sending an empty array `[]` is not supported and will result in a validation error.'
      responses:
        '200':
          description: Add person
          content:
            application/json:
              schema:
                type: object
                title: UpsertPersonResponse
                allOf:
                  - title: baseResponse
                    type: object
                    properties:
                      success:
                        type: boolean
                        description: If the response is successful or not
                  - type: object
                    title: UpsertPersonResponseData
                    properties:
                      data:
                        type: object
                        properties:
                          id:
                            type: integer
                            description: The ID of the person
                          name:
                            type: string
                            description: The name of the person
                          first_name:
                            type: string
                            description: The first name of the person
                          last_name:
                            type: string
                            description: The last name of the person
                          owner_id:
                            type: integer
                            description: The ID of the user who owns the person
                          org_id:
                            type: integer
                            description: The ID of the organization linked to the person
                          add_time:
                            type: string
                            description: The creation date and time of the person
                          update_time:
                            type: string
                            description: The last updated date and time of the person
                          emails:
                            type: array
                            description: The emails of the person
                            items:
                              type: object
                              properties:
                                value:
                                  type: string
                                  description: The email address of the person
                                primary:
                                  type: boolean
                                  description: Whether the email is primary or not
                                label:
                                  type: string
                                  description: The email address classification label
                          phones:
                            type: array
                            description: The phones of the person
                            items:
                              type: object
                              properties:
                                value:
                                  type: string
                                  description: The phone number of the person
                                primary:
                                  type: boolean
                                  description: Whether the phone number is primary or not
                                label:
                                  type: string
                                  description: The phone number classification label
                          is_deleted:
                            type: boolean
                            description: Whether the person is deleted or not
                          visible_to:
                            type: integer
                            description: The visibility of the person
                          label_ids:
                            type: array
                            description: The IDs of labels assigned to the person
                            items:
                              type: integer
                          picture_id:
                            type: integer
                            description: The ID of the picture associated with the person
                          postal_address:
                            type: object
                            description: 'Postal address of the person, included if contact sync is enabled for the company'
                            properties:
                              value:
                                type: string
                                description: The full address of the person
                              country:
                                type: string
                                description: Country of the person
                              admin_area_level_1:
                                type: string
                                description: Admin area level 1 (e.g. state) of the person
                              admin_area_level_2:
                                type: string
                                description: Admin area level 2 (e.g. county) of the person
                              locality:
                                type: string
                                description: Locality (e.g. city) of the person
                              sublocality:
                                type: string
                                description: Sublocality (e.g. neighborhood) of the person
                              route:
                                type: string
                                description: Route (e.g. street) of the person
                              street_number:
                                type: string
                                description: Street number of the person
                              subpremise:
                                type: string
                                description: Subpremise (e.g. apartment/suite number) of the person
                              postal_code:
                                type: string
                                description: Postal code of the person
                          notes:
                            type: string
                            description: 'Contact sync notes of the person, maximum 10 000 characters, included if contact sync is enabled for the company'
                          im:
                            type: array
                            description: 'The instant messaging accounts of the person, included if contact sync is enabled for the company'
                            items:
                              type: object
                              properties:
                                value:
                                  type: string
                                  description: The instant messaging account of the person
                                primary:
                                  type: boolean
                                  description: Whether the instant messaging account is primary or not
                                label:
                                  type: string
                                  description: The instant messaging account classification label
                          birthday:
                            type: string
                            description: 'The birthday of the person, included if contact sync is enabled for the company'
                          job_title:
                            type: string
                            description: 'The job title of the person, included if contact sync is enabled for the company'
                          custom_fields:
                            type: object
                            additionalProperties: true
                            description: 'An object where each key represents a custom field. All custom fields are referenced as randomly generated 40-character hashes. To clear a custom field value, set it to `null`. For multi-option fields (field type `set`), use `null` to clear the selection — sending an empty array `[]` is not supported and will result in a validation error.'
              example:
                success: true
                data:
                  id: 1
                  name: Person Name
                  first_name: Person
                  last_name: Name
                  owner_id: 1
                  org_id: 1
                  add_time: '2021-01-01T00:00:00Z'
                  update_time: '2021-01-01T00:00:00Z'
                  emails:
                    - value: email1@email.com
                      primary: true
                      label: work
                    - value: email2@email.com
                      primary: false
                      label: home
                  phones:
                    - value: '12345'
                      primary: true
                      label: work
                    - value: '54321'
                      primary: false
                      label: home
                  is_deleted: false
                  visible_to: 7
                  label_ids:
                    - 1
                    - 2
                    - 3
                  picture_id: 1
                  custom_fields: {}
                  notes: Notes from contact sync
                  im:
                    - value: skypeusername
                      primary: true
                      label: skype
                    - value: whatsappusername
                      primary: false
                      label: whatsapp
                  birthday: '2000-12-31'
                  job_title: Manager
                  postal_address:
                    value: 123 Main St
                    country: USA
                    admin_area_level_1: CA
                    admin_area_level_2: Santa Clara
                    locality: Sunnyvale
                    sublocality: Downtown
                    route: Main St
                    street_number: '123'
                    subpremise: Apt 1
                    postal_code: '94085'
  '/persons/{id}':
    delete:
      summary: Delete a person
      description: 'Marks a person as deleted. After 30 days, the person will be permanently deleted.'
      x-token-cost: 3
      operationId: deletePerson
      tags:
        - Persons
      security:
        - api_key: []
        - oauth2:
            - 'contacts:full'
      parameters:
        - in: path
          name: id
          description: The ID of the person
          required: true
          schema:
            type: integer
      responses:
        '200':
          description: Delete person
          content:
            application/json:
              schema:
                title: DeletePersonResponse
                type: object
                properties:
                  success:
                    type: boolean
                    description: If the response is successful or not
                  data:
                    type: object
                    properties:
                      id:
                        type: integer
                        description: Deleted person ID
              example:
                success: true
                data:
                  id: 1
    get:
      summary: Get details of a person
      description: 'Returns the details of a specific person. Fields `ims`, `postal_address`, `notes`, `birthday`, and `job_title` are only included if contact sync is enabled for the company.'
      x-token-cost: 1
      operationId: getPerson
      tags:
        - Persons
      security:
        - api_key: []
        - oauth2:
            - 'contacts:read'
            - 'contacts:full'
      parameters:
        - in: path
          name: id
          description: The ID of the person
          required: true
          schema:
            type: integer
        - in: query
          name: include_fields
          description: Optional comma separated string array of additional fields to include. `marketing_status` and `doi_status` can only be included if the company has marketing app enabled.
          schema:
            type: string
            enum:
              - next_activity_id
              - last_activity_id
              - open_deals_count
              - related_open_deals_count
              - closed_deals_count
              - related_closed_deals_count
              - participant_open_deals_count
              - participant_closed_deals_count
              - email_messages_count
              - activities_count
              - done_activities_count
              - undone_activities_count
              - files_count
              - notes_count
              - followers_count
              - won_deals_count
              - related_won_deals_count
              - lost_deals_count
              - related_lost_deals_count
              - last_incoming_mail_time
              - last_outgoing_mail_time
              - marketing_status
              - doi_status
              - smart_bcc_email
        - in: query
          name: custom_fields
          description: 'Optional comma separated string array of custom fields keys to include. If you are only interested in a particular set of custom fields, please use this parameter for faster results and smaller response.<br/>A maximum of 15 keys is allowed.'
          schema:
            type: string
        - in: query
          name: include_option_labels
          description: 'When provided with a ''true'' value, single option and multiple option custom fields values contain objects in the form of ''{ id: number, label: string }'' instead of plain id'
          schema:
            type: boolean
        - in: query
          name: include_labels
          description: 'When provided with ''true'' value, response will include an array of label objects in the form of ''{ id: number, label: string }'''
          schema:
            type: boolean
      responses:
        '200':
          description: Get person
          content:
            application/json:
              schema:
                type: object
                title: UpsertPersonResponse
                allOf:
                  - title: baseResponse
                    type: object
                    properties:
                      success:
                        type: boolean
                        description: If the response is successful or not
                  - type: object
                    title: UpsertPersonResponseData
                    properties:
                      data:
                        type: object
                        properties:
                          id:
                            type: integer
                            description: The ID of the person
                          name:
                            type: string
                            description: The name of the person
                          first_name:
                            type: string
                            description: The first name of the person
                          last_name:
                            type: string
                            description: The last name of the person
                          owner_id:
                            type: integer
                            description: The ID of the user who owns the person
                          org_id:
                            type: integer
                            description: The ID of the organization linked to the person
                          add_time:
                            type: string
                            description: The creation date and time of the person
                          update_time:
                            type: string
                            description: The last updated date and time of the person
                          emails:
                            type: array
                            description: The emails of the person
                            items:
                              type: object
                              properties:
                                value:
                                  type: string
                                  description: The email address of the person
                                primary:
                                  type: boolean
                                  description: Whether the email is primary or not
                                label:
                                  type: string
                                  description: The email address classification label
                          phones:
                            type: array
                            description: The phones of the person
                            items:
                              type: object
                              properties:
                                value:
                                  type: string
                                  description: The phone number of the person
                                primary:
                                  type: boolean
                                  description: Whether the phone number is primary or not
                                label:
                                  type: string
                                  description: The phone number classification label
                          is_deleted:
                            type: boolean
                            description: Whether the person is deleted or not
                          visible_to:
                            type: integer
                            description: The visibility of the person
                          label_ids:
                            type: array
                            description: The IDs of labels assigned to the person
                            items:
                              type: integer
                          picture_id:
                            type: integer
                            description: The ID of the picture associated with the person
                          postal_address:
                            type: object
                            description: 'Postal address of the person, included if contact sync is enabled for the company'
                            properties:
                              value:
                                type: string
                                description: The full address of the person
                              country:
                                type: string
                                description: Country of the person
                              admin_area_level_1:
                                type: string
                                description: Admin area level 1 (e.g. state) of the person
                              admin_area_level_2:
                                type: string
                                description: Admin area level 2 (e.g. county) of the person
                              locality:
                                type: string
                                description: Locality (e.g. city) of the person
                              sublocality:
                                type: string
                                description: Sublocality (e.g. neighborhood) of the person
                              route:
                                type: string
                                description: Route (e.g. street) of the person
                              street_number:
                                type: string
                                description: Street number of the person
                              subpremise:
                                type: string
                                description: Subpremise (e.g. apartment/suite number) of the person
                              postal_code:
                                type: string
                                description: Postal code of the person
                          notes:
                            type: string
                            description: 'Contact sync notes of the person, maximum 10 000 characters, included if contact sync is enabled for the company'
                          im:
                            type: array
                            description: 'The instant messaging accounts of the person, included if contact sync is enabled for the company'
                            items:
                              type: object
                              properties:
                                value:
                                  type: string
                                  description: The instant messaging account of the person
                                primary:
                                  type: boolean
                                  description: Whether the instant messaging account is primary or not
                                label:
                                  type: string
                                  description: The instant messaging account classification label
                          birthday:
                            type: string
                            description: 'The birthday of the person, included if contact sync is enabled for the company'
                          job_title:
                            type: string
                            description: 'The job title of the person, included if contact sync is enabled for the company'
                          custom_fields:
                            type: object
                            additionalProperties: true
                            description: 'An object where each key represents a custom field. All custom fields are referenced as randomly generated 40-character hashes. To clear a custom field value, set it to `null`. For multi-option fields (field type `set`), use `null` to clear the selection — sending an empty array `[]` is not supported and will result in a validation error.'
              example:
                success: true
                data:
                  id: 1
                  name: Person Name
                  first_name: Person
                  last_name: Name
                  owner_id: 1
                  org_id: 1
                  add_time: '2021-01-01T00:00:00Z'
                  update_time: '2021-01-01T00:00:00Z'
                  emails:
                    - value: email1@email.com
                      primary: true
                      label: work
                    - value: email2@email.com
                      primary: false
                      label: home
                  phones:
                    - value: '12345'
                      primary: true
                      label: work
                    - value: '54321'
                      primary: false
                      label: home
                  is_deleted: false
                  visible_to: 7
                  label_ids:
                    - 1
                    - 2
                    - 3
                  picture_id: 1
                  custom_fields: {}
                  notes: Notes from contact sync
                  im:
                    - value: skypeusername
                      primary: true
                      label: skype
                    - value: whatsappusername
                      primary: false
                      label: whatsapp
                  birthday: '2000-12-31'
                  job_title: Manager
                  postal_address:
                    value: 123 Main St
                    country: USA
                    admin_area_level_1: CA
                    admin_area_level_2: Santa Clara
                    locality: Sunnyvale
                    sublocality: Downtown
                    route: Main St
                    street_number: '123'
                    subpremise: Apt 1
                    postal_code: '94085'
    patch:
      summary: Update a person
      description: 'Updates the properties of a person. <br>If the company uses the [Campaigns product](https://pipedrive.readme.io/docs/campaigns-in-pipedrive-api), then this endpoint will also accept and return the `marketing_status` field.'
      x-token-cost: 5
      operationId: updatePerson
      tags:
        - Persons
      security:
        - api_key: []
        - oauth2:
            - 'contacts:full'
      parameters:
        - in: path
          name: id
          description: The ID of the person
          required: true
          schema:
            type: integer
      requestBody:
        content:
          application/json:
            schema:
              type: object
              properties:
                name:
                  type: string
                  description: The name of the person
                owner_id:
                  type: integer
                  description: The ID of the user who owns the person
                org_id:
                  type: integer
                  description: The ID of the organization linked to the person
                add_time:
                  type: string
                  description: The creation date and time of the person
                update_time:
                  type: string
                  description: The last updated date and time of the person
                emails:
                  type: array
                  description: The emails of the person
                  items:
                    type: object
                    properties:
                      value:
                        type: string
                        description: The email address of the person
                      primary:
                        type: boolean
                        description: Whether the email is primary or not
                      label:
                        type: string
                        description: The email address classification label
                phones:
                  type: array
                  description: The phones of the person
                  items:
                    type: object
                    properties:
                      value:
                        type: string
                        description: The phone number of the person
                      primary:
                        type: boolean
                        description: Whether the phone number is primary or not
                      label:
                        type: string
                        description: The phone number classification label
                visible_to:
                  type: integer
                  description: The visibility of the person
                label_ids:
                  type: array
                  description: The IDs of labels assigned to the person
                  items:
                    type: integer
                marketing_status:
                  type: string
                  description: 'If the person does not have a valid email address, then the marketing status is **not set** and `no_consent` is returned for the `marketing_status` value when the new person is created. If the change is forbidden, the status will remain unchanged for every call that tries to modify the marketing status. Please be aware that it is only allowed **once** to change the marketing status from an old status to a new one.<table><tr><th>Value</th><th>Description</th></tr><tr><td>`no_consent`</td><td>The customer has not given consent to receive any marketing communications</td></tr><tr><td>`unsubscribed`</td><td>The customers have unsubscribed from ALL marketing communications</td></tr><tr><td>`subscribed`</td><td>The customers are subscribed and are counted towards marketing caps</td></tr><tr><td>`archived`</td><td>The customers with `subscribed` status can be moved to `archived` to save consent, but they are not paid for</td></tr></table>'
                  enum:
                    - no_consent
                    - unsubscribed
                    - subscribed
                    - archived
                custom_fields:
                  type: object
                  additionalProperties: true
                  description: 'An object where each key represents a custom field. All custom fields are referenced as randomly generated 40-character hashes. To clear a custom field value, set it to `null`. For multi-option fields (field type `set`), use `null` to clear the selection — sending an empty array `[]` is not supported and will result in a validation error.'
      responses:
        '200':
          description: Edit person
          content:
            application/json:
              schema:
                type: object
                title: UpsertPersonResponse
                allOf:
                  - title: baseResponse
                    type: object
                    properties:
                      success:
                        type: boolean
                        description: If the response is successful or not
                  - type: object
                    title: UpsertPersonResponseData
                    properties:
                      data:
                        type: object
                        properties:
                          id:
                            type: integer
                            description: The ID of the person
                          name:
                            type: string
                            description: The name of the person
                          first_name:
                            type: string
                            description: The first name of the person
                          last_name:
                            type: string
                            description: The last name of the person
                          owner_id:
                            type: integer
                            description: The ID of the user who owns the person
                          org_id:
                            type: integer
                            description: The ID of the organization linked to the person
                          add_time:
                            type: string
                            description: The creation date and time of the person
                          update_time:
                            type: string
                            description: The last updated date and time of the person
                          emails:
                            type: array
                            description: The emails of the person
                            items:
                              type: object
                              properties:
                                value:
                                  type: string
                                  description: The email address of the person
                                primary:
                                  type: boolean
                                  description: Whether the email is primary or not
                                label:
                                  type: string
                                  description: The email address classification label
                          phones:
                            type: array
                            description: The phones of the person
                            items:
                              type: object
                              properties:
                                value:
                                  type: string
                                  description: The phone number of the person
                                primary:
                                  type: boolean
                                  description: Whether the phone number is primary or not
                                label:
                                  type: string
                                  description: The phone number classification label
                          is_deleted:
                            type: boolean
                            description: Whether the person is deleted or not
                          visible_to:
                            type: integer
                            description: The visibility of the person
                          label_ids:
                            type: array
                            description: The IDs of labels assigned to the person
                            items:
                              type: integer
                          picture_id:
                            type: integer
                            description: The ID of the picture associated with the person
                          postal_address:
                            type: object
                            description: 'Postal address of the person, included if contact sync is enabled for the company'
                            properties:
                              value:
                                type: string
                                description: The full address of the person
                              country:
                                type: string
                                description: Country of the person
                              admin_area_level_1:
                                type: string
                                description: Admin area level 1 (e.g. state) of the person
                              admin_area_level_2:
                                type: string
                                description: Admin area level 2 (e.g. county) of the person
                              locality:
                                type: string
                                description: Locality (e.g. city) of the person
                              sublocality:
                                type: string
                                description: Sublocality (e.g. neighborhood) of the person
                              route:
                                type: string
                                description: Route (e.g. street) of the person
                              street_number:
                                type: string
                                description: Street number of the person
                              subpremise:
                                type: string
                                description: Subpremise (e.g. apartment/suite number) of the person
                              postal_code:
                                type: string
                                description: Postal code of the person
                          notes:
                            type: string
                            description: 'Contact sync notes of the person, maximum 10 000 characters, included if contact sync is enabled for the company'
                          im:
                            type: array
                            description: 'The instant messaging accounts of the person, included if contact sync is enabled for the company'
                            items:
                              type: object
                              properties:
                                value:
                                  type: string
                                  description: The instant messaging account of the person
                                primary:
                                  type: boolean
                                  description: Whether the instant messaging account is primary or not
                                label:
                                  type: string
                                  description: The instant messaging account classification label
                          birthday:
                            type: string
                            description: 'The birthday of the person, included if contact sync is enabled for the company'
                          job_title:
                            type: string
                            description: 'The job title of the person, included if contact sync is enabled for the company'
                          custom_fields:
                            type: object
                            additionalProperties: true
                            description: 'An object where each key represents a custom field. All custom fields are referenced as randomly generated 40-character hashes. To clear a custom field value, set it to `null`. For multi-option fields (field type `set`), use `null` to clear the selection — sending an empty array `[]` is not supported and will result in a validation error.'
              example:
                success: true
                data:
                  id: 1
                  name: Person Name
                  first_name: Person
                  last_name: Name
                  owner_id: 1
                  org_id: 1
                  add_time: '2021-01-01T00:00:00Z'
                  update_time: '2021-01-01T00:00:00Z'
                  emails:
                    - value: email1@email.com
                      primary: true
                      label: work
                    - value: email2@email.com
                      primary: false
                      label: home
                  phones:
                    - value: '12345'
                      primary: true
                      label: work
                    - value: '54321'
                      primary: false
                      label: home
                  is_deleted: false
                  visible_to: 7
                  label_ids:
                    - 1
                    - 2
                    - 3
                  picture_id: 1
                  custom_fields: {}
                  notes: Notes from contact sync
                  im:
                    - value: skypeusername
                      primary: true
                      label: skype
                    - value: whatsappusername
                      primary: false
                      label: whatsapp
                  birthday: '2000-12-31'
                  job_title: Manager
                  postal_address:
                    value: 123 Main St
                    country: USA
                    admin_area_level_1: CA
                    admin_area_level_2: Santa Clara
                    locality: Sunnyvale
                    sublocality: Downtown
                    route: Main St
                    street_number: '123'
                    subpremise: Apt 1
                    postal_code: '94085'
  '/persons/{id}/followers':
    get:
      summary: List followers of a person
      description: Lists users who are following the person.
      x-token-cost: 10
      operationId: getPersonFollowers
      tags:
        - Persons
      security:
        - api_key: []
        - oauth2:
            - 'contacts:read'
            - 'contacts:full'
      parameters:
        - in: path
          name: id
          description: The ID of the person
          required: true
          schema:
            type: integer
        - in: query
          name: limit
          description: 'For pagination, the limit of entries to be returned. If not provided, 100 items will be returned. Please note that a maximum value of 500 is allowed.'
          schema:
            type: integer
            example: 100
        - in: query
          name: cursor
          required: false
          schema:
            type: string
          description: 'For pagination, the marker (an opaque string value) representing the first item on the next page'
      responses:
        '200':
          description: List entity followers
          content:
            application/json:
              schema:
                type: object
                title: GetFollowersResponse
                allOf:
                  - title: baseResponse
                    type: object
                    properties:
                      success:
                        type: boolean
                        description: If the response is successful or not
                  - type: object
                    properties:
                      data:
                        type: array
                        description: Followers array
                        items:
                          type: object
                          properties:
                            user_id:
                              type: integer
                              description: The ID of the user following the entity
                            add_time:
                              type: string
                              description: The add time of the following
                      additional_data:
                        type: object
                        description: The additional data of the list
                        properties:
                          next_cursor:
                            type: string
                            description: The first item on the next page. The value of the `next_cursor` field will be `null` if you have reached the end of the dataset and there’s no more pages to be returned.
              example:
                success: true
                data:
                  - user_id: 1
                    add_time: '2021-01-01T00:00:00Z'
                additional_data:
                  next_cursor: eyJmaWVsZCI6ImlkIiwiZmllbGRWYWx1ZSI6Nywic29ydERpcmVjdGlvbiI6ImFzYyIsImlkIjo3fQ
    post:
      summary: Add a follower to a person
      description: Adds a user as a follower to the person.
      x-token-cost: 5
      operationId: addPersonFollower
      tags:
        - Persons
      security:
        - api_key: []
        - oauth2:
            - 'contacts:full'
      parameters:
        - in: path
          name: id
          description: The ID of the person
          required: true
          schema:
            type: integer
      requestBody:
        content:
          application/json:
            schema:
              required:
                - user_id
              type: object
              properties:
                user_id:
                  type: integer
                  description: The ID of the user to add as a follower
      responses:
        '201':
          description: Add a follower
          content:
            application/json:
              schema:
                type: object
                title: AddFollowerResponse
                allOf:
                  - title: baseResponse
                    type: object
                    properties:
                      success:
                        type: boolean
                        description: If the response is successful or not
                  - type: object
                    properties:
                      data:
                        type: object
                        properties:
                          user_id:
                            type: integer
                            description: The ID of the user following the entity
                          add_time:
                            type: string
                            description: The add time of the following
              example:
                success: true
                data:
                  user_id: 1
                  add_time: '2021-01-01T00:00:00Z'
  '/persons/{id}/followers/changelog':
    get:
      summary: List followers changelog of a person
      description: Lists changelogs about users have followed the person.
      x-token-cost: 10
      operationId: getPersonFollowersChangelog
      tags:
        - Persons
      security:
        - api_key: []
        - oauth2:
            - 'contacts:read'
            - 'contacts:full'
      parameters:
        - in: path
          name: id
          description: The ID of the person
          required: true
          schema:
            type: integer
        - in: query
          name: limit
          description: 'For pagination, the limit of entries to be returned. If not provided, 100 items will be returned. Please note that a maximum value of 500 is allowed.'
          schema:
            type: integer
            example: 100
        - in: query
          name: cursor
          required: false
          schema:
            type: string
          description: 'For pagination, the marker (an opaque string value) representing the first item on the next page'
      responses:
        '200':
          description: List entity followers
          content:
            application/json:
              schema:
                type: object
                title: GetFollowerChangelogsResponse
                allOf:
                  - title: baseResponse
                    type: object
                    properties:
                      success:
                        type: boolean
                        description: If the response is successful or not
                  - type: object
                    properties:
                      data:
                        type: array
                        description: Follower changelogs array
                        items:
                          type: object
                          title: FollowerChangelogItem
                          properties:
                            action:
                              type: string
                              description: The type of change
                            actor_user_id:
                              type: integer
                              description: The ID of the user who did the change
                            follower_user_id:
                              type: integer
                              description: The ID of the user who was following the entity
                            time:
                              type: string
                              description: The time at which the change happened
                      additional_data:
                        type: object
                        description: The additional data of the list
                        properties:
                          next_cursor:
                            type: string
                            description: The first item on the next page. The value of the `next_cursor` field will be `null` if you have reached the end of the dataset and there’s no more pages to be returned.
              example:
                success: true
                data:
                  - action: added
                    actor_user_id: 1
                    follower_user_id: 1
                    time: '2024-01-01T00:00:00Z'
                additional_data:
                  next_cursor: eyJmaWVsZCI6ImlkIiwiZmllbGRWYWx1ZSI6Nywic29ydERpcmVjdGlvbiI6ImFzYyIsImlkIjo3fQ
  '/persons/{id}/followers/{follower_id}':
    delete:
      summary: Delete a follower from a person
      description: Deletes a user follower from the person.
      x-token-cost: 3
      operationId: deletePersonFollower
      tags:
        - Persons
      security:
        - api_key: []
        - oauth2:
            - 'contacts:full'
      parameters:
        - in: path
          name: id
          description: The ID of the person
          required: true
          schema:
            type: integer
        - in: path
          name: follower_id
          required: true
          schema:
            type: integer
          description: The ID of the following user
      responses:
        '200':
          description: Remove a follower
          content:
            application/json:
              schema:
                title: DeleteFollowerResponse
                type: object
                properties:
                  success:
                    type: boolean
                    description: If the response is successful or not
                  data:
                    type: object
                    properties:
                      user_id:
                        type: integer
                        description: Deleted follower user ID
              example:
                success: true
                data:
                  user_id: 1
  '/persons/{id}/picture':
    get:
      summary: Get picture of a person
      description: Returns the picture associated with a person. The picture URLs include both 128x128 and 512x512 pixel versions.
      x-token-cost: 1
      operationId: getPersonPicture
      x-tool-description: 'Retrieves the profile picture for a specific person, including URLs for both thumbnail (128x128) and full-size (512x512) versions. Use for displaying contact pictures in UI or exporting contact data. Returns 404 if the person has no picture.'
      tags:
        - Persons
      security:
        - api_key: []
        - oauth2:
            - 'contacts:read'
            - 'contacts:full'
      parameters:
        - in: path
          name: id
          description: The ID of the person
          required: true
          schema:
            type: integer
      responses:
        '200':
          description: Get person picture
          content:
            application/json:
              schema:
                title: GetPersonPictureResponse
                type: object
                properties:
                  success:
                    type: boolean
                    description: If the response is successful or not
                  data:
                    type: object
                    properties:
                      id:
                        type: integer
                        description: The ID of the picture.
                      item_type:
                        type: string
                        description: The type of item the picture is associated with.
                      item_id:
                        type: integer
                        description: The ID of the person this picture belongs to.
                      added_by_user_id:
                        type: integer
                        description: The ID of the user who added the picture.
                      active_flag:
                        type: boolean
                        description: Whether the picture is active or not.
                      file_size:
                        type: integer
                        description: The file size in bytes.
                      pictures:
                        type: object
                        description: Picture URLs indexed by size.
                        properties:
                          '128':
                            type: string
                            description: The URL of the 128x128 picture.
                          '512':
                            type: string
                            description: The URL of the 512x512 picture.
              example:
                success: true
                data:
                  id: 1
                  item_type: person
                  item_id: 25
                  added_by_user_id: 967055
                  active_flag: true
                  file_size: 524288
                  pictures:
                    '128': 'https://pipedrive-profile-pics.s3.example.com/f8893852574273f2747bf6ef09d11cfb4ac8f269_128.jpg'
                    '512': 'https://pipedrive-profile-pics.s3.example.com/f8893852574273f2747bf6ef09d11cfb4ac8f269_512.jpg'
  /personFields:
    get:
      summary: Get all person fields
      description: Returns metadata about all person fields in the company.
      x-token-cost: 10
      operationId: getPersonFields
      tags:
        - PersonFields
      security:
        - api_key: []
        - oauth2:
            - 'contacts:read'
            - 'contacts:full'
            - admin
            - 'contact-fields:full'
      parameters:
        - in: query
          name: include_fields
          description: Optional comma separated string array of additional data namespaces to include in response
          schema:
            type: string
            enum:
              - ui_visibility
              - important_fields
              - required_fields
              - 'ui_visibility,important_fields'
              - 'ui_visibility,required_fields'
              - 'important_fields,required_fields'
              - 'ui_visibility,important_fields,required_fields'
        - in: query
          name: limit
          description: 'For pagination, the limit of entries to be returned. If not provided, 100 items will be returned. Please note that a maximum value of 500 is allowed.'
          schema:
            type: integer
            example: 100
        - in: query
          name: cursor
          required: false
          schema:
            type: string
          description: 'For pagination, the marker (an opaque string value) representing the first item on the next page'
      responses:
        '200':
          description: Get all person fields
          content:
            application/json:
              schema:
                type: object
                properties:
                  success:
                    type: boolean
                    description: Whether the request was successful
                  data:
                    type: array
                    items:
                      type: object
                      required:
                        - field_name
                        - field_code
                        - field_type
                        - is_custom_field
                        - is_optional_response_field
                      properties:
                        field_name:
                          type: string
                          description: The display name/label of the field
                        field_code:
                          type: string
                          description: The unique identifier for the field (40-character hash for custom fields)
                        field_type:
                          type: string
                          description: The type of the field
                          enum:
                            - int
                            - double
                            - boolean
                            - varchar
                            - text
                            - phone
                            - varchar_options
                            - varchar_auto
                            - date
                            - daterange
                            - time
                            - timerange
                            - enum
                            - set
                            - address
                            - monetary
                            - deal
                            - deals
                            - lead
                            - org
                            - people
                            - project
                            - stage
                            - user
                            - activity
                            - json
                            - picture
                            - status
                            - visible_to
                            - price_list
                            - billing_frequency
                            - projects_board
                            - projects_phase
                        options:
                          type: array
                          nullable: true
                          description: 'Array of available options for enum/set fields, null for other field types'
                          items:
                            type: object
                            properties:
                              id:
                                type: integer
                                description: The option ID
                              label:
                                type: string
                                description: The option display label
                              color:
                                type: string
                                nullable: true
                                description: Optional color code for the option
                              update_time:
                                type: string
                                format: date-time
                                nullable: true
                                description: When the option was last updated
                              add_time:
                                type: string
                                format: date-time
                                nullable: true
                                description: When the option was created
                        subfields:
                          type: array
                          nullable: true
                          description: 'Array of subfields for complex field types (address, monetary), null for simple field types'
                          items:
                            type: object
                            properties:
                              field_code:
                                type: string
                                description: The subfield identifier
                              field_name:
                                type: string
                                description: The subfield display name
                              field_type:
                                type: string
                                description: The subfield type
                        is_custom_field:
                          type: boolean
                          description: Whether this is a user-created custom field
                        is_optional_response_field:
                          type: boolean
                          description: Whether this field is not returned by default in entity responses
                        ui_visibility:
                          type: object
                          description: UI visibility settings (only included when requested via include_fields parameter)
                          properties:
                            add_visible_flag:
                              type: boolean
                              description: Whether the field is shown in the add modal
                            details_visible_flag:
                              type: boolean
                              description: Whether the field is shown in the details view
                            show_in_add_deal_dialog:
                              type: object
                              description: Configuration for showing the field in the add deal dialog
                              properties:
                                show:
                                  type: boolean
                                  description: Whether the field is shown in the add deal dialog
                                order:
                                  type: integer
                                  nullable: true
                                  description: Display order in the add deal dialog (null if not shown)
                        important_fields:
                          type: object
                          description: Important fields configuration
                          properties:
                            enabled:
                              type: boolean
                              description: Whether the field is marked as important
                            stage_ids:
                              type: array
                              items:
                                type: integer
                              description: Array of deal stage IDs where the field is important
                        required_fields:
                          type: object
                          description: Required fields configuration
                          properties:
                            enabled:
                              type: boolean
                              description: Whether the field is required
                  additional_data:
                    type: object
                    properties:
                      next_cursor:
                        type: string
                        nullable: true
                        description: 'Base64url-encoded cursor for fetching the next page of results, null if no more pages'
              example:
                success: true
                data:
                  - field_name: Person Name
                    field_code: name
                    description: The name of the person
                    field_type: varchar
                    options: null
                    subfields: null
                    is_custom_field: false
                    is_optional_response_field: false
                    ui_visibility:
                      add_visible_flag: true
                      details_visible_flag: true
                      show_in_add_deal_dialog:
                        show: true
                        order: 1
                    important_fields:
                      enabled: false
                      stage_ids: []
                    required_fields:
                      enabled: true
                  - field_name: Phone
                    field_code: phone
                    description: Phone number for the person
                    field_type: phone
                    options: null
                    subfields: null
                    is_custom_field: false
                    is_optional_response_field: false
                    ui_visibility:
                      add_visible_flag: true
                      details_visible_flag: true
                      show_in_add_deal_dialog:
                        show: true
                        order: 2
                    important_fields:
                      enabled: true
                      stage_ids:
                        - 1
                        - 2
                        - 3
                    required_fields:
                      enabled: false
                  - field_name: Lead Source
                    field_code: 40characterhashforcustomfieldidentifier
                    description: The source where the lead came from
                    field_type: enum
                    options:
                      - id: 1
                        label: Inbound
                      - id: 2
                        label: Outbound
                    subfields: null
                    is_custom_field: true
                    is_optional_response_field: false
                    ui_visibility:
                      add_visible_flag: true
                      details_visible_flag: true
                      show_in_add_deal_dialog:
                        show: false
                        order: null
                    important_fields:
                      enabled: false
                      stage_ids: []
                    required_fields:
                      enabled: false
                additional_data:
                  next_cursor: eyJmaWVsZCI6ImlkIiwiZmllbGRWYWx1ZSI6Nywic29ydERpcmVjdGlvbiI6ImFzYyIsImlkIjo3fQ
    post:
      summary: Create one person field
      description: Creates a new person custom field.
      x-token-cost: 5
      operationId: addPersonField
      tags:
        - PersonFields
      security:
        - api_key: []
        - oauth2:
            - admin
            - 'contact-fields:full'
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              required:
                - field_name
                - field_type
              properties:
                field_name:
                  type: string
                  minLength: 1
                  maxLength: 255
                  description: Field name
                field_type:
                  type: string
                  description: 'The type of the field<table><tr><th>Value</th><th>Description</th></tr><tr><td>`varchar`</td><td>Text (up to 255 characters)</td><tr><td>`varchar_auto`</td><td>Autocomplete text (up to 255 characters)</td><tr><td>`text`</td><td>Long text (up to 65k characters)</td><tr><td>`double`</td><td>Numeric value</td><tr><td>`monetary`</td><td>Monetary field (has a numeric value and a currency value)</td><tr><td>`date`</td><td>Date (format YYYY-MM-DD)</td><tr><td>`set`</td><td>Options field with a possibility of having multiple chosen options</td><tr><td>`enum`</td><td>Options field with a single possible chosen option</td><tr><td>`user`</td><td>User field (contains a user ID of another Pipedrive user)</td><tr><td>`org`</td><td>Organization field (contains an organization ID which is stored on the same account)</td><tr><td>`people`</td><td>Person field (contains a person ID which is stored on the same account)</td><tr><td>`phone`</td><td>Phone field (up to 255 numbers and/or characters)</td><tr><td>`time`</td><td>Time field (format HH:MM:SS)</td><tr><td>`timerange`</td><td>Time-range field (has a start time and end time value, both HH:MM:SS)</td><tr><td>`daterange`</td><td>Date-range field (has a start date and end date value, both YYYY-MM-DD)</td><tr><td>`address`</td><td>Address field</dd></table>'
                  enum:
                    - varchar
                    - text
                    - double
                    - phone
                    - date
                    - daterange
                    - time
                    - timerange
                    - set
                    - enum
                    - varchar_auto
                    - address
                    - monetary
                    - org
                    - people
                    - user
                options:
                  type: array
                  description: Field options (required for enum and set field types)
                  items:
                    type: object
                    required:
                      - label
                    properties:
                      label:
                        type: string
                        description: The option label
                ui_visibility:
                  type: object
                  description: UI visibility settings for the field. Controls where the field appears in the Pipedrive web UI.
                  additionalProperties: true
                  properties:
                    add_visible_flag:
                      type: boolean
                      description: 'Whether the field is shown in the add person modal. Default is false. Cannot be set to false for required system fields (''name'', ''org_id'').'
                      default: false
                    details_visible_flag:
                      type: boolean
                      description: Whether the field is shown in the person details view. Default is true.
                      default: true
                    show_in_add_deal_dialog:
                      type: object
                      description: 'Configuration for showing this person field when adding a new deal. Only available for custom fields or specific eligible system fields. Default is show=false, order=null.'
                      properties:
                        show:
                          type: boolean
                          description: Whether the field is shown in the add deal dialog. Default is false.
                          default: false
                        order:
                          type: integer
                          nullable: true
                          description: 'Display order in the add deal dialog. This value is auto-calculated and managed by the system. When show is set to false, order is automatically set to null. When show changes from false to true, order is automatically assigned the next available position.'
                          default: null
                important_fields:
                  type: object
                  description: Configuration for highlighting the field at specific stages.
                  additionalProperties: true
                  properties:
                    enabled:
                      type: boolean
                      description: 'Whether the field is marked as important. When false, the field is not highlighted. When true with empty stage_ids, the field is important everywhere. When true with specific stage_ids, the field is important only at those deal stages. Default is false.'
                      default: false
                    stage_ids:
                      type: array
                      items:
                        type: integer
                      description: 'Array of deal stage IDs where this person field should be highlighted as important. Must reference valid, active deal stages. Empty array when enabled is false.'
                      default: []
                required_fields:
                  type: object
                  description: Required fields configuration for marking the field as mandatory when interacted with in the Pipedrive web UI.
                  additionalProperties: true
                  properties:
                    enabled:
                      type: boolean
                      description: 'Whether the field is required. When false, the field is optional. When true, the field is required when creating or updating persons. Default is false.'
                      default: false
      responses:
        '200':
          description: Create one person field
          content:
            application/json:
              schema:
                type: object
                properties:
                  success:
                    type: boolean
                    description: Whether the request was successful
                  data:
                    type: object
                    required:
                      - field_name
                      - field_code
                      - field_type
                      - is_custom_field
                      - is_optional_response_field
                    properties:
                      field_name:
                        type: string
                        description: The display name/label of the field
                      field_code:
                        type: string
                        description: The unique identifier for the field (40-character hash for custom fields)
                      field_type:
                        type: string
                        description: The type of the field
                        enum:
                          - int
                          - double
                          - boolean
                          - varchar
                          - text
                          - phone
                          - varchar_options
                          - varchar_auto
                          - date
                          - daterange
                          - time
                          - timerange
                          - enum
                          - set
                          - address
                          - monetary
                          - deal
                          - deals
                          - lead
                          - org
                          - people
                          - project
                          - stage
                          - user
                          - activity
                          - json
                          - picture
                          - status
                          - visible_to
                          - price_list
                          - billing_frequency
                          - projects_board
                          - projects_phase
                      options:
                        type: array
                        nullable: true
                        description: 'Array of available options for enum/set fields, null for other field types'
                        items:
                          type: object
                          properties:
                            id:
                              type: integer
                              description: The option ID
                            label:
                              type: string
                              description: The option display label
                            color:
                              type: string
                              nullable: true
                              description: Optional color code for the option
                            update_time:
                              type: string
                              format: date-time
                              nullable: true
                              description: When the option was last updated
                            add_time:
                              type: string
                              format: date-time
                              nullable: true
                              description: When the option was created
                      subfields:
                        type: array
                        nullable: true
                        description: 'Array of subfields for complex field types (address, monetary), null for simple field types'
                        items:
                          type: object
                          properties:
                            field_code:
                              type: string
                              description: The subfield identifier
                            field_name:
                              type: string
                              description: The subfield display name
                            field_type:
                              type: string
                              description: The subfield type
                      is_custom_field:
                        type: boolean
                        description: Whether this is a user-created custom field
                      is_optional_response_field:
                        type: boolean
                        description: Whether this field is not returned by default in entity responses
                      ui_visibility:
                        type: object
                        description: UI visibility settings (only included when requested via include_fields parameter)
                        properties:
                          add_visible_flag:
                            type: boolean
                            description: Whether the field is shown in the add modal
                          details_visible_flag:
                            type: boolean
                            description: Whether the field is shown in the details view
                          show_in_add_deal_dialog:
                            type: object
                            description: Configuration for showing the field in the add deal dialog
                            properties:
                              show:
                                type: boolean
                                description: Whether the field is shown in the add deal dialog
                              order:
                                type: integer
                                nullable: true
                                description: Display order in the add deal dialog (null if not shown)
                      important_fields:
                        type: object
                        description: Important fields configuration
                        properties:
                          enabled:
                            type: boolean
                            description: Whether the field is marked as important
                          stage_ids:
                            type: array
                            items:
                              type: integer
                            description: Array of deal stage IDs where the field is important
                      required_fields:
                        type: object
                        description: Required fields configuration
                        properties:
                          enabled:
                            type: boolean
                            description: Whether the field is required
              example:
                success: true
                data:
                  field_name: Lead Source
                  field_code: 946947d1b02fd3ef20798d6112ec5d895a686a21
                  description: The source where the lead came from
                  field_type: enum
                  options:
                    - id: 1
                      label: Inbound
                    - id: 2
                      label: Outbound
                  subfields: null
                  is_custom_field: true
                  is_optional_response_field: false
                  ui_visibility:
                    add_visible_flag: true
                    details_visible_flag: true
                    show_in_add_deal_dialog:
                      show: false
                      order: null
                  important_fields:
                    enabled: false
                    stage_ids: []
                  required_fields:
                    enabled: false
  '/personFields/{field_code}':
    get:
      summary: Get one person field
      description: Returns metadata about a specific person field.
      x-token-cost: 1
      operationId: getPersonField
      tags:
        - PersonFields
      security:
        - api_key: []
        - oauth2:
            - 'contacts:read'
            - 'contacts:full'
            - admin
            - 'contact-fields:full'
      parameters:
        - in: path
          name: field_code
          description: The unique code identifying the field
          required: true
          schema:
            type: string
        - in: query
          name: include_fields
          description: Optional comma separated string array of additional data namespaces to include in response
          schema:
            type: string
            enum:
              - ui_visibility
              - important_fields
              - required_fields
              - 'ui_visibility,important_fields'
              - 'ui_visibility,required_fields'
              - 'important_fields,required_fields'
              - 'ui_visibility,important_fields,required_fields'
      responses:
        '200':
          description: Get one person field
          content:
            application/json:
              schema:
                type: object
                properties:
                  success:
                    type: boolean
                    description: Whether the request was successful
                  data:
                    type: object
                    required:
                      - field_name
                      - field_code
                      - field_type
                      - is_custom_field
                      - is_optional_response_field
                    properties:
                      field_name:
                        type: string
                        description: The display name/label of the field
                      field_code:
                        type: string
                        description: The unique identifier for the field (40-character hash for custom fields)
                      field_type:
                        type: string
                        description: The type of the field
                        enum:
                          - int
                          - double
                          - boolean
                          - varchar
                          - text
                          - phone
                          - varchar_options
                          - varchar_auto
                          - date
                          - daterange
                          - time
                          - timerange
                          - enum
                          - set
                          - address
                          - monetary
                          - deal
                          - deals
                          - lead
                          - org
                          - people
                          - project
                          - stage
                          - user
                          - activity
                          - json
                          - picture
                          - status
                          - visible_to
                          - price_list
                          - billing_frequency
                          - projects_board
                          - projects_phase
                      options:
                        type: array
                        nullable: true
                        description: 'Array of available options for enum/set fields, null for other field types'
                        items:
                          type: object
                          properties:
                            id:
                              type: integer
                              description: The option ID
                            label:
                              type: string
                              description: The option display label
                            color:
                              type: string
                              nullable: true
                              description: Optional color code for the option
                            update_time:
                              type: string
                              format: date-time
                              nullable: true
                              description: When the option was last updated
                            add_time:
                              type: string
                              format: date-time
                              nullable: true
                              description: When the option was created
                      subfields:
                        type: array
                        nullable: true
                        description: 'Array of subfields for complex field types (address, monetary), null for simple field types'
                        items:
                          type: object
                          properties:
                            field_code:
                              type: string
                              description: The subfield identifier
                            field_name:
                              type: string
                              description: The subfield display name
                            field_type:
                              type: string
                              description: The subfield type
                      is_custom_field:
                        type: boolean
                        description: Whether this is a user-created custom field
                      is_optional_response_field:
                        type: boolean
                        description: Whether this field is not returned by default in entity responses
                      ui_visibility:
                        type: object
                        description: UI visibility settings (only included when requested via include_fields parameter)
                        properties:
                          add_visible_flag:
                            type: boolean
                            description: Whether the field is shown in the add modal
                          details_visible_flag:
                            type: boolean
                            description: Whether the field is shown in the details view
                          show_in_add_deal_dialog:
                            type: object
                            description: Configuration for showing the field in the add deal dialog
                            properties:
                              show:
                                type: boolean
                                description: Whether the field is shown in the add deal dialog
                              order:
                                type: integer
                                nullable: true
                                description: Display order in the add deal dialog (null if not shown)
                      important_fields:
                        type: object
                        description: Important fields configuration
                        properties:
                          enabled:
                            type: boolean
                            description: Whether the field is marked as important
                          stage_ids:
                            type: array
                            items:
                              type: integer
                            description: Array of deal stage IDs where the field is important
                      required_fields:
                        type: object
                        description: Required fields configuration
                        properties:
                          enabled:
                            type: boolean
                            description: Whether the field is required
              example:
                success: true
                data:
                  field_name: Person Name
                  field_code: name
                  description: The name of the person
                  field_type: varchar
                  options: null
                  subfields: null
                  is_custom_field: false
                  is_optional_response_field: false
                  ui_visibility:
                    add_visible_flag: true
                    details_visible_flag: true
                    show_in_add_deal_dialog:
                      show: true
                      order: 1
                  important_fields:
                    enabled: false
                    stage_ids: []
                  required_fields:
                    enabled: true
    patch:
      summary: Update one person field
      description: Updates a person custom field. The field_code and field_type cannot be changed. At least one field must be provided in the request body.
      x-token-cost: 5
      operationId: updatePersonField
      tags:
        - PersonFields
      security:
        - api_key: []
        - oauth2:
            - 'contacts:full'
            - admin
            - 'contact-fields:full'
      parameters:
        - in: path
          name: field_code
          description: The unique code identifying the field
          required: true
          schema:
            type: string
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              minProperties: 1
              properties:
                field_name:
                  type: string
                  minLength: 1
                  maxLength: 255
                  description: Field name
                ui_visibility:
                  type: object
                  description: UI visibility settings for the field. Controls where the field appears in the Pipedrive web UI.
                  additionalProperties: true
                  properties:
                    add_visible_flag:
                      type: boolean
                      description: 'Whether the field is shown in the add person modal. Default is false. Cannot be set to false for required system fields (''name'', ''org_id'').'
                      default: false
                    details_visible_flag:
                      type: boolean
                      description: Whether the field is shown in the person details view. Default is true.
                      default: true
                    show_in_add_deal_dialog:
                      type: object
                      description: 'Configuration for showing this person field when adding a new deal. Only available for custom fields or specific eligible system fields. Default is show=false, order=null.'
                      properties:
                        show:
                          type: boolean
                          description: Whether the field is shown in the add deal dialog. Default is false.
                          default: false
                        order:
                          type: integer
                          nullable: true
                          description: 'Display order in the add deal dialog. This value is auto-calculated and managed by the system. When show is set to false, order is automatically set to null. When show changes from false to true, order is automatically assigned the next available position.'
                          default: null
                important_fields:
                  type: object
                  description: Configuration for highlighting the field at specific stages.
                  additionalProperties: true
                  properties:
                    enabled:
                      type: boolean
                      description: 'Whether the field is marked as important. When false, the field is not highlighted. When true with empty stage_ids, the field is important everywhere. When true with specific stage_ids, the field is important only at those deal stages. Default is false.'
                      default: false
                    stage_ids:
                      type: array
                      items:
                        type: integer
                      description: 'Array of deal stage IDs where this person field should be highlighted as important. Must reference valid, active deal stages. Empty array when enabled is false.'
                      default: []
                required_fields:
                  type: object
                  description: Required fields configuration for marking the field as mandatory when interacted with in the Pipedrive web UI.
                  additionalProperties: true
                  properties:
                    enabled:
                      type: boolean
                      description: 'Whether the field is required. When false, the field is optional. When true, the field is required when creating or updating persons. Default is false.'
                      default: false
      responses:
        '200':
          description: Get one person field
          content:
            application/json:
              schema:
                type: object
                properties:
                  success:
                    type: boolean
                    description: Whether the request was successful
                  data:
                    type: object
                    required:
                      - field_name
                      - field_code
                      - field_type
                      - is_custom_field
                      - is_optional_response_field
                    properties:
                      field_name:
                        type: string
                        description: The display name/label of the field
                      field_code:
                        type: string
                        description: The unique identifier for the field (40-character hash for custom fields)
                      field_type:
                        type: string
                        description: The type of the field
                        enum:
                          - int
                          - double
                          - boolean
                          - varchar
                          - text
                          - phone
                          - varchar_options
                          - varchar_auto
                          - date
                          - daterange
                          - time
                          - timerange
                          - enum
                          - set
                          - address
                          - monetary
                          - deal
                          - deals
                          - lead
                          - org
                          - people
                          - project
                          - stage
                          - user
                          - activity
                          - json
                          - picture
                          - status
                          - visible_to
                          - price_list
                          - billing_frequency
                          - projects_board
                          - projects_phase
                      options:
                        type: array
                        nullable: true
                        description: 'Array of available options for enum/set fields, null for other field types'
                        items:
                          type: object
                          properties:
                            id:
                              type: integer
                              description: The option ID
                            label:
                              type: string
                              description: The option display label
                            color:
                              type: string
                              nullable: true
                              description: Optional color code for the option
                            update_time:
                              type: string
                              format: date-time
                              nullable: true
                              description: When the option was last updated
                            add_time:
                              type: string
                              format: date-time
                              nullable: true
                              description: When the option was created
                      subfields:
                        type: array
                        nullable: true
                        description: 'Array of subfields for complex field types (address, monetary), null for simple field types'
                        items:
                          type: object
                          properties:
                            field_code:
                              type: string
                              description: The subfield identifier
                            field_name:
                              type: string
                              description: The subfield display name
                            field_type:
                              type: string
                              description: The subfield type
                      is_custom_field:
                        type: boolean
                        description: Whether this is a user-created custom field
                      is_optional_response_field:
                        type: boolean
                        description: Whether this field is not returned by default in entity responses
                      ui_visibility:
                        type: object
                        description: UI visibility settings (only included when requested via include_fields parameter)
                        properties:
                          add_visible_flag:
                            type: boolean
                            description: Whether the field is shown in the add modal
                          details_visible_flag:
                            type: boolean
                            description: Whether the field is shown in the details view
                          show_in_add_deal_dialog:
                            type: object
                            description: Configuration for showing the field in the add deal dialog
                            properties:
                              show:
                                type: boolean
                                description: Whether the field is shown in the add deal dialog
                              order:
                                type: integer
                                nullable: true
                                description: Display order in the add deal dialog (null if not shown)
                      important_fields:
                        type: object
                        description: Important fields configuration
                        properties:
                          enabled:
                            type: boolean
                            description: Whether the field is marked as important
                          stage_ids:
                            type: array
                            items:
                              type: integer
                            description: Array of deal stage IDs where the field is important
                      required_fields:
                        type: object
                        description: Required fields configuration
                        properties:
                          enabled:
                            type: boolean
                            description: Whether the field is required
              example:
                success: true
                data:
                  field_name: Person Name
                  field_code: name
                  description: The name of the person
                  field_type: varchar
                  options: null
                  subfields: null
                  is_custom_field: false
                  is_optional_response_field: false
                  ui_visibility:
                    add_visible_flag: true
                    details_visible_flag: true
                    show_in_add_deal_dialog:
                      show: true
                      order: 1
                  important_fields:
                    enabled: false
                    stage_ids: []
                  required_fields:
                    enabled: true
    delete:
      summary: Delete one person field
      description: Marks a custom field as deleted.
      x-token-cost: 3
      operationId: deletePersonField
      tags:
        - PersonFields
      security:
        - api_key: []
        - oauth2:
            - admin
            - 'contact-fields:full'
      parameters:
        - in: path
          name: field_code
          description: The unique code identifying the field
          required: true
          schema:
            type: string
      responses:
        '200':
          description: Delete one person field
          content:
            application/json:
              schema:
                type: object
                properties:
                  success:
                    type: boolean
                    description: Whether the request was successful
                  data:
                    type: object
                    required:
                      - field_name
                      - field_code
                      - field_type
                      - is_custom_field
                      - is_optional_response_field
                    properties:
                      field_name:
                        type: string
                        description: The display name/label of the field
                      field_code:
                        type: string
                        description: The unique identifier for the field (40-character hash for custom fields)
                      field_type:
                        type: string
                        description: The type of the field
                      options:
                        type: array
                        nullable: true
                        description: 'Array of available options for enum/set fields, null for other field types'
                        items:
                          type: object
                      subfields:
                        type: array
                        nullable: true
                        description: 'Array of subfields for complex field types (address, monetary), null for simple field types'
                        items:
                          type: object
                      is_custom_field:
                        type: boolean
                        description: Whether this is a user-created custom field
                      is_optional_response_field:
                        type: boolean
                        description: Whether this field is not returned by default in entity responses
              example:
                success: true
                data:
                  field_name: Custom text field
                  field_code: 946947d1b02fd3ef20798d6112ec5d895a686a21
                  description: A custom text field
                  field_type: varchar
                  options: null
                  subfields: null
                  is_custom_field: true
                  is_optional_response_field: false
  '/personFields/{field_code}/options':
    post:
      summary: Add person field options in bulk
      description: Adds new options to a person custom field that supports options (enum or set field types). This operation is atomic - all options are added or none are added. Returns only the newly added options.
      x-token-cost: 5
      operationId: addPersonFieldOptions
      tags:
        - PersonFields
      security:
        - api_key: []
        - oauth2:
            - 'contacts:full'
            - admin
            - 'contact-fields:full'
      parameters:
        - in: path
          name: field_code
          description: The unique code identifying the field
          required: true
          schema:
            type: string
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: array
              description: Array of options to add. Each item must contain a label. At least one option is required.
              items:
                type: object
                required:
                  - label
                properties:
                  label:
                    type: string
                    minLength: 1
                    maxLength: 255
                    description: The display label for the new option
      responses:
        '200':
          description: Field options operation result
          content:
            application/json:
              schema:
                type: object
                properties:
                  success:
                    type: boolean
                  data:
                    type: array
                    items:
                      type: object
                      required:
                        - id
                        - label
                      properties:
                        id:
                          type: integer
                          description: The unique identifier of the option
                        label:
                          type: string
                          description: The display label of the option
                  additional_data:
                    type: object
                    nullable: true
              example:
                success: true
                data:
                  - id: 3
                    label: Referral
                additional_data: null
    delete:
      summary: Delete person field options in bulk
      description: Removes existing options from a person custom field. This operation is atomic and fails if any of the specified option IDs do not exist. Returns only the deleted options.
      x-token-cost: 3
      operationId: deletePersonFieldOptions
      tags:
        - PersonFields
      security:
        - api_key: []
        - oauth2:
            - 'contacts:full'
            - admin
            - 'contact-fields:full'
      parameters:
        - in: path
          name: field_code
          description: The unique code identifying the field
          required: true
          schema:
            type: string
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: array
              description: Array of option IDs to delete. Each item must contain an ID of the option to delete. At least one option ID is required. The entire request fails if any option does not exist.
              items:
                type: object
                required:
                  - id
                properties:
                  id:
                    type: integer
                    description: The unique identifier of the option to delete
      responses:
        '200':
          description: Field options operation result
          content:
            application/json:
              schema:
                type: object
                properties:
                  success:
                    type: boolean
                  data:
                    type: array
                    items:
                      type: object
                      required:
                        - id
                        - label
                      properties:
                        id:
                          type: integer
                          description: The unique identifier of the option
                        label:
                          type: string
                          description: The display label of the option
                  additional_data:
                    type: object
                    nullable: true
              example:
                success: true
                data:
                  - id: 3
                    label: Referral
                additional_data: null
    patch:
      summary: Update person field options in bulk
      description: Updates existing options for a person custom field. This operation is atomic and fails if any of the specified option IDs do not exist. Returns only the updated options.
      x-token-cost: 5
      operationId: updatePersonFieldOptions
      tags:
        - PersonFields
      security:
        - api_key: []
        - oauth2:
            - 'contacts:full'
            - admin
            - 'contact-fields:full'
      parameters:
        - in: path
          name: field_code
          description: The unique code identifying the field
          required: true
          schema:
            type: string
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: array
              description: Array of options to update. Each item must contain an ID and the updated label. At least one option is required. The entire request fails if any option does not exist.
              items:
                type: object
                required:
                  - id
                  - label
                properties:
                  id:
                    type: integer
                    description: The unique identifier of the option to update
                  label:
                    type: string
                    minLength: 1
                    maxLength: 255
                    description: The new display label for the option
      responses:
        '200':
          description: Field options operation result
          content:
            application/json:
              schema:
                type: object
                properties:
                  success:
                    type: boolean
                  data:
                    type: array
                    items:
                      type: object
                      required:
                        - id
                        - label
                      properties:
                        id:
                          type: integer
                          description: The unique identifier of the option
                        label:
                          type: string
                          description: The display label of the option
                  additional_data:
                    type: object
                    nullable: true
              example:
                success: true
                data:
                  - id: 3
                    label: Referral
                additional_data: null
  /organizations:
    get:
      summary: Get all organizations
      description: Returns data about all organizations.
      x-token-cost: 10
      operationId: getOrganizations
      tags:
        - Organizations
      security:
        - api_key: []
        - oauth2:
            - 'contacts:read'
            - 'contacts:full'
      parameters:
        - in: query
          name: filter_id
          schema:
            type: integer
          description: 'If supplied, only organizations matching the specified filter are returned'
        - in: query
          name: ids
          description: 'Optional comma separated string array of up to 100 entity ids to fetch. If filter_id is provided, this is ignored. If any of the requested entities do not exist or are not visible, they are not included in the response.'
          schema:
            type: string
        - in: query
          name: owner_id
          schema:
            type: integer
          description: 'If supplied, only organizations owned by the specified user are returned. If filter_id is provided, this is ignored.'
        - in: query
          name: updated_since
          schema:
            type: string
          description: 'If set, only organizations with an `update_time` later than or equal to this time are returned. In RFC3339 format, e.g. 2025-01-01T10:20:00Z.'
        - in: query
          name: updated_until
          schema:
            type: string
          description: 'If set, only organizations with an `update_time` earlier than this time are returned. In RFC3339 format, e.g. 2025-01-01T10:20:00Z.'
        - in: query
          name: sort_by
          description: 'The field to sort by. Supported fields: `id`, `update_time`, `add_time`.'
          schema:
            type: string
            default: id
            enum:
              - id
              - update_time
              - add_time
        - in: query
          name: sort_direction
          description: 'The sorting direction. Supported values: `asc`, `desc`.'
          schema:
            type: string
            default: asc
            enum:
              - asc
              - desc
        - in: query
          name: include_fields
          description: Optional comma separated string array of additional fields to include
          schema:
            type: string
            enum:
              - next_activity_id
              - last_activity_id
              - open_deals_count
              - related_open_deals_count
              - closed_deals_count
              - related_closed_deals_count
              - email_messages_count
              - people_count
              - activities_count
              - done_activities_count
              - undone_activities_count
              - files_count
              - notes_count
              - followers_count
              - won_deals_count
              - related_won_deals_count
              - lost_deals_count
              - related_lost_deals_count
              - smart_bcc_email
        - in: query
          name: custom_fields
          description: 'Optional comma separated string array of custom fields keys to include. If you are only interested in a particular set of custom fields, please use this parameter for faster results and smaller response.<br/>A maximum of 15 keys is allowed.'
          schema:
            type: string
        - in: query
          name: include_option_labels
          description: 'When provided with a ''true'' value, single option and multiple option custom fields values contain objects in the form of ''{ id: number, label: string }'' instead of plain id'
          schema:
            type: boolean
        - in: query
          name: include_labels
          description: 'When provided with ''true'' value, response will include an array of label objects in the form of ''{ id: number, label: string }'''
          schema:
            type: boolean
        - in: query
          name: limit
          description: 'For pagination, the limit of entries to be returned. If not provided, 100 items will be returned. Please note that a maximum value of 500 is allowed.'
          schema:
            type: integer
            example: 100
        - in: query
          name: cursor
          required: false
          schema:
            type: string
          description: 'For pagination, the marker (an opaque string value) representing the first item on the next page'
      responses:
        '200':
          description: Get all organizations
          content:
            application/json:
              schema:
                type: object
                title: GetOrganizationsResponse
                allOf:
                  - title: baseResponse
                    type: object
                    properties:
                      success:
                        type: boolean
                        description: If the response is successful or not
                  - type: object
                    properties:
                      data:
                        type: array
                        description: Organizations array
                        items:
                          type: object
                          properties:
                            id:
                              type: integer
                              description: The ID of the organization
                            name:
                              type: string
                              description: The name of the organization
                            owner_id:
                              type: integer
                              description: The ID of the user who owns the organization
                            add_time:
                              type: string
                              description: The creation date and time of the organization
                            update_time:
                              type: string
                              description: The last updated date and time of the organization
                            is_deleted:
                              type: boolean
                              description: Whether the organization is deleted or not
                            visible_to:
                              type: integer
                              description: The visibility of the organization
                            address:
                              description: The address of the organization
                              type: object
                              title: OrganizationItemAddress
                              properties:
                                value:
                                  type: string
                                  description: The full address of the organization
                                country:
                                  type: string
                                  description: Country of the organization
                                admin_area_level_1:
                                  type: string
                                  description: Admin area level 1 (e.g. state) of the organization
                                admin_area_level_2:
                                  type: string
                                  description: Admin area level 2 (e.g. county) of the organization
                                locality:
                                  type: string
                                  description: Locality (e.g. city) of the organization
                                sublocality:
                                  type: string
                                  description: Sublocality (e.g. neighborhood) of the organization
                                route:
                                  type: string
                                  description: Route (e.g. street) of the organization
                                street_number:
                                  type: string
                                  description: Street number of the organization
                                subpremise:
                                  type: string
                                  description: Subpremise (e.g. apartment/suite number) of the organization
                                postal_code:
                                  type: string
                                  description: Postal code of the organization
                            label_ids:
                              type: array
                              description: The IDs of labels assigned to the organization
                              items:
                                type: integer
                            custom_fields:
                              type: object
                              additionalProperties: true
                              description: 'An object where each key represents a custom field. All custom fields are referenced as randomly generated 40-character hashes. To clear a custom field value, set it to `null`. For multi-option fields (field type `set`), use `null` to clear the selection — sending an empty array `[]` is not supported and will result in a validation error.'
                      additional_data:
                        type: object
                        description: The additional data of the list
                        properties:
                          next_cursor:
                            type: string
                            description: The first item on the next page. The value of the `next_cursor` field will be `null` if you have reached the end of the dataset and there’s no more pages to be returned.
              example:
                success: true
                data:
                  - id: 1
                    name: Organization Name
                    owner_id: 1
                    org_id: 1
                    add_time: '2021-01-01T00:00:00Z'
                    update_time: '2021-01-01T00:00:00Z'
                    address:
                      value: 123 Main St
                      country: USA
                      admin_area_level_1: CA
                      admin_area_level_2: Santa Clara
                      locality: Sunnyvale
                      sublocality: Downtown
                      route: Main St
                      street_number: '123'
                      subpremise: 123A
                      postal_code: '94085'
                    is_deleted: false
                    visible_to: 7
                    label_ids:
                      - 1
                      - 2
                      - 3
                    custom_fields: {}
                additional_data:
                  next_cursor: eyJmaWVsZCI6ImlkIiwiZmllbGRWYWx1ZSI6Nywic29ydERpcmVjdGlvbiI6ImFzYyIsImlkIjo3fQ
    post:
      summary: Add a new organization
      description: Adds a new organization.
      x-token-cost: 5
      operationId: addOrganization
      tags:
        - Organizations
      security:
        - api_key: []
        - oauth2:
            - 'contacts:full'
      requestBody:
        content:
          application/json:
            schema:
              required:
                - title
              type: object
              properties:
                name:
                  type: string
                  description: The name of the organization
                owner_id:
                  type: integer
                  description: The ID of the user who owns the organization
                add_time:
                  type: string
                  description: The creation date and time of the organization
                update_time:
                  type: string
                  description: The last updated date and time of the organization
                visible_to:
                  type: integer
                  description: The visibility of the organization
                label_ids:
                  type: array
                  description: The IDs of labels assigned to the organization
                  items:
                    type: integer
                address:
                  description: The address of the organization
                  type: object
                  title: OrganizationItemAddress
                  properties:
                    value:
                      type: string
                      description: The full address of the organization
                    country:
                      type: string
                      description: Country of the organization
                    admin_area_level_1:
                      type: string
                      description: Admin area level 1 (e.g. state) of the organization
                    admin_area_level_2:
                      type: string
                      description: Admin area level 2 (e.g. county) of the organization
                    locality:
                      type: string
                      description: Locality (e.g. city) of the organization
                    sublocality:
                      type: string
                      description: Sublocality (e.g. neighborhood) of the organization
                    route:
                      type: string
                      description: Route (e.g. street) of the organization
                    street_number:
                      type: string
                      description: Street number of the organization
                    subpremise:
                      type: string
                      description: Subpremise (e.g. apartment/suite number) of the organization
                    postal_code:
                      type: string
                      description: Postal code of the organization
                custom_fields:
                  type: object
                  additionalProperties: true
                  description: 'An object where each key represents a custom field. All custom fields are referenced as randomly generated 40-character hashes. To clear a custom field value, set it to `null`. For multi-option fields (field type `set`), use `null` to clear the selection — sending an empty array `[]` is not supported and will result in a validation error.'
      responses:
        '200':
          description: Add organization
          content:
            application/json:
              schema:
                type: object
                title: UpsertOrganizationResponse
                allOf:
                  - title: baseResponse
                    type: object
                    properties:
                      success:
                        type: boolean
                        description: If the response is successful or not
                  - type: object
                    title: UpsertOrganizationResponseData
                    properties:
                      data:
                        type: object
                        properties:
                          id:
                            type: integer
                            description: The ID of the organization
                          name:
                            type: string
                            description: The name of the organization
                          owner_id:
                            type: integer
                            description: The ID of the user who owns the organization
                          add_time:
                            type: string
                            description: The creation date and time of the organization
                          update_time:
                            type: string
                            description: The last updated date and time of the organization
                          is_deleted:
                            type: boolean
                            description: Whether the organization is deleted or not
                          visible_to:
                            type: integer
                            description: The visibility of the organization
                          address:
                            description: The address of the organization
                            type: object
                            title: OrganizationItemAddress
                            properties:
                              value:
                                type: string
                                description: The full address of the organization
                              country:
                                type: string
                                description: Country of the organization
                              admin_area_level_1:
                                type: string
                                description: Admin area level 1 (e.g. state) of the organization
                              admin_area_level_2:
                                type: string
                                description: Admin area level 2 (e.g. county) of the organization
                              locality:
                                type: string
                                description: Locality (e.g. city) of the organization
                              sublocality:
                                type: string
                                description: Sublocality (e.g. neighborhood) of the organization
                              route:
                                type: string
                                description: Route (e.g. street) of the organization
                              street_number:
                                type: string
                                description: Street number of the organization
                              subpremise:
                                type: string
                                description: Subpremise (e.g. apartment/suite number) of the organization
                              postal_code:
                                type: string
                                description: Postal code of the organization
                          label_ids:
                            type: array
                            description: The IDs of labels assigned to the organization
                            items:
                              type: integer
                          custom_fields:
                            type: object
                            additionalProperties: true
                            description: 'An object where each key represents a custom field. All custom fields are referenced as randomly generated 40-character hashes. To clear a custom field value, set it to `null`. For multi-option fields (field type `set`), use `null` to clear the selection — sending an empty array `[]` is not supported and will result in a validation error.'
              example:
                success: true
                data:
                  id: 1
                  name: Organization Name
                  owner_id: 1
                  org_id: 1
                  add_time: '2021-01-01T00:00:00Z'
                  update_time: '2021-01-01T00:00:00Z'
                  address:
                    value: 123 Main St
                    country: USA
                    admin_area_level_1: CA
                    admin_area_level_2: Santa Clara
                    locality: Sunnyvale
                    sublocality: Downtown
                    route: Main St
                    street_number: '123'
                    subpremise: 123A
                    postal_code: '94085'
                  is_deleted: false
                  visible_to: 7
                  label_ids:
                    - 1
                    - 2
                    - 3
                  custom_fields: {}
  '/organizations/{id}':
    delete:
      summary: Delete a organization
      description: 'Marks a organization as deleted. After 30 days, the organization will be permanently deleted.'
      x-token-cost: 3
      operationId: deleteOrganization
      tags:
        - Organizations
      security:
        - api_key: []
        - oauth2:
            - 'contacts:full'
      parameters:
        - in: path
          name: id
          description: The ID of the organization
          required: true
          schema:
            type: integer
      responses:
        '200':
          description: Delete organization
          content:
            application/json:
              schema:
                title: DeleteOrganizationResponse
                type: object
                properties:
                  success:
                    type: boolean
                    description: If the response is successful or not
                  data:
                    type: object
                    properties:
                      id:
                        type: integer
                        description: Deleted organization ID
              example:
                success: true
                data:
                  id: 1
    get:
      summary: Get details of a organization
      description: Returns the details of a specific organization.
      x-token-cost: 1
      operationId: getOrganization
      tags:
        - Organizations
      security:
        - api_key: []
        - oauth2:
            - 'contacts:read'
            - 'contacts:full'
      parameters:
        - in: path
          name: id
          description: The ID of the organization
          required: true
          schema:
            type: integer
        - in: query
          name: include_fields
          description: Optional comma separated string array of additional fields to include
          schema:
            type: string
            enum:
              - next_activity_id
              - last_activity_id
              - open_deals_count
              - related_open_deals_count
              - closed_deals_count
              - related_closed_deals_count
              - email_messages_count
              - people_count
              - activities_count
              - done_activities_count
              - undone_activities_count
              - files_count
              - notes_count
              - followers_count
              - won_deals_count
              - related_won_deals_count
              - lost_deals_count
              - related_lost_deals_count
              - smart_bcc_email
        - in: query
          name: custom_fields
          description: 'Optional comma separated string array of custom fields keys to include. If you are only interested in a particular set of custom fields, please use this parameter for faster results and smaller response.<br/>A maximum of 15 keys is allowed.'
          schema:
            type: string
        - in: query
          name: include_option_labels
          description: 'When provided with a ''true'' value, single option and multiple option custom fields values contain objects in the form of ''{ id: number, label: string }'' instead of plain id'
          schema:
            type: boolean
        - in: query
          name: include_labels
          description: 'When provided with ''true'' value, response will include an array of label objects in the form of ''{ id: number, label: string }'''
          schema:
            type: boolean
      responses:
        '200':
          description: Get organization
          content:
            application/json:
              schema:
                type: object
                title: UpsertOrganizationResponse
                allOf:
                  - title: baseResponse
                    type: object
                    properties:
                      success:
                        type: boolean
                        description: If the response is successful or not
                  - type: object
                    title: UpsertOrganizationResponseData
                    properties:
                      data:
                        type: object
                        properties:
                          id:
                            type: integer
                            description: The ID of the organization
                          name:
                            type: string
                            description: The name of the organization
                          owner_id:
                            type: integer
                            description: The ID of the user who owns the organization
                          add_time:
                            type: string
                            description: The creation date and time of the organization
                          update_time:
                            type: string
                            description: The last updated date and time of the organization
                          is_deleted:
                            type: boolean
                            description: Whether the organization is deleted or not
                          visible_to:
                            type: integer
                            description: The visibility of the organization
                          address:
                            description: The address of the organization
                            type: object
                            title: OrganizationItemAddress
                            properties:
                              value:
                                type: string
                                description: The full address of the organization
                              country:
                                type: string
                                description: Country of the organization
                              admin_area_level_1:
                                type: string
                                description: Admin area level 1 (e.g. state) of the organization
                              admin_area_level_2:
                                type: string
                                description: Admin area level 2 (e.g. county) of the organization
                              locality:
                                type: string
                                description: Locality (e.g. city) of the organization
                              sublocality:
                                type: string
                                description: Sublocality (e.g. neighborhood) of the organization
                              route:
                                type: string
                                description: Route (e.g. street) of the organization
                              street_number:
                                type: string
                                description: Street number of the organization
                              subpremise:
                                type: string
                                description: Subpremise (e.g. apartment/suite number) of the organization
                              postal_code:
                                type: string
                                description: Postal code of the organization
                          label_ids:
                            type: array
                            description: The IDs of labels assigned to the organization
                            items:
                              type: integer
                          custom_fields:
                            type: object
                            additionalProperties: true
                            description: 'An object where each key represents a custom field. All custom fields are referenced as randomly generated 40-character hashes. To clear a custom field value, set it to `null`. For multi-option fields (field type `set`), use `null` to clear the selection — sending an empty array `[]` is not supported and will result in a validation error.'
              example:
                success: true
                data:
                  id: 1
                  name: Organization Name
                  owner_id: 1
                  org_id: 1
                  add_time: '2021-01-01T00:00:00Z'
                  update_time: '2021-01-01T00:00:00Z'
                  address:
                    value: 123 Main St
                    country: USA
                    admin_area_level_1: CA
                    admin_area_level_2: Santa Clara
                    locality: Sunnyvale
                    sublocality: Downtown
                    route: Main St
                    street_number: '123'
                    subpremise: 123A
                    postal_code: '94085'
                  is_deleted: false
                  visible_to: 7
                  label_ids:
                    - 1
                    - 2
                    - 3
                  custom_fields: {}
    patch:
      summary: Update a organization
      description: Updates the properties of a organization.
      x-token-cost: 5
      operationId: updateOrganization
      tags:
        - Organizations
      security:
        - api_key: []
        - oauth2:
            - 'contacts:full'
      parameters:
        - in: path
          name: id
          description: The ID of the organization
          required: true
          schema:
            type: integer
      requestBody:
        content:
          application/json:
            schema:
              type: object
              properties:
                name:
                  type: string
                  description: The name of the organization
                owner_id:
                  type: integer
                  description: The ID of the user who owns the organization
                add_time:
                  type: string
                  description: The creation date and time of the organization
                update_time:
                  type: string
                  description: The last updated date and time of the organization
                visible_to:
                  type: integer
                  description: The visibility of the organization
                label_ids:
                  type: array
                  description: The IDs of labels assigned to the organization
                  items:
                    type: integer
                address:
                  description: The address of the organization
                  type: object
                  title: OrganizationItemAddress
                  properties:
                    value:
                      type: string
                      description: The full address of the organization
                    country:
                      type: string
                      description: Country of the organization
                    admin_area_level_1:
                      type: string
                      description: Admin area level 1 (e.g. state) of the organization
                    admin_area_level_2:
                      type: string
                      description: Admin area level 2 (e.g. county) of the organization
                    locality:
                      type: string
                      description: Locality (e.g. city) of the organization
                    sublocality:
                      type: string
                      description: Sublocality (e.g. neighborhood) of the organization
                    route:
                      type: string
                      description: Route (e.g. street) of the organization
                    street_number:
                      type: string
                      description: Street number of the organization
                    subpremise:
                      type: string
                      description: Subpremise (e.g. apartment/suite number) of the organization
                    postal_code:
                      type: string
                      description: Postal code of the organization
                custom_fields:
                  type: object
                  additionalProperties: true
                  description: 'An object where each key represents a custom field. All custom fields are referenced as randomly generated 40-character hashes. To clear a custom field value, set it to `null`. For multi-option fields (field type `set`), use `null` to clear the selection — sending an empty array `[]` is not supported and will result in a validation error.'
      responses:
        '200':
          description: Edit organization
          content:
            application/json:
              schema:
                type: object
                title: UpsertOrganizationResponse
                allOf:
                  - title: baseResponse
                    type: object
                    properties:
                      success:
                        type: boolean
                        description: If the response is successful or not
                  - type: object
                    title: UpsertOrganizationResponseData
                    properties:
                      data:
                        type: object
                        properties:
                          id:
                            type: integer
                            description: The ID of the organization
                          name:
                            type: string
                            description: The name of the organization
                          owner_id:
                            type: integer
                            description: The ID of the user who owns the organization
                          add_time:
                            type: string
                            description: The creation date and time of the organization
                          update_time:
                            type: string
                            description: The last updated date and time of the organization
                          is_deleted:
                            type: boolean
                            description: Whether the organization is deleted or not
                          visible_to:
                            type: integer
                            description: The visibility of the organization
                          address:
                            description: The address of the organization
                            type: object
                            title: OrganizationItemAddress
                            properties:
                              value:
                                type: string
                                description: The full address of the organization
                              country:
                                type: string
                                description: Country of the organization
                              admin_area_level_1:
                                type: string
                                description: Admin area level 1 (e.g. state) of the organization
                              admin_area_level_2:
                                type: string
                                description: Admin area level 2 (e.g. county) of the organization
                              locality:
                                type: string
                                description: Locality (e.g. city) of the organization
                              sublocality:
                                type: string
                                description: Sublocality (e.g. neighborhood) of the organization
                              route:
                                type: string
                                description: Route (e.g. street) of the organization
                              street_number:
                                type: string
                                description: Street number of the organization
                              subpremise:
                                type: string
                                description: Subpremise (e.g. apartment/suite number) of the organization
                              postal_code:
                                type: string
                                description: Postal code of the organization
                          label_ids:
                            type: array
                            description: The IDs of labels assigned to the organization
                            items:
                              type: integer
                          custom_fields:
                            type: object
                            additionalProperties: true
                            description: 'An object where each key represents a custom field. All custom fields are referenced as randomly generated 40-character hashes. To clear a custom field value, set it to `null`. For multi-option fields (field type `set`), use `null` to clear the selection — sending an empty array `[]` is not supported and will result in a validation error.'
              example:
                success: true
                data:
                  id: 1
                  name: Organization Name
                  owner_id: 1
                  org_id: 1
                  add_time: '2021-01-01T00:00:00Z'
                  update_time: '2021-01-01T00:00:00Z'
                  address:
                    value: 123 Main St
                    country: USA
                    admin_area_level_1: CA
                    admin_area_level_2: Santa Clara
                    locality: Sunnyvale
                    sublocality: Downtown
                    route: Main St
                    street_number: '123'
                    subpremise: 123A
                    postal_code: '94085'
                  is_deleted: false
                  visible_to: 7
                  label_ids:
                    - 1
                    - 2
                    - 3
                  custom_fields: {}
  '/organizations/{id}/followers':
    get:
      summary: List followers of an organization
      description: Lists users who are following the organization.
      x-token-cost: 10
      operationId: getOrganizationFollowers
      tags:
        - Organizations
      security:
        - api_key: []
        - oauth2:
            - 'contacts:read'
            - 'contacts:full'
      parameters:
        - in: path
          name: id
          description: The ID of the organization
          required: true
          schema:
            type: integer
        - in: query
          name: limit
          description: 'For pagination, the limit of entries to be returned. If not provided, 100 items will be returned. Please note that a maximum value of 500 is allowed.'
          schema:
            type: integer
            example: 100
        - in: query
          name: cursor
          required: false
          schema:
            type: string
          description: 'For pagination, the marker (an opaque string value) representing the first item on the next page'
      responses:
        '200':
          description: List entity followers
          content:
            application/json:
              schema:
                type: object
                title: GetFollowersResponse
                allOf:
                  - title: baseResponse
                    type: object
                    properties:
                      success:
                        type: boolean
                        description: If the response is successful or not
                  - type: object
                    properties:
                      data:
                        type: array
                        description: Followers array
                        items:
                          type: object
                          properties:
                            user_id:
                              type: integer
                              description: The ID of the user following the entity
                            add_time:
                              type: string
                              description: The add time of the following
                      additional_data:
                        type: object
                        description: The additional data of the list
                        properties:
                          next_cursor:
                            type: string
                            description: The first item on the next page. The value of the `next_cursor` field will be `null` if you have reached the end of the dataset and there’s no more pages to be returned.
              example:
                success: true
                data:
                  - user_id: 1
                    add_time: '2021-01-01T00:00:00Z'
                additional_data:
                  next_cursor: eyJmaWVsZCI6ImlkIiwiZmllbGRWYWx1ZSI6Nywic29ydERpcmVjdGlvbiI6ImFzYyIsImlkIjo3fQ
    post:
      summary: Add a follower to an organization
      description: Adds a user as a follower to the organization.
      x-token-cost: 5
      operationId: addOrganizationFollower
      tags:
        - Organizations
      security:
        - api_key: []
        - oauth2:
            - 'contacts:full'
      parameters:
        - in: path
          name: id
          description: The ID of the organization
          required: true
          schema:
            type: integer
      requestBody:
        content:
          application/json:
            schema:
              required:
                - user_id
              type: object
              properties:
                user_id:
                  type: integer
                  description: The ID of the user to add as a follower
      responses:
        '201':
          description: Add a follower
          content:
            application/json:
              schema:
                type: object
                title: AddFollowerResponse
                allOf:
                  - title: baseResponse
                    type: object
                    properties:
                      success:
                        type: boolean
                        description: If the response is successful or not
                  - type: object
                    properties:
                      data:
                        type: object
                        properties:
                          user_id:
                            type: integer
                            description: The ID of the user following the entity
                          add_time:
                            type: string
                            description: The add time of the following
              example:
                success: true
                data:
                  user_id: 1
                  add_time: '2021-01-01T00:00:00Z'
  '/organizations/{id}/followers/changelog':
    get:
      summary: List followers changelog of an organization
      description: Lists changelogs about users have followed the organization.
      x-token-cost: 10
      operationId: getOrganizationFollowersChangelog
      tags:
        - Organizations
      security:
        - api_key: []
        - oauth2:
            - 'contacts:read'
            - 'contacts:full'
      parameters:
        - in: path
          name: id
          description: The ID of the organization
          required: true
          schema:
            type: integer
        - in: query
          name: limit
          description: 'For pagination, the limit of entries to be returned. If not provided, 100 items will be returned. Please note that a maximum value of 500 is allowed.'
          schema:
            type: integer
            example: 100
        - in: query
          name: cursor
          required: false
          schema:
            type: string
          description: 'For pagination, the marker (an opaque string value) representing the first item on the next page'
      responses:
        '200':
          description: List entity followers
          content:
            application/json:
              schema:
                type: object
                title: GetFollowerChangelogsResponse
                allOf:
                  - title: baseResponse
                    type: object
                    properties:
                      success:
                        type: boolean
                        description: If the response is successful or not
                  - type: object
                    properties:
                      data:
                        type: array
                        description: Follower changelogs array
                        items:
                          type: object
                          title: FollowerChangelogItem
                          properties:
                            action:
                              type: string
                              description: The type of change
                            actor_user_id:
                              type: integer
                              description: The ID of the user who did the change
                            follower_user_id:
                              type: integer
                              description: The ID of the user who was following the entity
                            time:
                              type: string
                              description: The time at which the change happened
                      additional_data:
                        type: object
                        description: The additional data of the list
                        properties:
                          next_cursor:
                            type: string
                            description: The first item on the next page. The value of the `next_cursor` field will be `null` if you have reached the end of the dataset and there’s no more pages to be returned.
              example:
                success: true
                data:
                  - action: added
                    actor_user_id: 1
                    follower_user_id: 1
                    time: '2024-01-01T00:00:00Z'
                additional_data:
                  next_cursor: eyJmaWVsZCI6ImlkIiwiZmllbGRWYWx1ZSI6Nywic29ydERpcmVjdGlvbiI6ImFzYyIsImlkIjo3fQ
  '/organizations/{id}/followers/{follower_id}':
    delete:
      summary: Delete a follower from an organization
      description: Deletes a user follower from the organization.
      x-token-cost: 3
      operationId: deleteOrganizationFollower
      tags:
        - Organizations
      security:
        - api_key: []
        - oauth2:
            - 'contacts:full'
      parameters:
        - in: path
          name: id
          description: The ID of the organization
          required: true
          schema:
            type: integer
        - in: path
          name: follower_id
          required: true
          schema:
            type: integer
          description: The ID of the following user
      responses:
        '200':
          description: Remove a follower
          content:
            application/json:
              schema:
                title: DeleteFollowerResponse
                type: object
                properties:
                  success:
                    type: boolean
                    description: If the response is successful or not
                  data:
                    type: object
                    properties:
                      user_id:
                        type: integer
                        description: Deleted follower user ID
              example:
                success: true
                data:
                  user_id: 1
  /organizationFields:
    get:
      summary: Get all organization fields
      description: Returns metadata about all organization fields in the company.
      x-token-cost: 10
      operationId: getOrganizationFields
      tags:
        - OrganizationFields
      security:
        - api_key: []
        - oauth2:
            - 'contacts:read'
            - 'contacts:full'
            - admin
            - 'contact-fields:full'
      parameters:
        - in: query
          name: include_fields
          description: Optional comma separated string array of additional data namespaces to include in response
          schema:
            type: string
            enum:
              - ui_visibility
              - important_fields
              - required_fields
              - 'ui_visibility,important_fields'
              - 'ui_visibility,required_fields'
              - 'important_fields,required_fields'
              - 'ui_visibility,important_fields,required_fields'
        - in: query
          name: limit
          description: 'For pagination, the limit of entries to be returned. If not provided, 100 items will be returned. Please note that a maximum value of 500 is allowed.'
          schema:
            type: integer
            example: 100
        - in: query
          name: cursor
          required: false
          schema:
            type: string
          description: 'For pagination, the marker (an opaque string value) representing the first item on the next page'
      responses:
        '200':
          description: Get all organization fields
          content:
            application/json:
              schema:
                type: object
                properties:
                  success:
                    type: boolean
                    description: Whether the request was successful
                  data:
                    type: array
                    items:
                      type: object
                      required:
                        - field_name
                        - field_code
                        - field_type
                        - is_custom_field
                        - is_optional_response_field
                      properties:
                        field_name:
                          type: string
                          description: The display name/label of the field
                        field_code:
                          type: string
                          description: The unique identifier for the field (40-character hash for custom fields)
                        field_type:
                          type: string
                          description: The type of the field
                          enum:
                            - int
                            - double
                            - boolean
                            - varchar
                            - text
                            - phone
                            - varchar_options
                            - varchar_auto
                            - date
                            - daterange
                            - time
                            - timerange
                            - enum
                            - set
                            - address
                            - monetary
                            - deal
                            - deals
                            - lead
                            - org
                            - people
                            - project
                            - stage
                            - user
                            - activity
                            - json
                            - picture
                            - status
                            - visible_to
                            - price_list
                            - billing_frequency
                            - projects_board
                            - projects_phase
                        options:
                          type: array
                          nullable: true
                          description: 'Array of available options for enum/set fields, null for other field types'
                          items:
                            type: object
                            properties:
                              id:
                                type: integer
                                description: The option ID
                              label:
                                type: string
                                description: The option display label
                              color:
                                type: string
                                nullable: true
                                description: Optional color code for the option
                              update_time:
                                type: string
                                format: date-time
                                nullable: true
                                description: When the option was last updated
                              add_time:
                                type: string
                                format: date-time
                                nullable: true
                                description: When the option was created
                        subfields:
                          type: array
                          nullable: true
                          description: 'Array of subfields for complex field types (address, monetary), null for simple field types'
                          items:
                            type: object
                            properties:
                              field_code:
                                type: string
                                description: The subfield identifier
                              field_name:
                                type: string
                                description: The subfield display name
                              field_type:
                                type: string
                                description: The subfield type
                        is_custom_field:
                          type: boolean
                          description: Whether this is a user-created custom field
                        is_optional_response_field:
                          type: boolean
                          description: Whether this field is not returned by default in entity responses
                        ui_visibility:
                          type: object
                          description: UI visibility settings (only included when requested via include_fields parameter)
                          properties:
                            add_visible_flag:
                              type: boolean
                              description: Whether the field is shown in the add modal
                            details_visible_flag:
                              type: boolean
                              description: Whether the field is shown in the details view
                            org_detail_visible_flag:
                              type: boolean
                              description: Whether the field is shown in the organization details view
                            person_detail_visible_flag:
                              type: boolean
                              description: Whether the field is shown in the person details view
                            deal_detail_visible_flag:
                              type: boolean
                              description: Whether the field is shown in the deal details view
                            show_in_add_deal_dialog:
                              type: object
                              description: Configuration for showing the field in the add deal dialog
                              properties:
                                show:
                                  type: boolean
                                  description: Whether the field is shown in the add deal dialog
                                order:
                                  type: integer
                                  nullable: true
                                  description: Display order in the add deal dialog (null if not shown)
                            show_in_add_person_dialog:
                              type: object
                              description: Configuration for showing the field in the add person dialog
                              properties:
                                show:
                                  type: boolean
                                  description: Whether the field is shown in the add person dialog
                                order:
                                  type: integer
                                  nullable: true
                                  description: Display order in the add person dialog (null if not shown)
                        important_fields:
                          type: object
                          description: Important fields configuration
                          properties:
                            enabled:
                              type: boolean
                              description: Whether the field is marked as important
                            stage_ids:
                              type: array
                              items:
                                type: integer
                              description: Array of deal stage IDs where the field is important
                        required_fields:
                          type: object
                          description: Required fields configuration
                          properties:
                            enabled:
                              type: boolean
                              description: Whether the field is required
                  additional_data:
                    type: object
                    properties:
                      next_cursor:
                        type: string
                        nullable: true
                        description: 'Base64url-encoded cursor for fetching the next page of results, null if no more pages'
              example:
                success: true
                data:
                  - field_name: Organization Name
                    field_code: name
                    field_type: varchar
                    options: null
                    subfields: null
                    is_custom_field: false
                    is_optional_response_field: false
                    ui_visibility:
                      add_visible_flag: true
                      details_visible_flag: true
                      org_detail_visible_flag: true
                      person_detail_visible_flag: true
                      deal_detail_visible_flag: true
                      show_in_add_deal_dialog:
                        show: true
                        order: 1
                      show_in_add_person_dialog:
                        show: true
                        order: 1
                    important_fields:
                      enabled: false
                      stage_ids: []
                    required_fields:
                      enabled: true
                  - field_name: Address
                    field_code: address
                    field_type: address
                    options: null
                    subfields:
                      - field_code: value
                        field_name: Address value of Address
                        field_type: varchar
                      - field_code: street_number
                        field_name: House number of Address
                        field_type: varchar
                      - field_code: route
                        field_name: Street/road name of Address
                        field_type: varchar
                      - field_code: subpremise
                        field_name: Apartment/suite of Address
                        field_type: varchar
                      - field_code: locality
                        field_name: District of Address
                        field_type: varchar
                      - field_code: admin_area_level_1
                        field_name: State/province of Address
                        field_type: varchar
                      - field_code: admin_area_level_2
                        field_name: County of Address
                        field_type: varchar
                      - field_code: country
                        field_name: Country of Address
                        field_type: varchar
                      - field_code: postal_code
                        field_name: Postal code of Address
                        field_type: varchar
                      - field_code: formatted_address
                        field_name: Formatted address of Address
                        field_type: varchar
                    is_custom_field: false
                    is_optional_response_field: false
                    ui_visibility:
                      add_visible_flag: true
                      details_visible_flag: true
                      org_detail_visible_flag: true
                      person_detail_visible_flag: true
                      deal_detail_visible_flag: false
                      show_in_add_deal_dialog:
                        show: true
                        order: 2
                      show_in_add_person_dialog:
                        show: false
                        order: null
                    important_fields:
                      enabled: true
                      stage_ids:
                        - 1
                        - 2
                    required_fields:
                      enabled: false
                  - field_name: Industry
                    field_code: 40characterhashforcustomfieldidentifier
                    field_type: enum
                    options:
                      - id: 1
                        label: Technology
                      - id: 2
                        label: Finance
                      - id: 3
                        label: Healthcare
                    subfields: null
                    is_custom_field: true
                    is_optional_response_field: false
                    ui_visibility:
                      add_visible_flag: true
                      details_visible_flag: true
                      org_detail_visible_flag: false
                      person_detail_visible_flag: true
                      deal_detail_visible_flag: true
                      show_in_add_deal_dialog:
                        show: false
                        order: null
                      show_in_add_person_dialog:
                        show: true
                        order: 2
                    important_fields:
                      enabled: false
                      stage_ids: []
                    required_fields:
                      enabled: false
                additional_data:
                  next_cursor: eyJmaWVsZCI6ImlkIiwiZmllbGRWYWx1ZSI6Nywic29ydERpcmVjdGlvbiI6ImFzYyIsImlkIjo3fQ
    post:
      summary: Create one organization field
      description: Creates a new organization custom field.
      x-token-cost: 5
      operationId: addOrganizationField
      tags:
        - OrganizationFields
      security:
        - api_key: []
        - oauth2:
            - admin
            - 'contact-fields:full'
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              required:
                - field_name
                - field_type
              properties:
                field_name:
                  type: string
                  minLength: 1
                  maxLength: 255
                  description: Field name
                field_type:
                  type: string
                  description: 'The type of the field<table><tr><th>Value</th><th>Description</th></tr><tr><td>`varchar`</td><td>Text (up to 255 characters)</td><tr><td>`varchar_auto`</td><td>Autocomplete text (up to 255 characters)</td><tr><td>`text`</td><td>Long text (up to 65k characters)</td><tr><td>`double`</td><td>Numeric value</td><tr><td>`monetary`</td><td>Monetary field (has a numeric value and a currency value)</td><tr><td>`date`</td><td>Date (format YYYY-MM-DD)</td><tr><td>`set`</td><td>Options field with a possibility of having multiple chosen options</td><tr><td>`enum`</td><td>Options field with a single possible chosen option</td><tr><td>`user`</td><td>User field (contains a user ID of another Pipedrive user)</td><tr><td>`org`</td><td>Organization field (contains an organization ID which is stored on the same account)</td><tr><td>`people`</td><td>Person field (contains a person ID which is stored on the same account)</td><tr><td>`phone`</td><td>Phone field (up to 255 numbers and/or characters)</td><tr><td>`time`</td><td>Time field (format HH:MM:SS)</td><tr><td>`timerange`</td><td>Time-range field (has a start time and end time value, both HH:MM:SS)</td><tr><td>`daterange`</td><td>Date-range field (has a start date and end date value, both YYYY-MM-DD)</td><tr><td>`address`</td><td>Address field</dd></table>'
                  enum:
                    - varchar
                    - text
                    - double
                    - phone
                    - date
                    - daterange
                    - time
                    - timerange
                    - set
                    - enum
                    - varchar_auto
                    - address
                    - monetary
                    - org
                    - people
                    - user
                options:
                  type: array
                  description: Field options (required for enum and set field types)
                  items:
                    type: object
                    required:
                      - label
                    properties:
                      label:
                        type: string
                        description: The option label
                ui_visibility:
                  type: object
                  description: UI visibility settings for the field. Controls where the field appears in the Pipedrive web UI.
                  additionalProperties: true
                  properties:
                    add_visible_flag:
                      type: boolean
                      description: Whether the field is shown in the add organization modal. Default is false. Cannot be set to false for the 'name' system field.
                      default: false
                    details_visible_flag:
                      type: boolean
                      description: Whether the field is shown in the organization details view. Default is true.
                      default: true
                    show_in_add_deal_dialog:
                      type: object
                      description: 'Configuration for showing this organization field when adding a new deal. Only available for custom fields or specific eligible system fields. Default is show=false, order=null.'
                      properties:
                        show:
                          type: boolean
                          description: Whether the field is shown in the add deal dialog. Default is false.
                          default: false
                        order:
                          type: integer
                          nullable: true
                          description: 'Display order in the add deal dialog. This value is auto-calculated and managed by the system. When show is set to false, order is automatically set to null. When show changes from false to true, order is automatically assigned the next available position.'
                          default: null
                    show_in_add_person_dialog:
                      type: object
                      description: 'Configuration for showing this organization field when adding a new person. Only available for custom fields or specific eligible system fields. Default is show=false, order=null.'
                      properties:
                        show:
                          type: boolean
                          description: Whether the field is shown in the add person dialog. Default is false.
                          default: false
                        order:
                          type: integer
                          nullable: true
                          description: 'Display order in the add person dialog. This value is auto-calculated and managed by the system. When show is set to false, order is automatically set to null. When show changes from false to true, order is automatically assigned the next available position.'
                          default: null
                important_fields:
                  type: object
                  description: Configuration for highlighting the field at specific stages.
                  additionalProperties: true
                  properties:
                    enabled:
                      type: boolean
                      description: 'Whether the field is marked as important. When false, the field is not highlighted. When true with empty stage_ids, the field is important everywhere. When true with specific stage_ids, the field is important only at those deal stages. Default is false.'
                      default: false
                    stage_ids:
                      type: array
                      items:
                        type: integer
                      description: 'Array of deal stage IDs where this organization field should be highlighted as important. Must reference valid, active deal stages. Empty array when enabled is false.'
                      default: []
                required_fields:
                  type: object
                  description: Required fields configuration for marking the field as mandatory when interacted with in the Pipedrive web UI.
                  additionalProperties: true
                  properties:
                    enabled:
                      type: boolean
                      description: 'Whether the field is required. When false, the field is optional. When true, the field is required when creating or updating organizations. Default is false.'
                      default: false
      responses:
        '200':
          description: Create one organization field
          content:
            application/json:
              schema:
                type: object
                properties:
                  success:
                    type: boolean
                    description: Whether the request was successful
                  data:
                    type: object
                    required:
                      - field_name
                      - field_code
                      - field_type
                      - is_custom_field
                      - is_optional_response_field
                    properties:
                      field_name:
                        type: string
                        description: The display name/label of the field
                      field_code:
                        type: string
                        description: The unique identifier for the field (40-character hash for custom fields)
                      field_type:
                        type: string
                        description: The type of the field
                        enum:
                          - int
                          - double
                          - boolean
                          - varchar
                          - text
                          - phone
                          - varchar_options
                          - varchar_auto
                          - date
                          - daterange
                          - time
                          - timerange
                          - enum
                          - set
                          - address
                          - monetary
                          - deal
                          - deals
                          - lead
                          - org
                          - people
                          - project
                          - stage
                          - user
                          - activity
                          - json
                          - picture
                          - status
                          - visible_to
                          - price_list
                          - billing_frequency
                          - projects_board
                          - projects_phase
                      options:
                        type: array
                        nullable: true
                        description: 'Array of available options for enum/set fields, null for other field types'
                        items:
                          type: object
                          properties:
                            id:
                              type: integer
                              description: The option ID
                            label:
                              type: string
                              description: The option display label
                            color:
                              type: string
                              nullable: true
                              description: Optional color code for the option
                            update_time:
                              type: string
                              format: date-time
                              nullable: true
                              description: When the option was last updated
                            add_time:
                              type: string
                              format: date-time
                              nullable: true
                              description: When the option was created
                      subfields:
                        type: array
                        nullable: true
                        description: 'Array of subfields for complex field types (address, monetary), null for simple field types'
                        items:
                          type: object
                          properties:
                            field_code:
                              type: string
                              description: The subfield identifier
                            field_name:
                              type: string
                              description: The subfield display name
                            field_type:
                              type: string
                              description: The subfield type
                      is_custom_field:
                        type: boolean
                        description: Whether this is a user-created custom field
                      is_optional_response_field:
                        type: boolean
                        description: Whether this field is not returned by default in entity responses
                      ui_visibility:
                        type: object
                        description: UI visibility settings (only included when requested via include_fields parameter)
                        properties:
                          add_visible_flag:
                            type: boolean
                            description: Whether the field is shown in the add modal
                          details_visible_flag:
                            type: boolean
                            description: Whether the field is shown in the details view
                          org_detail_visible_flag:
                            type: boolean
                            description: Whether the field is shown in the organization details view
                          person_detail_visible_flag:
                            type: boolean
                            description: Whether the field is shown in the person details view
                          deal_detail_visible_flag:
                            type: boolean
                            description: Whether the field is shown in the deal details view
                          show_in_add_deal_dialog:
                            type: object
                            description: Configuration for showing the field in the add deal dialog
                            properties:
                              show:
                                type: boolean
                                description: Whether the field is shown in the add deal dialog
                              order:
                                type: integer
                                nullable: true
                                description: Display order in the add deal dialog (null if not shown)
                          show_in_add_person_dialog:
                            type: object
                            description: Configuration for showing the field in the add person dialog
                            properties:
                              show:
                                type: boolean
                                description: Whether the field is shown in the add person dialog
                              order:
                                type: integer
                                nullable: true
                                description: Display order in the add person dialog (null if not shown)
                      important_fields:
                        type: object
                        description: Important fields configuration
                        properties:
                          enabled:
                            type: boolean
                            description: Whether the field is marked as important
                          stage_ids:
                            type: array
                            items:
                              type: integer
                            description: Array of deal stage IDs where the field is important
                      required_fields:
                        type: object
                        description: Required fields configuration
                        properties:
                          enabled:
                            type: boolean
                            description: Whether the field is required
              example:
                success: true
                data:
                  field_name: Industry
                  field_code: 946947d1b02fd3ef20798d6112ec5d895a686a21
                  field_type: enum
                  options:
                    - id: 1
                      label: Technology
                    - id: 2
                      label: Finance
                    - id: 3
                      label: Healthcare
                  subfields: null
                  is_custom_field: true
                  is_optional_response_field: false
                  ui_visibility:
                    add_visible_flag: true
                    details_visible_flag: true
                    org_detail_visible_flag: true
                    person_detail_visible_flag: false
                    deal_detail_visible_flag: false
                    show_in_add_deal_dialog:
                      show: false
                      order: null
                    show_in_add_person_dialog:
                      show: true
                      order: 2
                  important_fields:
                    enabled: false
                    stage_ids: []
                  required_fields:
                    enabled: false
  '/organizationFields/{field_code}':
    get:
      summary: Get one organization field
      description: Returns metadata about a specific organization field.
      x-token-cost: 1
      operationId: getOrganizationField
      tags:
        - OrganizationFields
      security:
        - api_key: []
        - oauth2:
            - 'contacts:read'
            - 'contacts:full'
            - admin
            - 'contact-fields:full'
      parameters:
        - in: path
          name: field_code
          description: The unique code identifying the field
          required: true
          schema:
            type: string
        - in: query
          name: include_fields
          description: Optional comma separated string array of additional data namespaces to include in response
          schema:
            type: string
            enum:
              - ui_visibility
              - important_fields
              - required_fields
              - 'ui_visibility,important_fields'
              - 'ui_visibility,required_fields'
              - 'important_fields,required_fields'
              - 'ui_visibility,important_fields,required_fields'
      responses:
        '200':
          description: Get one organization field
          content:
            application/json:
              schema:
                type: object
                properties:
                  success:
                    type: boolean
                    description: Whether the request was successful
                  data:
                    type: object
                    required:
                      - field_name
                      - field_code
                      - field_type
                      - is_custom_field
                      - is_optional_response_field
                    properties:
                      field_name:
                        type: string
                        description: The display name/label of the field
                      field_code:
                        type: string
                        description: The unique identifier for the field (40-character hash for custom fields)
                      field_type:
                        type: string
                        description: The type of the field
                        enum:
                          - int
                          - double
                          - boolean
                          - varchar
                          - text
                          - phone
                          - varchar_options
                          - varchar_auto
                          - date
                          - daterange
                          - time
                          - timerange
                          - enum
                          - set
                          - address
                          - monetary
                          - deal
                          - deals
                          - lead
                          - org
                          - people
                          - project
                          - stage
                          - user
                          - activity
                          - json
                          - picture
                          - status
                          - visible_to
                          - price_list
                          - billing_frequency
                          - projects_board
                          - projects_phase
                      options:
                        type: array
                        nullable: true
                        description: 'Array of available options for enum/set fields, null for other field types'
                        items:
                          type: object
                          properties:
                            id:
                              type: integer
                              description: The option ID
                            label:
                              type: string
                              description: The option display label
                            color:
                              type: string
                              nullable: true
                              description: Optional color code for the option
                            update_time:
                              type: string
                              format: date-time
                              nullable: true
                              description: When the option was last updated
                            add_time:
                              type: string
                              format: date-time
                              nullable: true
                              description: When the option was created
                      subfields:
                        type: array
                        nullable: true
                        description: 'Array of subfields for complex field types (address, monetary), null for simple field types'
                        items:
                          type: object
                          properties:
                            field_code:
                              type: string
                              description: The subfield identifier
                            field_name:
                              type: string
                              description: The subfield display name
                            field_type:
                              type: string
                              description: The subfield type
                      is_custom_field:
                        type: boolean
                        description: Whether this is a user-created custom field
                      is_optional_response_field:
                        type: boolean
                        description: Whether this field is not returned by default in entity responses
                      ui_visibility:
                        type: object
                        description: UI visibility settings (only included when requested via include_fields parameter)
                        properties:
                          add_visible_flag:
                            type: boolean
                            description: Whether the field is shown in the add modal
                          details_visible_flag:
                            type: boolean
                            description: Whether the field is shown in the details view
                          org_detail_visible_flag:
                            type: boolean
                            description: Whether the field is shown in the organization details view
                          person_detail_visible_flag:
                            type: boolean
                            description: Whether the field is shown in the person details view
                          deal_detail_visible_flag:
                            type: boolean
                            description: Whether the field is shown in the deal details view
                          show_in_add_deal_dialog:
                            type: object
                            description: Configuration for showing the field in the add deal dialog
                            properties:
                              show:
                                type: boolean
                                description: Whether the field is shown in the add deal dialog
                              order:
                                type: integer
                                nullable: true
                                description: Display order in the add deal dialog (null if not shown)
                          show_in_add_person_dialog:
                            type: object
                            description: Configuration for showing the field in the add person dialog
                            properties:
                              show:
                                type: boolean
                                description: Whether the field is shown in the add person dialog
                              order:
                                type: integer
                                nullable: true
                                description: Display order in the add person dialog (null if not shown)
                      important_fields:
                        type: object
                        description: Important fields configuration
                        properties:
                          enabled:
                            type: boolean
                            description: Whether the field is marked as important
                          stage_ids:
                            type: array
                            items:
                              type: integer
                            description: Array of deal stage IDs where the field is important
                      required_fields:
                        type: object
                        description: Required fields configuration
                        properties:
                          enabled:
                            type: boolean
                            description: Whether the field is required
              example:
                success: true
                data:
                  field_name: Organization Name
                  field_code: name
                  field_type: varchar
                  options: null
                  subfields: null
                  is_custom_field: false
                  is_optional_response_field: false
                  ui_visibility:
                    add_visible_flag: true
                    details_visible_flag: true
                    org_detail_visible_flag: true
                    person_detail_visible_flag: true
                    deal_detail_visible_flag: true
                    show_in_add_deal_dialog:
                      show: true
                      order: 1
                    show_in_add_person_dialog:
                      show: true
                      order: 1
                  important_fields:
                    enabled: false
                    stage_ids: []
                  required_fields:
                    enabled: true
    patch:
      summary: Update one organization field
      description: Updates an organization custom field. The field_code and field_type cannot be changed. At least one field must be provided in the request body.
      x-token-cost: 5
      operationId: updateOrganizationField
      tags:
        - OrganizationFields
      security:
        - api_key: []
        - oauth2:
            - 'contacts:full'
            - admin
            - 'contact-fields:full'
      parameters:
        - in: path
          name: field_code
          description: The unique code identifying the field
          required: true
          schema:
            type: string
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              minProperties: 1
              properties:
                field_name:
                  type: string
                  minLength: 1
                  maxLength: 255
                  description: Field name
                ui_visibility:
                  type: object
                  description: UI visibility settings for the field. Controls where the field appears in the Pipedrive web UI.
                  additionalProperties: true
                  properties:
                    add_visible_flag:
                      type: boolean
                      description: Whether the field is shown in the add organization modal. Default is false. Cannot be set to false for the 'name' system field.
                      default: false
                    details_visible_flag:
                      type: boolean
                      description: Whether the field is shown in the organization details view. Default is true.
                      default: true
                    show_in_add_deal_dialog:
                      type: object
                      description: 'Configuration for showing this organization field when adding a new deal. Only available for custom fields or specific eligible system fields. Default is show=false, order=null.'
                      properties:
                        show:
                          type: boolean
                          description: Whether the field is shown in the add deal dialog. Default is false.
                          default: false
                        order:
                          type: integer
                          nullable: true
                          description: 'Display order in the add deal dialog. This value is auto-calculated and managed by the system. When show is set to false, order is automatically set to null. When show changes from false to true, order is automatically assigned the next available position.'
                          default: null
                    show_in_add_person_dialog:
                      type: object
                      description: 'Configuration for showing this organization field when adding a new person. Only available for custom fields or specific eligible system fields. Default is show=false, order=null.'
                      properties:
                        show:
                          type: boolean
                          description: Whether the field is shown in the add person dialog. Default is false.
                          default: false
                        order:
                          type: integer
                          nullable: true
                          description: 'Display order in the add person dialog. This value is auto-calculated and managed by the system. When show is set to false, order is automatically set to null. When show changes from false to true, order is automatically assigned the next available position.'
                          default: null
                important_fields:
                  type: object
                  description: Configuration for highlighting the field at specific stages.
                  additionalProperties: true
                  properties:
                    enabled:
                      type: boolean
                      description: 'Whether the field is marked as important. When false, the field is not highlighted. When true with empty stage_ids, the field is important everywhere. When true with specific stage_ids, the field is important only at those deal stages. Default is false.'
                      default: false
                    stage_ids:
                      type: array
                      items:
                        type: integer
                      description: 'Array of deal stage IDs where this organization field should be highlighted as important. Must reference valid, active deal stages. Empty array when enabled is false.'
                      default: []
                required_fields:
                  type: object
                  description: Required fields configuration for marking the field as mandatory when interacted with in the Pipedrive web UI.
                  additionalProperties: true
                  properties:
                    enabled:
                      type: boolean
                      description: 'Whether the field is required. When false, the field is optional. When true, the field is required when creating or updating organizations. Default is false.'
                      default: false
      responses:
        '200':
          description: Get one organization field
          content:
            application/json:
              schema:
                type: object
                properties:
                  success:
                    type: boolean
                    description: Whether the request was successful
                  data:
                    type: object
                    required:
                      - field_name
                      - field_code
                      - field_type
                      - is_custom_field
                      - is_optional_response_field
                    properties:
                      field_name:
                        type: string
                        description: The display name/label of the field
                      field_code:
                        type: string
                        description: The unique identifier for the field (40-character hash for custom fields)
                      field_type:
                        type: string
                        description: The type of the field
                        enum:
                          - int
                          - double
                          - boolean
                          - varchar
                          - text
                          - phone
                          - varchar_options
                          - varchar_auto
                          - date
                          - daterange
                          - time
                          - timerange
                          - enum
                          - set
                          - address
                          - monetary
                          - deal
                          - deals
                          - lead
                          - org
                          - people
                          - project
                          - stage
                          - user
                          - activity
                          - json
                          - picture
                          - status
                          - visible_to
                          - price_list
                          - billing_frequency
                          - projects_board
                          - projects_phase
                      options:
                        type: array
                        nullable: true
                        description: 'Array of available options for enum/set fields, null for other field types'
                        items:
                          type: object
                          properties:
                            id:
                              type: integer
                              description: The option ID
                            label:
                              type: string
                              description: The option display label
                            color:
                              type: string
                              nullable: true
                              description: Optional color code for the option
                            update_time:
                              type: string
                              format: date-time
                              nullable: true
                              description: When the option was last updated
                            add_time:
                              type: string
                              format: date-time
                              nullable: true
                              description: When the option was created
                      subfields:
                        type: array
                        nullable: true
                        description: 'Array of subfields for complex field types (address, monetary), null for simple field types'
                        items:
                          type: object
                          properties:
                            field_code:
                              type: string
                              description: The subfield identifier
                            field_name:
                              type: string
                              description: The subfield display name
                            field_type:
                              type: string
                              description: The subfield type
                      is_custom_field:
                        type: boolean
                        description: Whether this is a user-created custom field
                      is_optional_response_field:
                        type: boolean
                        description: Whether this field is not returned by default in entity responses
                      ui_visibility:
                        type: object
                        description: UI visibility settings (only included when requested via include_fields parameter)
                        properties:
                          add_visible_flag:
                            type: boolean
                            description: Whether the field is shown in the add modal
                          details_visible_flag:
                            type: boolean
                            description: Whether the field is shown in the details view
                          org_detail_visible_flag:
                            type: boolean
                            description: Whether the field is shown in the organization details view
                          person_detail_visible_flag:
                            type: boolean
                            description: Whether the field is shown in the person details view
                          deal_detail_visible_flag:
                            type: boolean
                            description: Whether the field is shown in the deal details view
                          show_in_add_deal_dialog:
                            type: object
                            description: Configuration for showing the field in the add deal dialog
                            properties:
                              show:
                                type: boolean
                                description: Whether the field is shown in the add deal dialog
                              order:
                                type: integer
                                nullable: true
                                description: Display order in the add deal dialog (null if not shown)
                          show_in_add_person_dialog:
                            type: object
                            description: Configuration for showing the field in the add person dialog
                            properties:
                              show:
                                type: boolean
                                description: Whether the field is shown in the add person dialog
                              order:
                                type: integer
                                nullable: true
                                description: Display order in the add person dialog (null if not shown)
                      important_fields:
                        type: object
                        description: Important fields configuration
                        properties:
                          enabled:
                            type: boolean
                            description: Whether the field is marked as important
                          stage_ids:
                            type: array
                            items:
                              type: integer
                            description: Array of deal stage IDs where the field is important
                      required_fields:
                        type: object
                        description: Required fields configuration
                        properties:
                          enabled:
                            type: boolean
                            description: Whether the field is required
              example:
                success: true
                data:
                  field_name: Organization Name
                  field_code: name
                  field_type: varchar
                  options: null
                  subfields: null
                  is_custom_field: false
                  is_optional_response_field: false
                  ui_visibility:
                    add_visible_flag: true
                    details_visible_flag: true
                    org_detail_visible_flag: true
                    person_detail_visible_flag: true
                    deal_detail_visible_flag: true
                    show_in_add_deal_dialog:
                      show: true
                      order: 1
                    show_in_add_person_dialog:
                      show: true
                      order: 1
                  important_fields:
                    enabled: false
                    stage_ids: []
                  required_fields:
                    enabled: true
    delete:
      summary: Delete one organization field
      description: Marks a custom field as deleted.
      x-token-cost: 3
      operationId: deleteOrganizationField
      tags:
        - OrganizationFields
      security:
        - api_key: []
        - oauth2:
            - admin
            - 'contact-fields:full'
      parameters:
        - in: path
          name: field_code
          description: The unique code identifying the field
          required: true
          schema:
            type: string
      responses:
        '200':
          description: Delete one organization field
          content:
            application/json:
              schema:
                type: object
                properties:
                  success:
                    type: boolean
                    description: Whether the request was successful
                  data:
                    type: object
                    required:
                      - field_name
                      - field_code
                      - field_type
                      - is_custom_field
                      - is_optional_response_field
                    properties:
                      field_name:
                        type: string
                        description: The display name/label of the field
                      field_code:
                        type: string
                        description: The unique identifier for the field (40-character hash for custom fields)
                      field_type:
                        type: string
                        description: The type of the field
                      options:
                        type: array
                        nullable: true
                        description: 'Array of available options for enum/set fields, null for other field types'
                        items:
                          type: object
                      subfields:
                        type: array
                        nullable: true
                        description: 'Array of subfields for complex field types (address, monetary), null for simple field types'
                        items:
                          type: object
                      is_custom_field:
                        type: boolean
                        description: Whether this is a user-created custom field
                      is_optional_response_field:
                        type: boolean
                        description: Whether this field is not returned by default in entity responses
              example:
                success: true
                data:
                  field_name: Custom text field
                  field_code: 946947d1b02fd3ef20798d6112ec5d895a686a21
                  field_type: varchar
                  options: null
                  subfields: null
                  is_custom_field: true
                  is_optional_response_field: false
  '/organizationFields/{field_code}/options':
    post:
      summary: Add organization field options in bulk
      description: Adds new options to an organization custom field that supports options (enum or set field types). This operation is atomic - all options are added or none are added. Returns only the newly added options.
      x-token-cost: 5
      operationId: addOrganizationFieldOptions
      tags:
        - OrganizationFields
      security:
        - api_key: []
        - oauth2:
            - 'contacts:full'
            - admin
            - 'contact-fields:full'
      parameters:
        - in: path
          name: field_code
          description: The unique code identifying the field
          required: true
          schema:
            type: string
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: array
              description: Array of options to add. Each item must contain a label. At least one option is required.
              items:
                type: object
                required:
                  - label
                properties:
                  label:
                    type: string
                    minLength: 1
                    maxLength: 255
                    description: The display label for the new option
      responses:
        '200':
          description: Field options operation result
          content:
            application/json:
              schema:
                type: object
                properties:
                  success:
                    type: boolean
                  data:
                    type: array
                    items:
                      type: object
                      required:
                        - id
                        - label
                      properties:
                        id:
                          type: integer
                          description: The unique identifier of the option
                        label:
                          type: string
                          description: The display label of the option
                  additional_data:
                    type: object
                    nullable: true
              example:
                success: true
                data:
                  - id: 4
                    label: Manufacturing
                additional_data: null
    delete:
      summary: Delete organization field options in bulk
      description: Removes existing options from an organization custom field. This operation is atomic and fails if any of the specified option IDs do not exist. Returns only the deleted options.
      x-token-cost: 3
      operationId: deleteOrganizationFieldOptions
      tags:
        - OrganizationFields
      security:
        - api_key: []
        - oauth2:
            - 'contacts:full'
            - admin
            - 'contact-fields:full'
      parameters:
        - in: path
          name: field_code
          description: The unique code identifying the field
          required: true
          schema:
            type: string
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: array
              description: Array of option IDs to delete. Each item must contain an ID of the option to delete. At least one option ID is required. The entire request fails if any option does not exist.
              items:
                type: object
                required:
                  - id
                properties:
                  id:
                    type: integer
                    description: The unique identifier of the option to delete
      responses:
        '200':
          description: Field options operation result
          content:
            application/json:
              schema:
                type: object
                properties:
                  success:
                    type: boolean
                  data:
                    type: array
                    items:
                      type: object
                      required:
                        - id
                        - label
                      properties:
                        id:
                          type: integer
                          description: The unique identifier of the option
                        label:
                          type: string
                          description: The display label of the option
                  additional_data:
                    type: object
                    nullable: true
              example:
                success: true
                data:
                  - id: 4
                    label: Manufacturing
                additional_data: null
    patch:
      summary: Update organization field options in bulk
      description: Updates existing options for an organization custom field. This operation is atomic and fails if any of the specified option IDs do not exist. Returns only the updated options.
      x-token-cost: 5
      operationId: updateOrganizationFieldOptions
      tags:
        - OrganizationFields
      security:
        - api_key: []
        - oauth2:
            - 'contacts:full'
            - admin
            - 'contact-fields:full'
      parameters:
        - in: path
          name: field_code
          description: The unique code identifying the field
          required: true
          schema:
            type: string
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: array
              description: Array of options to update. Each item must contain an ID and the updated label. At least one option is required. The entire request fails if any option does not exist.
              items:
                type: object
                required:
                  - id
                  - label
                properties:
                  id:
                    type: integer
                    description: The unique identifier of the option to update
                  label:
                    type: string
                    minLength: 1
                    maxLength: 255
                    description: The new display label for the option
      responses:
        '200':
          description: Field options operation result
          content:
            application/json:
              schema:
                type: object
                properties:
                  success:
                    type: boolean
                  data:
                    type: array
                    items:
                      type: object
                      required:
                        - id
                        - label
                      properties:
                        id:
                          type: integer
                          description: The unique identifier of the option
                        label:
                          type: string
                          description: The display label of the option
                  additional_data:
                    type: object
                    nullable: true
              example:
                success: true
                data:
                  - id: 4
                    label: Manufacturing
                additional_data: null
  /products:
    get:
      summary: Get all products
      description: Returns data about all products.
      x-token-cost: 10
      operationId: getProducts
      tags:
        - Products
      security:
        - api_key: []
        - oauth2:
            - 'products:read'
            - 'products:full'
      parameters:
        - in: query
          name: owner_id
          schema:
            type: integer
          description: 'If supplied, only products owned by the given user will be returned'
        - in: query
          name: ids
          description: 'Optional comma separated string array of up to 100 entity ids to fetch. If filter_id is provided, this is ignored. If any of the requested entities do not exist or are not visible, they are not included in the response.'
          schema:
            type: string
        - in: query
          name: filter_id
          schema:
            type: integer
          description: The ID of the filter to use
        - in: query
          name: cursor
          required: false
          schema:
            type: string
          description: 'For pagination, the marker (an opaque string value) representing the first item on the next page'
        - in: query
          name: limit
          description: 'For pagination, the limit of entries to be returned. If not provided, 100 items will be returned. Please note that a maximum value of 500 is allowed.'
          schema:
            type: integer
            example: 100
        - in: query
          name: sort_by
          description: 'The field to sort by. Supported fields: `id`, `name`, `add_time`, `update_time`.'
          schema:
            type: string
            default: id
            enum:
              - id
              - name
              - add_time
              - update_time
        - in: query
          name: sort_direction
          description: 'The sorting direction. Supported values: `asc`, `desc`.'
          schema:
            type: string
            default: asc
            enum:
              - asc
              - desc
        - in: query
          name: custom_fields
          description: 'Comma separated string array of custom fields keys to include. If you are only interested in a particular set of custom fields, please use this parameter for a smaller response.<br/>A maximum of 15 keys is allowed.'
          schema:
            type: string
      responses:
        '200':
          description: List of products
          content:
            application/json:
              schema:
                title: GetProductsResponse
                type: object
                properties:
                  success:
                    type: boolean
                    description: If the response is successful or not
                  data:
                    type: array
                    description: Array containing data for all products
                    items:
                      title: GetProductResponse
                      type: object
                      properties:
                        success:
                          type: boolean
                          description: If the response is successful or not
                        data:
                          allOf:
                            - title: BaseProduct
                              allOf:
                                - type: object
                                  properties:
                                    id:
                                      type: number
                                      description: The ID of the product
                                    name:
                                      type: string
                                      description: The name of the product
                                    code:
                                      type: string
                                      description: The product code
                                    unit:
                                      type: string
                                      description: The unit in which this product is sold
                                    tax:
                                      type: number
                                      description: The tax percentage
                                      default: 0
                                    is_deleted:
                                      type: boolean
                                      description: Whether this product will be marked as deleted or not
                                      default: false
                                    is_linkable:
                                      type: boolean
                                      description: Whether this product can be added to a deal or not
                                      default: true
                                    visible_to:
                                      allOf:
                                        - type: number
                                          enum:
                                            - 1
                                            - 3
                                            - 5
                                            - 7
                                      description: Visibility of the product
                                    owner_id:
                                      type: integer
                                      description: Information about the Pipedrive user who owns the product
                                    custom_fields:
                                      type: object
                                      additionalProperties: true
                                      description: 'An object where each key represents a custom field. All custom fields are referenced as randomly generated 40-character hashes. To clear a custom field value, set it to `null`. For multi-option fields (field type `set`), use `null` to clear the selection — sending an empty array `[]` is not supported and will result in a validation error.'
                                - type: object
                                  properties:
                                    billing_frequency:
                                      default: one-time
                                      type: string
                                      enum:
                                        - one-time
                                        - annually
                                        - semi-annually
                                        - quarterly
                                        - monthly
                                        - weekly
                                      description: |
                                        Only available in Growth and above plans

                                        How often a customer is billed for access to a service or product
                                - type: object
                                  properties:
                                    billing_frequency_cycles:
                                      default: null
                                      type: integer
                                      nullable: true
                                      description: |
                                        Only available in Growth and above plans

                                        The number of times the billing frequency repeats for a product in a deal

                                        When `billing_frequency` is set to `one-time`, this field must be `null`

                                        When `billing_frequency` is set to `weekly`, this field cannot be `null`

                                        For all the other values of `billing_frequency`, `null` represents a product billed indefinitely

                                        Must be a positive integer less or equal to 208
                            - type: object
                              title: PricesArray
                              properties:
                                prices:
                                  type: array
                                  items:
                                    type: object
                                  description: 'Array of objects, each containing: product_id (number), currency (string), price (number), cost (number), direct_cost (number | null), notes (string)'
                  additional_data:
                    type: object
                    description: Pagination related data
                    properties:
                      next_cursor:
                        type: string
                        description: The first item on the next page. The value of the `next_cursor` field will be `null` if you have reached the end of the dataset and there’s no more pages to be returned.
              example:
                success: true
                data:
                  - id: 1
                    name: Mechanical Pencil
                    code: MPENCIL
                    description: Product description
                    unit: ''
                    tax: 0
                    category: Retail
                    is_linkable: true
                    is_deleted: false
                    visible_to: 3
                    owner_id: 1234
                    add_time: '2019-12-19T11:36:49Z'
                    update_time: '2019-12-19T11:36:49Z'
                    billing_frequency: monthly
                    billing_frequency_cycles: 4
                    prices:
                      - product_id: 1
                        price: 5
                        currency: EUR
                        cost: 2
                        direct_cost: 1
                        notes: this is a note
                    custom_fields:
                      type: object
                      description: A map of custom fields with hash-based keys
                      additionalProperties:
                        oneOf:
                          - type: string
                          - type: number
                          - type: object
                            additionalProperties: true
                additional_data:
                  next_cursor: eyJmaWVsZCI6ImlkIiwiZmllbGRWYWx1ZSI6Nywic29ydERpcmVjdGlvbiI6ImFzYyIsImlkIjo3fQ
    post:
      summary: Add a product
      description: 'Adds a new product to the Products inventory. For more information, see the tutorial for <a href="https://pipedrive.readme.io/docs/adding-a-product" target="_blank" rel="noopener noreferrer">adding a product</a>.'
      x-token-cost: 5
      operationId: addProduct
      tags:
        - Products
      security:
        - api_key: []
        - oauth2:
            - 'products:full'
      requestBody:
        content:
          application/json:
            schema:
              title: addProductRequest
              allOf:
                - required:
                    - name
                  type: object
                  properties:
                    name:
                      type: string
                      description: The name of the product. Cannot be an empty string
                - title: productRequest
                  type: object
                  properties:
                    code:
                      type: string
                      description: The product code
                    description:
                      type: string
                      description: The product description
                    unit:
                      type: string
                      description: The unit in which this product is sold
                    tax:
                      type: number
                      description: The tax percentage
                      default: 0
                    category:
                      type: number
                      description: The category of the product
                    owner_id:
                      type: integer
                      description: 'The ID of the user who will be marked as the owner of this product. When omitted, the authorized user ID will be used'
                    is_linkable:
                      type: boolean
                      description: Whether this product can be added to a deal or not
                      default: true
                    visible_to:
                      type: number
                      allOf:
                        - type: number
                          enum:
                            - 1
                            - 3
                            - 5
                            - 7
                      description: 'The visibility of the product. If omitted, the visibility will be set to the default visibility setting of this item type for the authorized user. Read more about visibility groups <a href="https://support.pipedrive.com/en/article/visibility-groups" target="_blank" rel="noopener noreferrer">here</a>.<h4>Light / Growth and Professional plans</h4><table><tr><th style="width: 40px">Value</th><th>Description</th></tr><tr><td>`1`</td><td>Owner &amp; followers</td><tr><td>`3`</td><td>Entire company</td></tr></table><h4>Premium / Ultimate plan</h4><table><tr><th style="width: 40px">Value</th><th>Description</th></tr><tr><td>`1`</td><td>Owner only</td><tr><td>`3`</td><td>Owner''s visibility group</td></tr><tr><td>`5`</td><td>Owner''s visibility group and sub-groups</td></tr><tr><td>`7`</td><td>Entire company</td></tr></table>'
                    prices:
                      type: array
                      items:
                        type: object
                      description: 'An array of objects, each containing: `currency` (string), `price` (number), `cost` (number, optional), `direct_cost` (number, optional). Note that there can only be one price per product per currency. When `prices` is omitted altogether, a default price of 0 and the user''s default currency will be assigned.'
                    custom_fields:
                      type: object
                      additionalProperties: true
                      description: 'An object where each key represents a custom field. All custom fields are referenced as randomly generated 40-character hashes. To clear a custom field value, set it to `null`. For multi-option fields (field type `set`), use `null` to clear the selection — sending an empty array `[]` is not supported and will result in a validation error.'
                - type: object
                  properties:
                    billing_frequency:
                      default: one-time
                      type: string
                      enum:
                        - one-time
                        - annually
                        - semi-annually
                        - quarterly
                        - monthly
                        - weekly
                      description: |
                        Only available in Growth and above plans

                        How often a customer is billed for access to a service or product
                - type: object
                  properties:
                    billing_frequency_cycles:
                      default: null
                      type: integer
                      nullable: true
                      description: |
                        Only available in Growth and above plans

                        The number of times the billing frequency repeats for a product in a deal

                        When `billing_frequency` is set to `one-time`, this field must be `null`

                        When `billing_frequency` is set to `weekly`, this field cannot be `null`

                        For all the other values of `billing_frequency`, `null` represents a product billed indefinitely

                        Must be a positive integer less or equal to 208
      responses:
        '201':
          description: Add product data
          content:
            application/json:
              schema:
                title: GetProductResponse
                type: object
                properties:
                  success:
                    type: boolean
                    description: If the response is successful or not
                  data:
                    allOf:
                      - title: BaseProduct
                        allOf:
                          - type: object
                            properties:
                              id:
                                type: number
                                description: The ID of the product
                              name:
                                type: string
                                description: The name of the product
                              code:
                                type: string
                                description: The product code
                              unit:
                                type: string
                                description: The unit in which this product is sold
                              tax:
                                type: number
                                description: The tax percentage
                                default: 0
                              is_deleted:
                                type: boolean
                                description: Whether this product will be marked as deleted or not
                                default: false
                              is_linkable:
                                type: boolean
                                description: Whether this product can be added to a deal or not
                                default: true
                              visible_to:
                                allOf:
                                  - type: number
                                    enum:
                                      - 1
                                      - 3
                                      - 5
                                      - 7
                                description: Visibility of the product
                              owner_id:
                                type: integer
                                description: Information about the Pipedrive user who owns the product
                              custom_fields:
                                type: object
                                additionalProperties: true
                                description: 'An object where each key represents a custom field. All custom fields are referenced as randomly generated 40-character hashes. To clear a custom field value, set it to `null`. For multi-option fields (field type `set`), use `null` to clear the selection — sending an empty array `[]` is not supported and will result in a validation error.'
                          - type: object
                            properties:
                              billing_frequency:
                                default: one-time
                                type: string
                                enum:
                                  - one-time
                                  - annually
                                  - semi-annually
                                  - quarterly
                                  - monthly
                                  - weekly
                                description: |
                                  Only available in Growth and above plans

                                  How often a customer is billed for access to a service or product
                          - type: object
                            properties:
                              billing_frequency_cycles:
                                default: null
                                type: integer
                                nullable: true
                                description: |
                                  Only available in Growth and above plans

                                  The number of times the billing frequency repeats for a product in a deal

                                  When `billing_frequency` is set to `one-time`, this field must be `null`

                                  When `billing_frequency` is set to `weekly`, this field cannot be `null`

                                  For all the other values of `billing_frequency`, `null` represents a product billed indefinitely

                                  Must be a positive integer less or equal to 208
                      - type: object
                        title: PricesArray
                        properties:
                          prices:
                            type: array
                            items:
                              type: object
                            description: 'Array of objects, each containing: product_id (number), currency (string), price (number), cost (number), direct_cost (number | null), notes (string)'
              example:
                success: true
                data:
                  id: 1
                  name: Mechanical Pencil
                  code: MPENCIL
                  description: Product description
                  unit: ''
                  tax: 0
                  category: Retail
                  is_linkable: true
                  is_deleted: false
                  visible_to: 3
                  owner_id: 1234
                  add_time: '2019-12-19T11:36:49Z'
                  update_time: '2019-12-19T11:36:49Z'
                  billing_frequency: monthly
                  billing_frequency_cycles: 4
                  prices:
                    - product_id: 1
                      price: 5
                      currency: EUR
                      cost: 2
                      direct_cost: 1
                      notes: this is a note
                  custom_fields:
                    type: object
                    description: A map of custom fields with hash-based keys
                    additionalProperties:
                      oneOf:
                        - type: string
                        - type: number
                        - type: object
                          additionalProperties: true
  '/products/{id}/followers':
    get:
      summary: List followers of a product
      description: Lists users who are following the product.
      x-token-cost: 10
      operationId: getProductFollowers
      tags:
        - Products
      security:
        - api_key: []
        - oauth2:
            - 'products:read'
            - 'products:full'
      parameters:
        - in: path
          name: id
          description: The ID of the product
          required: true
          schema:
            type: integer
        - in: query
          name: limit
          description: 'For pagination, the limit of entries to be returned. If not provided, 100 items will be returned. Please note that a maximum value of 500 is allowed.'
          schema:
            type: integer
            example: 100
        - in: query
          name: cursor
          required: false
          schema:
            type: string
          description: 'For pagination, the marker (an opaque string value) representing the first item on the next page'
      responses:
        '200':
          description: List entity followers
          content:
            application/json:
              schema:
                type: object
                title: GetFollowersResponse
                allOf:
                  - title: baseResponse
                    type: object
                    properties:
                      success:
                        type: boolean
                        description: If the response is successful or not
                  - type: object
                    properties:
                      data:
                        type: array
                        description: Followers array
                        items:
                          type: object
                          properties:
                            user_id:
                              type: integer
                              description: The ID of the user following the entity
                            add_time:
                              type: string
                              description: The add time of the following
                      additional_data:
                        type: object
                        description: The additional data of the list
                        properties:
                          next_cursor:
                            type: string
                            description: The first item on the next page. The value of the `next_cursor` field will be `null` if you have reached the end of the dataset and there’s no more pages to be returned.
              example:
                success: true
                data:
                  - user_id: 1
                    add_time: '2021-01-01T00:00:00Z'
                additional_data:
                  next_cursor: eyJmaWVsZCI6ImlkIiwiZmllbGRWYWx1ZSI6Nywic29ydERpcmVjdGlvbiI6ImFzYyIsImlkIjo3fQ
    post:
      summary: Add a follower to a product
      description: Adds a user as a follower to the product.
      x-token-cost: 5
      operationId: addProductFollower
      tags:
        - Products
      security:
        - api_key: []
        - oauth2:
            - 'products:full'
      parameters:
        - in: path
          name: id
          description: The ID of the product
          required: true
          schema:
            type: integer
      requestBody:
        content:
          application/json:
            schema:
              required:
                - user_id
              type: object
              properties:
                user_id:
                  type: integer
                  description: The ID of the user to add as a follower
      responses:
        '201':
          description: Add a follower
          content:
            application/json:
              schema:
                type: object
                title: AddFollowerResponse
                allOf:
                  - title: baseResponse
                    type: object
                    properties:
                      success:
                        type: boolean
                        description: If the response is successful or not
                  - type: object
                    properties:
                      data:
                        type: object
                        properties:
                          user_id:
                            type: integer
                            description: The ID of the user following the entity
                          add_time:
                            type: string
                            description: The add time of the following
              example:
                success: true
                data:
                  user_id: 1
                  add_time: '2021-01-01T00:00:00Z'
  '/products/{id}/followers/changelog':
    get:
      summary: List followers changelog of a product
      description: Lists changelogs about users have followed the product.
      x-token-cost: 10
      operationId: getProductFollowersChangelog
      tags:
        - Products
      security:
        - api_key: []
        - oauth2:
            - 'products:read'
            - 'products:full'
      parameters:
        - in: path
          name: id
          description: The ID of the product
          required: true
          schema:
            type: integer
        - in: query
          name: limit
          description: 'For pagination, the limit of entries to be returned. If not provided, 100 items will be returned. Please note that a maximum value of 500 is allowed.'
          schema:
            type: integer
            example: 100
        - in: query
          name: cursor
          required: false
          schema:
            type: string
          description: 'For pagination, the marker (an opaque string value) representing the first item on the next page'
      responses:
        '200':
          description: List entity followers
          content:
            application/json:
              schema:
                type: object
                title: GetFollowerChangelogsResponse
                allOf:
                  - title: baseResponse
                    type: object
                    properties:
                      success:
                        type: boolean
                        description: If the response is successful or not
                  - type: object
                    properties:
                      data:
                        type: array
                        description: Follower changelogs array
                        items:
                          type: object
                          title: FollowerChangelogItem
                          properties:
                            action:
                              type: string
                              description: The type of change
                            actor_user_id:
                              type: integer
                              description: The ID of the user who did the change
                            follower_user_id:
                              type: integer
                              description: The ID of the user who was following the entity
                            time:
                              type: string
                              description: The time at which the change happened
                      additional_data:
                        type: object
                        description: The additional data of the list
                        properties:
                          next_cursor:
                            type: string
                            description: The first item on the next page. The value of the `next_cursor` field will be `null` if you have reached the end of the dataset and there’s no more pages to be returned.
              example:
                success: true
                data:
                  - action: added
                    actor_user_id: 1
                    follower_user_id: 1
                    time: '2024-01-01T00:00:00Z'
                additional_data:
                  next_cursor: eyJmaWVsZCI6ImlkIiwiZmllbGRWYWx1ZSI6Nywic29ydERpcmVjdGlvbiI6ImFzYyIsImlkIjo3fQ
  '/products/{id}/followers/{follower_id}':
    delete:
      summary: Delete a follower from a product
      description: Deletes a user follower from the product.
      x-token-cost: 3
      operationId: deleteProductFollower
      tags:
        - Products
      security:
        - api_key: []
        - oauth2:
            - 'products:full'
      parameters:
        - in: path
          name: id
          description: The ID of the product
          required: true
          schema:
            type: integer
        - in: path
          name: follower_id
          required: true
          schema:
            type: integer
          description: The ID of the following user
      responses:
        '200':
          description: Remove a follower
          content:
            application/json:
              schema:
                title: DeleteFollowerResponse
                type: object
                properties:
                  success:
                    type: boolean
                    description: If the response is successful or not
                  data:
                    type: object
                    properties:
                      user_id:
                        type: integer
                        description: Deleted follower user ID
              example:
                success: true
                data:
                  user_id: 1
  /products/search:
    get:
      summary: Search products
      description: 'Searches all products by name, code and/or custom fields. This endpoint is a wrapper of <a href="https://developers.pipedrive.com/docs/api/v1/ItemSearch#searchItem">/v1/itemSearch</a> with a narrower OAuth scope.'
      x-token-cost: 20
      operationId: searchProducts
      tags:
        - Products
      security:
        - api_key: []
        - oauth2:
            - 'products:read'
            - 'products:full'
            - 'search:read'
      parameters:
        - in: query
          name: term
          required: true
          schema:
            type: string
          description: The search term to look for. Minimum 2 characters (or 1 if using `exact_match`). Please note that the search term has to be URL encoded.
        - in: query
          name: fields
          schema:
            type: string
            enum:
              - code
              - custom_fields
              - name
          description: 'A comma-separated string array. The fields to perform the search from. Defaults to all of them. Only the following custom field types are searchable: `address`, `varchar`, `text`, `varchar_auto`, `double`, `monetary` and `phone`. Read more about searching by custom fields <a href="https://support.pipedrive.com/en/article/search-finding-what-you-need#searching-by-custom-fields" target="_blank" rel="noopener noreferrer">here</a>.'
        - in: query
          name: exact_match
          schema:
            type: boolean
          description: 'When enabled, only full exact matches against the given term are returned. It is <b>not</b> case sensitive.'
        - in: query
          name: include_fields
          schema:
            type: string
            enum:
              - product.price
          description: Supports including optional fields in the results which are not provided by default
        - in: query
          name: limit
          description: 'For pagination, the limit of entries to be returned. If not provided, 100 items will be returned. Please note that a maximum value of 500 is allowed.'
          schema:
            type: integer
            example: 100
        - in: query
          name: cursor
          required: false
          schema:
            type: string
          description: 'For pagination, the marker (an opaque string value) representing the first item on the next page'
      responses:
        '200':
          description: Success
          content:
            application/json:
              schema:
                title: GetProductSearchResponse
                allOf:
                  - title: baseResponse
                    type: object
                    properties:
                      success:
                        type: boolean
                        description: If the response is successful or not
                  - type: object
                    properties:
                      data:
                        type: object
                        properties:
                          items:
                            type: array
                            description: The array of found items
                            items:
                              type: object
                              properties:
                                result_score:
                                  type: number
                                  description: Search result relevancy
                                item:
                                  type: object
                                  properties:
                                    id:
                                      type: integer
                                      description: The ID of the product
                                    type:
                                      type: string
                                      description: The type of the item
                                    name:
                                      type: string
                                      description: The name of the product
                                    code:
                                      type: integer
                                      description: The code of the product
                                    visible_to:
                                      type: integer
                                      description: The visibility of the product
                                    owner:
                                      type: object
                                      properties:
                                        id:
                                          type: integer
                                          description: The ID of the owner of the product
                                    custom_fields:
                                      type: array
                                      items:
                                        type: string
                                      description: The custom fields
                      additional_data:
                        type: object
                        description: Pagination related data
                        properties:
                          next_cursor:
                            type: string
                            description: The first item on the next page. The value of the `next_cursor` field will be `null` if you have reached the end of the dataset and there’s no more pages to be returned.
              example:
                success: true
                data:
                  items:
                    - result_score: 0.8766
                      item:
                        id: 1
                        type: product
                        name: Some product
                        code: 123
                        visible_to: 3
                        owner:
                          id: 1
                        custom_fields: []
                additional_data:
                  next_cursor: eyJmaWVsZCI6ImlkIiwiZmllbGRWYWx1ZSI6Nywic29ydERpcmVjdGlvbiI6ImFzYyIsImlkIjo3fQ
  '/products/{id}':
    delete:
      summary: Delete a product
      description: 'Marks a product as deleted. After 30 days, the product will be permanently deleted.'
      x-token-cost: 3
      operationId: deleteProduct
      tags:
        - Products
      security:
        - api_key: []
        - oauth2:
            - 'products:full'
      parameters:
        - in: path
          name: id
          description: The ID of the product
          required: true
          schema:
            type: integer
      responses:
        '200':
          description: Deletes a product
          content:
            application/json:
              schema:
                title: DeleteProductResponse
                type: object
                properties:
                  success:
                    type: boolean
                    description: If the response is successful or not
                  data:
                    type: object
                    properties:
                      id:
                        description: The ID of the removed product
                        type: integer
              example:
                success: true
                data:
                  id: 1
    get:
      summary: Get one product
      description: Returns data about a specific product.
      x-token-cost: 1
      operationId: getProduct
      tags:
        - Products
      security:
        - api_key: []
        - oauth2:
            - 'products:read'
            - 'products:full'
      parameters:
        - in: path
          name: id
          description: The ID of the product
          required: true
          schema:
            type: integer
      responses:
        '200':
          description: Get product information by id
          content:
            application/json:
              schema:
                title: GetProductResponse
                type: object
                properties:
                  success:
                    type: boolean
                    description: If the response is successful or not
                  data:
                    allOf:
                      - title: BaseProduct
                        allOf:
                          - type: object
                            properties:
                              id:
                                type: number
                                description: The ID of the product
                              name:
                                type: string
                                description: The name of the product
                              code:
                                type: string
                                description: The product code
                              unit:
                                type: string
                                description: The unit in which this product is sold
                              tax:
                                type: number
                                description: The tax percentage
                                default: 0
                              is_deleted:
                                type: boolean
                                description: Whether this product will be marked as deleted or not
                                default: false
                              is_linkable:
                                type: boolean
                                description: Whether this product can be added to a deal or not
                                default: true
                              visible_to:
                                allOf:
                                  - type: number
                                    enum:
                                      - 1
                                      - 3
                                      - 5
                                      - 7
                                description: Visibility of the product
                              owner_id:
                                type: integer
                                description: Information about the Pipedrive user who owns the product
                              custom_fields:
                                type: object
                                additionalProperties: true
                                description: 'An object where each key represents a custom field. All custom fields are referenced as randomly generated 40-character hashes. To clear a custom field value, set it to `null`. For multi-option fields (field type `set`), use `null` to clear the selection — sending an empty array `[]` is not supported and will result in a validation error.'
                          - type: object
                            properties:
                              billing_frequency:
                                default: one-time
                                type: string
                                enum:
                                  - one-time
                                  - annually
                                  - semi-annually
                                  - quarterly
                                  - monthly
                                  - weekly
                                description: |
                                  Only available in Growth and above plans

                                  How often a customer is billed for access to a service or product
                          - type: object
                            properties:
                              billing_frequency_cycles:
                                default: null
                                type: integer
                                nullable: true
                                description: |
                                  Only available in Growth and above plans

                                  The number of times the billing frequency repeats for a product in a deal

                                  When `billing_frequency` is set to `one-time`, this field must be `null`

                                  When `billing_frequency` is set to `weekly`, this field cannot be `null`

                                  For all the other values of `billing_frequency`, `null` represents a product billed indefinitely

                                  Must be a positive integer less or equal to 208
                      - type: object
                        title: PricesArray
                        properties:
                          prices:
                            type: array
                            items:
                              type: object
                            description: 'Array of objects, each containing: product_id (number), currency (string), price (number), cost (number), direct_cost (number | null), notes (string)'
              example:
                success: true
                data:
                  id: 1
                  name: Mechanical Pencil
                  code: MPENCIL
                  description: Product description
                  unit: ''
                  tax: 0
                  category: Retail
                  is_linkable: true
                  is_deleted: false
                  visible_to: 3
                  owner_id: 1234
                  add_time: '2019-12-19T11:36:49Z'
                  update_time: '2019-12-19T11:36:49Z'
                  billing_frequency: monthly
                  billing_frequency_cycles: 4
                  prices:
                    - product_id: 1
                      price: 5
                      currency: EUR
                      cost: 2
                      direct_cost: 1
                      notes: this is a note
                  custom_fields:
                    type: object
                    description: A map of custom fields with hash-based keys
                    additionalProperties:
                      oneOf:
                        - type: string
                        - type: number
                        - type: object
                          additionalProperties: true
    patch:
      summary: Update a product
      description: Updates product data.
      x-token-cost: 5
      operationId: updateProduct
      tags:
        - Products
      security:
        - api_key: []
        - oauth2:
            - 'products:full'
      parameters:
        - in: path
          name: id
          description: The ID of the product
          required: true
          schema:
            type: integer
      requestBody:
        content:
          application/json:
            schema:
              title: updateProductRequest
              allOf:
                - type: object
                  properties:
                    name:
                      type: string
                      description: The name of the product. Cannot be an empty string
                - title: productRequest
                  type: object
                  properties:
                    code:
                      type: string
                      description: The product code
                    description:
                      type: string
                      description: The product description
                    unit:
                      type: string
                      description: The unit in which this product is sold
                    tax:
                      type: number
                      description: The tax percentage
                      default: 0
                    category:
                      type: number
                      description: The category of the product
                    owner_id:
                      type: integer
                      description: 'The ID of the user who will be marked as the owner of this product. When omitted, the authorized user ID will be used'
                    is_linkable:
                      type: boolean
                      description: Whether this product can be added to a deal or not
                      default: true
                    visible_to:
                      type: number
                      allOf:
                        - type: number
                          enum:
                            - 1
                            - 3
                            - 5
                            - 7
                      description: 'The visibility of the product. If omitted, the visibility will be set to the default visibility setting of this item type for the authorized user. Read more about visibility groups <a href="https://support.pipedrive.com/en/article/visibility-groups" target="_blank" rel="noopener noreferrer">here</a>.<h4>Light / Growth and Professional plans</h4><table><tr><th style="width: 40px">Value</th><th>Description</th></tr><tr><td>`1`</td><td>Owner &amp; followers</td><tr><td>`3`</td><td>Entire company</td></tr></table><h4>Premium / Ultimate plan</h4><table><tr><th style="width: 40px">Value</th><th>Description</th></tr><tr><td>`1`</td><td>Owner only</td><tr><td>`3`</td><td>Owner''s visibility group</td></tr><tr><td>`5`</td><td>Owner''s visibility group and sub-groups</td></tr><tr><td>`7`</td><td>Entire company</td></tr></table>'
                    prices:
                      type: array
                      items:
                        type: object
                      description: 'An array of objects, each containing: `currency` (string), `price` (number), `cost` (number, optional), `direct_cost` (number, optional). Note that there can only be one price per product per currency. When `prices` is omitted altogether, a default price of 0 and the user''s default currency will be assigned.'
                    custom_fields:
                      type: object
                      additionalProperties: true
                      description: 'An object where each key represents a custom field. All custom fields are referenced as randomly generated 40-character hashes. To clear a custom field value, set it to `null`. For multi-option fields (field type `set`), use `null` to clear the selection — sending an empty array `[]` is not supported and will result in a validation error.'
                - type: object
                  properties:
                    billing_frequency:
                      type: string
                      enum:
                        - one-time
                        - annually
                        - semi-annually
                        - quarterly
                        - monthly
                        - weekly
                      description: |
                        Only available in Growth and above plans

                        How often a customer is billed for access to a service or product
                - type: object
                  properties:
                    billing_frequency_cycles:
                      type: integer
                      nullable: true
                      description: |
                        Only available in Growth and above plans

                        The number of times the billing frequency repeats for a product in a deal

                        When `billing_frequency` is set to `one-time`, this field must be `null`

                        When `billing_frequency` is set to `weekly`, this field cannot be `null`

                        For all the other values of `billing_frequency`, `null` represents a product billed indefinitely

                        Must be a positive integer less or equal to 208
      responses:
        '200':
          description: Updates product data
          content:
            application/json:
              schema:
                title: UpdateProductResponse
                type: object
                properties:
                  success:
                    type: boolean
                    description: If the response is successful or not
                  data:
                    allOf:
                      - title: BaseProduct
                        allOf:
                          - type: object
                            properties:
                              id:
                                type: number
                                description: The ID of the product
                              name:
                                type: string
                                description: The name of the product
                              code:
                                type: string
                                description: The product code
                              unit:
                                type: string
                                description: The unit in which this product is sold
                              tax:
                                type: number
                                description: The tax percentage
                                default: 0
                              is_deleted:
                                type: boolean
                                description: Whether this product will be marked as deleted or not
                                default: false
                              is_linkable:
                                type: boolean
                                description: Whether this product can be added to a deal or not
                                default: true
                              visible_to:
                                allOf:
                                  - type: number
                                    enum:
                                      - 1
                                      - 3
                                      - 5
                                      - 7
                                description: Visibility of the product
                              owner_id:
                                type: integer
                                description: Information about the Pipedrive user who owns the product
                              custom_fields:
                                type: object
                                additionalProperties: true
                                description: 'An object where each key represents a custom field. All custom fields are referenced as randomly generated 40-character hashes. To clear a custom field value, set it to `null`. For multi-option fields (field type `set`), use `null` to clear the selection — sending an empty array `[]` is not supported and will result in a validation error.'
                          - type: object
                            properties:
                              billing_frequency:
                                default: one-time
                                type: string
                                enum:
                                  - one-time
                                  - annually
                                  - semi-annually
                                  - quarterly
                                  - monthly
                                  - weekly
                                description: |
                                  Only available in Growth and above plans

                                  How often a customer is billed for access to a service or product
                          - type: object
                            properties:
                              billing_frequency_cycles:
                                default: null
                                type: integer
                                nullable: true
                                description: |
                                  Only available in Growth and above plans

                                  The number of times the billing frequency repeats for a product in a deal

                                  When `billing_frequency` is set to `one-time`, this field must be `null`

                                  When `billing_frequency` is set to `weekly`, this field cannot be `null`

                                  For all the other values of `billing_frequency`, `null` represents a product billed indefinitely

                                  Must be a positive integer less or equal to 208
                      - type: object
                        title: PricesArray
                        properties:
                          prices:
                            type: array
                            items:
                              type: object
                            description: 'Array of objects, each containing: product_id (number), currency (string), price (number), cost (number), direct_cost (number | null), notes (string)'
              example:
                success: true
                data:
                  id: 1
                  name: Mechanical Pencil
                  code: MPENCIL
                  description: Product description
                  unit: ''
                  tax: 0
                  category: Retail
                  is_linkable: true
                  is_deleted: false
                  visible_to: 3
                  owner_id: 1234
                  add_time: '2019-12-19T11:36:49Z'
                  update_time: '2019-12-19T11:36:49Z'
                  billing_frequency: monthly
                  billing_frequency_cycles: 4
                  prices:
                    - product_id: 1
                      price: 5
                      currency: EUR
                      cost: 2
                      direct_cost: 1
                      notes: this is a note
                  custom_fields:
                    type: object
                    description: A map of custom fields with hash-based keys
                    additionalProperties:
                      oneOf:
                        - type: string
                        - type: number
                        - type: object
                          additionalProperties: true
  '/products/{id}/duplicate':
    post:
      summary: Duplicate a product
      description: 'Creates a duplicate of an existing product including all variations, prices, and custom fields.'
      x-token-cost: 5
      operationId: duplicateProduct
      tags:
        - Products
      security:
        - api_key: []
        - oauth2:
            - 'products:full'
      parameters:
        - in: path
          name: id
          description: The ID of the product
          required: true
          schema:
            type: integer
      responses:
        '201':
          description: Duplicate product data
          content:
            application/json:
              schema:
                title: GetProductResponse
                type: object
                properties:
                  success:
                    type: boolean
                    description: If the response is successful or not
                  data:
                    allOf:
                      - title: BaseProduct
                        allOf:
                          - type: object
                            properties:
                              id:
                                type: number
                                description: The ID of the product
                              name:
                                type: string
                                description: The name of the product
                              code:
                                type: string
                                description: The product code
                              unit:
                                type: string
                                description: The unit in which this product is sold
                              tax:
                                type: number
                                description: The tax percentage
                                default: 0
                              is_deleted:
                                type: boolean
                                description: Whether this product will be marked as deleted or not
                                default: false
                              is_linkable:
                                type: boolean
                                description: Whether this product can be added to a deal or not
                                default: true
                              visible_to:
                                allOf:
                                  - type: number
                                    enum:
                                      - 1
                                      - 3
                                      - 5
                                      - 7
                                description: Visibility of the product
                              owner_id:
                                type: integer
                                description: Information about the Pipedrive user who owns the product
                              custom_fields:
                                type: object
                                additionalProperties: true
                                description: 'An object where each key represents a custom field. All custom fields are referenced as randomly generated 40-character hashes. To clear a custom field value, set it to `null`. For multi-option fields (field type `set`), use `null` to clear the selection — sending an empty array `[]` is not supported and will result in a validation error.'
                          - type: object
                            properties:
                              billing_frequency:
                                default: one-time
                                type: string
                                enum:
                                  - one-time
                                  - annually
                                  - semi-annually
                                  - quarterly
                                  - monthly
                                  - weekly
                                description: |
                                  Only available in Growth and above plans

                                  How often a customer is billed for access to a service or product
                          - type: object
                            properties:
                              billing_frequency_cycles:
                                default: null
                                type: integer
                                nullable: true
                                description: |
                                  Only available in Growth and above plans

                                  The number of times the billing frequency repeats for a product in a deal

                                  When `billing_frequency` is set to `one-time`, this field must be `null`

                                  When `billing_frequency` is set to `weekly`, this field cannot be `null`

                                  For all the other values of `billing_frequency`, `null` represents a product billed indefinitely

                                  Must be a positive integer less or equal to 208
                      - type: object
                        title: PricesArray
                        properties:
                          prices:
                            type: array
                            items:
                              type: object
                            description: 'Array of objects, each containing: product_id (number), currency (string), price (number), cost (number), direct_cost (number | null), notes (string)'
              example:
                success: true
                data:
                  id: 1
                  name: Mechanical Pencil
                  code: MPENCIL
                  description: Product description
                  unit: ''
                  tax: 0
                  category: Retail
                  is_linkable: true
                  is_deleted: false
                  visible_to: 3
                  owner_id: 1234
                  add_time: '2019-12-19T11:36:49Z'
                  update_time: '2019-12-19T11:36:49Z'
                  billing_frequency: monthly
                  billing_frequency_cycles: 4
                  prices:
                    - product_id: 1
                      price: 5
                      currency: EUR
                      cost: 2
                      direct_cost: 1
                      notes: this is a note
                  custom_fields:
                    type: object
                    description: A map of custom fields with hash-based keys
                    additionalProperties:
                      oneOf:
                        - type: string
                        - type: number
                        - type: object
                          additionalProperties: true
  '/products/{id}/variations':
    get:
      summary: Get all product variations
      description: Returns data about all product variations.
      x-token-cost: 10
      operationId: getProductVariations
      tags:
        - Products
      security:
        - api_key: []
        - oauth2:
            - 'products:read'
            - 'products:full'
      parameters:
        - in: path
          name: id
          description: The ID of the product
          required: true
          schema:
            type: integer
        - in: query
          name: cursor
          required: false
          schema:
            type: string
          description: 'For pagination, the marker (an opaque string value) representing the first item on the next page'
        - in: query
          name: limit
          description: 'For pagination, the limit of entries to be returned. If not provided, 100 items will be returned. Please note that a maximum value of 500 is allowed.'
          schema:
            type: integer
            example: 100
      responses:
        '200':
          description: List of product variations
          content:
            application/json:
              schema:
                title: GetProductVariationsResponse
                type: object
                properties:
                  success:
                    type: boolean
                    description: If the response is successful or not
                  data:
                    type: array
                    description: Array containing data for all products
                    items:
                      type: object
                      properties:
                        id:
                          type: number
                          description: The ID of the product variation
                        name:
                          type: string
                          description: The name of the product variation
                        product_id:
                          type: integer
                          description: The ID of the product
                        prices:
                          type: array
                          items:
                            type: object
                          description: 'Array of objects, each containing: product_variation_id (number), currency (string), price (number), cost (number), direct_cost (number) , notes (string)'
                  additional_data:
                    type: object
                    description: Pagination related data
                    properties:
                      next_cursor:
                        type: string
                        description: The first item on the next page. The value of the `next_cursor` field will be `null` if you have reached the end of the dataset and there’s no more pages to be returned.
              example:
                success: true
                data:
                  - id: 2
                    name: Upgraded Mechanical Pencil
                    product_id: 1
                    prices:
                      - product_variation_id: 2
                        price: 5
                        currency: EUR
                        cost: 2
                        direct_cost: 3
                        notes: This is the price for the upgraded mechanical pencil
                additional_data:
                  next_cursor: eyJmaWVsZCI6ImlkIiwiZmllbGRWYWx1ZSI6Nywic29ydERpcmVjdGlvbiI6ImFzYyIsImlkIjo3fQ
    post:
      summary: Add a product variation
      description: Adds a new product variation.
      x-token-cost: 5
      operationId: addProductVariation
      tags:
        - Products
      security:
        - api_key: []
        - oauth2:
            - 'products:full'
      parameters:
        - in: path
          name: id
          description: The ID of the product
          required: true
          schema:
            type: integer
      requestBody:
        content:
          application/json:
            schema:
              title: addProductVariationRequest
              required:
                - name
              type: object
              properties:
                name:
                  type: string
                  description: The name of the product variation. The maximum length is 255 characters.
                prices:
                  type: array
                  items:
                    type: object
                  description: 'Array of objects, each containing: currency (string), price (number), cost (number, optional), direct_cost (number, optional), notes (string, optional). When prices is omitted altogether, a default price of 0, a default cost of 0, a default direct_cost of 0 and the user''s default currency will be assigned.'
      responses:
        '201':
          description: Add a product variation
          content:
            application/json:
              schema:
                title: GetProductVariationResponse
                type: object
                properties:
                  success:
                    type: boolean
                    description: If the response is successful or not
                  data:
                    type: object
                    properties:
                      id:
                        type: number
                        description: The ID of the product variation
                      name:
                        type: string
                        description: The name of the product variation
                      product_id:
                        type: integer
                        description: The ID of the product
                      prices:
                        type: array
                        items:
                          type: object
                        description: 'Array of objects, each containing: product_variation_id (number), currency (string), price (number), cost (number), direct_cost (number) , notes (string)'
              example:
                success: true
                data:
                  id: 2
                  name: Upgraded Mechanical Pencil
                  product_id: 1
                  prices:
                    - product_variation_id: 2
                      price: 5
                      currency: EUR
                      cost: 2
                      direct_cost: 3
                      notes: This is the price for the upgraded mechanical pencil
  '/products/{id}/variations/{product_variation_id}':
    patch:
      summary: Update a product variation
      description: Updates product variation data.
      x-token-cost: 5
      operationId: updateProductVariation
      tags:
        - Products
      security:
        - api_key: []
        - oauth2:
            - 'products:full'
      parameters:
        - in: path
          name: id
          description: The ID of the product
          required: true
          schema:
            type: integer
        - in: path
          name: product_variation_id
          description: The ID of the product variation
          required: true
          schema:
            type: integer
      requestBody:
        content:
          application/json:
            schema:
              title: updateProductVariationRequest
              type: object
              properties:
                name:
                  type: string
                  description: The name of the product variation. The maximum length is 255 characters.
                prices:
                  type: array
                  items:
                    type: object
                  description: 'Array of objects, each containing: currency (string), price (number), cost (number, optional), direct_cost (number, optional), notes (string, optional). When prices is omitted altogether, a default price of 0, a default cost of 0, a default direct_cost of 0 and the user''s default currency will be assigned.'
      responses:
        '200':
          description: Update product variation data
          content:
            application/json:
              schema:
                title: GetProductVariationResponse
                type: object
                properties:
                  success:
                    type: boolean
                    description: If the response is successful or not
                  data:
                    type: object
                    properties:
                      id:
                        type: number
                        description: The ID of the product variation
                      name:
                        type: string
                        description: The name of the product variation
                      product_id:
                        type: integer
                        description: The ID of the product
                      prices:
                        type: array
                        items:
                          type: object
                        description: 'Array of objects, each containing: product_variation_id (number), currency (string), price (number), cost (number), direct_cost (number) , notes (string)'
              example:
                success: true
                data:
                  id: 2
                  name: Upgraded Mechanical Pencil
                  product_id: 1
                  prices:
                    - product_variation_id: 2
                      price: 5
                      currency: EUR
                      cost: 2
                      direct_cost: 3
                      notes: This is the price for the upgraded mechanical pencil
    delete:
      summary: Delete a product variation
      description: Deletes a product variation.
      x-token-cost: 3
      operationId: deleteProductVariation
      tags:
        - Products
      security:
        - api_key: []
        - oauth2:
            - 'products:full'
      parameters:
        - in: path
          name: id
          description: The ID of the product
          required: true
          schema:
            type: integer
        - in: path
          name: product_variation_id
          description: The ID of the product variation
          required: true
          schema:
            type: integer
      responses:
        '200':
          description: Delete a product variation
          content:
            application/json:
              schema:
                title: DeleteProductVariationResponse
                type: object
                properties:
                  success:
                    type: boolean
                    description: If the response is successful or not
                  data:
                    type: object
                    properties:
                      id:
                        type: integer
                        description: The ID of a deleted product variant
              example:
                success: true
                data:
                  id: 123
  '/products/{id}/images':
    get:
      summary: Get image of a product
      description: Retrieves the image of a product. The public URL has a limited lifetime of 7 days.
      x-token-cost: 10
      operationId: getProductImage
      tags:
        - Products
      security:
        - api_key: []
        - oauth2:
            - 'products:read'
            - 'products:full'
      parameters:
        - in: path
          name: id
          description: The ID of the product
          required: true
          schema:
            type: integer
      responses:
        '200':
          description: Retrieves the image of a product. The public URL has a limited lifetime of 7 days.
          content:
            application/json:
              schema:
                title: GetProductImageResponse
                type: object
                properties:
                  success:
                    type: boolean
                    description: If the response is successful or not
                  data:
                    type: object
                    description: The product image data and the respective public URL
                    properties:
                      id:
                        type: integer
                        description: The ID of the product image
                      product_id:
                        type: integer
                        description: The ID of the product associated
                      company_id:
                        type: string
                        description: The ID of the company
                      public_url:
                        type: string
                        description: The public URL of the product image
                      add_time:
                        type: string
                        description: The date of image upload.
                      mime_type:
                        type: string
                        description: The MIME type of the product image
                      name:
                        type: string
                        description: The name of the product image file
              example:
                success: true
                data:
                  id: 1
                  product_id: 1
                  company_id: '1'
                  public_url: 'http://my-server.com/images/b0369d1d-6b6a-4293-88b9-e2924782d47e.png'
                  add_time: '2025-03-10'
                  mime_type: image/png
                  name: product-image.png
    post:
      summary: Upload an image for a product
      description: Uploads an image for a product.
      x-token-cost: 20
      operationId: uploadProductImage
      tags:
        - Products
      security:
        - api_key: []
        - oauth2:
            - 'products:full'
      parameters:
        - in: path
          name: id
          description: The ID of the product
          required: true
          schema:
            type: integer
      requestBody:
        content:
          multipart/form-data:
            schema:
              title: AddProductImageRequestBody
              type: object
              required:
                - data
              properties:
                data:
                  type: string
                  format: binary
                  description: One image supplied in the multipart/form-data encoding
      responses:
        '201':
          description: Image added to product.
          content:
            application/json:
              schema:
                title: AddProductImageResponse
                type: object
                properties:
                  success:
                    type: boolean
                    description: If the response is successful or not
                  data:
                    type: object
                    properties:
                      id:
                        type: integer
                        description: The ID of the product image
                      product_id:
                        type: number
                        description: The ID of the product associated
                      company_id:
                        type: string
                        description: The ID of the company
                      add_time:
                        type: string
                        description: The date of image upload.
              example:
                success: true
                data:
                  id: 1
                  product_id: 1
                  company_id: '1'
                  add_time: '2025-03-10'
    put:
      summary: Update an image for a product
      description: Updates the image of a product.
      x-token-cost: 20
      operationId: updateProductImage
      tags:
        - Products
      security:
        - api_key: []
        - oauth2:
            - 'products:full'
      parameters:
        - in: path
          name: id
          description: The ID of the product
          required: true
          schema:
            type: integer
      requestBody:
        content:
          multipart/form-data:
            schema:
              title: UpdateProductImageRequestBody
              type: object
              required:
                - data
              properties:
                data:
                  type: string
                  format: binary
                  description: One image supplied in the multipart/form-data encoding
      responses:
        '200':
          description: Edited product image.
          content:
            application/json:
              schema:
                title: UpdateProductImageResponse
                type: object
                properties:
                  success:
                    type: boolean
                    description: If the response is successful or not
                  data:
                    type: object
                    properties:
                      id:
                        type: integer
                        description: The ID of the product image
                      product_id:
                        type: number
                        description: The ID of the product associated
                      company_id:
                        type: string
                        description: The ID of the company
                      add_time:
                        type: string
                        description: The date of image upload.
              example:
                success: true
                data:
                  id: 1
                  product_id: 1
                  company_id: '1'
                  add_time: '2025-03-10'
    delete:
      summary: Delete an image of a product
      description: Deletes the image of a product.
      x-token-cost: 6
      operationId: deleteProductImage
      tags:
        - Products
      security:
        - api_key: []
        - oauth2:
            - 'products:full'
      parameters:
        - in: path
          name: id
          description: The ID of the product
          required: true
          schema:
            type: integer
      responses:
        '200':
          description: The ID of the deleted product image.
          content:
            application/json:
              schema:
                title: DeleteProductImageResponse
                type: object
                properties:
                  success:
                    type: boolean
                    description: If the response is successful or not
                  data:
                    type: object
                    properties:
                      id:
                        type: integer
                        description: The ID of the image that was deleted from the product.
              example:
                success: true
                data:
                  id: 1
  /productFields:
    get:
      summary: Get all product fields
      description: Returns metadata about all product fields in the company.
      x-token-cost: 10
      operationId: getProductFields
      tags:
        - ProductFields
      security:
        - api_key: []
        - oauth2:
            - 'products:read'
            - 'products:full'
            - 'product-fields:full'
      parameters:
        - in: query
          name: include_fields
          description: Optional comma separated string array of additional data namespaces to include in response
          schema:
            type: string
            enum:
              - ui_visibility
        - in: query
          name: limit
          description: 'For pagination, the limit of entries to be returned. If not provided, 100 items will be returned. Please note that a maximum value of 500 is allowed.'
          schema:
            type: integer
            example: 100
        - in: query
          name: cursor
          required: false
          schema:
            type: string
          description: 'For pagination, the marker (an opaque string value) representing the first item on the next page'
      responses:
        '200':
          description: Get all product fields
          content:
            application/json:
              schema:
                type: object
                properties:
                  success:
                    type: boolean
                    description: Whether the request was successful
                  data:
                    type: array
                    items:
                      type: object
                      required:
                        - field_name
                        - field_code
                        - field_type
                        - is_custom_field
                        - is_optional_response_field
                      properties:
                        field_name:
                          type: string
                          description: The display name/label of the field
                        field_code:
                          type: string
                          description: The unique identifier for the field (40-character hash for custom fields)
                        field_type:
                          type: string
                          description: The type of the field
                          enum:
                            - int
                            - double
                            - boolean
                            - varchar
                            - text
                            - phone
                            - varchar_options
                            - varchar_auto
                            - date
                            - daterange
                            - time
                            - timerange
                            - enum
                            - set
                            - address
                            - monetary
                            - deal
                            - deals
                            - lead
                            - org
                            - people
                            - project
                            - stage
                            - user
                            - activity
                            - json
                            - picture
                            - status
                            - visible_to
                            - price_list
                            - billing_frequency
                            - projects_board
                            - projects_phase
                        options:
                          type: array
                          nullable: true
                          description: 'Array of available options for enum/set fields, null for other field types'
                          items:
                            type: object
                            properties:
                              id:
                                type: integer
                                description: The option ID
                              label:
                                type: string
                                description: The option display label
                              color:
                                type: string
                                nullable: true
                                description: Optional color code for the option
                              update_time:
                                type: string
                                format: date-time
                                nullable: true
                                description: When the option was last updated
                              add_time:
                                type: string
                                format: date-time
                                nullable: true
                                description: When the option was created
                        subfields:
                          type: array
                          nullable: true
                          description: 'Array of subfields for complex field types (address, monetary), null for simple field types'
                          items:
                            type: object
                            properties:
                              field_code:
                                type: string
                                description: The subfield identifier
                              field_name:
                                type: string
                                description: The subfield display name
                              field_type:
                                type: string
                                description: The subfield type
                        is_custom_field:
                          type: boolean
                          description: Whether this is a user-created custom field
                        is_optional_response_field:
                          type: boolean
                          description: Whether this field is not returned by default in entity responses
                        ui_visibility:
                          type: object
                          description: UI visibility settings (only included when requested via include_fields parameter)
                          properties:
                            add_visible_flag:
                              type: boolean
                              description: Whether the field is shown in the add modal
                            details_visible_flag:
                              type: boolean
                              description: Whether the field is shown in the details view (read-only)
                  additional_data:
                    type: object
                    properties:
                      next_cursor:
                        type: string
                        nullable: true
                        description: 'Base64url-encoded cursor for fetching the next page of results, null if no more pages'
              example:
                success: true
                data:
                  - field_name: Product Name
                    field_code: name
                    field_type: varchar
                    options: null
                    subfields: null
                    is_custom_field: false
                    is_optional_response_field: false
                    ui_visibility:
                      add_visible_flag: true
                      details_visible_flag: true
                  - field_name: Price
                    field_code: 40characterhashforcustomfieldidentifier
                    field_type: monetary
                    options: null
                    subfields:
                      - field_code: value
                        field_name: Amount of Price
                        field_type: double
                      - field_code: currency
                        field_name: Currency of Price
                        field_type: varchar
                    is_custom_field: true
                    is_optional_response_field: false
                    ui_visibility:
                      add_visible_flag: true
                      details_visible_flag: true
                  - field_name: Categories
                    field_code: 40characterhashforcustomfieldcategories
                    field_type: set
                    options:
                      - id: 1
                        label: Software
                        color: blue
                      - id: 2
                        label: Hardware
                        color: green
                      - id: 3
                        label: Services
                        color: orange
                    subfields: null
                    is_custom_field: true
                    is_optional_response_field: false
                    ui_visibility:
                      add_visible_flag: true
                      details_visible_flag: true
                additional_data:
                  next_cursor: eyJmaWVsZCI6ImlkIiwiZmllbGRWYWx1ZSI6Nywic29ydERpcmVjdGlvbiI6ImFzYyIsImlkIjo3fQ
    post:
      summary: Create one product field
      description: Creates a new product custom field.
      x-token-cost: 5
      operationId: addProductField
      tags:
        - ProductFields
      security:
        - api_key: []
        - oauth2:
            - 'products:full'
            - 'product-fields:full'
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              required:
                - field_name
                - field_type
              properties:
                field_name:
                  type: string
                  minLength: 1
                  maxLength: 255
                  description: Field name
                field_type:
                  type: string
                  description: 'The type of the field<table><tr><th>Value</th><th>Description</th></tr><tr><td>`varchar`</td><td>Text (up to 255 characters)</td><tr><td>`varchar_auto`</td><td>Autocomplete text (up to 255 characters)</td><tr><td>`text`</td><td>Long text (up to 65k characters)</td><tr><td>`double`</td><td>Numeric value</td><tr><td>`monetary`</td><td>Monetary field (has a numeric value and a currency value)</td><tr><td>`date`</td><td>Date (format YYYY-MM-DD)</td><tr><td>`set`</td><td>Options field with a possibility of having multiple chosen options</td><tr><td>`enum`</td><td>Options field with a single possible chosen option</td><tr><td>`user`</td><td>User field (contains a user ID of another Pipedrive user)</td><tr><td>`org`</td><td>Organization field (contains an organization ID which is stored on the same account)</td><tr><td>`people`</td><td>Person field (contains a person ID which is stored on the same account)</td><tr><td>`phone`</td><td>Phone field (up to 255 numbers and/or characters)</td><tr><td>`time`</td><td>Time field (format HH:MM:SS)</td><tr><td>`timerange`</td><td>Time-range field (has a start time and end time value, both HH:MM:SS)</td><tr><td>`daterange`</td><td>Date-range field (has a start date and end date value, both YYYY-MM-DD)</td><tr><td>`address`</td><td>Address field</dd></table>'
                  enum:
                    - varchar
                    - text
                    - double
                    - phone
                    - date
                    - daterange
                    - time
                    - timerange
                    - set
                    - enum
                    - varchar_auto
                    - address
                    - monetary
                    - org
                    - people
                    - user
                options:
                  type: array
                  description: Field options (required for enum and set field types)
                  items:
                    type: object
                    required:
                      - label
                    properties:
                      label:
                        type: string
                        description: The option label
                ui_visibility:
                  type: object
                  description: UI visibility settings for the field. Controls where the field appears in the Pipedrive web UI. Note that products have a simpler visibility model than other entity types.
                  additionalProperties: true
                  properties:
                    add_visible_flag:
                      type: boolean
                      description: Whether the field is shown in the add product modal. Default is false. Cannot be set to false for the 'name' system field.
                      default: false
                    details_visible_flag:
                      type: boolean
                      description: Whether the field is shown in the product details view. Default is true.
                      default: true
      responses:
        '200':
          description: Create one product field
          content:
            application/json:
              schema:
                type: object
                properties:
                  success:
                    type: boolean
                    description: Whether the request was successful
                  data:
                    type: object
                    required:
                      - field_name
                      - field_code
                      - field_type
                      - is_custom_field
                      - is_optional_response_field
                    properties:
                      field_name:
                        type: string
                        description: The display name/label of the field
                      field_code:
                        type: string
                        description: The unique identifier for the field (40-character hash for custom fields)
                      field_type:
                        type: string
                        description: The type of the field
                        enum:
                          - int
                          - double
                          - boolean
                          - varchar
                          - text
                          - phone
                          - varchar_options
                          - varchar_auto
                          - date
                          - daterange
                          - time
                          - timerange
                          - enum
                          - set
                          - address
                          - monetary
                          - deal
                          - deals
                          - lead
                          - org
                          - people
                          - project
                          - stage
                          - user
                          - activity
                          - json
                          - picture
                          - status
                          - visible_to
                          - price_list
                          - billing_frequency
                          - projects_board
                          - projects_phase
                      options:
                        type: array
                        nullable: true
                        description: 'Array of available options for enum/set fields, null for other field types'
                        items:
                          type: object
                          properties:
                            id:
                              type: integer
                              description: The option ID
                            label:
                              type: string
                              description: The option display label
                            color:
                              type: string
                              nullable: true
                              description: Optional color code for the option
                            update_time:
                              type: string
                              format: date-time
                              nullable: true
                              description: When the option was last updated
                            add_time:
                              type: string
                              format: date-time
                              nullable: true
                              description: When the option was created
                      subfields:
                        type: array
                        nullable: true
                        description: 'Array of subfields for complex field types (address, monetary), null for simple field types'
                        items:
                          type: object
                          properties:
                            field_code:
                              type: string
                              description: The subfield identifier
                            field_name:
                              type: string
                              description: The subfield display name
                            field_type:
                              type: string
                              description: The subfield type
                      is_custom_field:
                        type: boolean
                        description: Whether this is a user-created custom field
                      is_optional_response_field:
                        type: boolean
                        description: Whether this field is not returned by default in entity responses
                      ui_visibility:
                        type: object
                        description: UI visibility settings (only included when requested via include_fields parameter)
                        properties:
                          add_visible_flag:
                            type: boolean
                            description: Whether the field is shown in the add modal
                          details_visible_flag:
                            type: boolean
                            description: Whether the field is shown in the details view (read-only)
              example:
                success: true
                data:
                  field_name: Categories
                  field_code: 946947d1b02fd3ef20798d6112ec5d895a686a21
                  field_type: set
                  options:
                    - id: 1
                      label: Software
                      color: blue
                    - id: 2
                      label: Hardware
                      color: green
                    - id: 3
                      label: Services
                      color: orange
                  subfields: null
                  is_custom_field: true
                  is_optional_response_field: false
                  ui_visibility:
                    add_visible_flag: true
                    details_visible_flag: true
  '/productFields/{field_code}':
    get:
      summary: Get one product field
      description: Returns metadata about a specific product field.
      x-token-cost: 1
      operationId: getProductField
      tags:
        - ProductFields
      security:
        - api_key: []
        - oauth2:
            - 'products:read'
            - 'products:full'
            - 'product-fields:full'
      parameters:
        - in: path
          name: field_code
          description: The unique code identifying the field
          required: true
          schema:
            type: string
        - in: query
          name: include_fields
          description: Optional comma separated string array of additional data namespaces to include in response
          schema:
            type: string
            enum:
              - ui_visibility
      responses:
        '200':
          description: Get one product field
          content:
            application/json:
              schema:
                type: object
                properties:
                  success:
                    type: boolean
                    description: Whether the request was successful
                  data:
                    type: object
                    required:
                      - field_name
                      - field_code
                      - field_type
                      - is_custom_field
                      - is_optional_response_field
                    properties:
                      field_name:
                        type: string
                        description: The display name/label of the field
                      field_code:
                        type: string
                        description: The unique identifier for the field (40-character hash for custom fields)
                      field_type:
                        type: string
                        description: The type of the field
                        enum:
                          - int
                          - double
                          - boolean
                          - varchar
                          - text
                          - phone
                          - varchar_options
                          - varchar_auto
                          - date
                          - daterange
                          - time
                          - timerange
                          - enum
                          - set
                          - address
                          - monetary
                          - deal
                          - deals
                          - lead
                          - org
                          - people
                          - project
                          - stage
                          - user
                          - activity
                          - json
                          - picture
                          - status
                          - visible_to
                          - price_list
                          - billing_frequency
                          - projects_board
                          - projects_phase
                      options:
                        type: array
                        nullable: true
                        description: 'Array of available options for enum/set fields, null for other field types'
                        items:
                          type: object
                          properties:
                            id:
                              type: integer
                              description: The option ID
                            label:
                              type: string
                              description: The option display label
                            color:
                              type: string
                              nullable: true
                              description: Optional color code for the option
                            update_time:
                              type: string
                              format: date-time
                              nullable: true
                              description: When the option was last updated
                            add_time:
                              type: string
                              format: date-time
                              nullable: true
                              description: When the option was created
                      subfields:
                        type: array
                        nullable: true
                        description: 'Array of subfields for complex field types (address, monetary), null for simple field types'
                        items:
                          type: object
                          properties:
                            field_code:
                              type: string
                              description: The subfield identifier
                            field_name:
                              type: string
                              description: The subfield display name
                            field_type:
                              type: string
                              description: The subfield type
                      is_custom_field:
                        type: boolean
                        description: Whether this is a user-created custom field
                      is_optional_response_field:
                        type: boolean
                        description: Whether this field is not returned by default in entity responses
                      ui_visibility:
                        type: object
                        description: UI visibility settings (only included when requested via include_fields parameter)
                        properties:
                          add_visible_flag:
                            type: boolean
                            description: Whether the field is shown in the add modal
                          details_visible_flag:
                            type: boolean
                            description: Whether the field is shown in the details view (read-only)
              example:
                success: true
                data:
                  field_name: Product Name
                  field_code: name
                  field_type: varchar
                  options: null
                  subfields: null
                  is_custom_field: false
                  is_optional_response_field: false
                  ui_visibility:
                    add_visible_flag: true
                    details_visible_flag: true
    patch:
      summary: Update one product field
      description: Updates a product custom field. The field_code and field_type cannot be changed. At least one field must be provided in the request body.
      x-token-cost: 5
      operationId: updateProductField
      tags:
        - ProductFields
      security:
        - api_key: []
        - oauth2:
            - 'products:full'
            - 'product-fields:full'
      parameters:
        - in: path
          name: field_code
          description: The unique code identifying the field
          required: true
          schema:
            type: string
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              minProperties: 1
              properties:
                field_name:
                  type: string
                  minLength: 1
                  maxLength: 255
                  description: Field name
                ui_visibility:
                  type: object
                  description: UI visibility settings for the field. Controls where the field appears in the Pipedrive web UI. Note that products have a simpler visibility model than other entity types.
                  additionalProperties: true
                  properties:
                    add_visible_flag:
                      type: boolean
                      description: Whether the field is shown in the add product modal. Default is false. Cannot be set to false for the 'name' system field.
                      default: false
                    details_visible_flag:
                      type: boolean
                      description: Whether the field is shown in the product details view. Default is true.
                      default: true
      responses:
        '200':
          description: Get one product field
          content:
            application/json:
              schema:
                type: object
                properties:
                  success:
                    type: boolean
                    description: Whether the request was successful
                  data:
                    type: object
                    required:
                      - field_name
                      - field_code
                      - field_type
                      - is_custom_field
                      - is_optional_response_field
                    properties:
                      field_name:
                        type: string
                        description: The display name/label of the field
                      field_code:
                        type: string
                        description: The unique identifier for the field (40-character hash for custom fields)
                      field_type:
                        type: string
                        description: The type of the field
                        enum:
                          - int
                          - double
                          - boolean
                          - varchar
                          - text
                          - phone
                          - varchar_options
                          - varchar_auto
                          - date
                          - daterange
                          - time
                          - timerange
                          - enum
                          - set
                          - address
                          - monetary
                          - deal
                          - deals
                          - lead
                          - org
                          - people
                          - project
                          - stage
                          - user
                          - activity
                          - json
                          - picture
                          - status
                          - visible_to
                          - price_list
                          - billing_frequency
                          - projects_board
                          - projects_phase
                      options:
                        type: array
                        nullable: true
                        description: 'Array of available options for enum/set fields, null for other field types'
                        items:
                          type: object
                          properties:
                            id:
                              type: integer
                              description: The option ID
                            label:
                              type: string
                              description: The option display label
                            color:
                              type: string
                              nullable: true
                              description: Optional color code for the option
                            update_time:
                              type: string
                              format: date-time
                              nullable: true
                              description: When the option was last updated
                            add_time:
                              type: string
                              format: date-time
                              nullable: true
                              description: When the option was created
                      subfields:
                        type: array
                        nullable: true
                        description: 'Array of subfields for complex field types (address, monetary), null for simple field types'
                        items:
                          type: object
                          properties:
                            field_code:
                              type: string
                              description: The subfield identifier
                            field_name:
                              type: string
                              description: The subfield display name
                            field_type:
                              type: string
                              description: The subfield type
                      is_custom_field:
                        type: boolean
                        description: Whether this is a user-created custom field
                      is_optional_response_field:
                        type: boolean
                        description: Whether this field is not returned by default in entity responses
                      ui_visibility:
                        type: object
                        description: UI visibility settings (only included when requested via include_fields parameter)
                        properties:
                          add_visible_flag:
                            type: boolean
                            description: Whether the field is shown in the add modal
                          details_visible_flag:
                            type: boolean
                            description: Whether the field is shown in the details view (read-only)
              example:
                success: true
                data:
                  field_name: Product Name
                  field_code: name
                  field_type: varchar
                  options: null
                  subfields: null
                  is_custom_field: false
                  is_optional_response_field: false
                  ui_visibility:
                    add_visible_flag: true
                    details_visible_flag: true
    delete:
      summary: Delete one product field
      description: Marks a custom field as deleted.
      x-token-cost: 3
      operationId: deleteProductField
      tags:
        - ProductFields
      security:
        - api_key: []
        - oauth2:
            - 'products:full'
            - 'product-fields:full'
      parameters:
        - in: path
          name: field_code
          description: The unique code identifying the field
          required: true
          schema:
            type: string
      responses:
        '200':
          description: Delete one product field
          content:
            application/json:
              schema:
                type: object
                properties:
                  success:
                    type: boolean
                    description: Whether the request was successful
                  data:
                    type: object
                    required:
                      - field_name
                      - field_code
                      - field_type
                      - is_custom_field
                      - is_optional_response_field
                    properties:
                      field_name:
                        type: string
                        description: The display name/label of the field
                      field_code:
                        type: string
                        description: The unique identifier for the field (40-character hash for custom fields)
                      field_type:
                        type: string
                        description: The type of the field
                      options:
                        type: array
                        nullable: true
                        description: 'Array of available options for enum/set fields, null for other field types'
                        items:
                          type: object
                      subfields:
                        type: array
                        nullable: true
                        description: 'Array of subfields for complex field types (address, monetary), null for simple field types'
                        items:
                          type: object
                      is_custom_field:
                        type: boolean
                        description: Whether this is a user-created custom field
                      is_optional_response_field:
                        type: boolean
                        description: Whether this field is not returned by default in entity responses
              example:
                success: true
                data:
                  field_name: Custom text field
                  field_code: 946947d1b02fd3ef20798d6112ec5d895a686a21
                  field_type: varchar
                  options: null
                  subfields: null
                  is_custom_field: true
                  is_optional_response_field: false
  '/productFields/{field_code}/options':
    post:
      summary: Add product field options in bulk
      description: Adds new options to a product custom field that supports options (enum or set field types). This operation is atomic - all options are added or none are added. Returns only the newly added options.
      x-token-cost: 5
      operationId: addProductFieldOptions
      tags:
        - ProductFields
      security:
        - api_key: []
        - oauth2:
            - 'products:full'
            - 'product-fields:full'
      parameters:
        - in: path
          name: field_code
          description: The unique code identifying the field
          required: true
          schema:
            type: string
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: array
              description: Array of options to add. Each item must contain a label. At least one option is required.
              items:
                type: object
                required:
                  - label
                properties:
                  label:
                    type: string
                    minLength: 1
                    maxLength: 255
                    description: The display label for the new option
      responses:
        '200':
          description: Field options operation result
          content:
            application/json:
              schema:
                type: object
                properties:
                  success:
                    type: boolean
                  data:
                    type: array
                    items:
                      type: object
                      required:
                        - id
                        - label
                      properties:
                        id:
                          type: integer
                          description: The unique identifier of the option
                        label:
                          type: string
                          description: The display label of the option
                  additional_data:
                    type: object
                    nullable: true
              example:
                success: true
                data:
                  - id: 4
                    label: Consulting
                additional_data: null
    delete:
      summary: Delete product field options in bulk
      description: Removes existing options from a product custom field. This operation is atomic and fails if any of the specified option IDs do not exist. Returns only the deleted options.
      x-token-cost: 3
      operationId: deleteProductFieldOptions
      tags:
        - ProductFields
      security:
        - api_key: []
        - oauth2:
            - 'products:full'
            - 'product-fields:full'
      parameters:
        - in: path
          name: field_code
          description: The unique code identifying the field
          required: true
          schema:
            type: string
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: array
              description: Array of option IDs to delete. Each item must contain an ID of the option to delete. At least one option ID is required. The entire request fails if any option does not exist.
              items:
                type: object
                required:
                  - id
                properties:
                  id:
                    type: integer
                    description: The unique identifier of the option to delete
      responses:
        '200':
          description: Field options operation result
          content:
            application/json:
              schema:
                type: object
                properties:
                  success:
                    type: boolean
                  data:
                    type: array
                    items:
                      type: object
                      required:
                        - id
                        - label
                      properties:
                        id:
                          type: integer
                          description: The unique identifier of the option
                        label:
                          type: string
                          description: The display label of the option
                  additional_data:
                    type: object
                    nullable: true
              example:
                success: true
                data:
                  - id: 4
                    label: Consulting
                additional_data: null
    patch:
      summary: Update product field options in bulk
      description: Updates existing options for a product custom field. This operation is atomic and fails if any of the specified option IDs do not exist. Returns only the updated options.
      x-token-cost: 5
      operationId: updateProductFieldOptions
      tags:
        - ProductFields
      security:
        - api_key: []
        - oauth2:
            - 'products:full'
            - 'product-fields:full'
      parameters:
        - in: path
          name: field_code
          description: The unique code identifying the field
          required: true
          schema:
            type: string
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: array
              description: Array of options to update. Each item must contain an ID and the updated label. At least one option is required. The entire request fails if any option does not exist.
              items:
                type: object
                required:
                  - id
                  - label
                properties:
                  id:
                    type: integer
                    description: The unique identifier of the option to update
                  label:
                    type: string
                    minLength: 1
                    maxLength: 255
                    description: The new display label for the option
      responses:
        '200':
          description: Field options operation result
          content:
            application/json:
              schema:
                type: object
                properties:
                  success:
                    type: boolean
                  data:
                    type: array
                    items:
                      type: object
                      required:
                        - id
                        - label
                      properties:
                        id:
                          type: integer
                          description: The unique identifier of the option
                        label:
                          type: string
                          description: The display label of the option
                  additional_data:
                    type: object
                    nullable: true
              example:
                success: true
                data:
                  - id: 4
                    label: Consulting
                additional_data: null
  /leads/search:
    get:
      summary: Search leads
      description: 'Searches all leads by title, notes and/or custom fields. This endpoint is a wrapper of <a href="https://developers.pipedrive.com/docs/api/v1/ItemSearch#searchItem">/v1/itemSearch</a> with a narrower OAuth scope. Found leads can be filtered by the person ID and the organization ID.'
      x-token-cost: 20
      operationId: searchLeads
      tags:
        - Leads
      security:
        - api_key: []
        - oauth2:
            - 'leads:read'
            - 'leads:full'
            - 'search:read'
      parameters:
        - in: query
          name: term
          required: true
          schema:
            type: string
          description: The search term to look for. Minimum 2 characters (or 1 if using `exact_match`). Please note that the search term has to be URL encoded.
        - in: query
          name: fields
          schema:
            type: string
            enum:
              - custom_fields
              - notes
              - title
          description: A comma-separated string array. The fields to perform the search from. Defaults to all of them.
        - in: query
          name: exact_match
          schema:
            type: boolean
          description: 'When enabled, only full exact matches against the given term are returned. It is <b>not</b> case sensitive.'
        - in: query
          name: person_id
          schema:
            type: integer
          description: Will filter leads by the provided person ID. The upper limit of found leads associated with the person is 2000.
        - in: query
          name: organization_id
          schema:
            type: integer
          description: Will filter leads by the provided organization ID. The upper limit of found leads associated with the organization is 2000.
        - in: query
          name: include_fields
          schema:
            type: string
            enum:
              - lead.was_seen
          description: Supports including optional fields in the results which are not provided by default
        - in: query
          name: limit
          description: 'For pagination, the limit of entries to be returned. If not provided, 100 items will be returned. Please note that a maximum value of 500 is allowed.'
          schema:
            type: integer
            example: 100
        - in: query
          name: cursor
          required: false
          schema:
            type: string
          description: 'For pagination, the marker (an opaque string value) representing the first item on the next page'
      responses:
        '200':
          description: Success
          content:
            application/json:
              schema:
                title: GetLeadSearchResponse
                allOf:
                  - title: baseResponse
                    type: object
                    properties:
                      success:
                        type: boolean
                        description: If the response is successful or not
                  - type: object
                    title: GetLeadSearchResponseData
                    properties:
                      data:
                        type: object
                        properties:
                          items:
                            type: array
                            description: The array of leads
                            items:
                              type: object
                              title: LeadSearchItem
                              properties:
                                result_score:
                                  type: number
                                  description: Search result relevancy
                                item:
                                  type: object
                                  properties:
                                    id:
                                      type: string
                                      description: The ID of the lead
                                    type:
                                      type: string
                                      description: The type of the item
                                    title:
                                      type: string
                                      description: The title of the lead
                                    owner:
                                      type: object
                                      properties:
                                        id:
                                          type: integer
                                          description: The ID of the owner of the lead
                                    person:
                                      type: object
                                      properties:
                                        id:
                                          type: integer
                                          description: The ID of the person the lead is associated with
                                        name:
                                          type: string
                                          description: The name of the person the lead is associated with
                                    organization:
                                      type: object
                                      properties:
                                        id:
                                          type: integer
                                          description: The ID of the organization the lead is associated with
                                        name:
                                          type: string
                                          description: The name of the organization the lead is associated with
                                    phones:
                                      type: array
                                      items:
                                        type: string
                                    emails:
                                      type: array
                                      items:
                                        type: string
                                    custom_fields:
                                      type: array
                                      items:
                                        type: string
                                      description: Custom fields
                                    notes:
                                      type: array
                                      description: An array of notes
                                      items:
                                        type: string
                                    value:
                                      type: integer
                                      description: The value of the lead
                                    currency:
                                      type: string
                                      description: The currency of the lead
                                    visible_to:
                                      type: integer
                                      description: The visibility of the lead
                                    is_archived:
                                      type: boolean
                                      description: A flag indicating whether the lead is archived or not
                      additional_data:
                        type: object
                        description: Pagination related data
                        properties:
                          next_cursor:
                            type: string
                            description: The first item on the next page. The value of the `next_cursor` field will be `null` if you have reached the end of the dataset and there’s no more pages to be returned.
              example:
                success: true
                data:
                  items:
                    - result_score: 0.29
                      item:
                        id: 39c433f0-8a4c-11ec-8728-09968f0a1ca0
                        type: lead
                        title: John Doe lead
                        owner:
                          id: 1
                        person:
                          id: 1
                          name: John Doe
                        organization:
                          id: 1
                          name: John company
                        phones: []
                        emails:
                          - john@doe.com
                        custom_fields: []
                        notes: []
                        value: 100
                        currency: USD
                        visible_to: 3
                        is_archived: false
                additional_data:
                  next_cursor: eyJmaWVsZCI6ImlkIiwiZmllbGRWYWx1ZSI6Nywic29ydERpcmVjdGlvbiI6ImFzYyIsImlkIjo3fQ
  '/leads/{id}/convert/deal':
    post:
      security:
        - api_key: []
        - oauth2:
            - 'leads:full'
      tags:
        - Leads
      summary: Convert a lead to a deal
      description: 'Initiates a conversion of a lead to a deal. The return value is an ID of a job that was assigned to perform the conversion. Related entities (notes, files, emails, activities, ...) are transferred during the process to the target entity. If the conversion is successful, the lead is marked as deleted. To retrieve the created entity ID and the result of the conversion, call the <a href="https://developers.pipedrive.com/docs/api/v1/Leads#getLeadConversionStatus">/api/v2/leads/{lead_id}/convert/status/{conversion_id}</a> endpoint.'
      operationId: convertLeadToDeal
      x-token-cost: 40
      parameters:
        - in: path
          name: id
          required: true
          schema:
            type: string
            format: uuid
          description: The ID of the lead to convert
      requestBody:
        content:
          application/json:
            schema:
              additionalProperties: false
              type: object
              properties:
                stage_id:
                  description: 'The ID of a stage the created deal will be added to. Please note that a pipeline will be assigned automatically based on the `stage_id`. If omitted, the deal will be placed in the first stage of the default pipeline.'
                  type: integer
                pipeline_id:
                  description: 'The ID of a pipeline the created deal will be added to. By default, the deal will be added to the first stage of the specified pipeline. Please note that `pipeline_id` and `stage_id` should not be used together as `pipeline_id` will be ignored.'
                  type: integer
      responses:
        '200':
          description: Successful response containing payload in the `data` field
          content:
            application/json:
              schema:
                title: AddConvertLeadToDealResponse
                type: object
                properties:
                  success:
                    type: boolean
                  data:
                    type: object
                    description: An object containing conversion job id that performs the conversion
                    required:
                      - conversion_id
                    properties:
                      conversion_id:
                        description: The ID of the conversion job that can be used to retrieve conversion status and details. The ID has UUID format.
                        type: string
                        format: uuid
                  additional_data:
                    type: object
                    nullable: true
                    example: null
              example:
                success: true
                data:
                  conversion_id: 4b40248b-945a-4802-b996-60fdff8c5c69
                additional_data: null
        '404':
          description: A resource describing an error
          content:
            application/json:
              schema:
                type: object
                title: GetConvertResponse
                properties:
                  success:
                    type: boolean
                    example: false
                  error:
                    type: string
                    description: The description of the error
                  error_info:
                    type: string
                    description: A message describing how to solve the problem
                  data:
                    type: object
                    nullable: true
                    example: null
                  additional_data:
                    type: object
                    nullable: true
                    example: null
              example:
                success: false
                error: Entity was not found
                error_info: Object was not found.
                data: null
                additional_data: null
  '/leads/{id}/convert/status/{conversion_id}':
    get:
      security:
        - api_key: []
        - oauth2:
            - 'leads:full'
            - 'leads:read'
      tags:
        - Leads
      summary: Get Lead conversion status
      description: 'Returns data about the conversion. Status is always present and its value (not_started, running, completed, failed, rejected) represents the current state of the conversion. Deal ID is only present if the conversion was successfully finished. This data is only temporary and removed after a few days.'
      operationId: getLeadConversionStatus
      x-token-cost: 1
      parameters:
        - in: path
          name: id
          required: true
          schema:
            type: string
            format: uuid
          description: The ID of a lead
        - in: path
          name: conversion_id
          required: true
          schema:
            type: string
            format: uuid
          description: The ID of the conversion
      responses:
        '200':
          description: Successful response containing payload in the `data` field
          content:
            application/json:
              example:
                success: true
                data:
                  deal_id: 33
                  conversion_id: 4b40248b-945a-4802-b996-60fdff8c5c69
                  status: completed
                additional_data: null
              schema:
                title: GetConvertResponse
                type: object
                required:
                  - success
                  - data
                properties:
                  success:
                    type: boolean
                  data:
                    type: object
                    description: An object containing conversion status. After successful conversion the converted entity ID is also present.
                    required:
                      - conversion_id
                      - status
                    properties:
                      lead_id:
                        description: The ID of the new lead.
                        type: string
                        format: uuid
                      deal_id:
                        description: The ID of the new deal.
                        type: integer
                      conversion_id:
                        description: The ID of the conversion job. The ID can be used to retrieve conversion status and details. The ID has UUID format.
                        type: string
                        format: uuid
                      status:
                        description: Status of the conversion job.
                        type: string
                        enum:
                          - not_started
                          - running
                          - completed
                          - failed
                          - rejected
                  additional_data:
                    type: object
                    nullable: true
                    example: null
        '404':
          description: A resource describing an error
          content:
            application/json:
              schema:
                type: object
                title: GetConvertResponse
                properties:
                  success:
                    type: boolean
                    example: false
                  error:
                    type: string
                    description: The description of the error
                  error_info:
                    type: string
                    description: A message describing how to solve the problem
                  data:
                    type: object
                    nullable: true
                    example: null
                  additional_data:
                    type: object
                    nullable: true
                    example: null
              example:
                success: false
                error: Entity was not found
                error_info: Object was not found.
                data: null
                additional_data: null
  /organizations/search:
    get:
      summary: Search organizations
      description: 'Searches all organizations by name, address, notes and/or custom fields. This endpoint is a wrapper of <a href="https://developers.pipedrive.com/docs/api/v1/ItemSearch#searchItem">/v1/itemSearch</a> with a narrower OAuth scope.'
      x-token-cost: 20
      operationId: searchOrganization
      tags:
        - Organizations
      security:
        - api_key: []
        - oauth2:
            - 'contacts:read'
            - 'contacts:full'
            - 'search:read'
      parameters:
        - in: query
          name: term
          required: true
          schema:
            type: string
          description: The search term to look for. Minimum 2 characters (or 1 if using `exact_match`). Please note that the search term has to be URL encoded.
        - in: query
          name: fields
          schema:
            type: string
            enum:
              - address
              - custom_fields
              - notes
              - name
          description: 'A comma-separated string array. The fields to perform the search from. Defaults to all of them. Only the following custom field types are searchable: `address`, `varchar`, `text`, `varchar_auto`, `double`, `monetary` and `phone`. Read more about searching by custom fields <a href="https://support.pipedrive.com/en/article/search-finding-what-you-need#searching-by-custom-fields" target="_blank" rel="noopener noreferrer">here</a>.'
        - in: query
          name: exact_match
          schema:
            type: boolean
          description: 'When enabled, only full exact matches against the given term are returned. It is <b>not</b> case sensitive.'
        - in: query
          name: limit
          description: 'For pagination, the limit of entries to be returned. If not provided, 100 items will be returned. Please note that a maximum value of 500 is allowed.'
          schema:
            type: integer
            example: 100
        - in: query
          name: cursor
          required: false
          schema:
            type: string
          description: 'For pagination, the marker (an opaque string value) representing the first item on the next page'
      responses:
        '200':
          description: Success
          content:
            application/json:
              schema:
                title: GetOrganizationSearchResponse
                allOf:
                  - title: baseResponse
                    type: object
                    properties:
                      success:
                        type: boolean
                        description: If the response is successful or not
                  - type: object
                    properties:
                      data:
                        type: object
                        properties:
                          items:
                            type: array
                            description: The array of found items
                            items:
                              type: object
                              properties:
                                result_score:
                                  type: number
                                  description: Search result relevancy
                                item:
                                  type: object
                                  properties:
                                    id:
                                      type: integer
                                      description: The ID of the organization
                                    type:
                                      type: string
                                      description: The type of the item
                                    name:
                                      type: string
                                      description: The name of the organization
                                    address:
                                      type: string
                                      description: The address of the organization
                                    visible_to:
                                      type: integer
                                      description: The visibility of the organization
                                    owner:
                                      type: object
                                      properties:
                                        id:
                                          type: integer
                                          description: The ID of the owner of the deal
                                    custom_fields:
                                      type: array
                                      items:
                                        type: string
                                      description: Custom fields
                                    notes:
                                      type: array
                                      description: An array of notes
                                      items:
                                        type: string
                      additional_data:
                        type: object
                        description: Pagination related data
                        properties:
                          next_cursor:
                            type: string
                            description: The first item on the next page. The value of the `next_cursor` field will be `null` if you have reached the end of the dataset and there’s no more pages to be returned.
              example:
                success: true
                data:
                  items:
                    - result_score: 0.316
                      item:
                        id: 1
                        type: organization
                        name: Organization name
                        address: 'Mustamäe tee 3a, 10615 Tallinn'
                        visible_to: 3
                        owner:
                          id: 1
                        custom_fields: []
                        notes: []
                additional_data:
                  next_cursor: eyJmaWVsZCI6ImlkIiwiZmllbGRWYWx1ZSI6Nywic29ydERpcmVjdGlvbiI6ImFzYyIsImlkIjo3fQ
  /persons/search:
    get:
      summary: Search persons
      description: 'Searches all persons by name, email, phone, notes and/or custom fields. This endpoint is a wrapper of <a href="https://developers.pipedrive.com/docs/api/v1/ItemSearch#searchItem">/v1/itemSearch</a> with a narrower OAuth scope. Found persons can be filtered by organization ID.'
      x-token-cost: 20
      operationId: searchPersons
      tags:
        - Persons
      security:
        - api_key: []
        - oauth2:
            - 'contacts:read'
            - 'contacts:full'
            - 'search:read'
      parameters:
        - in: query
          name: term
          required: true
          schema:
            type: string
          description: The search term to look for. Minimum 2 characters (or 1 if using `exact_match`). Please note that the search term has to be URL encoded.
        - in: query
          name: fields
          schema:
            type: string
            enum:
              - custom_fields
              - email
              - notes
              - phone
              - name
          description: 'A comma-separated string array. The fields to perform the search from. Defaults to all of them. Only the following custom field types are searchable: `address`, `varchar`, `text`, `varchar_auto`, `double`, `monetary` and `phone`. Read more about searching by custom fields <a href="https://support.pipedrive.com/en/article/search-finding-what-you-need#searching-by-custom-fields" target="_blank" rel="noopener noreferrer">here</a>.'
        - in: query
          name: exact_match
          schema:
            type: boolean
          description: 'When enabled, only full exact matches against the given term are returned. It is <b>not</b> case sensitive.'
        - in: query
          name: organization_id
          schema:
            type: integer
          description: Will filter persons by the provided organization ID. The upper limit of found persons associated with the organization is 2000.
        - in: query
          name: include_fields
          schema:
            type: string
            enum:
              - person.picture
          description: Supports including optional fields in the results which are not provided by default
        - in: query
          name: limit
          description: 'For pagination, the limit of entries to be returned. If not provided, 100 items will be returned. Please note that a maximum value of 500 is allowed.'
          schema:
            type: integer
            example: 100
        - in: query
          name: cursor
          required: false
          schema:
            type: string
          description: 'For pagination, the marker (an opaque string value) representing the first item on the next page'
      responses:
        '200':
          description: Success
          content:
            application/json:
              schema:
                title: GetPersonSearchResponse
                allOf:
                  - title: baseResponse
                    type: object
                    properties:
                      success:
                        type: boolean
                        description: If the response is successful or not
                  - type: object
                    properties:
                      data:
                        type: object
                        properties:
                          items:
                            type: array
                            description: The array of found items
                            items:
                              type: object
                              properties:
                                result_score:
                                  type: number
                                  description: Search result relevancy
                                item:
                                  type: object
                                  properties:
                                    id:
                                      type: integer
                                      description: The ID of the person
                                    type:
                                      type: string
                                      description: The type of the item
                                    name:
                                      type: string
                                      description: The name of the person
                                    phones:
                                      type: array
                                      description: An array of phone numbers
                                      items:
                                        type: string
                                    emails:
                                      type: array
                                      description: An array of email addresses
                                      items:
                                        type: string
                                    visible_to:
                                      type: integer
                                      description: The visibility of the person
                                    owner:
                                      type: object
                                      properties:
                                        id:
                                          type: integer
                                          description: The ID of the owner of the person
                                    organization:
                                      type: object
                                      properties:
                                        id:
                                          type: integer
                                          description: The ID of the organization the person is associated with
                                        name:
                                          type: string
                                          description: The name of the organization the person is associated with
                                    custom_fields:
                                      type: array
                                      items:
                                        type: string
                                      description: Custom fields
                                    notes:
                                      type: array
                                      description: An array of notes
                                      items:
                                        type: string
                      additional_data:
                        type: object
                        description: Pagination related data
                        properties:
                          next_cursor:
                            type: string
                            description: The first item on the next page. The value of the `next_cursor` field will be `null` if you have reached the end of the dataset and there’s no more pages to be returned.
              example:
                success: true
                data:
                  items:
                    - result_score: 0.5092
                      item:
                        id: 1
                        type: person
                        name: Jane Doe
                        phones:
                          - +372 555555555
                        emails:
                          - jane@pipedrive.com
                        visible_to: 3
                        owner:
                          id: 1
                        organization:
                          id: 1
                          name: Organization name
                          address: null
                        custom_fields: []
                        notes: []
                additional_data:
                  next_cursor: eyJmaWVsZCI6ImlkIiwiZmllbGRWYWx1ZSI6Nywic29ydERpcmVjdGlvbiI6ImFzYyIsImlkIjo3fQ
  /itemSearch:
    get:
      summary: Perform a search from multiple item types
      description: Performs a search from your choice of item types and fields.
      x-token-cost: 20
      operationId: searchItem
      tags:
        - ItemSearch
      security:
        - api_key: []
        - oauth2:
            - 'search:read'
      parameters:
        - in: query
          name: term
          required: true
          schema:
            type: string
          description: The search term to look for. Minimum 2 characters (or 1 if using `exact_match`). Please note that the search term has to be URL encoded.
        - in: query
          name: item_types
          schema:
            type: string
            enum:
              - deal
              - person
              - organization
              - product
              - lead
              - file
              - mail_attachment
              - project
          description: A comma-separated string array. The type of items to perform the search from. Defaults to all.
        - in: query
          name: fields
          schema:
            type: string
            enum:
              - address
              - code
              - custom_fields
              - email
              - name
              - notes
              - phone
              - title
              - description
          description: 'A comma-separated string array. The fields to perform the search from. Defaults to all. Relevant for each item type are:<br> <table> <tr><th><b>Item type</b></th><th><b>Field</b></th></tr> <tr><td>Deal</td><td>`custom_fields`, `notes`, `title`</td></tr> <tr><td>Person</td><td>`custom_fields`, `email`, `name`, `notes`, `phone`</td></tr> <tr><td>Organization</td><td>`address`, `custom_fields`, `name`, `notes`</td></tr> <tr><td>Product</td><td>`code`, `custom_fields`, `name`</td></tr> <tr><td>Lead</td><td>`custom_fields`, `notes`, `title`</td></tr> <tr><td>File</td><td>`name`</td></tr> <tr><td>Mail attachment</td><td>`name`</td></tr> <tr><td>Project</td><td> `custom_fields`, `notes`, `title`, `description` </td></tr> </table> <br> Only the following custom field types are searchable: `address`, `varchar`, `text`, `varchar_auto`, `double`, `monetary` and `phone`. Read more about searching by custom fields <a href="https://support.pipedrive.com/en/article/search-finding-what-you-need#searching-by-custom-fields" target="_blank" rel="noopener noreferrer">here</a>.'
        - in: query
          name: search_for_related_items
          schema:
            type: boolean
          description: 'When enabled, the response will include up to 100 newest related leads and 100 newest related deals for each found person and organization and up to 100 newest related persons for each found organization'
        - in: query
          name: exact_match
          schema:
            type: boolean
          description: 'When enabled, only full exact matches against the given term are returned. It is <b>not</b> case sensitive.'
        - in: query
          name: include_fields
          schema:
            type: string
            enum:
              - deal.cc_email
              - person.picture
              - product.price
          description: A comma-separated string array. Supports including optional fields in the results which are not provided by default.
        - in: query
          name: limit
          description: 'For pagination, the limit of entries to be returned. If not provided, 100 items will be returned. Please note that a maximum value of 100 is allowed.'
          schema:
            type: integer
            example: 100
        - in: query
          name: cursor
          required: false
          schema:
            type: string
          description: 'For pagination, the marker (an opaque string value) representing the first item on the next page'
      responses:
        '200':
          description: Success
          content:
            application/json:
              schema:
                title: GetItemSearchResponse
                allOf:
                  - title: baseResponse
                    type: object
                    properties:
                      success:
                        type: boolean
                        description: If the response is successful or not
                  - type: object
                    title: GetItemSearchResponseData
                    properties:
                      data:
                        type: object
                        properties:
                          items:
                            type: array
                            description: The array of found items
                            items:
                              type: object
                              title: ItemSearchItem
                              properties:
                                result_score:
                                  type: number
                                  description: Search result relevancy
                                item:
                                  type: object
                                  description: Item
                          related_items:
                            type: array
                            description: The array of related items if `search_for_related_items` was enabled
                            items:
                              type: object
                              title: ItemSearchItem
                              properties:
                                result_score:
                                  type: number
                                  description: Search result relevancy
                                item:
                                  type: object
                                  description: Item
                      additional_data:
                        type: object
                        description: Pagination related data
                        properties:
                          next_cursor:
                            type: string
                            description: The first item on the next page. The value of the `next_cursor` field will be `null` if you have reached the end of the dataset and there’s no more pages to be returned.
              example:
                success: true
                data:
                  items:
                    - result_score: 1.22724
                      item:
                        id: 42
                        type: deal
                        title: Sample Deal
                        value: 53883
                        currency: USD
                        status: open
                        visible_to: 3
                        owner:
                          id: 69
                        stage:
                          id: 3
                          name: Demo Scheduled
                        person:
                          id: 6
                          name: Sample Person
                        organization:
                          id: 9
                          name: Sample Organization
                          address: 'Dabas, Hungary'
                        custom_fields:
                          - Sample text
                        notes:
                          - Sample note
                        is_archived: false
                    - result_score: 0.31335002
                      item:
                        id: 9
                        type: organization
                        name: Sample Organization
                        address: 'Dabas, Hungary'
                        visible_to: 3
                        owner:
                          id: 69
                        custom_fields: []
                        notes: []
                    - result_score: 0.29955
                      item:
                        id: 6
                        type: person
                        name: Sample Person
                        phones:
                          - '555123123'
                          - +372 (55) 123468
                          - '0231632772'
                        emails:
                          - primary@email.com
                          - secondary@email.com
                        visible_to: 1
                        owner:
                          id: 69
                        organization:
                          id: 9
                          name: Sample Organization
                          address: 'Dabas, Hungary'
                        custom_fields:
                          - Custom Field Text
                        notes:
                          - Person note
                    - result_score: 0.0093
                      item:
                        id: 4
                        type: mail_attachment
                        name: Sample mail attachment.txt
                        url: /files/4/download
                    - result_score: 0.0093
                      item:
                        id: 3
                        type: file
                        name: Sample file attachment.txt
                        url: /files/3/download
                        deal:
                          id: 42
                          title: Sample Deal
                        person:
                          id: 6
                          name: Sample Person
                        organization:
                          id: 9
                          name: Sample Organization
                          address: 'Dabas, Hungary'
                    - result_score: 0.0011999999
                      item:
                        id: 1
                        type: product
                        name: Sample Product
                        code: product-code
                        visible_to: 3
                        owner:
                          id: 69
                        custom_fields: []
                  related_items:
                    - result_score: 0
                      item:
                        id: 2
                        type: deal
                        title: Other deal
                        value: 100
                        currency: USD
                        status: open
                        visible_to: 3
                        owner:
                          id: 1
                        stage:
                          id: 1
                          name: Lead In
                        person:
                          id: 1
                          name: Sample Person
                        is_archived: false
                additional_data:
                  next_cursor: eyJmaWVsZCI6ImlkIiwiZmllbGRWYWx1ZSI6Nywic29ydERpcmVjdGlvbiI6ImFzYyIsImlkIjo3fQ
  /itemSearch/field:
    get:
      summary: Perform a search using a specific field from an item type
      description: 'Performs a search from the values of a specific field. Results can either be the distinct values of the field (useful for searching autocomplete field values), or the IDs of actual items (deals, leads, persons, organizations or products).'
      x-token-cost: 20
      operationId: searchItemByField
      tags:
        - ItemSearch
      security:
        - api_key: []
        - oauth2:
            - 'search:read'
      parameters:
        - in: query
          name: term
          required: true
          schema:
            type: string
          description: The search term to look for. Minimum 2 characters (or 1 if `match` is `exact`). Please note that the search term has to be URL encoded.
        - in: query
          name: entity_type
          required: true
          schema:
            type: string
            enum:
              - deal
              - lead
              - person
              - organization
              - product
              - project
          description: The type of the field to perform the search from
        - in: query
          name: match
          schema:
            type: string
            default: exact
            enum:
              - exact
              - beginning
              - middle
          description: 'The type of match used against the term. The search <b>is</b> case sensitive.<br/><br/> E.g. in case of searching for a value `monkey`, <ul> <li>with `exact` match, you will only find it if term is `monkey`</li> <li>with `beginning` match, you will only find it if the term matches the beginning or the whole string, e.g. `monk` and `monkey`</li> <li>with `middle` match, you will find the it if the term matches any substring of the value, e.g. `onk` and `ke`</li> </ul>.'
        - in: query
          name: field
          required: true
          schema:
            type: string
          description: 'The key of the field to search from. The field key can be obtained by fetching the list of the fields using any of the fields'' API GET methods (dealFields, personFields, etc.). Only the following custom field types are searchable: `address`, `varchar`, `text`, `varchar_auto`, `double`, `monetary` and `phone`. Read more about searching by custom fields <a href="https://support.pipedrive.com/en/article/search-finding-what-you-need#searching-by-custom-fields" target="_blank" rel="noopener noreferrer">here</a>.'
        - in: query
          name: limit
          description: 'For pagination, the limit of entries to be returned. If not provided, 100 items will be returned. Please note that a maximum value of 500 is allowed.'
          schema:
            type: integer
            example: 100
        - in: query
          name: cursor
          required: false
          schema:
            type: string
          description: 'For pagination, the marker (an opaque string value) representing the first item on the next page'
      responses:
        '200':
          description: Success
          content:
            application/json:
              schema:
                title: GetItemSearchFieldResponse
                allOf:
                  - title: baseResponse
                    type: object
                    properties:
                      success:
                        type: boolean
                        description: If the response is successful or not
                  - type: object
                    properties:
                      data:
                        type: array
                        description: The array of found fields
                        items:
                          type: object
                          title: ItemSearchItem
                          properties:
                            result_score:
                              type: number
                              description: Search result relevancy
                            item:
                              type: object
                              description: Item
                      additional_data:
                        type: object
                        description: Pagination related data
                        properties:
                          next_cursor:
                            type: string
                            description: The first item on the next page. The value of the `next_cursor` field will be `null` if you have reached the end of the dataset and there’s no more pages to be returned.
              example:
                success: true
                data:
                  - id: 1
                    name: Jane Doe
                  - id: 2
                    name: John Doe
                additional_data:
                  next_cursor: eyJmaWVsZCI6ImlkIiwiZmllbGRWYWx1ZSI6Nywic29ydERpcmVjdGlvbiI6ImFzYyIsImlkIjo3fQ
  /stages:
    get:
      summary: Get all stages
      description: Returns data about all stages.
      x-token-cost: 5
      operationId: getStages
      tags:
        - Stages
      security:
        - api_key: []
        - oauth2:
            - 'deals:read'
            - 'deals:full'
            - admin
      parameters:
        - in: query
          name: pipeline_id
          schema:
            type: integer
          description: 'The ID of the pipeline to fetch stages for. If omitted, stages for all pipelines will be fetched.'
        - in: query
          name: sort_by
          description: 'The field to sort by. Supported fields: `id`, `update_time`, `add_time`, `order_nr`.'
          schema:
            type: string
            default: id
            enum:
              - id
              - update_time
              - add_time
              - order_nr
        - in: query
          name: sort_direction
          description: 'The sorting direction. Supported values: `asc`, `desc`.'
          schema:
            type: string
            default: asc
            enum:
              - asc
              - desc
        - in: query
          name: limit
          description: 'For pagination, the limit of entries to be returned. If not provided, 100 items will be returned. Please note that a maximum value of 500 is allowed.'
          schema:
            type: integer
            example: 100
        - in: query
          name: cursor
          required: false
          schema:
            type: string
          description: 'For pagination, the marker (an opaque string value) representing the first item on the next page'
      responses:
        '200':
          description: Get all stages
          content:
            application/json:
              schema:
                title: GetStagesResponse
                type: object
                properties:
                  success:
                    type: boolean
                    description: If the response is successful or not
                  data:
                    type: array
                    description: The array of stages
                    items:
                      type: object
                      title: StageItem
                      properties:
                        id:
                          type: integer
                          description: The ID of the stage
                        order_nr:
                          type: integer
                          description: Defines the order of the stage
                        name:
                          type: string
                          description: The name of the stage
                        is_deleted:
                          type: boolean
                          description: Whether the stage is marked as deleted or not
                        deal_probability:
                          type: integer
                          description: The success probability percentage of the deal. Used/shown when the deal weighted values are used.
                        pipeline_id:
                          type: integer
                          description: The ID of the pipeline to add the stage to
                        is_deal_rot_enabled:
                          type: boolean
                          description: Whether deals in this stage can become rotten
                        days_to_rotten:
                          type: integer
                          nullable: true
                          description: The number of days the deals not updated in this stage would become rotten. Applies only if the `is_deal_rot_enabled` is set.
                        add_time:
                          type: string
                          description: The stage creation time
                        update_time:
                          type: string
                          description: The stage update time
                  additional_data:
                    type: object
                    description: The additional data of the list
                    properties:
                      next_cursor:
                        type: string
                        description: The first item on the next page. The value of the `next_cursor` field will be `null` if you have reached the end of the dataset and there’s no more pages to be returned.
              example:
                success: true
                data:
                  - id: 1
                    order_nr: 1
                    name: Stage Name
                    is_deleted: false
                    deal_probability: 100
                    pipeline_id: 1
                    is_deal_rot_enabled: true
                    days_to_rotten: 2
                    add_time: '2024-01-01T00:00:00Z'
                    update_time: '2024-01-01T00:00:00Z'
                additional_data:
                  next_cursor: eyJmaWVsZCI6ImlkIiwiZmllbGRWYWx1ZSI6Nywic29ydERpcmVjdGlvbiI6ImFzYyIsImlkIjo3fQ
    post:
      summary: Add a new stage
      description: 'Adds a new stage, returns the ID upon success.'
      x-token-cost: 5
      operationId: addStage
      tags:
        - Stages
      security:
        - api_key: []
        - oauth2:
            - admin
      requestBody:
        content:
          application/json:
            schema:
              title: addStageRequest
              required:
                - name
                - pipeline_id
              type: object
              properties:
                name:
                  type: string
                  description: The name of the stage
                pipeline_id:
                  type: integer
                  description: The ID of the pipeline to add stage to
                deal_probability:
                  type: integer
                  description: The success probability percentage of the deal. Used/shown when deal weighted values are used.
                is_deal_rot_enabled:
                  type: boolean
                  description: Whether deals in this stage can become rotten
                days_to_rotten:
                  type: integer
                  description: The number of days the deals not updated in this stage would become rotten. Applies only if the `is_deal_rot_enabled` is set.
      responses:
        '200':
          description: Add a new stage
          content:
            application/json:
              schema:
                title: UpsertStageResponse
                type: object
                properties:
                  success:
                    type: boolean
                    description: If the response is successful or not
                  data:
                    type: object
                    title: StageItem
                    properties:
                      id:
                        type: integer
                        description: The ID of the stage
                      order_nr:
                        type: integer
                        description: Defines the order of the stage
                      name:
                        type: string
                        description: The name of the stage
                      is_deleted:
                        type: boolean
                        description: Whether the stage is marked as deleted or not
                      deal_probability:
                        type: integer
                        description: The success probability percentage of the deal. Used/shown when the deal weighted values are used.
                      pipeline_id:
                        type: integer
                        description: The ID of the pipeline to add the stage to
                      is_deal_rot_enabled:
                        type: boolean
                        description: Whether deals in this stage can become rotten
                      days_to_rotten:
                        type: integer
                        nullable: true
                        description: The number of days the deals not updated in this stage would become rotten. Applies only if the `is_deal_rot_enabled` is set.
                      add_time:
                        type: string
                        description: The stage creation time
                      update_time:
                        type: string
                        description: The stage update time
                    description: The stage object
              example:
                success: true
                data:
                  id: 1
                  order_nr: 1
                  name: Stage Name
                  is_deleted: false
                  deal_probability: 100
                  pipeline_id: 1
                  is_deal_rot_enabled: true
                  days_to_rotten: 2
                  add_time: '2024-01-01T00:00:00Z'
                  update_time: '2024-01-01T00:00:00Z'
  '/stages/{id}':
    delete:
      summary: Delete a stage
      description: Marks a stage as deleted.
      x-token-cost: 3
      operationId: deleteStage
      tags:
        - Stages
      security:
        - api_key: []
        - oauth2:
            - admin
      parameters:
        - in: path
          name: id
          description: The ID of the stage
          required: true
          schema:
            type: integer
      responses:
        '200':
          description: Delete stage
          content:
            application/json:
              schema:
                title: DeleteStageResponse
                type: object
                properties:
                  success:
                    type: boolean
                    description: If the response is successful or not
                  data:
                    type: object
                    properties:
                      id:
                        type: integer
                        description: Deleted stage ID
              example:
                success: true
                data:
                  id: 1
    get:
      summary: Get one stage
      description: Returns data about a specific stage.
      x-token-cost: 1
      operationId: getStage
      tags:
        - Stages
      security:
        - api_key: []
        - oauth2:
            - 'deals:read'
            - 'deals:full'
            - admin
      parameters:
        - in: path
          name: id
          description: The ID of the stage
          required: true
          schema:
            type: integer
      responses:
        '200':
          description: Get one stages
          content:
            application/json:
              schema:
                title: UpsertStageResponse
                type: object
                properties:
                  success:
                    type: boolean
                    description: If the response is successful or not
                  data:
                    type: object
                    title: StageItem
                    properties:
                      id:
                        type: integer
                        description: The ID of the stage
                      order_nr:
                        type: integer
                        description: Defines the order of the stage
                      name:
                        type: string
                        description: The name of the stage
                      is_deleted:
                        type: boolean
                        description: Whether the stage is marked as deleted or not
                      deal_probability:
                        type: integer
                        description: The success probability percentage of the deal. Used/shown when the deal weighted values are used.
                      pipeline_id:
                        type: integer
                        description: The ID of the pipeline to add the stage to
                      is_deal_rot_enabled:
                        type: boolean
                        description: Whether deals in this stage can become rotten
                      days_to_rotten:
                        type: integer
                        nullable: true
                        description: The number of days the deals not updated in this stage would become rotten. Applies only if the `is_deal_rot_enabled` is set.
                      add_time:
                        type: string
                        description: The stage creation time
                      update_time:
                        type: string
                        description: The stage update time
                    description: The stage object
              example:
                success: true
                data:
                  id: 1
                  order_nr: 1
                  name: Stage Name
                  is_deleted: false
                  deal_probability: 100
                  pipeline_id: 1
                  is_deal_rot_enabled: true
                  days_to_rotten: 2
                  add_time: '2024-01-01T00:00:00Z'
                  update_time: '2024-01-01T00:00:00Z'
    patch:
      summary: Update stage details
      description: Updates the properties of a stage.
      x-token-cost: 5
      operationId: updateStage
      tags:
        - Stages
      security:
        - api_key: []
        - oauth2:
            - admin
      parameters:
        - in: path
          name: id
          description: The ID of the stage
          required: true
          schema:
            type: integer
      requestBody:
        content:
          application/json:
            schema:
              title: updateStageRequest
              type: object
              properties:
                name:
                  type: string
                  description: The name of the stage
                pipeline_id:
                  type: integer
                  description: The ID of the pipeline to add stage to
                deal_probability:
                  type: integer
                  description: The success probability percentage of the deal. Used/shown when deal weighted values are used.
                is_deal_rot_enabled:
                  type: boolean
                  description: Whether deals in this stage can become rotten
                days_to_rotten:
                  type: integer
                  description: The number of days the deals not updated in this stage would become rotten. Applies only if the `is_deal_rot_enabled` is set.
      responses:
        '200':
          description: Update an existing stage
          content:
            application/json:
              schema:
                title: UpsertStageResponse
                type: object
                properties:
                  success:
                    type: boolean
                    description: If the response is successful or not
                  data:
                    type: object
                    title: StageItem
                    properties:
                      id:
                        type: integer
                        description: The ID of the stage
                      order_nr:
                        type: integer
                        description: Defines the order of the stage
                      name:
                        type: string
                        description: The name of the stage
                      is_deleted:
                        type: boolean
                        description: Whether the stage is marked as deleted or not
                      deal_probability:
                        type: integer
                        description: The success probability percentage of the deal. Used/shown when the deal weighted values are used.
                      pipeline_id:
                        type: integer
                        description: The ID of the pipeline to add the stage to
                      is_deal_rot_enabled:
                        type: boolean
                        description: Whether deals in this stage can become rotten
                      days_to_rotten:
                        type: integer
                        nullable: true
                        description: The number of days the deals not updated in this stage would become rotten. Applies only if the `is_deal_rot_enabled` is set.
                      add_time:
                        type: string
                        description: The stage creation time
                      update_time:
                        type: string
                        description: The stage update time
                    description: The stage object
              example:
                success: true
                data:
                  id: 1
                  order_nr: 1
                  name: Stage Name
                  is_deleted: false
                  deal_probability: 100
                  pipeline_id: 1
                  is_deal_rot_enabled: true
                  days_to_rotten: 2
                  add_time: '2024-01-01T00:00:00Z'
                  update_time: '2024-01-01T00:00:00Z'
  /pipelines:
    get:
      summary: Get all pipelines
      description: Returns data about all pipelines.
      x-token-cost: 5
      operationId: getPipelines
      tags:
        - Pipelines
      security:
        - api_key: []
        - oauth2:
            - 'deals:read'
            - 'deals:full'
            - admin
      parameters:
        - in: query
          name: sort_by
          description: 'The field to sort by. Supported fields: `id`, `update_time`, `add_time`.'
          schema:
            type: string
            default: id
            enum:
              - id
              - update_time
              - add_time
        - in: query
          name: sort_direction
          description: 'The sorting direction. Supported values: `asc`, `desc`.'
          schema:
            type: string
            default: asc
            enum:
              - asc
              - desc
        - in: query
          name: limit
          description: 'For pagination, the limit of entries to be returned. If not provided, 100 items will be returned. Please note that a maximum value of 500 is allowed.'
          schema:
            type: integer
            example: 100
        - in: query
          name: cursor
          required: false
          schema:
            type: string
          description: 'For pagination, the marker (an opaque string value) representing the first item on the next page'
      responses:
        '200':
          description: Get all pipelines
          content:
            application/json:
              schema:
                type: object
                title: GetPipelinesResponse
                allOf:
                  - title: baseResponse
                    type: object
                    properties:
                      success:
                        type: boolean
                        description: If the response is successful or not
                  - type: object
                    properties:
                      data:
                        type: array
                        description: Pipelines array
                        items:
                          type: object
                          properties:
                            id:
                              type: integer
                              description: The ID of the pipeline
                            name:
                              type: string
                              description: The name of the pipeline
                            order_nr:
                              type: integer
                              description: Defines the order of pipelines. The pipeline with the lowest `order_nr` is considered the default.
                            is_deleted:
                              type: boolean
                              description: Whether this pipeline is marked as deleted or not
                            is_deal_probability_enabled:
                              type: boolean
                              description: Whether deal probability is disabled or enabled for this pipeline
                            add_time:
                              type: string
                              description: The pipeline creation time
                            update_time:
                              type: string
                              description: The pipeline update time
                      additional_data:
                        type: object
                        description: The additional data of the list
                        properties:
                          next_cursor:
                            type: string
                            description: The first item on the next page. The value of the `next_cursor` field will be `null` if you have reached the end of the dataset and there’s no more pages to be returned.
              example:
                success: true
                data:
                  - id: 1
                    name: Pipeline Name
                    order_nr: 1
                    is_deleted: false
                    is_deal_probability_enabled: true
                    add_time: '2024-01-01T00:00:00Z'
                    update_time: '2024-01-01T00:00:00Z'
                additional_data:
                  next_cursor: eyJmaWVsZCI6ImlkIiwiZmllbGRWYWx1ZSI6Nywic29ydERpcmVjdGlvbiI6ImFzYyIsImlkIjo3fQ
    post:
      summary: Add a new pipeline
      description: Adds a new pipeline.
      x-token-cost: 5
      operationId: addPipeline
      tags:
        - Pipelines
      security:
        - api_key: []
        - oauth2:
            - admin
      requestBody:
        content:
          application/json:
            schema:
              required:
                - name
              type: object
              properties:
                name:
                  type: string
                  description: The name of the pipeline
                is_deal_probability_enabled:
                  type: boolean
                  default: false
                  description: Whether deal probability is disabled or enabled for this pipeline
      responses:
        '200':
          description: Add pipeline
          content:
            application/json:
              schema:
                type: object
                title: UpsertPipelineResponse
                allOf:
                  - title: baseResponse
                    type: object
                    properties:
                      success:
                        type: boolean
                        description: If the response is successful or not
                  - type: object
                    title: UpsertPipelineResponseData
                    properties:
                      data:
                        type: object
                        properties:
                          id:
                            type: integer
                            description: The ID of the pipeline
                          name:
                            type: string
                            description: The name of the pipeline
                          order_nr:
                            type: integer
                            description: Defines the order of pipelines. The pipeline with the lowest `order_nr` is considered the default.
                          is_deleted:
                            type: boolean
                            description: Whether this pipeline is marked as deleted or not
                          is_deal_probability_enabled:
                            type: boolean
                            description: Whether deal probability is disabled or enabled for this pipeline
                          add_time:
                            type: string
                            description: The pipeline creation time
                          update_time:
                            type: string
                            description: The pipeline update time
                        description: The pipeline object
              example:
                success: true
                data:
                  id: 1
                  name: Pipeline Name
                  order_nr: 1
                  is_deleted: false
                  is_deal_probability_enabled: true
                  add_time: '2024-01-01T00:00:00Z'
                  update_time: '2024-01-01T00:00:00Z'
  '/pipelines/{id}':
    delete:
      summary: Delete a pipeline
      description: Marks a pipeline as deleted.
      x-token-cost: 3
      operationId: deletePipeline
      tags:
        - Pipelines
      security:
        - api_key: []
        - oauth2:
            - admin
      parameters:
        - in: path
          name: id
          description: The ID of the pipeline
          required: true
          schema:
            type: integer
      responses:
        '200':
          description: Delete pipeline
          content:
            application/json:
              schema:
                title: DeletePipelineResponse
                type: object
                properties:
                  success:
                    type: boolean
                    description: If the response is successful or not
                  data:
                    type: object
                    properties:
                      id:
                        type: integer
                        description: Deleted Pipeline ID
              example:
                success: true
                data:
                  id: 1
    get:
      summary: Get one pipeline
      description: Returns data about a specific pipeline.
      x-token-cost: 1
      operationId: getPipeline
      tags:
        - Pipelines
      security:
        - api_key: []
        - oauth2:
            - 'deals:read'
            - 'deals:full'
            - admin
      parameters:
        - in: path
          name: id
          description: The ID of the pipeline
          required: true
          schema:
            type: integer
      responses:
        '200':
          description: Get pipeline
          content:
            application/json:
              schema:
                type: object
                title: UpsertPipelineResponse
                allOf:
                  - title: baseResponse
                    type: object
                    properties:
                      success:
                        type: boolean
                        description: If the response is successful or not
                  - type: object
                    title: UpsertPipelineResponseData
                    properties:
                      data:
                        type: object
                        properties:
                          id:
                            type: integer
                            description: The ID of the pipeline
                          name:
                            type: string
                            description: The name of the pipeline
                          order_nr:
                            type: integer
                            description: Defines the order of pipelines. The pipeline with the lowest `order_nr` is considered the default.
                          is_deleted:
                            type: boolean
                            description: Whether this pipeline is marked as deleted or not
                          is_deal_probability_enabled:
                            type: boolean
                            description: Whether deal probability is disabled or enabled for this pipeline
                          add_time:
                            type: string
                            description: The pipeline creation time
                          update_time:
                            type: string
                            description: The pipeline update time
                        description: The pipeline object
              example:
                success: true
                data:
                  id: 1
                  name: Pipeline Name
                  order_nr: 1
                  is_deleted: false
                  is_deal_probability_enabled: true
                  add_time: '2024-01-01T00:00:00Z'
                  update_time: '2024-01-01T00:00:00Z'
    patch:
      summary: Update a pipeline
      description: Updates the properties of a pipeline.
      x-token-cost: 5
      operationId: updatePipeline
      tags:
        - Pipelines
      security:
        - api_key: []
        - oauth2:
            - admin
      parameters:
        - in: path
          name: id
          description: The ID of the pipeline
          required: true
          schema:
            type: integer
      requestBody:
        content:
          application/json:
            schema:
              type: object
              properties:
                name:
                  type: string
                  description: The name of the pipeline
                is_deal_probability_enabled:
                  type: boolean
                  default: false
                  description: Whether deal probability is disabled or enabled for this pipeline
      responses:
        '200':
          description: Edit pipeline
          content:
            application/json:
              schema:
                type: object
                title: UpsertPipelineResponse
                allOf:
                  - title: baseResponse
                    type: object
                    properties:
                      success:
                        type: boolean
                        description: If the response is successful or not
                  - type: object
                    title: UpsertPipelineResponseData
                    properties:
                      data:
                        type: object
                        properties:
                          id:
                            type: integer
                            description: The ID of the pipeline
                          name:
                            type: string
                            description: The name of the pipeline
                          order_nr:
                            type: integer
                            description: Defines the order of pipelines. The pipeline with the lowest `order_nr` is considered the default.
                          is_deleted:
                            type: boolean
                            description: Whether this pipeline is marked as deleted or not
                          is_deal_probability_enabled:
                            type: boolean
                            description: Whether deal probability is disabled or enabled for this pipeline
                          add_time:
                            type: string
                            description: The pipeline creation time
                          update_time:
                            type: string
                            description: The pipeline update time
                        description: The pipeline object
              example:
                success: true
                data:
                  id: 1
                  name: Pipeline Name
                  order_nr: 1
                  is_deleted: false
                  is_deal_probability_enabled: true
                  add_time: '2024-01-01T00:00:00Z'
                  update_time: '2024-01-01T00:00:00Z'
  /projectFields:
    get:
      summary: Get all project fields
      description: Returns metadata about all project fields in the company.
      x-token-cost: 10
      operationId: getProjectFields
      tags:
        - ProjectFields
        - Beta
      security:
        - api_key: []
        - oauth2:
            - 'projects:read'
            - 'projects:full'
            - 'project-fields:full'
      parameters:
        - in: query
          name: limit
          description: 'For pagination, the limit of entries to be returned. If not provided, 100 items will be returned. Please note that a maximum value of 500 is allowed.'
          schema:
            type: integer
            example: 100
        - in: query
          name: cursor
          required: false
          schema:
            type: string
          description: 'For pagination, the marker (an opaque string value) representing the first item on the next page'
      responses:
        '200':
          description: Get all project fields
          content:
            application/json:
              schema:
                type: object
                properties:
                  success:
                    type: boolean
                    description: Whether the request was successful
                  data:
                    type: array
                    items:
                      type: object
                      required:
                        - field_name
                        - field_code
                        - field_type
                        - is_custom_field
                        - is_optional_response_field
                      properties:
                        field_name:
                          type: string
                          description: The display name/label of the field
                        field_code:
                          type: string
                          description: The unique identifier for the field (40-character hash for custom fields)
                        field_type:
                          type: string
                          description: The type of the field
                          enum:
                            - int
                            - double
                            - boolean
                            - varchar
                            - text
                            - phone
                            - varchar_options
                            - varchar_auto
                            - date
                            - daterange
                            - time
                            - timerange
                            - enum
                            - set
                            - address
                            - monetary
                            - deal
                            - deals
                            - lead
                            - org
                            - people
                            - project
                            - stage
                            - user
                            - activity
                            - json
                            - picture
                            - status
                            - visible_to
                            - price_list
                            - billing_frequency
                            - projects_board
                            - projects_phase
                        options:
                          type: array
                          nullable: true
                          description: 'Array of available options for enum/set fields, null for other field types'
                          items:
                            type: object
                            properties:
                              id:
                                type: integer
                                description: The option ID
                              label:
                                type: string
                                description: The option display label
                              color:
                                type: string
                                nullable: true
                                description: Optional color code for the option
                              update_time:
                                type: string
                                format: date-time
                                nullable: true
                                description: When the option was last updated
                              add_time:
                                type: string
                                format: date-time
                                nullable: true
                                description: When the option was created
                        subfields:
                          type: array
                          nullable: true
                          description: 'Array of subfields for complex field types (address, monetary), null for simple field types'
                          items:
                            type: object
                            properties:
                              field_code:
                                type: string
                                description: The subfield identifier
                              field_name:
                                type: string
                                description: The subfield display name
                              field_type:
                                type: string
                                description: The subfield type
                        is_custom_field:
                          type: boolean
                          description: Whether this is a user-created custom field
                        is_optional_response_field:
                          type: boolean
                          description: Whether this field is not returned by default in entity responses
                        ui_visibility:
                          type: object
                          description: UI visibility settings (only included when requested via include_fields parameter)
                          properties:
                            add_visible_flag:
                              type: boolean
                              description: Whether the field is shown in the add modal
                            details_visible_flag:
                              type: boolean
                              description: Whether the field is shown in the details view
                        important_fields:
                          type: object
                          description: Important fields configuration
                          properties:
                            enabled:
                              type: boolean
                              description: Whether the field is marked as important
                            stage_ids:
                              type: array
                              items:
                                type: integer
                              description: Array of deal stage IDs where the field is important
                        required_fields:
                          type: object
                          description: Required fields configuration
                          properties:
                            enabled:
                              type: boolean
                              description: Whether the field is required
                  additional_data:
                    type: object
                    properties:
                      next_cursor:
                        type: string
                        nullable: true
                        description: 'Base64url-encoded cursor for fetching the next page of results, null if no more pages'
              example:
                success: true
                data:
                  - field_name: Project Name
                    field_code: name
                    field_type: varchar
                    options: null
                    subfields: null
                    is_custom_field: false
                    is_optional_response_field: false
                    ui_visibility:
                      add_visible_flag: true
                      details_visible_flag: true
                    important_fields:
                      enabled: false
                      stage_ids: []
                    required_fields:
                      enabled: true
                  - field_name: Category
                    field_code: 40characterhashforcustomfieldidentifier
                    field_type: enum
                    options:
                      - id: 1
                        label: Internal
                      - id: 2
                        label: External
                      - id: 3
                        label: Research
                    subfields: null
                    is_custom_field: true
                    is_optional_response_field: false
                    ui_visibility:
                      add_visible_flag: true
                      details_visible_flag: true
                    important_fields:
                      enabled: false
                      stage_ids: []
                    required_fields:
                      enabled: false
                additional_data:
                  next_cursor: eyJmaWVsZCI6ImlkIiwiZmllbGRWYWx1ZSI6Nywic29ydERpcmVjdGlvbiI6ImFzYyIsImlkIjo3fQ
    post:
      summary: Create one project field
      description: Creates a new project custom field.
      x-token-cost: 5
      operationId: addProjectField
      tags:
        - ProjectFields
        - Beta
      security:
        - api_key: []
        - oauth2:
            - 'project-fields:full'
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              required:
                - field_name
                - field_type
              properties:
                field_name:
                  type: string
                  minLength: 1
                  maxLength: 255
                  description: Field name
                field_type:
                  type: string
                  description: 'The type of the field<table><tr><th>Value</th><th>Description</th></tr><tr><td>`varchar`</td><td>Text (up to 255 characters)</td><tr><td>`varchar_auto`</td><td>Autocomplete text (up to 255 characters)</td><tr><td>`text`</td><td>Long text (up to 65k characters)</td><tr><td>`double`</td><td>Numeric value</td><tr><td>`monetary`</td><td>Monetary field (has a numeric value and a currency value)</td><tr><td>`date`</td><td>Date (format YYYY-MM-DD)</td><tr><td>`set`</td><td>Options field with a possibility of having multiple chosen options</td><tr><td>`enum`</td><td>Options field with a single possible chosen option</td><tr><td>`user`</td><td>User field (contains a user ID of another Pipedrive user)</td><tr><td>`org`</td><td>Organization field (contains an organization ID which is stored on the same account)</td><tr><td>`people`</td><td>Person field (contains a person ID which is stored on the same account)</td><tr><td>`phone`</td><td>Phone field (up to 255 numbers and/or characters)</td><tr><td>`time`</td><td>Time field (format HH:MM:SS)</td><tr><td>`timerange`</td><td>Time-range field (has a start time and end time value, both HH:MM:SS)</td><tr><td>`daterange`</td><td>Date-range field (has a start date and end date value, both YYYY-MM-DD)</td><tr><td>`address`</td><td>Address field</dd></table>'
                  enum:
                    - varchar
                    - text
                    - double
                    - phone
                    - date
                    - daterange
                    - time
                    - timerange
                    - set
                    - enum
                    - varchar_auto
                    - address
                    - monetary
                    - org
                    - people
                    - user
                options:
                  type: array
                  description: Field options (required for enum and set field types)
                  items:
                    type: object
                    required:
                      - label
                    properties:
                      label:
                        type: string
                        description: The option label
                ui_visibility:
                  type: object
                  description: UI visibility settings for the field. Controls where the field appears in the Pipedrive web UI.
                  additionalProperties: true
                  properties:
                    add_visible_flag:
                      type: boolean
                      description: Whether the field is shown in the add project modal. Default is false.
                      default: false
                    details_visible_flag:
                      type: boolean
                      description: Whether the field is shown in the project details view. Default is true.
                      default: true
                important_fields:
                  type: object
                  description: Configuration for highlighting the field at specific stages.
                  additionalProperties: true
                  properties:
                    enabled:
                      type: boolean
                      description: 'Whether the field is marked as important. When false, the field is not highlighted. When true with empty stage_ids, the field is important everywhere. When true with specific stage_ids, the field is important only at those deal stages. Default is false.'
                      default: false
                    stage_ids:
                      type: array
                      items:
                        type: integer
                      description: 'Array of deal stage IDs where this project field should be highlighted as important. Must reference valid, active deal stages. Empty array when enabled is false.'
                      default: []
                required_fields:
                  type: object
                  description: Required fields configuration for marking the field as mandatory when interacted with in the Pipedrive web UI.
                  additionalProperties: true
                  properties:
                    enabled:
                      type: boolean
                      description: 'Whether the field is required. When false, the field is optional. When true, the field is required when creating or updating projects. Default is false.'
                      default: false
      responses:
        '200':
          description: Create one project field
          content:
            application/json:
              schema:
                type: object
                properties:
                  success:
                    type: boolean
                    description: Whether the request was successful
                  data:
                    type: object
                    required:
                      - field_name
                      - field_code
                      - field_type
                      - is_custom_field
                      - is_optional_response_field
                    properties:
                      field_name:
                        type: string
                        description: The display name/label of the field
                      field_code:
                        type: string
                        description: The unique identifier for the field (40-character hash for custom fields)
                      field_type:
                        type: string
                        description: The type of the field
                        enum:
                          - int
                          - double
                          - boolean
                          - varchar
                          - text
                          - phone
                          - varchar_options
                          - varchar_auto
                          - date
                          - daterange
                          - time
                          - timerange
                          - enum
                          - set
                          - address
                          - monetary
                          - deal
                          - deals
                          - lead
                          - org
                          - people
                          - project
                          - stage
                          - user
                          - activity
                          - json
                          - picture
                          - status
                          - visible_to
                          - price_list
                          - billing_frequency
                          - projects_board
                          - projects_phase
                      options:
                        type: array
                        nullable: true
                        description: 'Array of available options for enum/set fields, null for other field types'
                        items:
                          type: object
                          properties:
                            id:
                              type: integer
                              description: The option ID
                            label:
                              type: string
                              description: The option display label
                            color:
                              type: string
                              nullable: true
                              description: Optional color code for the option
                            update_time:
                              type: string
                              format: date-time
                              nullable: true
                              description: When the option was last updated
                            add_time:
                              type: string
                              format: date-time
                              nullable: true
                              description: When the option was created
                      subfields:
                        type: array
                        nullable: true
                        description: 'Array of subfields for complex field types (address, monetary), null for simple field types'
                        items:
                          type: object
                          properties:
                            field_code:
                              type: string
                              description: The subfield identifier
                            field_name:
                              type: string
                              description: The subfield display name
                            field_type:
                              type: string
                              description: The subfield type
                      is_custom_field:
                        type: boolean
                        description: Whether this is a user-created custom field
                      is_optional_response_field:
                        type: boolean
                        description: Whether this field is not returned by default in entity responses
                      ui_visibility:
                        type: object
                        description: UI visibility settings (only included when requested via include_fields parameter)
                        properties:
                          add_visible_flag:
                            type: boolean
                            description: Whether the field is shown in the add modal
                          details_visible_flag:
                            type: boolean
                            description: Whether the field is shown in the details view
                      important_fields:
                        type: object
                        description: Important fields configuration
                        properties:
                          enabled:
                            type: boolean
                            description: Whether the field is marked as important
                          stage_ids:
                            type: array
                            items:
                              type: integer
                            description: Array of deal stage IDs where the field is important
                      required_fields:
                        type: object
                        description: Required fields configuration
                        properties:
                          enabled:
                            type: boolean
                            description: Whether the field is required
              example:
                success: true
                data:
                  field_name: Category
                  field_code: 946947d1b02fd3ef20798d6112ec5d895a686a21
                  field_type: enum
                  options:
                    - id: 1
                      label: Internal
                    - id: 2
                      label: External
                    - id: 3
                      label: Research
                  subfields: null
                  is_custom_field: true
                  is_optional_response_field: false
                  ui_visibility:
                    add_visible_flag: true
                    details_visible_flag: true
                  important_fields:
                    enabled: false
                    stage_ids: []
                  required_fields:
                    enabled: false
  '/projectFields/{field_code}':
    get:
      summary: Get one project field
      description: Returns metadata about a specific project field.
      x-token-cost: 1
      operationId: getProjectField
      tags:
        - ProjectFields
        - Beta
      security:
        - api_key: []
        - oauth2:
            - 'projects:read'
            - 'projects:full'
            - 'project-fields:full'
      parameters:
        - in: path
          name: field_code
          description: The unique code identifying the field
          required: true
          schema:
            type: string
      responses:
        '200':
          description: Get one project field
          content:
            application/json:
              schema:
                type: object
                properties:
                  success:
                    type: boolean
                    description: Whether the request was successful
                  data:
                    type: object
                    required:
                      - field_name
                      - field_code
                      - field_type
                      - is_custom_field
                      - is_optional_response_field
                    properties:
                      field_name:
                        type: string
                        description: The display name/label of the field
                      field_code:
                        type: string
                        description: The unique identifier for the field (40-character hash for custom fields)
                      field_type:
                        type: string
                        description: The type of the field
                        enum:
                          - int
                          - double
                          - boolean
                          - varchar
                          - text
                          - phone
                          - varchar_options
                          - varchar_auto
                          - date
                          - daterange
                          - time
                          - timerange
                          - enum
                          - set
                          - address
                          - monetary
                          - deal
                          - deals
                          - lead
                          - org
                          - people
                          - project
                          - stage
                          - user
                          - activity
                          - json
                          - picture
                          - status
                          - visible_to
                          - price_list
                          - billing_frequency
                          - projects_board
                          - projects_phase
                      options:
                        type: array
                        nullable: true
                        description: 'Array of available options for enum/set fields, null for other field types'
                        items:
                          type: object
                          properties:
                            id:
                              type: integer
                              description: The option ID
                            label:
                              type: string
                              description: The option display label
                            color:
                              type: string
                              nullable: true
                              description: Optional color code for the option
                            update_time:
                              type: string
                              format: date-time
                              nullable: true
                              description: When the option was last updated
                            add_time:
                              type: string
                              format: date-time
                              nullable: true
                              description: When the option was created
                      subfields:
                        type: array
                        nullable: true
                        description: 'Array of subfields for complex field types (address, monetary), null for simple field types'
                        items:
                          type: object
                          properties:
                            field_code:
                              type: string
                              description: The subfield identifier
                            field_name:
                              type: string
                              description: The subfield display name
                            field_type:
                              type: string
                              description: The subfield type
                      is_custom_field:
                        type: boolean
                        description: Whether this is a user-created custom field
                      is_optional_response_field:
                        type: boolean
                        description: Whether this field is not returned by default in entity responses
                      ui_visibility:
                        type: object
                        description: UI visibility settings (only included when requested via include_fields parameter)
                        properties:
                          add_visible_flag:
                            type: boolean
                            description: Whether the field is shown in the add modal
                          details_visible_flag:
                            type: boolean
                            description: Whether the field is shown in the details view
                      important_fields:
                        type: object
                        description: Important fields configuration
                        properties:
                          enabled:
                            type: boolean
                            description: Whether the field is marked as important
                          stage_ids:
                            type: array
                            items:
                              type: integer
                            description: Array of deal stage IDs where the field is important
                      required_fields:
                        type: object
                        description: Required fields configuration
                        properties:
                          enabled:
                            type: boolean
                            description: Whether the field is required
              example:
                success: true
                data:
                  field_name: Project Name
                  field_code: name
                  field_type: varchar
                  options: null
                  subfields: null
                  is_custom_field: false
                  is_optional_response_field: false
                  ui_visibility:
                    add_visible_flag: true
                    details_visible_flag: true
                  important_fields:
                    enabled: false
                    stage_ids: []
                  required_fields:
                    enabled: true
    patch:
      summary: Update one project field
      description: Updates a project custom field. The field_code and field_type cannot be changed. At least one field must be provided in the request body.
      x-token-cost: 5
      operationId: updateProjectField
      tags:
        - ProjectFields
        - Beta
      security:
        - api_key: []
        - oauth2:
            - 'project-fields:full'
      parameters:
        - in: path
          name: field_code
          description: The unique code identifying the field
          required: true
          schema:
            type: string
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              minProperties: 1
              properties:
                field_name:
                  type: string
                  minLength: 1
                  maxLength: 255
                  description: Field name
                ui_visibility:
                  type: object
                  description: UI visibility settings for the field. Controls where the field appears in the Pipedrive web UI.
                  additionalProperties: true
                  properties:
                    add_visible_flag:
                      type: boolean
                      description: Whether the field is shown in the add project modal. Default is false.
                      default: false
                    details_visible_flag:
                      type: boolean
                      description: Whether the field is shown in the project details view. Default is true.
                      default: true
                important_fields:
                  type: object
                  description: Configuration for highlighting the field at specific stages.
                  additionalProperties: true
                  properties:
                    enabled:
                      type: boolean
                      description: 'Whether the field is marked as important. When false, the field is not highlighted. When true with empty stage_ids, the field is important everywhere. When true with specific stage_ids, the field is important only at those deal stages. Default is false.'
                      default: false
                    stage_ids:
                      type: array
                      items:
                        type: integer
                      description: 'Array of deal stage IDs where this project field should be highlighted as important. Must reference valid, active deal stages. Empty array when enabled is false.'
                      default: []
                required_fields:
                  type: object
                  description: Required fields configuration for marking the field as mandatory when interacted with in the Pipedrive web UI.
                  additionalProperties: true
                  properties:
                    enabled:
                      type: boolean
                      description: 'Whether the field is required. When false, the field is optional. When true, the field is required when creating or updating projects. Default is false.'
                      default: false
      responses:
        '200':
          description: Get one project field
          content:
            application/json:
              schema:
                type: object
                properties:
                  success:
                    type: boolean
                    description: Whether the request was successful
                  data:
                    type: object
                    required:
                      - field_name
                      - field_code
                      - field_type
                      - is_custom_field
                      - is_optional_response_field
                    properties:
                      field_name:
                        type: string
                        description: The display name/label of the field
                      field_code:
                        type: string
                        description: The unique identifier for the field (40-character hash for custom fields)
                      field_type:
                        type: string
                        description: The type of the field
                        enum:
                          - int
                          - double
                          - boolean
                          - varchar
                          - text
                          - phone
                          - varchar_options
                          - varchar_auto
                          - date
                          - daterange
                          - time
                          - timerange
                          - enum
                          - set
                          - address
                          - monetary
                          - deal
                          - deals
                          - lead
                          - org
                          - people
                          - project
                          - stage
                          - user
                          - activity
                          - json
                          - picture
                          - status
                          - visible_to
                          - price_list
                          - billing_frequency
                          - projects_board
                          - projects_phase
                      options:
                        type: array
                        nullable: true
                        description: 'Array of available options for enum/set fields, null for other field types'
                        items:
                          type: object
                          properties:
                            id:
                              type: integer
                              description: The option ID
                            label:
                              type: string
                              description: The option display label
                            color:
                              type: string
                              nullable: true
                              description: Optional color code for the option
                            update_time:
                              type: string
                              format: date-time
                              nullable: true
                              description: When the option was last updated
                            add_time:
                              type: string
                              format: date-time
                              nullable: true
                              description: When the option was created
                      subfields:
                        type: array
                        nullable: true
                        description: 'Array of subfields for complex field types (address, monetary), null for simple field types'
                        items:
                          type: object
                          properties:
                            field_code:
                              type: string
                              description: The subfield identifier
                            field_name:
                              type: string
                              description: The subfield display name
                            field_type:
                              type: string
                              description: The subfield type
                      is_custom_field:
                        type: boolean
                        description: Whether this is a user-created custom field
                      is_optional_response_field:
                        type: boolean
                        description: Whether this field is not returned by default in entity responses
                      ui_visibility:
                        type: object
                        description: UI visibility settings (only included when requested via include_fields parameter)
                        properties:
                          add_visible_flag:
                            type: boolean
                            description: Whether the field is shown in the add modal
                          details_visible_flag:
                            type: boolean
                            description: Whether the field is shown in the details view
                      important_fields:
                        type: object
                        description: Important fields configuration
                        properties:
                          enabled:
                            type: boolean
                            description: Whether the field is marked as important
                          stage_ids:
                            type: array
                            items:
                              type: integer
                            description: Array of deal stage IDs where the field is important
                      required_fields:
                        type: object
                        description: Required fields configuration
                        properties:
                          enabled:
                            type: boolean
                            description: Whether the field is required
              example:
                success: true
                data:
                  field_name: Project Name
                  field_code: name
                  field_type: varchar
                  options: null
                  subfields: null
                  is_custom_field: false
                  is_optional_response_field: false
                  ui_visibility:
                    add_visible_flag: true
                    details_visible_flag: true
                  important_fields:
                    enabled: false
                    stage_ids: []
                  required_fields:
                    enabled: true
    delete:
      summary: Delete one project field
      description: Marks a custom field as deleted.
      x-token-cost: 3
      operationId: deleteProjectField
      tags:
        - ProjectFields
        - Beta
      security:
        - api_key: []
        - oauth2:
            - 'project-fields:full'
      parameters:
        - in: path
          name: field_code
          description: The unique code identifying the field
          required: true
          schema:
            type: string
      responses:
        '200':
          description: Delete one project field
          content:
            application/json:
              schema:
                type: object
                properties:
                  success:
                    type: boolean
                    description: Whether the request was successful
                  data:
                    type: object
                    required:
                      - field_name
                      - field_code
                      - field_type
                      - is_custom_field
                      - is_optional_response_field
                    properties:
                      field_name:
                        type: string
                        description: The display name/label of the field
                      field_code:
                        type: string
                        description: The unique identifier for the field (40-character hash for custom fields)
                      field_type:
                        type: string
                        description: The type of the field
                      options:
                        type: array
                        nullable: true
                        description: 'Array of available options for enum/set fields, null for other field types'
                        items:
                          type: object
                      subfields:
                        type: array
                        nullable: true
                        description: 'Array of subfields for complex field types, null for simple field types'
                        items:
                          type: object
                      is_custom_field:
                        type: boolean
                        description: Whether this is a user-created custom field
                      is_optional_response_field:
                        type: boolean
                        description: Whether this field is not returned by default in entity responses
              example:
                success: true
                data:
                  field_name: Custom text field
                  field_code: 946947d1b02fd3ef20798d6112ec5d895a686a21
                  field_type: varchar
                  options: null
                  subfields: null
                  is_custom_field: true
                  is_optional_response_field: false
  '/projectFields/{field_code}/options':
    post:
      summary: Add project field options in bulk
      description: Adds new options to a project custom field that supports options (enum or set field types). This operation is atomic - all options are added or none are added. Returns only the newly added options.
      x-token-cost: 5
      operationId: addProjectFieldOptions
      tags:
        - ProjectFields
        - Beta
      security:
        - api_key: []
        - oauth2:
            - 'project-fields:full'
      parameters:
        - in: path
          name: field_code
          description: The unique code identifying the field
          required: true
          schema:
            type: string
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: array
              description: Array of options to add. Each item must contain a label. At least one option is required.
              items:
                type: object
                required:
                  - label
                properties:
                  label:
                    type: string
                    minLength: 1
                    maxLength: 255
                    description: The display label for the new option
      responses:
        '200':
          description: Field options operation result
          content:
            application/json:
              schema:
                type: object
                properties:
                  success:
                    type: boolean
                  data:
                    type: array
                    items:
                      type: object
                      required:
                        - id
                        - label
                      properties:
                        id:
                          type: integer
                          description: The unique identifier of the option
                        label:
                          type: string
                          description: The display label of the option
                  additional_data:
                    type: object
                    nullable: true
              example:
                success: true
                data:
                  - id: 4
                    label: Research & Development
                additional_data: null
    delete:
      summary: Delete project field options in bulk
      description: Removes existing options from a project custom field. This operation is atomic and fails if any of the specified option IDs do not exist. Returns only the deleted options.
      x-token-cost: 3
      operationId: deleteProjectFieldOptions
      tags:
        - ProjectFields
        - Beta
      security:
        - api_key: []
        - oauth2:
            - 'project-fields:full'
      parameters:
        - in: path
          name: field_code
          description: The unique code identifying the field
          required: true
          schema:
            type: string
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: array
              description: Array of option IDs to delete. Each item must contain an ID of the option to delete. At least one option ID is required. The entire request fails if any option does not exist.
              items:
                type: object
                required:
                  - id
                properties:
                  id:
                    type: integer
                    description: The unique identifier of the option to delete
      responses:
        '200':
          description: Field options operation result
          content:
            application/json:
              schema:
                type: object
                properties:
                  success:
                    type: boolean
                  data:
                    type: array
                    items:
                      type: object
                      required:
                        - id
                        - label
                      properties:
                        id:
                          type: integer
                          description: The unique identifier of the option
                        label:
                          type: string
                          description: The display label of the option
                  additional_data:
                    type: object
                    nullable: true
              example:
                success: true
                data:
                  - id: 4
                    label: Research & Development
                additional_data: null
    patch:
      summary: Update project field options in bulk
      description: Updates existing options for a project custom field. This operation is atomic and fails if any of the specified option IDs do not exist. Returns only the updated options.
      x-token-cost: 5
      operationId: updateProjectFieldOptions
      tags:
        - ProjectFields
        - Beta
      security:
        - api_key: []
        - oauth2:
            - 'project-fields:full'
      parameters:
        - in: path
          name: field_code
          description: The unique code identifying the field
          required: true
          schema:
            type: string
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: array
              description: Array of options to update. Each item must contain an ID and the updated label. At least one option is required. The entire request fails if any option does not exist.
              items:
                type: object
                required:
                  - id
                  - label
                properties:
                  id:
                    type: integer
                    description: The unique identifier of the option to update
                  label:
                    type: string
                    minLength: 1
                    maxLength: 255
                    description: The new display label for the option
      responses:
        '200':
          description: Field options operation result
          content:
            application/json:
              schema:
                type: object
                properties:
                  success:
                    type: boolean
                  data:
                    type: array
                    items:
                      type: object
                      required:
                        - id
                        - label
                      properties:
                        id:
                          type: integer
                          description: The unique identifier of the option
                        label:
                          type: string
                          description: The display label of the option
                  additional_data:
                    type: object
                    nullable: true
              example:
                success: true
                data:
                  - id: 4
                    label: Research & Development
                additional_data: null
  /projects:
    get:
      summary: Get all projects
      description: Returns all non-archived projects.
      x-token-cost: 10
      operationId: getProjects
      tags:
        - Projects
      security:
        - api_key: []
        - oauth2:
            - 'projects:read'
            - 'projects:full'
      parameters:
        - in: query
          name: filter_id
          schema:
            type: integer
          description: 'If supplied, only projects matching the specified filter are returned'
        - in: query
          name: status
          schema:
            type: string
            example: 'open,completed'
          description: 'If supplied, includes only projects with the specified statuses. Possible values are `open`, `completed`, `canceled` and `deleted`. By default `deleted` projects are not returned.'
        - in: query
          name: phase_id
          schema:
            type: integer
          description: 'If supplied, only projects in the specified phase are returned'
        - in: query
          name: limit
          description: 'For pagination, the limit of entries to be returned. If not provided, 100 items will be returned. Please note that a maximum value of 500 is allowed.'
          schema:
            type: integer
            example: 100
        - in: query
          name: cursor
          required: false
          schema:
            type: string
          description: 'For pagination, the marker (an opaque string value) representing the first item on the next page'
      responses:
        '200':
          description: Get all projects
          content:
            application/json:
              schema:
                type: object
                title: GetProjectsResponse
                allOf:
                  - title: baseResponse
                    type: object
                    properties:
                      success:
                        type: boolean
                        description: If the response is successful or not
                  - type: object
                    properties:
                      data:
                        type: array
                        description: Projects array
                        items:
                          title: Project
                          type: object
                          properties:
                            id:
                              type: integer
                              description: The ID of the project
                            title:
                              type: string
                              description: The title of the project
                            description:
                              type: string
                              description: The description of the project
                            status:
                              type: string
                              description: The status of the project
                            board_id:
                              type: integer
                              description: The ID of the board this project is associated with
                            phase_id:
                              type: integer
                              description: The ID of the phase this project is associated with
                            owner_id:
                              type: integer
                              description: The ID of the user who owns the project
                            start_date:
                              type: string
                              format: date
                              description: 'The start date of the project. Format: YYYY-MM-DD'
                            end_date:
                              type: string
                              format: date
                              description: 'The end date of the project. Format: YYYY-MM-DD'
                            deal_ids:
                              type: array
                              description: An array of IDs of the deals this project is associated with
                              items:
                                type: integer
                            person_ids:
                              type: array
                              description: An array of IDs of the persons this project is associated with
                              items:
                                type: integer
                            org_ids:
                              type: array
                              description: An array of IDs of the organizations this project is associated with
                              items:
                                type: integer
                            label_ids:
                              type: array
                              description: An array of IDs of the labels this project has
                              items:
                                type: integer
                            health_status:
                              type: string
                              nullable: true
                              description: The health status of the project
                            add_time:
                              type: string
                              description: The creation date and time of the project in ISO 8601 format
                            update_time:
                              type: string
                              description: The last updated date and time of the project in ISO 8601 format
                            status_change_time:
                              type: string
                              description: The date and time of the last status change of the project in ISO 8601 format
                            archive_time:
                              type: string
                              nullable: true
                              description: 'The date and time the project was archived in ISO 8601 format. If not archived, this field is null.'
                            custom_fields:
                              type: object
                              additionalProperties: true
                              description: 'An object where each key represents a custom field. All custom fields are referenced as randomly generated 40-character hashes. To clear a custom field value, set it to `null`. For multi-option fields (field type `set`), use `null` to clear the selection — sending an empty array `[]` is not supported and will result in a validation error.'
                      additional_data:
                        type: object
                        description: The additional data of the list
                        properties:
                          next_cursor:
                            type: string
                            description: The first item on the next page. The value of the `next_cursor` field will be `null` if you have reached the end of the dataset and there’s no more pages to be returned.
              example:
                success: true
                data:
                  - id: 3
                    title: Project
                    description: Description
                    status: open
                    board_id: 1
                    phase_id: 1
                    owner_id: 1
                    start_date: '2026-04-15'
                    end_date: '2026-04-23'
                    deal_ids:
                      - 1
                    person_ids:
                      - 1
                    org_ids:
                      - 1
                    label_ids:
                      - 1
                    health_status: null
                    add_time: '2026-04-14T10:45:20.852Z'
                    update_time: '2026-04-14T10:45:20.852Z'
                    status_change_time: '2026-04-14T10:45:20.852Z'
                    archive_time: null
                    custom_fields: {}
                additional_data:
                  next_cursor: eyJmaWVsZCI6ImlkIiwiZmllbGRWYWx1ZSI6Nywic29ydERpcmVjdGlvbiI6ImFzYyIsImlkIjo3fQ
    post:
      summary: Add a project
      description: Adds a new project. Custom fields should be wrapped in the `custom_fields` object.
      x-token-cost: 5
      operationId: addProject
      tags:
        - Projects
      security:
        - api_key: []
        - oauth2:
            - 'projects:full'
      requestBody:
        required: true
        content:
          application/json:
            schema:
              required:
                - title
              type: object
              properties:
                title:
                  type: string
                  description: The title of the project
                description:
                  type: string
                  description: The description of the project
                status:
                  type: string
                  description: The status of the project
                board_id:
                  type: integer
                  description: The ID of the board this project is associated with
                phase_id:
                  type: integer
                  description: The ID of the phase this project is associated with
                owner_id:
                  type: integer
                  description: The ID of the user who owns the project
                start_date:
                  type: string
                  format: date
                  description: 'The start date of the project. Format: YYYY-MM-DD'
                end_date:
                  type: string
                  format: date
                  description: 'The end date of the project. Format: YYYY-MM-DD'
                deal_ids:
                  type: array
                  description: An array of IDs of the deals this project is associated with
                  items:
                    type: integer
                person_ids:
                  type: array
                  description: An array of IDs of the persons this project is associated with
                  items:
                    type: integer
                org_ids:
                  type: array
                  description: An array of IDs of the organizations this project is associated with
                  items:
                    type: integer
                label_ids:
                  type: array
                  description: An array of IDs of the labels this project has
                  items:
                    type: integer
                template_id:
                  type: integer
                  description: The ID of the template the project will be based on. Only used when creating a new project.
                custom_fields:
                  type: object
                  additionalProperties: true
                  description: 'An object where each key represents a custom field. All custom fields are referenced as randomly generated 40-character hashes. To clear a custom field value, set it to `null`. For multi-option fields (field type `set`), use `null` to clear the selection — sending an empty array `[]` is not supported and will result in a validation error.'
      responses:
        '201':
          description: Add project
          content:
            application/json:
              schema:
                type: object
                title: UpsertProjectResponse
                allOf:
                  - title: baseResponse
                    type: object
                    properties:
                      success:
                        type: boolean
                        description: If the response is successful or not
                  - type: object
                    properties:
                      data:
                        title: Project
                        type: object
                        properties:
                          id:
                            type: integer
                            description: The ID of the project
                          title:
                            type: string
                            description: The title of the project
                          description:
                            type: string
                            description: The description of the project
                          status:
                            type: string
                            description: The status of the project
                          board_id:
                            type: integer
                            description: The ID of the board this project is associated with
                          phase_id:
                            type: integer
                            description: The ID of the phase this project is associated with
                          owner_id:
                            type: integer
                            description: The ID of the user who owns the project
                          start_date:
                            type: string
                            format: date
                            description: 'The start date of the project. Format: YYYY-MM-DD'
                          end_date:
                            type: string
                            format: date
                            description: 'The end date of the project. Format: YYYY-MM-DD'
                          deal_ids:
                            type: array
                            description: An array of IDs of the deals this project is associated with
                            items:
                              type: integer
                          person_ids:
                            type: array
                            description: An array of IDs of the persons this project is associated with
                            items:
                              type: integer
                          org_ids:
                            type: array
                            description: An array of IDs of the organizations this project is associated with
                            items:
                              type: integer
                          label_ids:
                            type: array
                            description: An array of IDs of the labels this project has
                            items:
                              type: integer
                          health_status:
                            type: string
                            nullable: true
                            description: The health status of the project
                          add_time:
                            type: string
                            description: The creation date and time of the project in ISO 8601 format
                          update_time:
                            type: string
                            description: The last updated date and time of the project in ISO 8601 format
                          status_change_time:
                            type: string
                            description: The date and time of the last status change of the project in ISO 8601 format
                          archive_time:
                            type: string
                            nullable: true
                            description: 'The date and time the project was archived in ISO 8601 format. If not archived, this field is null.'
                          custom_fields:
                            type: object
                            additionalProperties: true
                            description: 'An object where each key represents a custom field. All custom fields are referenced as randomly generated 40-character hashes. To clear a custom field value, set it to `null`. For multi-option fields (field type `set`), use `null` to clear the selection — sending an empty array `[]` is not supported and will result in a validation error.'
              example:
                success: true
                data:
                  id: 3
                  title: Project
                  description: Description
                  status: open
                  board_id: 1
                  phase_id: 1
                  owner_id: 1
                  start_date: '2026-04-15'
                  end_date: '2026-04-23'
                  deal_ids:
                    - 1
                  person_ids:
                    - 1
                  org_ids:
                    - 1
                  label_ids:
                    - 1
                  health_status: null
                  add_time: '2026-04-14T10:45:20.852Z'
                  update_time: '2026-04-14T10:45:20.852Z'
                  status_change_time: '2026-04-14T10:45:20.852Z'
                  archive_time: null
                  custom_fields: {}
  /projects/archived:
    get:
      summary: Get all archived projects
      description: Returns all archived projects.
      x-token-cost: 10
      operationId: getArchivedProjects
      tags:
        - Projects
      security:
        - api_key: []
        - oauth2:
            - 'projects:read'
            - 'projects:full'
      parameters:
        - in: query
          name: filter_id
          schema:
            type: integer
          description: 'If supplied, only projects matching the specified filter are returned'
        - in: query
          name: status
          schema:
            type: string
            example: 'open,completed'
          description: 'If supplied, includes only projects with the specified statuses. Possible values are `open`, `completed`, `canceled` and `deleted`. By default `deleted` projects are not returned.'
        - in: query
          name: phase_id
          schema:
            type: integer
          description: 'If supplied, only projects in the specified phase are returned'
        - in: query
          name: limit
          description: 'For pagination, the limit of entries to be returned. If not provided, 100 items will be returned. Please note that a maximum value of 500 is allowed.'
          schema:
            type: integer
            example: 100
        - in: query
          name: cursor
          required: false
          schema:
            type: string
          description: 'For pagination, the marker (an opaque string value) representing the first item on the next page'
      responses:
        '200':
          description: Get all projects
          content:
            application/json:
              schema:
                type: object
                title: GetProjectsResponse
                allOf:
                  - title: baseResponse
                    type: object
                    properties:
                      success:
                        type: boolean
                        description: If the response is successful or not
                  - type: object
                    properties:
                      data:
                        type: array
                        description: Projects array
                        items:
                          title: Project
                          type: object
                          properties:
                            id:
                              type: integer
                              description: The ID of the project
                            title:
                              type: string
                              description: The title of the project
                            description:
                              type: string
                              description: The description of the project
                            status:
                              type: string
                              description: The status of the project
                            board_id:
                              type: integer
                              description: The ID of the board this project is associated with
                            phase_id:
                              type: integer
                              description: The ID of the phase this project is associated with
                            owner_id:
                              type: integer
                              description: The ID of the user who owns the project
                            start_date:
                              type: string
                              format: date
                              description: 'The start date of the project. Format: YYYY-MM-DD'
                            end_date:
                              type: string
                              format: date
                              description: 'The end date of the project. Format: YYYY-MM-DD'
                            deal_ids:
                              type: array
                              description: An array of IDs of the deals this project is associated with
                              items:
                                type: integer
                            person_ids:
                              type: array
                              description: An array of IDs of the persons this project is associated with
                              items:
                                type: integer
                            org_ids:
                              type: array
                              description: An array of IDs of the organizations this project is associated with
                              items:
                                type: integer
                            label_ids:
                              type: array
                              description: An array of IDs of the labels this project has
                              items:
                                type: integer
                            health_status:
                              type: string
                              nullable: true
                              description: The health status of the project
                            add_time:
                              type: string
                              description: The creation date and time of the project in ISO 8601 format
                            update_time:
                              type: string
                              description: The last updated date and time of the project in ISO 8601 format
                            status_change_time:
                              type: string
                              description: The date and time of the last status change of the project in ISO 8601 format
                            archive_time:
                              type: string
                              nullable: true
                              description: 'The date and time the project was archived in ISO 8601 format. If not archived, this field is null.'
                            custom_fields:
                              type: object
                              additionalProperties: true
                              description: 'An object where each key represents a custom field. All custom fields are referenced as randomly generated 40-character hashes. To clear a custom field value, set it to `null`. For multi-option fields (field type `set`), use `null` to clear the selection — sending an empty array `[]` is not supported and will result in a validation error.'
                      additional_data:
                        type: object
                        description: The additional data of the list
                        properties:
                          next_cursor:
                            type: string
                            description: The first item on the next page. The value of the `next_cursor` field will be `null` if you have reached the end of the dataset and there’s no more pages to be returned.
              example:
                success: true
                data:
                  - id: 3
                    title: Project
                    description: Description
                    status: open
                    board_id: 1
                    phase_id: 1
                    owner_id: 1
                    start_date: '2026-04-15'
                    end_date: '2026-04-23'
                    deal_ids:
                      - 1
                    person_ids:
                      - 1
                    org_ids:
                      - 1
                    label_ids:
                      - 1
                    health_status: null
                    add_time: '2026-04-14T10:45:20.852Z'
                    update_time: '2026-04-14T10:45:20.852Z'
                    status_change_time: '2026-04-14T10:45:20.852Z'
                    archive_time: null
                    custom_fields: {}
                additional_data:
                  next_cursor: eyJmaWVsZCI6ImlkIiwiZmllbGRWYWx1ZSI6Nywic29ydERpcmVjdGlvbiI6ImFzYyIsImlkIjo3fQ
  '/projects/{id}':
    get:
      summary: Get details of a project
      description: Returns the details of a specific project. Custom fields appear as keys inside the `custom_fields` object.
      x-token-cost: 1
      operationId: getProject
      tags:
        - Projects
      security:
        - api_key: []
        - oauth2:
            - 'projects:read'
            - 'projects:full'
      parameters:
        - in: path
          name: id
          description: The ID of the project
          required: true
          schema:
            type: integer
      responses:
        '200':
          description: Get project
          content:
            application/json:
              schema:
                type: object
                title: UpsertProjectResponse
                allOf:
                  - title: baseResponse
                    type: object
                    properties:
                      success:
                        type: boolean
                        description: If the response is successful or not
                  - type: object
                    properties:
                      data:
                        title: Project
                        type: object
                        properties:
                          id:
                            type: integer
                            description: The ID of the project
                          title:
                            type: string
                            description: The title of the project
                          description:
                            type: string
                            description: The description of the project
                          status:
                            type: string
                            description: The status of the project
                          board_id:
                            type: integer
                            description: The ID of the board this project is associated with
                          phase_id:
                            type: integer
                            description: The ID of the phase this project is associated with
                          owner_id:
                            type: integer
                            description: The ID of the user who owns the project
                          start_date:
                            type: string
                            format: date
                            description: 'The start date of the project. Format: YYYY-MM-DD'
                          end_date:
                            type: string
                            format: date
                            description: 'The end date of the project. Format: YYYY-MM-DD'
                          deal_ids:
                            type: array
                            description: An array of IDs of the deals this project is associated with
                            items:
                              type: integer
                          person_ids:
                            type: array
                            description: An array of IDs of the persons this project is associated with
                            items:
                              type: integer
                          org_ids:
                            type: array
                            description: An array of IDs of the organizations this project is associated with
                            items:
                              type: integer
                          label_ids:
                            type: array
                            description: An array of IDs of the labels this project has
                            items:
                              type: integer
                          health_status:
                            type: string
                            nullable: true
                            description: The health status of the project
                          add_time:
                            type: string
                            description: The creation date and time of the project in ISO 8601 format
                          update_time:
                            type: string
                            description: The last updated date and time of the project in ISO 8601 format
                          status_change_time:
                            type: string
                            description: The date and time of the last status change of the project in ISO 8601 format
                          archive_time:
                            type: string
                            nullable: true
                            description: 'The date and time the project was archived in ISO 8601 format. If not archived, this field is null.'
                          custom_fields:
                            type: object
                            additionalProperties: true
                            description: 'An object where each key represents a custom field. All custom fields are referenced as randomly generated 40-character hashes. To clear a custom field value, set it to `null`. For multi-option fields (field type `set`), use `null` to clear the selection — sending an empty array `[]` is not supported and will result in a validation error.'
              example:
                success: true
                data:
                  id: 3
                  title: Project
                  description: Description
                  status: open
                  board_id: 1
                  phase_id: 1
                  owner_id: 1
                  start_date: '2026-04-15'
                  end_date: '2026-04-23'
                  deal_ids:
                    - 1
                  person_ids:
                    - 1
                  org_ids:
                    - 1
                  label_ids:
                    - 1
                  health_status: null
                  add_time: '2026-04-14T10:45:20.852Z'
                  update_time: '2026-04-14T10:45:20.852Z'
                  status_change_time: '2026-04-14T10:45:20.852Z'
                  archive_time: null
                  custom_fields: {}
    patch:
      summary: Update a project
      description: Updates the properties of a project.
      x-token-cost: 5
      operationId: updateProject
      tags:
        - Projects
      security:
        - api_key: []
        - oauth2:
            - 'projects:full'
      parameters:
        - in: path
          name: id
          description: The ID of the project
          required: true
          schema:
            type: integer
      requestBody:
        content:
          application/json:
            schema:
              type: object
              properties:
                title:
                  type: string
                  description: The title of the project
                description:
                  type: string
                  description: The description of the project
                status:
                  type: string
                  description: The status of the project
                board_id:
                  type: integer
                  description: The ID of the board this project is associated with
                phase_id:
                  type: integer
                  description: The ID of the phase this project is associated with
                owner_id:
                  type: integer
                  description: The ID of the user who owns the project
                start_date:
                  type: string
                  format: date
                  description: 'The start date of the project. Format: YYYY-MM-DD'
                end_date:
                  type: string
                  format: date
                  description: 'The end date of the project. Format: YYYY-MM-DD'
                deal_ids:
                  type: array
                  description: An array of IDs of the deals this project is associated with
                  items:
                    type: integer
                person_ids:
                  type: array
                  description: An array of IDs of the persons this project is associated with
                  items:
                    type: integer
                org_ids:
                  type: array
                  description: An array of IDs of the organizations this project is associated with
                  items:
                    type: integer
                label_ids:
                  type: array
                  description: An array of IDs of the labels this project has
                  items:
                    type: integer
                template_id:
                  type: integer
                  description: The ID of the template the project will be based on. Only used when creating a new project.
                custom_fields:
                  type: object
                  additionalProperties: true
                  description: 'An object where each key represents a custom field. All custom fields are referenced as randomly generated 40-character hashes. To clear a custom field value, set it to `null`. For multi-option fields (field type `set`), use `null` to clear the selection — sending an empty array `[]` is not supported and will result in a validation error.'
      responses:
        '200':
          description: Update project
          content:
            application/json:
              schema:
                type: object
                title: UpsertProjectResponse
                allOf:
                  - title: baseResponse
                    type: object
                    properties:
                      success:
                        type: boolean
                        description: If the response is successful or not
                  - type: object
                    properties:
                      data:
                        title: Project
                        type: object
                        properties:
                          id:
                            type: integer
                            description: The ID of the project
                          title:
                            type: string
                            description: The title of the project
                          description:
                            type: string
                            description: The description of the project
                          status:
                            type: string
                            description: The status of the project
                          board_id:
                            type: integer
                            description: The ID of the board this project is associated with
                          phase_id:
                            type: integer
                            description: The ID of the phase this project is associated with
                          owner_id:
                            type: integer
                            description: The ID of the user who owns the project
                          start_date:
                            type: string
                            format: date
                            description: 'The start date of the project. Format: YYYY-MM-DD'
                          end_date:
                            type: string
                            format: date
                            description: 'The end date of the project. Format: YYYY-MM-DD'
                          deal_ids:
                            type: array
                            description: An array of IDs of the deals this project is associated with
                            items:
                              type: integer
                          person_ids:
                            type: array
                            description: An array of IDs of the persons this project is associated with
                            items:
                              type: integer
                          org_ids:
                            type: array
                            description: An array of IDs of the organizations this project is associated with
                            items:
                              type: integer
                          label_ids:
                            type: array
                            description: An array of IDs of the labels this project has
                            items:
                              type: integer
                          health_status:
                            type: string
                            nullable: true
                            description: The health status of the project
                          add_time:
                            type: string
                            description: The creation date and time of the project in ISO 8601 format
                          update_time:
                            type: string
                            description: The last updated date and time of the project in ISO 8601 format
                          status_change_time:
                            type: string
                            description: The date and time of the last status change of the project in ISO 8601 format
                          archive_time:
                            type: string
                            nullable: true
                            description: 'The date and time the project was archived in ISO 8601 format. If not archived, this field is null.'
                          custom_fields:
                            type: object
                            additionalProperties: true
                            description: 'An object where each key represents a custom field. All custom fields are referenced as randomly generated 40-character hashes. To clear a custom field value, set it to `null`. For multi-option fields (field type `set`), use `null` to clear the selection — sending an empty array `[]` is not supported and will result in a validation error.'
              example:
                success: true
                data:
                  id: 3
                  title: Project
                  description: Description
                  status: open
                  board_id: 1
                  phase_id: 1
                  owner_id: 1
                  start_date: '2026-04-15'
                  end_date: '2026-04-23'
                  deal_ids:
                    - 1
                  person_ids:
                    - 1
                  org_ids:
                    - 1
                  label_ids:
                    - 1
                  health_status: null
                  add_time: '2026-04-14T10:45:20.852Z'
                  update_time: '2026-04-14T10:45:20.852Z'
                  status_change_time: '2026-04-14T10:45:20.852Z'
                  archive_time: null
                  custom_fields: {}
    delete:
      summary: Delete a project
      description: Marks a project as deleted.
      x-token-cost: 3
      operationId: deleteProject
      tags:
        - Projects
      security:
        - api_key: []
        - oauth2:
            - 'projects:full'
      parameters:
        - in: path
          name: id
          description: The ID of the project
          required: true
          schema:
            type: integer
      responses:
        '200':
          description: Delete project
          content:
            application/json:
              schema:
                title: DeleteProjectResponse
                type: object
                properties:
                  success:
                    type: boolean
                    description: If the response is successful or not
                  data:
                    type: object
                    properties:
                      id:
                        type: integer
                        description: The ID of the deleted project
              example:
                success: true
                data:
                  id: 3
  /projectTemplates:
    get:
      summary: Get all project templates
      description: Returns all not deleted project templates.
      x-token-cost: 10
      operationId: getProjectTemplates
      tags:
        - ProjectTemplates
      security:
        - api_key: []
        - oauth2:
            - 'projects:read'
            - 'projects:full'
      parameters:
        - in: query
          name: cursor
          required: false
          schema:
            type: string
          description: 'For pagination, the marker (an opaque string value) representing the first item on the next page'
        - in: query
          name: limit
          description: 'For pagination, the limit of entries to be returned. If not provided, 100 items will be returned. Please note that a maximum value of 500 is allowed.'
          schema:
            type: integer
            example: 100
      responses:
        '200':
          description: A list of project templates.
          content:
            application/json:
              schema:
                title: GetProjectTemplatesResponse
                type: object
                properties:
                  success:
                    type: boolean
                    description: If the response is successful or not
                  data:
                    type: array
                    items:
                      title: ProjectTemplate
                      type: object
                      properties:
                        id:
                          type: integer
                          description: The ID of the project template
                        title:
                          type: string
                          description: The title of the project template
                        description:
                          type: string
                          description: The description of the project template
                        projects_board_id:
                          type: integer
                          description: The ID of the project board this template is associated with
                        owner_id:
                          type: integer
                          description: The ID of the owner of the project template
                        add_time:
                          type: string
                          description: The creation date and time of the project template in ISO 8601 format
                        update_time:
                          type: string
                          description: The update date and time of the project template in ISO 8601 format
                  additional_data:
                    description: The additional data of the list
                    type: object
                    properties:
                      next_cursor:
                        type: string
                        description: The first item on the next page. The value of the `next_cursor` field will be `null` if you have reached the end of the dataset and there’s no more pages to be returned.
              example:
                success: true
                data:
                  - id: 1
                    title: Office Renovation
                    description: Template for office renovation projects
                    projects_board_id: 2
                    owner_id: 3
                    add_time: '2023-09-14T08:14:40.000Z'
                    update_time: '2023-09-14T08:14:40.000Z'
                additional_data:
                  next_cursor: eyJhY3Rpdml0aWVzIjoyN30
  '/projectTemplates/{id}':
    get:
      summary: Get details of a template
      description: Returns the details of a specific project template.
      x-token-cost: 1
      operationId: getProjectTemplate
      tags:
        - ProjectTemplates
      security:
        - api_key: []
        - oauth2:
            - 'projects:read'
            - 'projects:full'
      parameters:
        - in: path
          name: id
          description: The ID of the project template
          required: true
          schema:
            type: integer
      responses:
        '200':
          description: Get a project template.
          content:
            application/json:
              schema:
                title: GetProjectTemplateResponse
                type: object
                properties:
                  success:
                    type: boolean
                    description: If the response is successful or not
                  data:
                    title: ProjectTemplate
                    type: object
                    properties:
                      id:
                        type: integer
                        description: The ID of the project template
                      title:
                        type: string
                        description: The title of the project template
                      description:
                        type: string
                        description: The description of the project template
                      projects_board_id:
                        type: integer
                        description: The ID of the project board this template is associated with
                      owner_id:
                        type: integer
                        description: The ID of the owner of the project template
                      add_time:
                        type: string
                        description: The creation date and time of the project template in ISO 8601 format
                      update_time:
                        type: string
                        description: The update date and time of the project template in ISO 8601 format
                  additional_data:
                    type: object
                    nullable: true
                    example: null
              example:
                success: true
                data:
                  id: 1
                  title: Office Renovation
                  description: Template for office renovation projects
                  projects_board_id: 2
                  owner_id: 3
                  add_time: '2023-09-14T08:14:40.000Z'
                  update_time: '2023-09-14T08:14:40.000Z'
                additional_data: null
  /projects/search:
    get:
      summary: Search projects
      description: 'Searches all projects by title, description, notes and/or custom fields. This endpoint is a wrapper of <a href="https://developers.pipedrive.com/docs/api/v1/ItemSearch#searchItem">/v1/itemSearch</a> with a narrower OAuth scope. Found projects can be filtered by person ID or organization ID.'
      x-token-cost: 20
      operationId: searchProjects
      tags:
        - Projects
        - Beta
      security:
        - api_key: []
        - oauth2:
            - 'projects:read'
            - 'projects:full'
            - 'search:read'
      parameters:
        - in: query
          name: term
          required: true
          schema:
            type: string
          description: The search term to look for. Minimum 2 characters (or 1 if using `exact_match`). Please note that the search term has to be URL encoded.
        - in: query
          name: fields
          schema:
            type: string
            enum:
              - custom_fields
              - notes
              - title
              - description
          description: 'A comma-separated string array. The fields to perform the search from. Defaults to all of them. Only the following custom field types are searchable: `address`, `varchar`, `text`, `varchar_auto`, `double`, `monetary` and `phone`. Read more about searching by custom fields <a href="https://support.pipedrive.com/en/article/search-finding-what-you-need#searching-by-custom-fields" target="_blank" rel="noopener noreferrer">here</a>.'
        - in: query
          name: exact_match
          schema:
            type: boolean
          description: 'When enabled, only full exact matches against the given term are returned. It is <b>not</b> case sensitive.'
        - in: query
          name: person_id
          schema:
            type: integer
          description: Will filter projects by the provided person ID
        - in: query
          name: organization_id
          schema:
            type: integer
          description: Will filter projects by the provided organization ID
        - in: query
          name: limit
          description: 'For pagination, the limit of entries to be returned. If not provided, 100 items will be returned. Please note that a maximum value of 500 is allowed.'
          schema:
            type: integer
            example: 100
        - in: query
          name: cursor
          required: false
          schema:
            type: string
          description: 'For pagination, the marker (an opaque string value) representing the first item on the next page'
      responses:
        '200':
          description: Success
          content:
            application/json:
              schema:
                title: GetProjectSearchResponse
                allOf:
                  - title: baseResponse
                    type: object
                    properties:
                      success:
                        type: boolean
                        description: If the response is successful or not
                  - type: object
                    properties:
                      data:
                        type: object
                        properties:
                          items:
                            type: array
                            description: The array of found projects
                            items:
                              type: object
                              properties:
                                result_score:
                                  type: number
                                  description: Search result relevancy
                                item:
                                  type: object
                                  properties:
                                    id:
                                      type: integer
                                      description: The ID of the project
                                    type:
                                      type: string
                                      description: The type of the item
                                    title:
                                      type: string
                                      description: The title of the project
                                    status:
                                      type: string
                                      nullable: true
                                      description: The status of the project
                                    owner:
                                      type: object
                                      properties:
                                        id:
                                          type: integer
                                          nullable: true
                                          description: The ID of the owner of the project
                                    board_id:
                                      type: integer
                                      nullable: true
                                      description: The ID of the board the project belongs to
                                    phase:
                                      type: object
                                      nullable: true
                                      properties:
                                        id:
                                          type: integer
                                          description: The ID of the phase
                                        name:
                                          type: string
                                          description: The name of the phase
                                    person:
                                      type: object
                                      nullable: true
                                      properties:
                                        id:
                                          type: integer
                                          description: The ID of the person the project is associated with
                                        name:
                                          type: string
                                          nullable: true
                                          description: The name of the person the project is associated with
                                    organization:
                                      type: object
                                      nullable: true
                                      properties:
                                        id:
                                          type: integer
                                          description: The ID of the organization the project is associated with
                                        name:
                                          type: string
                                          nullable: true
                                          description: The name of the organization the project is associated with
                                        address:
                                          type: string
                                          nullable: true
                                          description: The address of the organization the project is associated with
                                    deal:
                                      type: object
                                      nullable: true
                                      properties:
                                        id:
                                          type: integer
                                          description: The ID of the deal the project is associated with
                                        title:
                                          type: string
                                          nullable: true
                                          description: The title of the deal the project is associated with
                                    deal_count:
                                      type: integer
                                      description: The number of deals associated with the project
                                    description:
                                      type: string
                                      nullable: true
                                      description: The description of the project
                                    end_date:
                                      type: string
                                      nullable: true
                                      description: The end date of the project
                                    custom_fields:
                                      type: array
                                      items:
                                        type: string
                                      description: Custom fields
                                    notes:
                                      type: array
                                      description: An array of notes
                                      items:
                                        type: string
                      additional_data:
                        description: The additional data of the list
                        type: object
                        properties:
                          next_cursor:
                            type: string
                            description: The first item on the next page. The value of the `next_cursor` field will be `null` if you have reached the end of the dataset and there’s no more pages to be returned.
              example:
                success: true
                data:
                  items:
                    - result_score: 0.8412
                      item:
                        id: 1
                        type: project
                        title: Office renovation
                        status: open
                        owner:
                          id: 1
                        board_id: 2
                        phase:
                          id: 3
                          name: In progress
                        person:
                          id: 10
                          name: Jane Doe
                        organization:
                          id: 5
                          name: Pipedrive
                          address: null
                        deal:
                          id: 42
                          title: Renovation deal
                        deal_count: 1
                        description: Full office renovation project
                        end_date: '2025-12-31'
                        custom_fields: []
                        notes: []
                additional_data:
                  next_cursor: eyJmaWVsZCI6ImlkIiwiZmllbGRWYWx1ZSI6Nywic29ydERpcmVjdGlvbiI6ImFzYyIsImlkIjo3fQ
  '/projects/{id}/archive':
    post:
      summary: Archive a project
      description: Archives a project.
      x-token-cost: 3
      operationId: archiveProject
      tags:
        - Projects
      security:
        - api_key: []
        - oauth2:
            - 'projects:full'
      parameters:
        - in: path
          name: id
          description: The ID of the project
          required: true
          schema:
            type: integer
      responses:
        '200':
          description: Update project
          content:
            application/json:
              schema:
                type: object
                title: UpsertProjectResponse
                allOf:
                  - title: baseResponse
                    type: object
                    properties:
                      success:
                        type: boolean
                        description: If the response is successful or not
                  - type: object
                    properties:
                      data:
                        title: Project
                        type: object
                        properties:
                          id:
                            type: integer
                            description: The ID of the project
                          title:
                            type: string
                            description: The title of the project
                          description:
                            type: string
                            description: The description of the project
                          status:
                            type: string
                            description: The status of the project
                          board_id:
                            type: integer
                            description: The ID of the board this project is associated with
                          phase_id:
                            type: integer
                            description: The ID of the phase this project is associated with
                          owner_id:
                            type: integer
                            description: The ID of the user who owns the project
                          start_date:
                            type: string
                            format: date
                            description: 'The start date of the project. Format: YYYY-MM-DD'
                          end_date:
                            type: string
                            format: date
                            description: 'The end date of the project. Format: YYYY-MM-DD'
                          deal_ids:
                            type: array
                            description: An array of IDs of the deals this project is associated with
                            items:
                              type: integer
                          person_ids:
                            type: array
                            description: An array of IDs of the persons this project is associated with
                            items:
                              type: integer
                          org_ids:
                            type: array
                            description: An array of IDs of the organizations this project is associated with
                            items:
                              type: integer
                          label_ids:
                            type: array
                            description: An array of IDs of the labels this project has
                            items:
                              type: integer
                          health_status:
                            type: string
                            nullable: true
                            description: The health status of the project
                          add_time:
                            type: string
                            description: The creation date and time of the project in ISO 8601 format
                          update_time:
                            type: string
                            description: The last updated date and time of the project in ISO 8601 format
                          status_change_time:
                            type: string
                            description: The date and time of the last status change of the project in ISO 8601 format
                          archive_time:
                            type: string
                            nullable: true
                            description: 'The date and time the project was archived in ISO 8601 format. If not archived, this field is null.'
                          custom_fields:
                            type: object
                            additionalProperties: true
                            description: 'An object where each key represents a custom field. All custom fields are referenced as randomly generated 40-character hashes. To clear a custom field value, set it to `null`. For multi-option fields (field type `set`), use `null` to clear the selection — sending an empty array `[]` is not supported and will result in a validation error.'
              example:
                success: true
                data:
                  id: 3
                  title: Project
                  description: Description
                  status: open
                  board_id: 1
                  phase_id: 1
                  owner_id: 1
                  start_date: '2026-04-15'
                  end_date: '2026-04-23'
                  deal_ids:
                    - 1
                  person_ids:
                    - 1
                  org_ids:
                    - 1
                  label_ids:
                    - 1
                  health_status: null
                  add_time: '2026-04-14T10:45:20.852Z'
                  update_time: '2026-04-14T10:45:20.852Z'
                  status_change_time: '2026-04-14T10:45:20.852Z'
                  archive_time: null
                  custom_fields: {}
  '/projects/{id}/permittedUsers':
    get:
      summary: List permitted users
      description: Lists the users permitted to access a project.
      x-token-cost: 5
      operationId: getProjectUsers
      tags:
        - Projects
      security:
        - api_key: []
        - oauth2:
            - 'projects:read'
            - 'projects:full'
      parameters:
        - in: path
          name: id
          description: The ID of the project
          required: true
          schema:
            type: integer
      responses:
        '200':
          description: Success
          content:
            application/json:
              schema:
                title: GetProjectPermittedUsersResponse
                type: object
                properties:
                  success:
                    type: boolean
                    description: If the response is successful or not
                  data:
                    type: array
                    items:
                      type: integer
                    description: The list of permitted user IDs
              example:
                success: true
                data:
                  - 123
                  - 456
  '/projects/{id}/changelog':
    get:
      summary: List updates about project field values
      description: Lists updates about field values of a project.
      x-token-cost: 10
      operationId: getProjectChangelog
      tags:
        - Projects
      security:
        - api_key: []
        - oauth2:
            - 'projects:read'
            - 'projects:full'
      parameters:
        - in: path
          name: id
          description: The ID of the project
          required: true
          schema:
            type: integer
        - in: query
          name: limit
          description: 'For pagination, the limit of entries to be returned. If not provided, 100 items will be returned. Please note that a maximum value of 500 is allowed.'
          schema:
            type: integer
            example: 100
        - in: query
          name: cursor
          required: false
          schema:
            type: string
          description: 'For pagination, the marker (an opaque string value) representing the first item on the next page'
      responses:
        '200':
          description: Get changelog of a project
          content:
            application/json:
              schema:
                title: GetProjectChangelogResponse
                type: object
                properties:
                  success:
                    type: boolean
                    example: true
                  data:
                    type: array
                    items:
                      type: object
                      properties:
                        change_source:
                          type: string
                          nullable: true
                          description: 'The source of change, for example ''app'', ''mobile'', ''api'', etc.'
                        change_source_user_agent:
                          type: string
                          nullable: true
                          description: The user agent from which the change was made
                        time:
                          type: string
                          description: The date and time of the change in ISO 8601 format
                        new_values:
                          type: object
                          additionalProperties: true
                          description: A map of field keys to their new values after the change
                        old_values:
                          type: object
                          additionalProperties: true
                          description: A map of field keys to their previous values before the change
                        actor_user_id:
                          type: integer
                          description: The ID of the user who made the change
                  additional_data:
                    description: The additional data of the list
                    type: object
                    properties:
                      next_cursor:
                        type: string
                        description: The first item on the next page. The value of the `next_cursor` field will be `null` if you have reached the end of the dataset and there’s no more pages to be returned.
              example:
                success: true
                data:
                  - change_source: app
                    change_source_user_agent: 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/121.0.0.0 Safari/537.36'
                    time: '2024-02-12T09:14:35.000Z'
                    new_values:
                      title: New Project Title
                    old_values:
                      title: Old Project Title
                    actor_user_id: 26
                  - change_source: api
                    change_source_user_agent: null
                    time: '2024-02-12T09:10:12.000Z'
                    new_values:
                      status: open
                      board_id: 2
                    old_values:
                      status: closed
                      board_id: 1
                    actor_user_id: 42
                additional_data:
                  next_cursor: aWQ6NTQ0
  /tasks:
    get:
      summary: Get all tasks
      description: Returns all tasks.
      x-token-cost: 10
      operationId: getTasks
      tags:
        - Tasks
        - Beta
      security:
        - api_key: []
        - oauth2:
            - 'projects:read'
            - 'projects:full'
      parameters:
        - in: query
          name: cursor
          required: false
          schema:
            type: string
          description: 'For pagination, the marker (an opaque string value) representing the first item on the next page'
        - in: query
          name: limit
          description: 'For pagination, the limit of entries to be returned. If not provided, 100 items will be returned. Please note that a maximum value of 500 is allowed.'
          schema:
            type: integer
            example: 100
        - in: query
          name: is_done
          required: false
          schema:
            type: boolean
          description: 'Whether the task is done or not. If omitted, both done and not done tasks are returned.'
        - in: query
          name: is_milestone
          required: false
          schema:
            type: boolean
          description: 'Whether the task is a milestone or not. If omitted, both milestone and non-milestone tasks are returned.'
        - in: query
          name: assignee_id
          required: false
          schema:
            type: integer
          description: 'If supplied, only tasks assigned to this user are returned'
        - in: query
          name: project_id
          required: false
          schema:
            type: integer
          description: 'If supplied, only tasks belonging to this project are returned'
        - in: query
          name: parent_task_id
          required: false
          schema:
            type: string
          description: 'If `null` is supplied, only root-level tasks (without a parent) are returned. If an integer is supplied, only subtasks of that specific task are returned. By default all tasks are returned.'
      responses:
        '200':
          description: A list of tasks.
          content:
            application/json:
              schema:
                title: GetTasksResponse
                type: object
                properties:
                  success:
                    type: boolean
                    description: If the response is successful or not
                  data:
                    type: array
                    items:
                      type: object
                      properties:
                        id:
                          type: integer
                          description: The ID of the task
                        title:
                          type: string
                          minLength: 1
                          maxLength: 255
                          description: The title of the task
                        creator_id:
                          type: integer
                          description: The ID of the user who created the task
                        description:
                          type: string
                          nullable: true
                          description: The description of the task
                        project_id:
                          type: integer
                          description: The ID of the project this task is associated with
                        is_done:
                          type: boolean
                          description: Whether the task is done or not.
                        is_milestone:
                          type: boolean
                          description: Whether the task is a milestone or not.
                        due_date:
                          type: string
                          format: date
                          nullable: true
                          description: 'The due date of the task. Format: YYYY-MM-DD.'
                        start_date:
                          type: string
                          format: date
                          nullable: true
                          description: 'The start date of the task. Format: YYYY-MM-DD.'
                        parent_task_id:
                          type: integer
                          nullable: true
                          description: 'The ID of the parent task. If `null`, the task is a root-level task.'
                        assignee_ids:
                          type: array
                          items:
                            type: integer
                          description: The IDs of users assigned to the task
                        priority:
                          type: integer
                          minimum: 0
                          nullable: true
                          description: The priority of the task
                        add_time:
                          type: string
                          description: The creation date and time of the task in ISO 8601 format
                        update_time:
                          type: string
                          description: The update date and time of the task in ISO 8601 format
                        marked_as_done_time:
                          type: string
                          nullable: true
                          description: The date and time the task was marked as done in ISO 8601 format
                  additional_data:
                    description: The additional data of the list
                    type: object
                    properties:
                      next_cursor:
                        type: string
                        description: The first item on the next page. The value of the `next_cursor` field will be `null` if you have reached the end of the dataset and there’s no more pages to be returned.
              example:
                success: true
                data:
                  - id: 1
                    title: Task 1
                    creator_id: 2
                    description: Task description
                    project_id: 1
                    is_done: false
                    is_milestone: false
                    due_date: '2026-10-11'
                    start_date: '2026-09-01'
                    parent_task_id: null
                    assignee_ids:
                      - 2
                      - 3
                    priority: null
                    add_time: '2026-09-14T08:14:40.000Z'
                    update_time: '2026-09-14T08:14:40.000Z'
                    marked_as_done_time: null
                additional_data:
                  next_cursor: eyJhY3Rpdml0aWVzIjoyN30
    post:
      summary: Add a task
      description: Adds a new task.
      x-token-cost: 5
      operationId: addTask
      tags:
        - Tasks
        - Beta
      security:
        - api_key: []
        - oauth2:
            - 'projects:full'
      requestBody:
        required: true
        content:
          application/json:
            schema:
              title: addTaskRequest
              type: object
              required:
                - title
                - project_id
              properties:
                title:
                  type: string
                  minLength: 1
                  maxLength: 255
                  description: The title of the task
                project_id:
                  type: integer
                  description: The ID of the project this task is associated with
                parent_task_id:
                  type: integer
                  nullable: true
                  description: The ID of the parent task. Cannot be the ID of a task that is already a subtask.
                description:
                  type: string
                  nullable: true
                  description: The description of the task
                done:
                  type: integer
                  enum:
                    - 0
                    - 1
                  description: 'Whether the task is done or not. `0` = Not done, `1` = Done.'
                milestone:
                  type: integer
                  enum:
                    - 0
                    - 1
                  description: 'Whether the task is a milestone or not. `0` = Not a milestone, `1` = Milestone.'
                due_date:
                  type: string
                  format: date
                  nullable: true
                  description: 'The due date of the task. Format: YYYY-MM-DD.'
                start_date:
                  type: string
                  format: date
                  nullable: true
                  description: 'The start date of the task. Format: YYYY-MM-DD.'
                assignee_id:
                  type: integer
                  nullable: true
                  description: 'The ID of the user assigned to the task. When set, the `assignee_ids` field will be overwritten with this value.'
                assignee_ids:
                  type: array
                  items:
                    type: integer
                  maxItems: 10
                  description: 'The IDs of users assigned to the task. When set, the `assignee_id` field will be set to the first value in this array, or `null` if empty.'
                priority:
                  type: integer
                  minimum: 0
                  nullable: true
                  description: The priority of the task
      responses:
        '201':
          description: Created task.
          content:
            application/json:
              schema:
                title: AddTaskResponse
                type: object
                properties:
                  success:
                    type: boolean
                    description: If the response is successful or not
                  data:
                    type: object
                    properties:
                      id:
                        type: integer
                        description: The ID of the task
                      title:
                        type: string
                        minLength: 1
                        maxLength: 255
                        description: The title of the task
                      creator_id:
                        type: integer
                        description: The ID of the user who created the task
                      description:
                        type: string
                        nullable: true
                        description: The description of the task
                      project_id:
                        type: integer
                        description: The ID of the project this task is associated with
                      is_done:
                        type: boolean
                        description: Whether the task is done or not.
                      is_milestone:
                        type: boolean
                        description: Whether the task is a milestone or not.
                      due_date:
                        type: string
                        format: date
                        nullable: true
                        description: 'The due date of the task. Format: YYYY-MM-DD.'
                      start_date:
                        type: string
                        format: date
                        nullable: true
                        description: 'The start date of the task. Format: YYYY-MM-DD.'
                      parent_task_id:
                        type: integer
                        nullable: true
                        description: 'The ID of the parent task. If `null`, the task is a root-level task.'
                      assignee_ids:
                        type: array
                        items:
                          type: integer
                        description: The IDs of users assigned to the task
                      priority:
                        type: integer
                        minimum: 0
                        nullable: true
                        description: The priority of the task
                      add_time:
                        type: string
                        description: The creation date and time of the task in ISO 8601 format
                      update_time:
                        type: string
                        description: The update date and time of the task in ISO 8601 format
                      marked_as_done_time:
                        type: string
                        nullable: true
                        description: The date and time the task was marked as done in ISO 8601 format
                  additional_data:
                    type: object
                    nullable: true
                    example: null
              example:
                success: true
                data:
                  id: 1
                  title: Task 1
                  creator_id: 2
                  description: Task description
                  project_id: 1
                  is_done: false
                  is_milestone: false
                  due_date: '2026-10-11'
                  start_date: '2026-09-01'
                  parent_task_id: null
                  assignee_ids:
                    - 2
                    - 3
                  priority: null
                  add_time: '2026-09-14T08:14:40.000Z'
                  update_time: '2026-09-14T08:14:40.000Z'
                  marked_as_done_time: null
                additional_data: null
  '/tasks/{id}':
    get:
      summary: Get details of a task
      description: Returns the details of a specific task.
      x-token-cost: 1
      operationId: getTask
      tags:
        - Tasks
        - Beta
      security:
        - api_key: []
        - oauth2:
            - 'projects:read'
            - 'projects:full'
      parameters:
        - in: path
          name: id
          description: The ID of the task
          required: true
          schema:
            type: integer
      responses:
        '200':
          description: Get a task.
          content:
            application/json:
              schema:
                title: GetTaskResponse
                type: object
                properties:
                  success:
                    type: boolean
                    description: If the response is successful or not
                  data:
                    type: object
                    properties:
                      id:
                        type: integer
                        description: The ID of the task
                      title:
                        type: string
                        minLength: 1
                        maxLength: 255
                        description: The title of the task
                      creator_id:
                        type: integer
                        description: The ID of the user who created the task
                      description:
                        type: string
                        nullable: true
                        description: The description of the task
                      project_id:
                        type: integer
                        description: The ID of the project this task is associated with
                      is_done:
                        type: boolean
                        description: Whether the task is done or not.
                      is_milestone:
                        type: boolean
                        description: Whether the task is a milestone or not.
                      due_date:
                        type: string
                        format: date
                        nullable: true
                        description: 'The due date of the task. Format: YYYY-MM-DD.'
                      start_date:
                        type: string
                        format: date
                        nullable: true
                        description: 'The start date of the task. Format: YYYY-MM-DD.'
                      parent_task_id:
                        type: integer
                        nullable: true
                        description: 'The ID of the parent task. If `null`, the task is a root-level task.'
                      assignee_ids:
                        type: array
                        items:
                          type: integer
                        description: The IDs of users assigned to the task
                      priority:
                        type: integer
                        minimum: 0
                        nullable: true
                        description: The priority of the task
                      add_time:
                        type: string
                        description: The creation date and time of the task in ISO 8601 format
                      update_time:
                        type: string
                        description: The update date and time of the task in ISO 8601 format
                      marked_as_done_time:
                        type: string
                        nullable: true
                        description: The date and time the task was marked as done in ISO 8601 format
                  additional_data:
                    type: object
                    nullable: true
                    example: null
              example:
                success: true
                data:
                  id: 1
                  title: Task 1
                  creator_id: 2
                  description: Task description
                  project_id: 1
                  is_done: false
                  is_milestone: false
                  due_date: '2026-10-11'
                  start_date: '2026-09-01'
                  parent_task_id: null
                  assignee_ids:
                    - 2
                    - 3
                  priority: null
                  add_time: '2026-09-14T08:14:40.000Z'
                  update_time: '2026-09-14T08:14:40.000Z'
                  marked_as_done_time: null
                additional_data: null
    patch:
      summary: Update a task
      description: Updates a task.
      x-token-cost: 5
      operationId: updateTask
      tags:
        - Tasks
        - Beta
      security:
        - api_key: []
        - oauth2:
            - 'projects:full'
      parameters:
        - in: path
          name: id
          description: The ID of the task
          required: true
          schema:
            type: integer
      requestBody:
        content:
          application/json:
            schema:
              title: updateTaskRequest
              type: object
              properties:
                title:
                  type: string
                  minLength: 1
                  maxLength: 255
                  description: The title of the task
                project_id:
                  type: integer
                  description: The ID of the project this task is associated with
                parent_task_id:
                  type: integer
                  nullable: true
                  description: The ID of the parent task. Cannot be the ID of a task that is already a subtask.
                description:
                  type: string
                  nullable: true
                  description: The description of the task
                done:
                  type: integer
                  enum:
                    - 0
                    - 1
                  description: 'Whether the task is done or not. `0` = Not done, `1` = Done.'
                milestone:
                  type: integer
                  enum:
                    - 0
                    - 1
                  description: 'Whether the task is a milestone or not. `0` = Not a milestone, `1` = Milestone.'
                due_date:
                  type: string
                  format: date
                  nullable: true
                  description: 'The due date of the task. Format: YYYY-MM-DD.'
                start_date:
                  type: string
                  format: date
                  nullable: true
                  description: 'The start date of the task. Format: YYYY-MM-DD.'
                assignee_id:
                  type: integer
                  nullable: true
                  description: 'The ID of the user assigned to the task. When set, the `assignee_ids` field will be overwritten with this value.'
                assignee_ids:
                  type: array
                  items:
                    type: integer
                  maxItems: 10
                  description: 'The IDs of users assigned to the task. When set, the `assignee_id` field will be set to the first value in this array, or `null` if empty.'
                priority:
                  type: integer
                  minimum: 0
                  nullable: true
                  description: The priority of the task
      responses:
        '200':
          description: Updated task.
          content:
            application/json:
              schema:
                title: UpdateTaskResponse
                type: object
                properties:
                  success:
                    type: boolean
                    description: If the response is successful or not
                  data:
                    type: object
                    properties:
                      id:
                        type: integer
                        description: The ID of the task
                      title:
                        type: string
                        minLength: 1
                        maxLength: 255
                        description: The title of the task
                      creator_id:
                        type: integer
                        description: The ID of the user who created the task
                      description:
                        type: string
                        nullable: true
                        description: The description of the task
                      project_id:
                        type: integer
                        description: The ID of the project this task is associated with
                      is_done:
                        type: boolean
                        description: Whether the task is done or not.
                      is_milestone:
                        type: boolean
                        description: Whether the task is a milestone or not.
                      due_date:
                        type: string
                        format: date
                        nullable: true
                        description: 'The due date of the task. Format: YYYY-MM-DD.'
                      start_date:
                        type: string
                        format: date
                        nullable: true
                        description: 'The start date of the task. Format: YYYY-MM-DD.'
                      parent_task_id:
                        type: integer
                        nullable: true
                        description: 'The ID of the parent task. If `null`, the task is a root-level task.'
                      assignee_ids:
                        type: array
                        items:
                          type: integer
                        description: The IDs of users assigned to the task
                      priority:
                        type: integer
                        minimum: 0
                        nullable: true
                        description: The priority of the task
                      add_time:
                        type: string
                        description: The creation date and time of the task in ISO 8601 format
                      update_time:
                        type: string
                        description: The update date and time of the task in ISO 8601 format
                      marked_as_done_time:
                        type: string
                        nullable: true
                        description: The date and time the task was marked as done in ISO 8601 format
                  additional_data:
                    type: object
                    nullable: true
                    example: null
              example:
                success: true
                data:
                  id: 1
                  title: Task 1
                  creator_id: 2
                  description: Task description
                  project_id: 1
                  is_done: false
                  is_milestone: false
                  due_date: '2026-10-11'
                  start_date: '2026-09-01'
                  parent_task_id: null
                  assignee_ids:
                    - 2
                    - 3
                  priority: null
                  add_time: '2026-09-14T08:14:40.000Z'
                  update_time: '2026-09-14T08:14:40.000Z'
                  marked_as_done_time: null
                additional_data: null
    delete:
      summary: Delete a task
      description: 'Marks a task as deleted. If the task has subtasks, those will also be deleted.'
      x-token-cost: 3
      operationId: deleteTask
      tags:
        - Tasks
        - Beta
      security:
        - api_key: []
        - oauth2:
            - 'projects:full'
      parameters:
        - in: path
          name: id
          description: The ID of the task
          required: true
          schema:
            type: integer
      responses:
        '200':
          description: Deleted task.
          content:
            application/json:
              schema:
                title: DeleteTaskResponse
                type: object
                properties:
                  success:
                    type: boolean
                    description: If the response is successful or not
                  data:
                    type: object
                    properties:
                      id:
                        type: integer
                        description: The ID of the deleted task
                  additional_data:
                    type: object
                    nullable: true
                    example: null
              example:
                success: true
                data:
                  id: 1
                additional_data: null
  /boards:
    get:
      summary: Get all project boards
      description: Returns all active project boards.
      x-token-cost: 10
      operationId: getProjectsBoards
      tags:
        - ProjectBoards
        - Beta
      security:
        - api_key: []
        - oauth2:
            - 'projects:read'
            - 'projects:full'
      responses:
        '200':
          description: Get all project boards
          content:
            application/json:
              schema:
                title: GetProjectBoardsResponse
                type: object
                properties:
                  success:
                    type: boolean
                    description: If the response is successful or not
                  data:
                    type: array
                    description: The array of project boards
                    items:
                      type: object
                      properties:
                        id:
                          type: integer
                          description: The ID of the project board
                        name:
                          type: string
                          description: The name of the project board
                        order_nr:
                          type: integer
                          description: The order of the board
                        add_time:
                          type: string
                          description: The creation date and time of the board in ISO 8601 format
                        update_time:
                          type: string
                          description: The update date and time of the board in ISO 8601 format
                  additional_data:
                    type: object
                    nullable: true
              example:
                success: true
                data:
                  - id: 1
                    name: Project Board
                    order_nr: 1
                    add_time: '2024-01-01T00:00:00.000Z'
                    update_time: '2024-01-01T00:00:00.000Z'
                additional_data: null
    post:
      summary: Add a project board
      description: Adds a new project board.
      x-token-cost: 5
      operationId: addProjectBoard
      tags:
        - ProjectBoards
        - Beta
      security:
        - api_key: []
        - oauth2:
            - 'projects:full'
      requestBody:
        required: true
        content:
          application/json:
            schema:
              title: addProjectBoardRequest
              required:
                - name
              type: object
              properties:
                name:
                  type: string
                  description: The name of the project board
                order_nr:
                  type: integer
                  minimum: 1
                  description: The order of the board. Must be between 1 and the total number of boards + 1.
      responses:
        '200':
          description: Add a project board
          content:
            application/json:
              schema:
                title: UpsertProjectBoardResponse
                type: object
                properties:
                  success:
                    type: boolean
                    description: If the response is successful or not
                  data:
                    type: object
                    properties:
                      id:
                        type: integer
                        description: The ID of the project board
                      name:
                        type: string
                        description: The name of the project board
                      order_nr:
                        type: integer
                        description: The order of the board
                      add_time:
                        type: string
                        description: The creation date and time of the board in ISO 8601 format
                      update_time:
                        type: string
                        description: The update date and time of the board in ISO 8601 format
              example:
                success: true
                data:
                  id: 1
                  name: Project Board
                  order_nr: 1
                  add_time: '2024-01-01T00:00:00.000Z'
                  update_time: '2024-01-01T00:00:00.000Z'
  '/boards/{id}':
    get:
      summary: Get details of a project board
      description: Returns the details of a specific project board.
      x-token-cost: 10
      operationId: getProjectsBoard
      tags:
        - ProjectBoards
        - Beta
      security:
        - api_key: []
        - oauth2:
            - 'projects:read'
            - 'projects:full'
      parameters:
        - in: path
          name: id
          description: The ID of the project board
          required: true
          schema:
            type: integer
      responses:
        '200':
          description: Get a project board
          content:
            application/json:
              schema:
                title: UpsertProjectBoardResponse
                type: object
                properties:
                  success:
                    type: boolean
                    description: If the response is successful or not
                  data:
                    type: object
                    properties:
                      id:
                        type: integer
                        description: The ID of the project board
                      name:
                        type: string
                        description: The name of the project board
                      order_nr:
                        type: integer
                        description: The order of the board
                      add_time:
                        type: string
                        description: The creation date and time of the board in ISO 8601 format
                      update_time:
                        type: string
                        description: The update date and time of the board in ISO 8601 format
              example:
                success: true
                data:
                  id: 1
                  name: Project Board
                  order_nr: 1
                  add_time: '2024-01-01T00:00:00.000Z'
                  update_time: '2024-01-01T00:00:00.000Z'
    patch:
      summary: Update a project board
      description: Updates the properties of a project board.
      x-token-cost: 5
      operationId: updateProjectBoard
      tags:
        - ProjectBoards
        - Beta
      security:
        - api_key: []
        - oauth2:
            - 'projects:full'
      parameters:
        - in: path
          name: id
          description: The ID of the project board
          required: true
          schema:
            type: integer
      requestBody:
        content:
          application/json:
            schema:
              title: updateProjectBoardRequest
              type: object
              properties:
                name:
                  type: string
                  description: The name of the project board
                order_nr:
                  type: integer
                  minimum: 1
                  description: The order of the board. Must be between 1 and the total number of boards + 1.
      responses:
        '200':
          description: Update a project board
          content:
            application/json:
              schema:
                title: UpsertProjectBoardResponse
                type: object
                properties:
                  success:
                    type: boolean
                    description: If the response is successful or not
                  data:
                    type: object
                    properties:
                      id:
                        type: integer
                        description: The ID of the project board
                      name:
                        type: string
                        description: The name of the project board
                      order_nr:
                        type: integer
                        description: The order of the board
                      add_time:
                        type: string
                        description: The creation date and time of the board in ISO 8601 format
                      update_time:
                        type: string
                        description: The update date and time of the board in ISO 8601 format
              example:
                success: true
                data:
                  id: 1
                  name: Project Board
                  order_nr: 1
                  add_time: '2024-01-01T00:00:00.000Z'
                  update_time: '2024-01-01T00:00:00.000Z'
    delete:
      summary: Delete a project board
      description: Marks a project board as deleted.
      x-token-cost: 3
      operationId: deleteProjectBoard
      tags:
        - ProjectBoards
        - Beta
      security:
        - api_key: []
        - oauth2:
            - 'projects:full'
      parameters:
        - in: path
          name: id
          description: The ID of the project board
          required: true
          schema:
            type: integer
      responses:
        '200':
          description: Delete a project board
          content:
            application/json:
              schema:
                title: DeleteProjectBoardResponse
                type: object
                properties:
                  success:
                    type: boolean
                    description: If the response is successful or not
                  data:
                    type: object
                    properties:
                      id:
                        type: integer
                        description: The ID of the deleted project board
              example:
                success: true
                data:
                  id: 1
  /phases:
    get:
      summary: Get project phases
      description: Returns all active project phases under a specific board.
      x-token-cost: 10
      operationId: getProjectsPhases
      tags:
        - ProjectPhases
        - Beta
      security:
        - api_key: []
        - oauth2:
            - 'projects:read'
            - 'projects:full'
      parameters:
        - in: query
          name: board_id
          required: true
          description: The ID of the board for which phases are requested
          schema:
            type: integer
            example: 1
      responses:
        '200':
          description: Get all project phases for a board
          content:
            application/json:
              schema:
                title: GetProjectPhasesResponse
                type: object
                properties:
                  success:
                    type: boolean
                    description: If the response is successful or not
                  data:
                    type: array
                    description: The array of project phases
                    items:
                      type: object
                      properties:
                        id:
                          type: integer
                          description: The ID of the project phase
                        name:
                          type: string
                          description: The name of the project phase
                        board_id:
                          type: integer
                          description: The ID of the project board this phase belongs to
                        order_nr:
                          type: integer
                          description: The order of the phase within its board
                        add_time:
                          type: string
                          description: The creation date and time of the phase in ISO 8601 format
                        update_time:
                          type: string
                          description: The update date and time of the phase in ISO 8601 format
                  additional_data:
                    type: object
                    nullable: true
              example:
                success: true
                data:
                  - id: 2
                    name: Project Phase
                    board_id: 1
                    order_nr: 1
                    add_time: '2024-01-01T00:00:00.000Z'
                    update_time: '2024-01-01T00:00:00.000Z'
                additional_data: null
    post:
      summary: Add a project phase
      description: Adds a new project phase to a board.
      x-token-cost: 5
      operationId: addProjectPhase
      tags:
        - ProjectPhases
        - Beta
      security:
        - api_key: []
        - oauth2:
            - 'projects:full'
      requestBody:
        required: true
        content:
          application/json:
            schema:
              title: addProjectPhaseRequest
              required:
                - name
                - board_id
              type: object
              properties:
                name:
                  type: string
                  description: The name of the project phase
                board_id:
                  type: integer
                  description: The ID of the project board to add the phase to
                order_nr:
                  type: integer
                  minimum: 1
                  description: The order of the phase within its board. Must be between 1 and the total number of phases on the board + 1.
      responses:
        '200':
          description: Add a project phase
          content:
            application/json:
              schema:
                title: UpsertProjectPhaseResponse
                type: object
                properties:
                  success:
                    type: boolean
                    description: If the response is successful or not
                  data:
                    type: object
                    properties:
                      id:
                        type: integer
                        description: The ID of the project phase
                      name:
                        type: string
                        description: The name of the project phase
                      board_id:
                        type: integer
                        description: The ID of the project board this phase belongs to
                      order_nr:
                        type: integer
                        description: The order of the phase within its board
                      add_time:
                        type: string
                        description: The creation date and time of the phase in ISO 8601 format
                      update_time:
                        type: string
                        description: The update date and time of the phase in ISO 8601 format
              example:
                success: true
                data:
                  id: 2
                  name: Project Phase
                  board_id: 1
                  order_nr: 1
                  add_time: '2024-01-01T00:00:00.000Z'
                  update_time: '2024-01-01T00:00:00.000Z'
  '/phases/{id}':
    get:
      summary: Get details of a project phase
      description: Returns the details of a specific project phase.
      x-token-cost: 10
      operationId: getProjectsPhase
      tags:
        - ProjectPhases
        - Beta
      security:
        - api_key: []
        - oauth2:
            - 'projects:read'
            - 'projects:full'
      parameters:
        - in: path
          name: id
          description: The ID of the project phase
          required: true
          schema:
            type: integer
      responses:
        '200':
          description: Get a project phase
          content:
            application/json:
              schema:
                title: UpsertProjectPhaseResponse
                type: object
                properties:
                  success:
                    type: boolean
                    description: If the response is successful or not
                  data:
                    type: object
                    properties:
                      id:
                        type: integer
                        description: The ID of the project phase
                      name:
                        type: string
                        description: The name of the project phase
                      board_id:
                        type: integer
                        description: The ID of the project board this phase belongs to
                      order_nr:
                        type: integer
                        description: The order of the phase within its board
                      add_time:
                        type: string
                        description: The creation date and time of the phase in ISO 8601 format
                      update_time:
                        type: string
                        description: The update date and time of the phase in ISO 8601 format
              example:
                success: true
                data:
                  id: 2
                  name: Project Phase
                  board_id: 1
                  order_nr: 1
                  add_time: '2024-01-01T00:00:00.000Z'
                  update_time: '2024-01-01T00:00:00.000Z'
    patch:
      summary: Update a project phase
      description: Updates the properties of a project phase.
      x-token-cost: 5
      operationId: updateProjectPhase
      tags:
        - ProjectPhases
        - Beta
      security:
        - api_key: []
        - oauth2:
            - 'projects:full'
      parameters:
        - in: path
          name: id
          description: The ID of the project phase
          required: true
          schema:
            type: integer
      requestBody:
        content:
          application/json:
            schema:
              title: updateProjectPhaseRequest
              type: object
              properties:
                name:
                  type: string
                  description: The name of the project phase
                board_id:
                  type: integer
                  description: The ID of the project board to add the phase to
                order_nr:
                  type: integer
                  minimum: 1
                  description: The order of the phase within its board. Must be between 1 and the total number of phases on the board + 1.
      responses:
        '200':
          description: Update a project phase
          content:
            application/json:
              schema:
                title: UpsertProjectPhaseResponse
                type: object
                properties:
                  success:
                    type: boolean
                    description: If the response is successful or not
                  data:
                    type: object
                    properties:
                      id:
                        type: integer
                        description: The ID of the project phase
                      name:
                        type: string
                        description: The name of the project phase
                      board_id:
                        type: integer
                        description: The ID of the project board this phase belongs to
                      order_nr:
                        type: integer
                        description: The order of the phase within its board
                      add_time:
                        type: string
                        description: The creation date and time of the phase in ISO 8601 format
                      update_time:
                        type: string
                        description: The update date and time of the phase in ISO 8601 format
              example:
                success: true
                data:
                  id: 2
                  name: Project Phase
                  board_id: 1
                  order_nr: 1
                  add_time: '2024-01-01T00:00:00.000Z'
                  update_time: '2024-01-01T00:00:00.000Z'
    delete:
      summary: Delete a project phase
      description: Marks a project phase as deleted.
      x-token-cost: 3
      operationId: deleteProjectPhase
      tags:
        - ProjectPhases
        - Beta
      security:
        - api_key: []
        - oauth2:
            - 'projects:full'
      parameters:
        - in: path
          name: id
          description: The ID of the project phase
          required: true
          schema:
            type: integer
      responses:
        '200':
          description: Delete a project phase
          content:
            application/json:
              schema:
                title: DeleteProjectPhaseResponse
                type: object
                properties:
                  success:
                    type: boolean
                    description: If the response is successful or not
                  data:
                    type: object
                    properties:
                      id:
                        type: integer
                        description: The ID of the deleted project phase
              example:
                success: true
                data:
                  id: 2
  '/users/{id}/followers':
    get:
      summary: List followers of a user
      description: Lists users who are following the user.
      x-token-cost: 10
      operationId: getUserFollowers
      tags:
        - Users
      security:
        - api_key: []
        - oauth2:
            - 'users:read'
      parameters:
        - in: path
          name: id
          description: The ID of the user
          required: true
          schema:
            type: integer
        - in: query
          name: limit
          description: 'For pagination, the limit of entries to be returned. If not provided, 100 items will be returned. Please note that a maximum value of 500 is allowed.'
          schema:
            type: integer
            example: 100
        - in: query
          name: cursor
          required: false
          schema:
            type: string
          description: 'For pagination, the marker (an opaque string value) representing the first item on the next page'
      responses:
        '200':
          description: List entity followers
          content:
            application/json:
              schema:
                type: object
                title: GetFollowersResponse
                allOf:
                  - title: baseResponse
                    type: object
                    properties:
                      success:
                        type: boolean
                        description: If the response is successful or not
                  - type: object
                    properties:
                      data:
                        type: array
                        description: Followers array
                        items:
                          type: object
                          properties:
                            user_id:
                              type: integer
                              description: The ID of the user following the entity
                            add_time:
                              type: string
                              description: The add time of the following
                      additional_data:
                        type: object
                        description: The additional data of the list
                        properties:
                          next_cursor:
                            type: string
                            description: The first item on the next page. The value of the `next_cursor` field will be `null` if you have reached the end of the dataset and there’s no more pages to be returned.
              example:
                success: true
                data:
                  - user_id: 1
                    add_time: '2021-01-01T00:00:00Z'
                additional_data:
                  next_cursor: eyJmaWVsZCI6ImlkIiwiZmllbGRWYWx1ZSI6Nywic29ydERpcmVjdGlvbiI6ImFzYyIsImlkIjo3fQ
components:
  schemas:
    ActivityItem:
      type: object
      properties:
        id:
          type: integer
          description: The ID of the activity
        subject:
          type: string
          description: The subject of the activity
        type:
          type: string
          description: The type of the activity
        owner_id:
          type: integer
          description: The ID of the user who owns the activity
        creator_user_id:
          type: integer
          description: The ID of the user who created the activity
        is_deleted:
          type: boolean
          description: Whether the activity is deleted or not
        add_time:
          type: string
          description: The creation date and time of the activity
        update_time:
          type: string
          description: The last updated date and time of the activity
        deal_id:
          type: integer
          description: The ID of the deal linked to the activity
        lead_id:
          type: string
          description: The ID of the lead linked to the activity
        person_id:
          type: integer
          description: The ID of the person linked to the activity
        org_id:
          type: integer
          description: The ID of the organization linked to the activity
        project_id:
          type: integer
          description: The ID of the project linked to the activity
        due_date:
          type: string
          description: The due date of the activity
        due_time:
          type: string
          description: The due time of the activity
        duration:
          type: string
          description: The duration of the activity
        busy:
          type: boolean
          description: Whether the activity marks the assignee as busy or not in their calendar
        done:
          type: boolean
          description: Whether the activity is marked as done or not
        marked_as_done_time:
          type: string
          description: The date and time when the activity was marked as done
        location:
          type: object
          description: Location of the activity
          properties:
            value:
              type: string
              description: The full address of the activity
            country:
              type: string
              description: Country of the activity
            admin_area_level_1:
              type: string
              description: Admin area level 1 (e.g. state) of the activity
            admin_area_level_2:
              type: string
              description: Admin area level 2 (e.g. county) of the activity
            locality:
              type: string
              description: Locality (e.g. city) of the activity
            sublocality:
              type: string
              description: Sublocality (e.g. neighborhood) of the activity
            route:
              type: string
              description: Route (e.g. street) of the activity
            street_number:
              type: string
              description: Street number of the activity
            subpremise:
              type: string
              description: Subpremise (e.g. apartment/suite number) of the activity
            postal_code:
              type: string
              description: Postal code of the activity
        participants:
          type: array
          description: The participants of the activity
          items:
            type: object
            properties:
              person_id:
                type: integer
                description: The ID of the person
              primary:
                type: boolean
                description: Whether the person is the primary participant or not
        attendees:
          type: array
          description: The attendees of the activity
          items:
            type: object
            properties:
              email:
                type: string
                description: The email address of the attendee
              name:
                type: string
                description: The name of the attendee
              status:
                type: string
                description: The status of the attendee
              is_organizer:
                type: boolean
                description: Whether the attendee is the organizer or not
              person_id:
                type: integer
                description: The ID of the person if the attendee has a person record
              user_id:
                type: integer
                description: The ID of the user if the attendee is a user
        conference_meeting_client:
          type: string
          description: The client used for the conference meeting
        conference_meeting_url:
          type: string
          description: The URL of the conference meeting
        conference_meeting_id:
          type: string
          description: The ID of the conference meeting
        public_description:
          type: string
          description: The public description of the activity
        priority:
          type: integer
          description: The priority of the activity. Mappable to a specific string using activityFields API.
        note:
          type: string
          description: The note of the activity
    Deal:
      type: object
      properties:
        id:
          type: integer
          description: The ID of the deal
        title:
          type: string
          description: The title of the deal
        owner_id:
          type: integer
          description: The ID of the user who owns the deal
        person_id:
          type: integer
          description: The ID of the person linked to the deal
        org_id:
          type: integer
          description: The ID of the organization linked to the deal
        pipeline_id:
          type: integer
          description: The ID of the pipeline associated with the deal
        stage_id:
          type: integer
          description: The ID of the deal stage
        value:
          type: number
          description: The value of the deal
        currency:
          type: string
          description: The currency associated with the deal
        add_time:
          type: string
          description: The creation date and time of the deal
        update_time:
          type: string
          description: The last updated date and time of the deal
        stage_change_time:
          type: string
          description: The last updated date and time of the deal stage
        is_deleted:
          type: boolean
          description: Whether the deal is deleted or not
        is_archived:
          type: boolean
          description: Whether the deal is archived or not
        status:
          type: string
          description: The status of the deal
        probability:
          type: number
          nullable: true
          description: The success probability percentage of the deal
        lost_reason:
          type: string
          nullable: true
          description: The reason for losing the deal
        visible_to:
          type: integer
          description: The visibility of the deal
        close_time:
          type: string
          nullable: true
          description: The date and time of closing the deal
        won_time:
          type: string
          description: The date and time of changing the deal status as won
        lost_time:
          type: string
          description: The date and time of changing the deal status as lost
        expected_close_date:
          type: string
          format: date
          description: The expected close date of the deal
        label_ids:
          type: array
          description: The IDs of labels assigned to the deal
          items:
            type: integer
        origin:
          type: string
          description: The way this Deal was created. `origin` field is set by Pipedrive when Deal is created and cannot be changed.
        origin_id:
          type: string
          nullable: true
          description: The optional ID to further distinguish the origin of the deal - e.g. Which API integration created this Deal.
        channel:
          type: integer
          nullable: true
          description: 'The ID of your Marketing channel this Deal was created from. Recognized Marketing channels can be configured in your <a href="https://app.pipedrive.com/settings/fields" target="_blank" rel="noopener noreferrer">Company settings</a>.'
        channel_id:
          type: string
          nullable: true
          description: The optional ID to further distinguish the Marketing channel.
        source_lead_id:
          type: string
          format: uuid
          nullable: true
          description: The ID of the lead if the deal was converted from a lead. Only included when requested via include_fields parameter.
        arr:
          type: number
          nullable: true
          description: |
            Only available in Growth and above plans

            The Annual Recurring Revenue of the deal

            Null if there are no products attached to the deal
        mrr:
          type: number
          nullable: true
          description: |
            Only available in Growth and above plans

            The Monthly Recurring Revenue of the deal

            Null if there are no products attached to the deal
        acv:
          type: number
          nullable: true
          description: |
            Only available in Growth and above plans

            The Annual Contract Value of the deal

            Null if there are no products attached to the deal
        custom_fields:
          type: object
          additionalProperties: true
          description: 'An object where each key represents a custom field. All custom fields are referenced as randomly generated 40-character hashes. To clear a custom field value, set it to `null`. For multi-option fields (field type `set`), use `null` to clear the selection — sending an empty array `[]` is not supported and will result in a validation error.'
    FollowerItem:
      type: object
      properties:
        user_id:
          type: integer
          description: The ID of the user following the entity
        add_time:
          type: string
          description: The add time of the following
    OrganizationItem:
      type: object
      properties:
        id:
          type: integer
          description: The ID of the organization
        name:
          type: string
          description: The name of the organization
        owner_id:
          type: integer
          description: The ID of the user who owns the organization
        add_time:
          type: string
          description: The creation date and time of the organization
        update_time:
          type: string
          description: The last updated date and time of the organization
        is_deleted:
          type: boolean
          description: Whether the organization is deleted or not
        visible_to:
          type: integer
          description: The visibility of the organization
        address:
          description: The address of the organization
          type: object
          title: OrganizationItemAddress
          properties:
            value:
              type: string
              description: The full address of the organization
            country:
              type: string
              description: Country of the organization
            admin_area_level_1:
              type: string
              description: Admin area level 1 (e.g. state) of the organization
            admin_area_level_2:
              type: string
              description: Admin area level 2 (e.g. county) of the organization
            locality:
              type: string
              description: Locality (e.g. city) of the organization
            sublocality:
              type: string
              description: Sublocality (e.g. neighborhood) of the organization
            route:
              type: string
              description: Route (e.g. street) of the organization
            street_number:
              type: string
              description: Street number of the organization
            subpremise:
              type: string
              description: Subpremise (e.g. apartment/suite number) of the organization
            postal_code:
              type: string
              description: Postal code of the organization
        label_ids:
          type: array
          description: The IDs of labels assigned to the organization
          items:
            type: integer
        custom_fields:
          type: object
          additionalProperties: true
          description: 'An object where each key represents a custom field. All custom fields are referenced as randomly generated 40-character hashes. To clear a custom field value, set it to `null`. For multi-option fields (field type `set`), use `null` to clear the selection — sending an empty array `[]` is not supported and will result in a validation error.'
    Person:
      type: object
      properties:
        id:
          type: integer
          description: The ID of the person
        name:
          type: string
          description: The name of the person
        first_name:
          type: string
          description: The first name of the person
        last_name:
          type: string
          description: The last name of the person
        owner_id:
          type: integer
          description: The ID of the user who owns the person
        org_id:
          type: integer
          description: The ID of the organization linked to the person
        add_time:
          type: string
          description: The creation date and time of the person
        update_time:
          type: string
          description: The last updated date and time of the person
        emails:
          type: array
          description: The emails of the person
          items:
            type: object
            properties:
              value:
                type: string
                description: The email address of the person
              primary:
                type: boolean
                description: Whether the email is primary or not
              label:
                type: string
                description: The email address classification label
        phones:
          type: array
          description: The phones of the person
          items:
            type: object
            properties:
              value:
                type: string
                description: The phone number of the person
              primary:
                type: boolean
                description: Whether the phone number is primary or not
              label:
                type: string
                description: The phone number classification label
        is_deleted:
          type: boolean
          description: Whether the person is deleted or not
        visible_to:
          type: integer
          description: The visibility of the person
        label_ids:
          type: array
          description: The IDs of labels assigned to the person
          items:
            type: integer
        picture_id:
          type: integer
          description: The ID of the picture associated with the person
        postal_address:
          type: object
          description: 'Postal address of the person, included if contact sync is enabled for the company'
          properties:
            value:
              type: string
              description: The full address of the person
            country:
              type: string
              description: Country of the person
            admin_area_level_1:
              type: string
              description: Admin area level 1 (e.g. state) of the person
            admin_area_level_2:
              type: string
              description: Admin area level 2 (e.g. county) of the person
            locality:
              type: string
              description: Locality (e.g. city) of the person
            sublocality:
              type: string
              description: Sublocality (e.g. neighborhood) of the person
            route:
              type: string
              description: Route (e.g. street) of the person
            street_number:
              type: string
              description: Street number of the person
            subpremise:
              type: string
              description: Subpremise (e.g. apartment/suite number) of the person
            postal_code:
              type: string
              description: Postal code of the person
        notes:
          type: string
          description: 'Contact sync notes of the person, maximum 10 000 characters, included if contact sync is enabled for the company'
        im:
          type: array
          description: 'The instant messaging accounts of the person, included if contact sync is enabled for the company'
          items:
            type: object
            properties:
              value:
                type: string
                description: The instant messaging account of the person
              primary:
                type: boolean
                description: Whether the instant messaging account is primary or not
              label:
                type: string
                description: The instant messaging account classification label
        birthday:
          type: string
          description: 'The birthday of the person, included if contact sync is enabled for the company'
        job_title:
          type: string
          description: 'The job title of the person, included if contact sync is enabled for the company'
        custom_fields:
          type: object
          additionalProperties: true
          description: 'An object where each key represents a custom field. All custom fields are referenced as randomly generated 40-character hashes. To clear a custom field value, set it to `null`. For multi-option fields (field type `set`), use `null` to clear the selection — sending an empty array `[]` is not supported and will result in a validation error.'
  securitySchemes:
    basic_authentication:
      type: http
      scheme: basic
      description: 'Base 64 encoded string containing the `client_id` and `client_secret` values. The header value should be `Basic <base64(client_id:client_secret)>`.'
    api_key:
      type: apiKey
      name: x-api-token
      in: header
    oauth2:
      type: oauth2
      description: 'For more information, see https://pipedrive.readme.io/docs/marketplace-oauth-authorization'
      flows:
        authorizationCode:
          authorizationUrl: 'https://oauth.pipedrive.com/oauth/authorize'
          tokenUrl: 'https://oauth.pipedrive.com/oauth/token'
          refreshUrl: 'https://oauth.pipedrive.com/oauth/token'
          scopes:
            base: Read settings of the authorized user and currencies in an account
            'deals:read': 'Read most of the data about deals and related entities - deal fields, products, followers, participants; all notes, files, filters, pipelines, stages, and statistics. Does not include access to activities (except the last and next activity related to a deal)'
            'deals:full': 'Create, read, update and delete deals, its participants and followers; all files, notes, and filters. It also includes read access to deal fields, pipelines, stages, and statistics. Does not include access to activities (except the last and next activity related to a deal)'
            'mail:read': Read mail threads and messages
            'mail:full': 'Read, update and delete mail threads. Also grants read access to mail messages'
            'activities:read': 'Read activities, its fields and types; all files and filters'
            'activities:full': 'Create, read, update and delete activities and all files and filters. Also includes read access to activity fields and types'
            'contacts:read': 'Read the data about persons and organizations, their related fields and followers; also all notes, files, filters'
            'contacts:full': 'Create, read, update and delete persons and organizations and their followers; all notes, files, filters. Also grants read access to contacts-related fields'
            'products:read': 'Read products, its fields, files, followers and products connected to a deal'
            'products:full': 'Create, read, update and delete products and its fields; add products to deals'
            'projects:read': 'Read projects and its fields, tasks and project templates'
            'projects:full': 'Create, read, update and delete projects and its fields; add projects templates and project related tasks'
            'users:read': 'Read data about users (people with access to a Pipedrive account), their permissions, roles and followers'
            'recents:read': 'Read all recent changes occurred in an account. Includes data about activities, activity types, deals, files, filters, notes, persons, organizations, pipelines, stages, products and users'
            'search:read': 'Search across the account for deals, persons, organizations, files and products, and see details about the returned results'
            admin: 'Allows to do many things that an administrator can do in a Pipedrive company account - create, read, update and delete pipelines and its stages; deal, person and organization fields; activity types; users and permissions, etc. It also allows the app to create webhooks and fetch and delete webhooks that are created by the app'
            'leads:read': Read data about leads and lead labels
            'leads:full': 'Create, read, update and delete leads and lead labels'
            phone-integration: 'Enables advanced call integration features like logging call duration and other metadata, and play call recordings inside Pipedrive'
            'goals:read': Read data on all goals
            'goals:full': 'Create, read, update and delete goals'
            video-calls: Allows application to register as a video call integration provider and create conference links
            messengers-integration: Allows application to register as a messengers integration provider and allows them to deliver incoming messages and their statuses
            'deal-fields:full': 'Create, read, update and delete deal fields'
            'product-fields:full': 'Create, read, update and delete product fields'
            'contact-fields:full': 'Create, read, update and delete person and organization fields'
            'project-fields:full': 'Create, read, update and delete project fields'
