{
  "openapi": "3.0.0",
  "info": {
    "title": "Unify Analytics API",
    "summary": "Send website and product analytics data into the Unify platform.",
    "version": "1",
    "termsOfService": "https://www.unifygtm.com/legal/terms-and-conditions",
    "contact": {
      "name": "Unify Support",
      "url": "https://www.unifygtm.com/support",
      "email": "support@unifygtm.com"
    }
  },
  "tags": [
    {
      "name": "Events"
    }
  ],
  "paths": {
    "/identify": {
      "post": {
        "operationId": "send_identify_event",
        "description": "Send an \"identify\" event.",
        "parameters": [],
        "responses": {
          "200": {
            "description": "The request has succeeded."
          },
          "202": {
            "description": "The request has been accepted for processing, but processing has not yet completed."
          },
          "401": {
            "description": "Access is unauthorized."
          }
        },
        "tags": [
          "Events"
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/IdentifyEvent"
              }
            }
          }
        }
      }
    },
    "/page": {
      "post": {
        "operationId": "send_page_event",
        "description": "Send a \"page\" event.",
        "parameters": [],
        "responses": {
          "200": {
            "description": "The request has succeeded."
          },
          "202": {
            "description": "The request has been accepted for processing, but processing has not yet completed."
          },
          "401": {
            "description": "Access is unauthorized."
          }
        },
        "tags": [
          "Events"
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/PageEvent"
              }
            }
          }
        }
      }
    },
    "/track": {
      "post": {
        "operationId": "send_track_event",
        "description": "Send a \"track\" event.",
        "parameters": [],
        "responses": {
          "200": {
            "description": "The request has succeeded."
          },
          "202": {
            "description": "The request has been accepted for processing, but processing has not yet completed."
          },
          "401": {
            "description": "Access is unauthorized."
          }
        },
        "tags": [
          "Events"
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/TrackEvent"
              }
            }
          }
        }
      }
    }
  },
  "security": [
    {
      "BasicAuth": []
    }
  ],
  "components": {
    "schemas": {
      "AnalyticsEventBase": {
        "type": "object",
        "required": [
          "type",
          "visitorId",
          "timestamp",
          "context"
        ],
        "properties": {
          "type": {
            "allOf": [
              {
                "$ref": "#/components/schemas/AnalyticsEventType"
              }
            ],
            "description": "The type of analytics event being sent."
          },
          "visitorId": {
            "type": "string",
            "description": "Unique identifier for the visitor that triggered this event."
          },
          "sessionId": {
            "type": "string",
            "description": "Unique identifier for the session in which this event occurred."
          },
          "timestamp": {
            "type": "string",
            "format": "date-time",
            "description": "Timestamp of the event (in UTC)."
          },
          "sentAt": {
            "type": "string",
            "format": "date-time",
            "description": "Timestamp at which the request is sent (in UTC).\n\nTypically, this value is nearly identical to `timestamp`. However in some\nsituations there is latency between when the event occurs and when it is\nsent to Unify."
          },
          "context": {
            "allOf": [
              {
                "$ref": "#/components/schemas/EventContext"
              }
            ],
            "description": "Contextual information about the client behind the event."
          }
        },
        "description": "Properties that all analytics events share."
      },
      "AnalyticsEventType": {
        "type": "string",
        "enum": [
          "page",
          "track",
          "identify"
        ],
        "description": "Event type supported by the analytics API."
      },
      "CampaignParams": {
        "type": "object",
        "properties": {
          "source": {
            "type": "string",
            "description": "Source of the campaign."
          },
          "medium": {
            "type": "string",
            "description": "Medium of the campaign."
          },
          "campaign": {
            "type": "string",
            "description": "Name of the campaign."
          },
          "term": {
            "type": "string",
            "description": "Term of the campaign."
          },
          "content": {
            "type": "string",
            "description": "Content of the campaign."
          }
        },
        "description": "UTM parameters for tracking marketing campaigns."
      },
      "EventContext": {
        "type": "object",
        "properties": {
          "library": {
            "type": "object",
            "properties": {
              "name": {
                "type": "string"
              },
              "version": {
                "type": "string"
              }
            },
            "description": "Name and version of the library used to send the event."
          },
          "ip": {
            "anyOf": [
              {
                "$ref": "#/components/schemas/ipv4"
              },
              {
                "$ref": "#/components/schemas/ipv6"
              }
            ],
            "description": "IP address for the client that triggered the event."
          },
          "locale": {
            "type": "string",
            "description": "Locale string for the client that triggered the event."
          },
          "userAgent": {
            "type": "string",
            "description": "User agent string for the device."
          },
          "userAgentData": {
            "type": "object",
            "properties": {
              "brands": {
                "type": "array",
                "items": {
                  "type": "object",
                  "properties": {
                    "brand": {
                      "type": "string"
                    },
                    "version": {
                      "type": "string"
                    }
                  }
                }
              },
              "mobile": {
                "type": "boolean"
              },
              "platform": {
                "type": "string"
              }
            },
            "description": "User agent data for the device."
          },
          "utm": {
            "allOf": [
              {
                "$ref": "#/components/schemas/CampaignParams"
              }
            ],
            "description": "Marketing campaign information."
          }
        },
        "description": "Contextual client information attached to an analytics event."
      },
      "IdentifyEvent": {
        "type": "object",
        "required": [
          "type",
          "visitorId",
          "timestamp",
          "context"
        ],
        "properties": {
          "type": {
            "type": "string",
            "enum": [
              "identify"
            ],
            "description": "The type of analytics event being sent."
          },
          "visitorId": {
            "type": "string",
            "description": "Unique identifier for the visitor that triggered this event."
          },
          "sessionId": {
            "type": "string",
            "description": "Unique identifier for the session in which this event occurred."
          },
          "timestamp": {
            "type": "string",
            "format": "date-time",
            "description": "Timestamp of the event (in UTC)."
          },
          "sentAt": {
            "type": "string",
            "format": "date-time",
            "description": "Timestamp at which the request is sent (in UTC).\n\nTypically, this value is nearly identical to `timestamp`. However in some\nsituations there is latency between when the event occurs and when it is\nsent to Unify."
          },
          "context": {
            "allOf": [
              {
                "$ref": "#/components/schemas/EventContext"
              }
            ],
            "description": "Contextual information about the client behind the event."
          },
          "traits": {
            "allOf": [
              {
                "$ref": "#/components/schemas/Traits"
              }
            ],
            "deprecated": true
          },
          "company": {
            "allOf": [
              {
                "$ref": "#/components/schemas/UObjects.CreateOrUpdateUCompanyAttributes"
              }
            ],
            "description": "Information about the company associated with the visitor."
          },
          "person": {
            "allOf": [
              {
                "$ref": "#/components/schemas/UObjects.CreateOrUpdateUPersonAttributes"
              }
            ],
            "description": "Information about the person associated with the visitor."
          }
        },
        "description": "An identify event is used to send information about a visitor."
      },
      "PageEvent": {
        "type": "object",
        "required": [
          "type",
          "visitorId",
          "timestamp",
          "context"
        ],
        "properties": {
          "type": {
            "type": "string",
            "enum": [
              "page"
            ],
            "description": "The type of analytics event being sent."
          },
          "visitorId": {
            "type": "string",
            "description": "Unique identifier for the visitor that triggered this event."
          },
          "sessionId": {
            "type": "string",
            "description": "Unique identifier for the session in which this event occurred."
          },
          "timestamp": {
            "type": "string",
            "format": "date-time",
            "description": "Timestamp of the event (in UTC)."
          },
          "sentAt": {
            "type": "string",
            "format": "date-time",
            "description": "Timestamp at which the request is sent (in UTC).\n\nTypically, this value is nearly identical to `timestamp`. However in some\nsituations there is latency between when the event occurs and when it is\nsent to Unify."
          },
          "context": {
            "allOf": [
              {
                "$ref": "#/components/schemas/EventContext"
              }
            ],
            "description": "Contextual information about the client behind the event."
          },
          "name": {
            "type": "string",
            "description": "Name of the page that was viewed."
          },
          "properties": {
            "allOf": [
              {
                "$ref": "#/components/schemas/PageProperties"
              }
            ],
            "description": "Details about the page that was viewed."
          }
        },
        "description": "A page view event represents a client visiting a page on a website."
      },
      "PageProperties": {
        "type": "object",
        "properties": {
          "path": {
            "type": "string",
            "description": "Path of the page (equivalent to `location.pathname`)."
          },
          "query": {
            "type": "object",
            "additionalProperties": {
              "type": "string"
            },
            "description": "Query string parameters (equivalent to `location.search`)."
          },
          "referrer": {
            "type": "string",
            "description": "Referrer page's full URL (equivalent to `document.referrer`)."
          },
          "title": {
            "type": "string",
            "description": "Page title (equivalent to `document.title`)."
          },
          "url": {
            "type": "string",
            "description": "URL of the page (equivalent to `location.href`)."
          }
        },
        "description": "Details about a page included in a page request."
      },
      "TrackEvent": {
        "type": "object",
        "required": [
          "type",
          "visitorId",
          "timestamp",
          "context",
          "name"
        ],
        "properties": {
          "type": {
            "type": "string",
            "enum": [
              "track"
            ],
            "description": "The type of analytics event being sent."
          },
          "visitorId": {
            "type": "string",
            "description": "Unique identifier for the visitor that triggered this event."
          },
          "sessionId": {
            "type": "string",
            "description": "Unique identifier for the session in which this event occurred."
          },
          "timestamp": {
            "type": "string",
            "format": "date-time",
            "description": "Timestamp of the event (in UTC)."
          },
          "sentAt": {
            "type": "string",
            "format": "date-time",
            "description": "Timestamp at which the request is sent (in UTC).\n\nTypically, this value is nearly identical to `timestamp`. However in some\nsituations there is latency between when the event occurs and when it is\nsent to Unify."
          },
          "context": {
            "allOf": [
              {
                "$ref": "#/components/schemas/EventContext"
              }
            ],
            "description": "Contextual information about the client behind the event."
          },
          "name": {
            "type": "string",
            "description": "Name of the event that was tracked."
          },
          "properties": {
            "allOf": [
              {
                "$ref": "#/components/schemas/TrackProperties"
              }
            ],
            "description": "Details about the event that was tracked."
          }
        },
        "description": "A track event represents a custom action or activity performed by a visitor."
      },
      "TrackProperties": {
        "type": "object",
        "properties": {
          "path": {
            "type": "string",
            "description": "Path of the page (equivalent to `location.pathname`)."
          },
          "query": {
            "type": "object",
            "additionalProperties": {
              "type": "string"
            },
            "description": "Query string parameters (equivalent to `location.search`)."
          },
          "referrer": {
            "type": "string",
            "description": "Referrer page's full URL (equivalent to `document.referrer`)."
          },
          "title": {
            "type": "string",
            "description": "Page title (equivalent to `document.title`)."
          },
          "url": {
            "type": "string",
            "description": "URL of the page (equivalent to `location.href`)."
          }
        },
        "additionalProperties": {},
        "description": "Details about an event included in a track request."
      },
      "Traits": {
        "type": "object",
        "required": [
          "email"
        ],
        "properties": {
          "email": {
            "type": "string",
            "description": "Email address of the visitor."
          }
        },
        "description": "Traits for the identify request payload."
      },
      "UObjects.CreateOrUpdateUCompanyAttributes": {
        "type": "object",
        "required": [
          "domain"
        ],
        "properties": {
          "address": {
            "allOf": [
              {
                "$ref": "#/components/schemas/UValues.UAddress",
                "nullable": true
              }
            ],
            "description": "Physical address of the company."
          },
          "corporate_phone": {
            "allOf": [
              {
                "$ref": "#/components/schemas/UValues.UPhoneNumber",
                "nullable": true
              }
            ],
            "description": "Corporate phone number of the company."
          },
          "description": {
            "allOf": [
              {
                "$ref": "#/components/schemas/UValues.UText",
                "nullable": true
              }
            ],
            "description": "Description of the company."
          },
          "do_not_contact": {
            "allOf": [
              {
                "$ref": "#/components/schemas/UValues.UBoolean",
                "nullable": true
              }
            ],
            "description": "Whether contacting this company is disallowed."
          },
          "domain": {
            "allOf": [
              {
                "$ref": "#/components/schemas/UValues.UUrl"
              }
            ],
            "description": "Website domain of the company."
          },
          "employee_count": {
            "allOf": [
              {
                "$ref": "#/components/schemas/UValues.UInteger",
                "nullable": true
              }
            ],
            "description": "Estimated employee count of the company."
          },
          "founded": {
            "allOf": [
              {
                "$ref": "#/components/schemas/UValues.UDate",
                "nullable": true
              }
            ],
            "description": "Date when the company was founded."
          },
          "industry": {
            "allOf": [
              {
                "$ref": "#/components/schemas/UValues.UText",
                "nullable": true
              }
            ],
            "description": "Industry the company operates in."
          },
          "lead_source": {
            "allOf": [
              {
                "$ref": "#/components/schemas/UValues.UText",
                "nullable": true
              }
            ],
            "description": "Source of the company record."
          },
          "linkedin_url": {
            "allOf": [
              {
                "$ref": "#/components/schemas/UValues.UUrl",
                "nullable": true
              }
            ],
            "description": "LinkedIn profile of the company.\n\nThis is the full URL of the LinkedIn profile of the company. The value will\nalways be standardized with an HTTPS prefix, \"www\" subdomain, and trailing\nslash."
          },
          "name": {
            "allOf": [
              {
                "$ref": "#/components/schemas/UValues.UText",
                "nullable": true
              }
            ],
            "description": "Name of the company."
          },
          "record_owner": {
            "anyOf": [
              {
                "$ref": "#/components/schemas/UValues.UReferenceById"
              },
              {
                "$ref": "#/components/schemas/UValues.UReferenceByMatch"
              },
              {
                "$ref": "#/components/schemas/UValues.UReferenceByUpsert"
              }
            ],
            "nullable": true,
            "description": "The user that owns the company record."
          },
          "revenue": {
            "allOf": [
              {
                "$ref": "#/components/schemas/UValues.UCurrency",
                "nullable": true
              }
            ],
            "description": "Estimated revenue of the company."
          },
          "status": {
            "allOf": [
              {
                "$ref": "#/components/schemas/UValues.UText",
                "nullable": true
              }
            ],
            "description": "Status of the company."
          },
          "time_zone": {
            "allOf": [
              {
                "$ref": "#/components/schemas/UValues.UText",
                "nullable": true
              }
            ],
            "description": "Time zone the company is located in."
          }
        },
        "allOf": [
          {
            "type": "object",
            "additionalProperties": {
              "allOf": [
                {
                  "$ref": "#/components/schemas/UValues.UValue"
                }
              ],
              "nullable": true
            }
          }
        ]
      },
      "UObjects.CreateOrUpdateUPersonAttributes": {
        "type": "object",
        "required": [
          "email"
        ],
        "properties": {
          "address": {
            "allOf": [
              {
                "$ref": "#/components/schemas/UValues.UAddress",
                "nullable": true
              }
            ],
            "description": "Physical address of the person."
          },
          "company": {
            "anyOf": [
              {
                "$ref": "#/components/schemas/UValues.UReferenceById"
              },
              {
                "$ref": "#/components/schemas/UValues.UReferenceByMatch"
              },
              {
                "$ref": "#/components/schemas/UValues.UReferenceByUpsert"
              }
            ],
            "nullable": true,
            "description": "Company associated with the person."
          },
          "corporate_phone": {
            "allOf": [
              {
                "$ref": "#/components/schemas/UValues.UPhoneNumber",
                "nullable": true
              }
            ],
            "description": "Corporate phone number of the person."
          },
          "do_not_call": {
            "allOf": [
              {
                "$ref": "#/components/schemas/UValues.UBoolean",
                "nullable": true
              }
            ],
            "description": "Whether calling this person is disallowed."
          },
          "do_not_email": {
            "allOf": [
              {
                "$ref": "#/components/schemas/UValues.UBoolean",
                "nullable": true
              }
            ],
            "description": "Whether emailing this person is disallowed."
          },
          "email": {
            "allOf": [
              {
                "$ref": "#/components/schemas/UValues.UEmail"
              }
            ],
            "description": "Email address of the person."
          },
          "email_opt_out": {
            "allOf": [
              {
                "$ref": "#/components/schemas/UValues.UBoolean",
                "nullable": true
              }
            ],
            "description": "Whether the person has opted out of email communications."
          },
          "eu_resident": {
            "allOf": [
              {
                "$ref": "#/components/schemas/UValues.UBoolean",
                "nullable": true
              }
            ],
            "description": "Whether this person is a resident of the European Union."
          },
          "first_name": {
            "allOf": [
              {
                "$ref": "#/components/schemas/UValues.UText",
                "nullable": true
              }
            ],
            "description": "First name of the person."
          },
          "last_name": {
            "allOf": [
              {
                "$ref": "#/components/schemas/UValues.UText",
                "nullable": true
              }
            ],
            "description": "Last name of the person."
          },
          "lead_source": {
            "allOf": [
              {
                "$ref": "#/components/schemas/UValues.UText",
                "nullable": true
              }
            ],
            "description": "Source of the person record."
          },
          "linkedin_url": {
            "allOf": [
              {
                "$ref": "#/components/schemas/UValues.UUrl",
                "nullable": true
              }
            ],
            "description": "LinkedIn profile of the person.\n\nThis is the full URL of the LinkedIn profile of the person. The value\nwill always be standardized with an HTTPS prefix, \"www\" subdomain, and\ntrailing slash."
          },
          "mobile_phone": {
            "allOf": [
              {
                "$ref": "#/components/schemas/UValues.UPhoneNumber",
                "nullable": true
              }
            ],
            "description": "Mobile phone number of the person."
          },
          "record_owner": {
            "anyOf": [
              {
                "$ref": "#/components/schemas/UValues.UReferenceById"
              },
              {
                "$ref": "#/components/schemas/UValues.UReferenceByMatch"
              },
              {
                "$ref": "#/components/schemas/UValues.UReferenceByUpsert"
              }
            ],
            "nullable": true,
            "description": "The user that owns the person record."
          },
          "status": {
            "allOf": [
              {
                "$ref": "#/components/schemas/UValues.UText",
                "nullable": true
              }
            ],
            "description": "Status of the person."
          },
          "title": {
            "allOf": [
              {
                "$ref": "#/components/schemas/UValues.UText",
                "nullable": true
              }
            ],
            "description": "Job title of the person."
          },
          "work_phone": {
            "allOf": [
              {
                "$ref": "#/components/schemas/UValues.UPhoneNumber",
                "nullable": true
              }
            ],
            "description": "Work phone number of the person."
          }
        },
        "allOf": [
          {
            "type": "object",
            "additionalProperties": {
              "allOf": [
                {
                  "$ref": "#/components/schemas/UValues.UValue"
                }
              ],
              "nullable": true
            }
          }
        ]
      },
      "UObjects.UCompanyAttributes": {
        "type": "object",
        "required": [
          "domain"
        ],
        "properties": {
          "address": {
            "allOf": [
              {
                "$ref": "#/components/schemas/UValues.UAddress",
                "nullable": true
              }
            ],
            "description": "Physical address of the company."
          },
          "corporate_phone": {
            "allOf": [
              {
                "$ref": "#/components/schemas/UValues.UPhoneNumber",
                "nullable": true
              }
            ],
            "description": "Corporate phone number of the company."
          },
          "description": {
            "allOf": [
              {
                "$ref": "#/components/schemas/UValues.UText",
                "nullable": true
              }
            ],
            "description": "Description of the company."
          },
          "do_not_contact": {
            "allOf": [
              {
                "$ref": "#/components/schemas/UValues.UBoolean",
                "nullable": true
              }
            ],
            "description": "Whether contacting this company is disallowed."
          },
          "domain": {
            "allOf": [
              {
                "$ref": "#/components/schemas/UValues.UUrl"
              }
            ],
            "description": "Website domain of the company."
          },
          "employee_count": {
            "allOf": [
              {
                "$ref": "#/components/schemas/UValues.UInteger",
                "nullable": true
              }
            ],
            "description": "Estimated employee count of the company."
          },
          "founded": {
            "allOf": [
              {
                "$ref": "#/components/schemas/UValues.UDate",
                "nullable": true
              }
            ],
            "description": "Date when the company was founded."
          },
          "industry": {
            "allOf": [
              {
                "$ref": "#/components/schemas/UValues.UText",
                "nullable": true
              }
            ],
            "description": "Industry the company operates in."
          },
          "last_activity_at": {
            "allOf": [
              {
                "$ref": "#/components/schemas/UValues.UDatetime",
                "nullable": true
              }
            ],
            "description": "Last time an activity was recorded for this company.",
            "readOnly": true
          },
          "lead_source": {
            "allOf": [
              {
                "$ref": "#/components/schemas/UValues.UText",
                "nullable": true
              }
            ],
            "description": "Source of the company record."
          },
          "linkedin_url": {
            "allOf": [
              {
                "$ref": "#/components/schemas/UValues.UUrl",
                "nullable": true
              }
            ],
            "description": "LinkedIn profile of the company.\n\nThis is the full URL of the LinkedIn profile of the company. The value will\nalways be standardized with an HTTPS prefix, \"www\" subdomain, and trailing\nslash."
          },
          "name": {
            "allOf": [
              {
                "$ref": "#/components/schemas/UValues.UText",
                "nullable": true
              }
            ],
            "description": "Name of the company."
          },
          "record_owner": {
            "anyOf": [
              {
                "$ref": "#/components/schemas/UValues.UReferenceById"
              },
              {
                "$ref": "#/components/schemas/UValues.UReferenceByMatch"
              },
              {
                "$ref": "#/components/schemas/UValues.UReferenceByUpsert"
              }
            ],
            "nullable": true,
            "description": "The user that owns the company record."
          },
          "revenue": {
            "allOf": [
              {
                "$ref": "#/components/schemas/UValues.UCurrency",
                "nullable": true
              }
            ],
            "description": "Estimated revenue of the company."
          },
          "status": {
            "allOf": [
              {
                "$ref": "#/components/schemas/UValues.UText",
                "nullable": true
              }
            ],
            "description": "Status of the company."
          },
          "time_zone": {
            "allOf": [
              {
                "$ref": "#/components/schemas/UValues.UText",
                "nullable": true
              }
            ],
            "description": "Time zone the company is located in."
          }
        },
        "allOf": [
          {
            "type": "object",
            "additionalProperties": {
              "allOf": [
                {
                  "$ref": "#/components/schemas/UValues.UValue"
                }
              ],
              "nullable": true
            }
          }
        ]
      },
      "UObjects.UPersonAttributes": {
        "type": "object",
        "required": [
          "email"
        ],
        "properties": {
          "address": {
            "allOf": [
              {
                "$ref": "#/components/schemas/UValues.UAddress",
                "nullable": true
              }
            ],
            "description": "Physical address of the person."
          },
          "company": {
            "anyOf": [
              {
                "$ref": "#/components/schemas/UValues.UReferenceById"
              },
              {
                "$ref": "#/components/schemas/UValues.UReferenceByMatch"
              },
              {
                "$ref": "#/components/schemas/UValues.UReferenceByUpsert"
              }
            ],
            "nullable": true,
            "description": "Company associated with the person."
          },
          "corporate_phone": {
            "allOf": [
              {
                "$ref": "#/components/schemas/UValues.UPhoneNumber",
                "nullable": true
              }
            ],
            "description": "Corporate phone number of the person."
          },
          "do_not_call": {
            "allOf": [
              {
                "$ref": "#/components/schemas/UValues.UBoolean",
                "nullable": true
              }
            ],
            "description": "Whether calling this person is disallowed."
          },
          "do_not_email": {
            "allOf": [
              {
                "$ref": "#/components/schemas/UValues.UBoolean",
                "nullable": true
              }
            ],
            "description": "Whether emailing this person is disallowed."
          },
          "email": {
            "allOf": [
              {
                "$ref": "#/components/schemas/UValues.UEmail"
              }
            ],
            "description": "Email address of the person."
          },
          "email_opt_out": {
            "allOf": [
              {
                "$ref": "#/components/schemas/UValues.UBoolean",
                "nullable": true
              }
            ],
            "description": "Whether the person has opted out of email communications."
          },
          "eu_resident": {
            "allOf": [
              {
                "$ref": "#/components/schemas/UValues.UBoolean",
                "nullable": true
              }
            ],
            "description": "Whether this person is a resident of the European Union."
          },
          "first_name": {
            "allOf": [
              {
                "$ref": "#/components/schemas/UValues.UText",
                "nullable": true
              }
            ],
            "description": "First name of the person."
          },
          "last_activity_at": {
            "allOf": [
              {
                "$ref": "#/components/schemas/UValues.UDatetime",
                "nullable": true
              }
            ],
            "description": "Last time an activity was recorded for this person.",
            "readOnly": true
          },
          "last_name": {
            "allOf": [
              {
                "$ref": "#/components/schemas/UValues.UText",
                "nullable": true
              }
            ],
            "description": "Last name of the person."
          },
          "lead_source": {
            "allOf": [
              {
                "$ref": "#/components/schemas/UValues.UText",
                "nullable": true
              }
            ],
            "description": "Source of the person record."
          },
          "linkedin_url": {
            "allOf": [
              {
                "$ref": "#/components/schemas/UValues.UUrl",
                "nullable": true
              }
            ],
            "description": "LinkedIn profile of the person.\n\nThis is the full URL of the LinkedIn profile of the person. The value\nwill always be standardized with an HTTPS prefix, \"www\" subdomain, and\ntrailing slash."
          },
          "mobile_phone": {
            "allOf": [
              {
                "$ref": "#/components/schemas/UValues.UPhoneNumber",
                "nullable": true
              }
            ],
            "description": "Mobile phone number of the person."
          },
          "record_owner": {
            "anyOf": [
              {
                "$ref": "#/components/schemas/UValues.UReferenceById"
              },
              {
                "$ref": "#/components/schemas/UValues.UReferenceByMatch"
              },
              {
                "$ref": "#/components/schemas/UValues.UReferenceByUpsert"
              }
            ],
            "nullable": true,
            "description": "The user that owns the person record."
          },
          "status": {
            "allOf": [
              {
                "$ref": "#/components/schemas/UValues.UText",
                "nullable": true
              }
            ],
            "description": "Status of the person."
          },
          "title": {
            "allOf": [
              {
                "$ref": "#/components/schemas/UValues.UText",
                "nullable": true
              }
            ],
            "description": "Job title of the person."
          },
          "work_phone": {
            "allOf": [
              {
                "$ref": "#/components/schemas/UValues.UPhoneNumber",
                "nullable": true
              }
            ],
            "description": "Work phone number of the person."
          }
        },
        "allOf": [
          {
            "type": "object",
            "additionalProperties": {
              "allOf": [
                {
                  "$ref": "#/components/schemas/UValues.UValue"
                }
              ],
              "nullable": true
            }
          }
        ]
      },
      "UResponses.BadRequestError": {
        "type": "object",
        "required": [
          "code"
        ],
        "properties": {
          "code": {
            "type": "string"
          },
          "path": {
            "type": "array",
            "items": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "integer"
                }
              ]
            }
          },
          "object_api_name": {
            "type": "string"
          },
          "attribute_api_name": {
            "type": "string"
          }
        },
        "allOf": [
          {
            "type": "object",
            "additionalProperties": {}
          }
        ],
        "description": "Validation error detail returned for bad request responses."
      },
      "UValues.UAddress": {
        "type": "object",
        "properties": {
          "country": {
            "allOf": [
              {
                "$ref": "#/components/schemas/UValues.UCountry"
              }
            ],
            "description": "Country code in ISO 3166-1 alpha-2 format."
          },
          "administrative_area": {
            "type": "string",
            "description": "State, province, region, or territory."
          },
          "sub_administrative_area": {
            "type": "string",
            "description": "County or other secondary governmental division of an administrative area."
          },
          "locality": {
            "type": "string",
            "description": "City, town, or village."
          },
          "dependent_locality": {
            "type": "string",
            "description": "Neighborhood, borough, district, or city sector."
          },
          "postal_code": {
            "type": "string",
            "description": "Postal code or ZIP code."
          },
          "thoroughfare": {
            "type": "string",
            "description": "Street name with elements such as street type or direction."
          },
          "premise": {
            "type": "string",
            "description": "Street number or building name."
          },
          "sub_premise": {
            "type": "string",
            "description": "Apartment, suite, office number, or other secondary unit designator."
          }
        },
        "description": "Composite object representing a physical address.",
        "title": "UAddress"
      },
      "UValues.UBoolean": {
        "type": "boolean",
        "description": "Boolean value.",
        "title": "UBoolean"
      },
      "UValues.UCountry": {
        "type": "object",
        "required": [
          "code",
          "name"
        ],
        "properties": {
          "code": {
            "allOf": [
              {
                "$ref": "#/components/schemas/UValues.UCountryCode"
              }
            ],
            "description": "Country code."
          },
          "name": {
            "type": "string",
            "description": "Country name."
          }
        },
        "description": "Composite object representing a country.",
        "title": "UCountry"
      },
      "UValues.UCountryCode": {
        "type": "string",
        "enum": [
          "AD",
          "AE",
          "AF",
          "AG",
          "AI",
          "AL",
          "AM",
          "AO",
          "AQ",
          "AR",
          "AS",
          "AT",
          "AU",
          "AW",
          "AX",
          "AZ",
          "BA",
          "BB",
          "BD",
          "BE",
          "BF",
          "BG",
          "BH",
          "BI",
          "BJ",
          "BL",
          "BM",
          "BN",
          "BO",
          "BQ",
          "BR",
          "BS",
          "BT",
          "BV",
          "BW",
          "BY",
          "BZ",
          "CA",
          "CC",
          "CD",
          "CF",
          "CG",
          "CH",
          "CI",
          "CK",
          "CL",
          "CM",
          "CN",
          "CO",
          "CR",
          "CU",
          "CV",
          "CW",
          "CX",
          "CY",
          "CZ",
          "DE",
          "DJ",
          "DK",
          "DM",
          "DO",
          "DZ",
          "EC",
          "EE",
          "EG",
          "EH",
          "ER",
          "ES",
          "ET",
          "FI",
          "FJ",
          "FK",
          "FM",
          "FO",
          "FR",
          "GA",
          "GB",
          "GD",
          "GE",
          "GF",
          "GG",
          "GH",
          "GI",
          "GL",
          "GM",
          "GN",
          "GP",
          "GQ",
          "GR",
          "GS",
          "GT",
          "GU",
          "GW",
          "GY",
          "HK",
          "HM",
          "HN",
          "HR",
          "HT",
          "HU",
          "ID",
          "IE",
          "IL",
          "IM",
          "IN",
          "IO",
          "IQ",
          "IR",
          "IS",
          "IT",
          "JE",
          "JM",
          "JO",
          "JP",
          "KE",
          "KG",
          "KH",
          "KI",
          "KM",
          "KN",
          "KP",
          "KR",
          "KW",
          "KY",
          "KZ",
          "LA",
          "LB",
          "LC",
          "LI",
          "LK",
          "LR",
          "LS",
          "LT",
          "LU",
          "LV",
          "LY",
          "MA",
          "MC",
          "MD",
          "ME",
          "MF",
          "MG",
          "MH",
          "MK",
          "ML",
          "MM",
          "MN",
          "MO",
          "MP",
          "MQ",
          "MR",
          "MS",
          "MT",
          "MU",
          "MV",
          "MW",
          "MX",
          "MY",
          "MZ",
          "NA",
          "NC",
          "NE",
          "NF",
          "NG",
          "NI",
          "NL",
          "NO",
          "NP",
          "NR",
          "NU",
          "NZ",
          "OM",
          "PA",
          "PE",
          "PF",
          "PG",
          "PH",
          "PK",
          "PL",
          "PM",
          "PN",
          "PR",
          "PS",
          "PT",
          "PW",
          "PY",
          "QA",
          "RE",
          "RO",
          "RS",
          "RU",
          "RW",
          "SA",
          "SB",
          "SC",
          "SD",
          "SE",
          "SG",
          "SH",
          "SI",
          "SJ",
          "SK",
          "SL",
          "SM",
          "SN",
          "SO",
          "SR",
          "SS",
          "ST",
          "SV",
          "SX",
          "SY",
          "SZ",
          "TC",
          "TD",
          "TF",
          "TG",
          "TH",
          "TJ",
          "TK",
          "TL",
          "TM",
          "TN",
          "TO",
          "TR",
          "TT",
          "TV",
          "TW",
          "TZ",
          "UA",
          "UG",
          "UM",
          "US",
          "UY",
          "UZ",
          "VA",
          "VC",
          "VE",
          "VG",
          "VI",
          "VN",
          "VU",
          "WF",
          "WS",
          "XK",
          "YE",
          "YT",
          "ZA",
          "ZM",
          "ZW"
        ],
        "description": "ISO 3166-1 alpha-2 country code.",
        "title": "UCountryCode"
      },
      "UValues.UCurrency": {
        "type": "object",
        "required": [
          "code",
          "value"
        ],
        "properties": {
          "code": {
            "allOf": [
              {
                "$ref": "#/components/schemas/UValues.UCurrencyCode"
              }
            ],
            "description": "Currency code."
          },
          "value": {
            "type": "number",
            "format": "decimal",
            "description": "Currency value."
          }
        },
        "description": "Composite object representing a currency value.",
        "title": "UCurrency"
      },
      "UValues.UCurrencyCode": {
        "type": "string",
        "enum": [
          "AED",
          "AFN",
          "ALL",
          "AMD",
          "ANG",
          "AOA",
          "ARS",
          "AUD",
          "AWG",
          "AZN",
          "BAM",
          "BBD",
          "BDT",
          "BGN",
          "BHD",
          "BIF",
          "BMD",
          "BND",
          "BOB",
          "BOV",
          "BRL",
          "BSD",
          "BTN",
          "BWP",
          "BYR",
          "BZD",
          "CAD",
          "CDF",
          "CHE",
          "CHF",
          "CHW",
          "CLF",
          "CLP",
          "CNY",
          "COP",
          "COU",
          "CRC",
          "CUC",
          "CUP",
          "CVE",
          "CZK",
          "DJF",
          "DKK",
          "DOP",
          "DZD",
          "EGP",
          "ERN",
          "ETB",
          "EUR",
          "FJD",
          "FKP",
          "GBP",
          "GEL",
          "GHS",
          "GIP",
          "GMD",
          "GNF",
          "GTQ",
          "GYD",
          "HKD",
          "HNL",
          "HRK",
          "HTG",
          "HUF",
          "IDR",
          "ILS",
          "INR",
          "IQD",
          "IRR",
          "ISK",
          "JMD",
          "JOD",
          "JPY",
          "KES",
          "KGS",
          "KHR",
          "KMF",
          "KPW",
          "KRW",
          "KWD",
          "KYD",
          "KZT",
          "LAK",
          "LBP",
          "LKR",
          "LRD",
          "LSL",
          "LTL",
          "LVL",
          "LYD",
          "MAD",
          "MDL",
          "MGA",
          "MKD",
          "MMK",
          "MNT",
          "MOP",
          "MRO",
          "MUR",
          "MVR",
          "MWK",
          "MXN",
          "MXV",
          "MYR",
          "MZN",
          "NAD",
          "NGN",
          "NIO",
          "NOK",
          "NPR",
          "NZD",
          "OMR",
          "PAB",
          "PEN",
          "PGK",
          "PHP",
          "PKR",
          "PLN",
          "PYG",
          "QAR",
          "RON",
          "RSD",
          "RUB",
          "RWF",
          "SAR",
          "SBD",
          "SCR",
          "SDG",
          "SEK",
          "SGD",
          "SHP",
          "SLL",
          "SOS",
          "SRD",
          "SSP",
          "STD",
          "SYP",
          "SZL",
          "THB",
          "TJS",
          "TMT",
          "TND",
          "TOP",
          "TRY",
          "TTD",
          "TWD",
          "TZS",
          "UAH",
          "UGX",
          "USD",
          "USN",
          "USS",
          "UYI",
          "UYU",
          "UZS",
          "VEF",
          "VND",
          "VUV",
          "WST",
          "XAF",
          "XAG",
          "XAU",
          "XBA",
          "XBB",
          "XBC",
          "XBD",
          "XCD",
          "XDR",
          "XOF",
          "XPD",
          "XPF",
          "XPT",
          "XTS",
          "XXX",
          "YER",
          "ZAR",
          "ZMW"
        ],
        "description": "ISO 4217 currency code.",
        "title": "UCurrencyCode"
      },
      "UValues.UDate": {
        "type": "string",
        "description": "String value representing a date.",
        "title": "UDate"
      },
      "UValues.UDatetime": {
        "type": "string",
        "description": "String value representing a datetime.",
        "title": "UDatetime"
      },
      "UValues.UDecimal": {
        "type": "number",
        "description": "Decimal value.",
        "title": "UDecimal"
      },
      "UValues.UEmail": {
        "type": "string",
        "format": "email",
        "description": "String value representing an email address.",
        "title": "UEmail"
      },
      "UValues.UInteger": {
        "type": "integer",
        "description": "Integer value.",
        "title": "UInteger"
      },
      "UValues.UMultiSelect": {
        "type": "array",
        "items": {
          "type": "string"
        },
        "description": "String array that contains strings from a specific set of allowed values.",
        "title": "UMultiSelect"
      },
      "UValues.UPhoneNumber": {
        "type": "string",
        "description": "String value representing a phone number.",
        "title": "UPhoneNumber"
      },
      "UValues.UReferenceById": {
        "type": "object",
        "required": [
          "id"
        ],
        "properties": {
          "id": {
            "allOf": [
              {
                "$ref": "#/components/schemas/UValues.UUuid"
              }
            ],
            "description": "An object record ID."
          }
        },
        "description": "Reference to another object record by ID.\n\nThis will find an existing record by its ID, and an error will be returned if\nthe record does not exist.",
        "title": "UReferenceById"
      },
      "UValues.UReferenceByMatch": {
        "type": "object",
        "required": [
          "match"
        ],
        "properties": {
          "match": {
            "type": "object",
            "additionalProperties": {},
            "description": "The attribute values to match against to find an existing record.\n\nAt least one unique attribute must be included to ensure that at most one\nrecord is matched. Additional unique or non-unique attributes may also be\nincluded to refine the matching criteria."
          }
        },
        "description": "Reference to another object record by match criteria.\n\nThis will find an existing record using the provided match criteria, and\n`null` will be returned if no match is found.",
        "title": "UReferenceByMatch"
      },
      "UValues.UReferenceByUpsert": {
        "type": "object",
        "required": [
          "match"
        ],
        "properties": {
          "match": {
            "type": "object",
            "additionalProperties": {},
            "description": "The attribute values to match against to find an existing record.\n\nAt least one unique attribute must be included to ensure that at most one\nrecord is matched. Additional unique or non-unique attributes may also be\nincluded to refine the matching criteria."
          },
          "create": {
            "type": "object",
            "additionalProperties": {},
            "description": "The attribute values to use when creating a new record if no match is found."
          },
          "update": {
            "type": "object",
            "additionalProperties": {},
            "description": "The attribute values to use when updating an existing record if a match is found."
          },
          "update_if_empty": {
            "type": "object",
            "additionalProperties": {},
            "description": "The attribute values to update when a matching record is found and the\nexisting attribute value on the record is `null`."
          },
          "create_or_update": {
            "type": "object",
            "additionalProperties": {},
            "description": "The attribute values to apply during both creation and update operations."
          },
          "create_or_update_if_empty": {
            "type": "object",
            "additionalProperties": {},
            "description": "The attribute values to apply during both creation and update-if-empty\noperations."
          }
        },
        "description": "Reference to another object record by performing a nested upsert.\n\nAt least one of `create`, `create_or_update` or `create_or_update_if_empty`\nmust be provided, and all required attributes on the object must be included\nin at least one of these properties.\n\n## Precedence\n\nWhen the same attribute is specified in multiple properties, the values will\nbe applied in a specific order of precedence. If a record is being created,\nthe following order is used:\n\n1. `create`\n2. `create_or_update`\n3. `create_or_update_if_empty`\n\nIf an existing record is being updated, the following order is used:\n\n1. `update`\n2. `create_or_update`\n3. `update_if_empty`\n4. `create_or_update_if_empty`",
        "title": "UReferenceByUpsert"
      },
      "UValues.USelect": {
        "type": "string",
        "description": "String value that matches one of a specific set of allowed values.",
        "title": "USelect"
      },
      "UValues.UText": {
        "type": "string",
        "description": "String value.",
        "title": "UText"
      },
      "UValues.UUrl": {
        "type": "string",
        "description": "String value representing a web URL or internet domain.",
        "title": "UUrl"
      },
      "UValues.UUuid": {
        "type": "string",
        "description": "String UUIDv4 value.",
        "title": "UUuid"
      },
      "UValues.UValue": {
        "anyOf": [
          {
            "$ref": "#/components/schemas/UValues.UAddress"
          },
          {
            "$ref": "#/components/schemas/UValues.UBoolean"
          },
          {
            "$ref": "#/components/schemas/UValues.UCountry"
          },
          {
            "$ref": "#/components/schemas/UValues.UCurrency"
          },
          {
            "$ref": "#/components/schemas/UValues.UDate"
          },
          {
            "$ref": "#/components/schemas/UValues.UDatetime"
          },
          {
            "$ref": "#/components/schemas/UValues.UDecimal"
          },
          {
            "$ref": "#/components/schemas/UValues.UEmail"
          },
          {
            "$ref": "#/components/schemas/UValues.UInteger"
          },
          {
            "$ref": "#/components/schemas/UValues.UMultiSelect"
          },
          {
            "$ref": "#/components/schemas/UValues.UPhoneNumber"
          },
          {
            "anyOf": [
              {
                "$ref": "#/components/schemas/UValues.UReferenceById"
              },
              {
                "$ref": "#/components/schemas/UValues.UReferenceByMatch"
              },
              {
                "$ref": "#/components/schemas/UValues.UReferenceByUpsert"
              }
            ]
          },
          {
            "$ref": "#/components/schemas/UValues.USelect"
          },
          {
            "$ref": "#/components/schemas/UValues.UText"
          },
          {
            "$ref": "#/components/schemas/UValues.UUrl"
          },
          {
            "$ref": "#/components/schemas/UValues.UUuid"
          }
        ]
      },
      "ipv4": {
        "type": "string",
        "format": "ipv4"
      },
      "ipv6": {
        "type": "string",
        "format": "ipv6"
      },
      "uuid": {
        "type": "string",
        "format": "uuid"
      }
    },
    "securitySchemes": {
      "BasicAuth": {
        "type": "http",
        "scheme": "Basic"
      }
    }
  },
  "servers": [
    {
      "url": "https://api.unifyintent.com/analytics/v1",
      "variables": {}
    }
  ]
}
