{
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "$id": "https://raw.githubusercontent.com/api-evangelist/blackbaud/main/json-schema/blackbaud-constituent-add-schema.json",
  "title": "ConstituentAdd",
  "description": "Constituents are the individuals and organizations who support your organization by contributing time, money, and resources. The constituent entity stores information about donors, prospects, volunteers, general supporters, and more.",
  "x-generated": "2026-10-14",
  "x-method": "derived",
  "x-generator": "derive-json-schema.py",
  "x-source": "openapi/blackbaud-constituent-api-openapi.yml#/components/schemas/ConstituentAdd",
  "required": [
    "type"
  ],
  "type": "object",
  "properties": {
    "address": {
      "$ref": "#/$defs/ConstituentAddressAdd",
      "description": "The constituent's preferred address."
    },
    "birthdate": {
      "$ref": "#/$defs/FuzzyDate",
      "description": "The constituent's birthdate. For individuals only."
    },
    "deceased": {
      "description": "Indicates whether the constituent is deceased. For individuals only.",
      "type": "boolean"
    },
    "deceased_date": {
      "$ref": "#/$defs/FuzzyDate",
      "description": "The date when the constituent died. For individuals only."
    },
    "email": {
      "$ref": "#/$defs/ConstituentEmailAddressAdd",
      "description": "The constituent's email address."
    },
    "first": {
      "description": "The constituent's first name. For individuals only. Character limit: 50.",
      "maxLength": 50,
      "minLength": 0,
      "type": "string"
    },
    "former_name": {
      "description": "The constituent's former name. For individuals only. Character limit: 100.",
      "maxLength": 100,
      "minLength": 0,
      "type": "string"
    },
    "gender": {
      "description": "The constituent's gender. Available values are the entries in the <a href=\"https://developer.sky.blackbaud.com/docs/services/56b76470069a0509c8f1c5b3/operations/ListGenders\"><b>Gender</b></a> table. This property defaults to <i>Unknown</i> if no value is provided. For individuals only.",
      "type": "string"
    },
    "gives_anonymously": {
      "description": "Indicates whether the constituent gives anonymously.",
      "type": "boolean"
    },
    "inactive": {
      "description": "Indicates whether the constituent is inactive.",
      "type": "boolean"
    },
    "last": {
      "description": "The constituent's last name. For individuals only (required). Character limit: 100.",
      "maxLength": 100,
      "minLength": 0,
      "type": "string"
    },
    "lookup_id": {
      "description": "The user-defined identifier for the constituent.",
      "type": "string"
    },
    "marital_status": {
      "description": "The constituent's marital status. Available values are the entries in the <a href=\"https://developer.sky.blackbaud.com/docs/services/56b76470069a0509c8f1c5b3/operations/ListMaritalStatuses\"><b>Marital Status</b></a> table.  For individuals only.",
      "type": "string"
    },
    "middle": {
      "description": "The constituent's middle name. For individuals only. Character limit: 50.",
      "maxLength": 50,
      "minLength": 0,
      "type": "string"
    },
    "name": {
      "description": "If the constituent's <code>type</code> is <i>Individual</i>, this is a computed field that does not apply to add operations. If the <code>type</code> is <i>Organization</i>, this field is required and represents the organization's name. Character limit: 60.",
      "type": "string"
    },
    "online_presence": {
      "$ref": "#/$defs/ConstituentOnlinePresenceAdd",
      "description": "The constituent's online presence."
    },
    "phone": {
      "$ref": "#/$defs/ConstituentPhoneAdd",
      "description": "The constituent's phone."
    },
    "preferred_name": {
      "description": "The constituent's preferred name. For individuals only. Character limit: 50.",
      "maxLength": 50,
      "minLength": 0,
      "type": "string"
    },
    "suffix": {
      "description": "The constituent's primary suffix. Available values are the entries in the <a href=\"https://developer.sky.blackbaud.com/docs/services/56b76470069a0509c8f1c5b3/operations/ListSuffixes\"><b>Suffixes</b></a> table. For individuals only.",
      "type": "string"
    },
    "suffix_2": {
      "description": "The constituent's secondary suffix. Available values are the entries in the <a href=\"https://developer.sky.blackbaud.com/docs/services/56b76470069a0509c8f1c5b3/operations/ListSuffixes\"><b>Suffixes</b></a> table. For individuals only.",
      "type": "string"
    },
    "title": {
      "description": "The constituent's primary title. Available values are the entries in the <a href=\"https://developer.sky.blackbaud.com/docs/services/56b76470069a0509c8f1c5b3/operations/ListTitles\"><b>Titles</b></a> table. For individuals only.",
      "type": "string"
    },
    "title_2": {
      "description": "The constituent's secondary title. Available values are the entries in the <a href=\"https://developer.sky.blackbaud.com/docs/services/56b76470069a0509c8f1c5b3/operations/ListTitles\"><b>Titles</b></a> table. For individuals only.",
      "type": "string"
    },
    "type": {
      "description": "The type of constituent. Available values are <i>Individual</i> and <i>Organization</i>.",
      "enum": [
        "Individual",
        "Organization"
      ],
      "type": "string"
    },
    "primary_addressee": {
      "$ref": "#/$defs/PrimaryNameFormatEdit",
      "description": "The constituent's primary addressee. For individuals only."
    },
    "primary_salutation": {
      "$ref": "#/$defs/PrimaryNameFormatEdit",
      "description": "The constituent's primary salutation. For individuals only."
    },
    "birthplace": {
      "description": "The birthplace of the constituent. For individuals only.",
      "type": "string"
    },
    "ethnicity": {
      "description": "The ethnicity of the constituent. For individuals only.",
      "type": "string"
    },
    "income": {
      "description": "The income for the constituent. For individuals only.",
      "type": "string"
    },
    "religion": {
      "description": "The religion of the constituent. For individuals only.",
      "type": "string"
    },
    "industry": {
      "description": "The industry of the constituent. For organizations only.",
      "type": "string"
    },
    "matches_gifts": {
      "description": "Indicates if the constituent matches gifts. For organizations only.",
      "type": "boolean"
    },
    "matching_gift_per_gift_min": {
      "$ref": "#/$defs/Currency",
      "description": "The minimum matching gift per gift for the constituent. For organizations only."
    },
    "matching_gift_per_gift_max": {
      "$ref": "#/$defs/Currency",
      "description": "The maximum matching gift per gift for the constituent. For organizations only."
    },
    "matching_gift_total_min": {
      "$ref": "#/$defs/Currency",
      "description": "The minimum matching gift total for the constituent. For organizations only."
    },
    "matching_gift_total_max": {
      "$ref": "#/$defs/Currency",
      "description": "The maximum matching gift total for the constituent. For organizations only."
    },
    "matching_gift_factor": {
      "format": "double",
      "description": "The matching gift factor for the constituent. For organizations only.",
      "type": "number"
    },
    "matching_gift_notes": {
      "description": "The matching gift notes for the constituent. For organizations only.",
      "type": "string"
    },
    "num_employees": {
      "format": "int32",
      "description": "The number of employees for the constituent. For organizations only.",
      "type": "integer"
    },
    "is_memorial": {
      "description": "Indicates whether the constituent is for honor/memorial.",
      "type": "boolean"
    },
    "is_solicitor": {
      "description": "Indicates whether the constituent is a solicitor.",
      "type": "boolean"
    },
    "no_valid_address": {
      "description": "Indicates whether the constituent does not have a valid address.",
      "type": "boolean"
    },
    "receipt_type": {
      "description": "The receipt type of the constituent.",
      "enum": [
        "One receipt per gift",
        "Consolidated receipts"
      ],
      "type": "string"
    },
    "target": {
      "description": "The target of the constituent.",
      "type": "string"
    },
    "date_added": {
      "format": "date-time",
      "description": "Optional.  The date the constituent was added. Useful when importing records from another system and the source system has a date added. Uses <a href=\"https://tools.ietf.org/html/rfc3339\">ISO-8601 format: </a><i>1969-11-21T10:29:43</i>.",
      "type": "string",
      "x-supports-datetime-offset": true
    },
    "requests_no_email": {
      "description": "Indicates whether the constituent requests no email.",
      "type": "boolean"
    },
    "import_id": {
      "description": "The import ID associated with the constituent. Maximum length is 20 characters.",
      "maxLength": 20,
      "minLength": 0,
      "type": "string"
    }
  },
  "x-hidden": true,
  "x-display-name": "Create constituent",
  "x-display-id": "CreateConstituent",
  "$defs": {
    "ConstituentAddressAdd": {
      "description": "Defines the shape of an address for adding with a constituent.",
      "required": [
        "type"
      ],
      "type": "object",
      "properties": {
        "address_lines": {
          "description": "The address lines. Character limit: 150.",
          "maxLength": 150,
          "minLength": 0,
          "type": "string"
        },
        "city": {
          "description": "The city of the address. Character limit: 50.",
          "maxLength": 50,
          "minLength": 0,
          "type": "string"
        },
        "country": {
          "description": "The country of the address.",
          "type": "string"
        },
        "county": {
          "description": "The county of the address.",
          "type": "string"
        },
        "do_not_mail": {
          "description": "Indicates whether the constituent requests not to be contacted at this address.",
          "type": "boolean"
        },
        "end": {
          "format": "date-time",
          "description": "The date when the constituent ceased to reside at this address. Uses <a href=\"https://tools.ietf.org/html/rfc3339\">ISO-8601 format: </a><i>1969-11-21T10:29:43</i>.",
          "type": "string",
          "x-supports-datetime-offset": false
        },
        "postal_code": {
          "description": "The postal code of the address. Character limit: 12.",
          "maxLength": 12,
          "minLength": 0,
          "type": "string"
        },
        "seasonal_end": {
          "$ref": "#/$defs/FuzzyDate",
          "description": "The time of the year ceases to reside at this address."
        },
        "seasonal_start": {
          "$ref": "#/$defs/FuzzyDate",
          "description": "The time of year that the constituent begins residing at this address."
        },
        "start": {
          "format": "date-time",
          "description": "The date when the constituent began residing at this address. Uses <a href=\"https://tools.ietf.org/html/rfc3339\">ISO-8601 format: </a><i>1969-11-21T10:29:43</i>.",
          "type": "string",
          "x-supports-datetime-offset": false
        },
        "state": {
          "description": "The state of the address.",
          "type": "string"
        },
        "suburb": {
          "description": "The suburb of the address.",
          "type": "string"
        },
        "type": {
          "description": "The address type. Available values are the entries in the <a href=\"https://developer.sky.blackbaud.com/docs/services/56b76470069a0509c8f1c5b3/operations/ListAddressTypes\"><b>Address Types</b></a> table.",
          "type": "string"
        }
      },
      "x-hidden": true,
      "x-display-name": "Create constituent address",
      "x-display-id": "CreateConstituentAddress"
    },
    "ConstituentEmailAddressAdd": {
      "description": "Defines the shape of an email address for adding with a constituent.",
      "required": [
        "address",
        "type"
      ],
      "type": "object",
      "properties": {
        "address": {
          "description": "The email address.",
          "type": "string"
        },
        "do_not_email": {
          "description": "Indicates whether the constituent requests not to be contacted at this email address.",
          "type": "boolean"
        },
        "inactive": {
          "description": "Indicates whether the email address is inactive.",
          "type": "boolean"
        },
        "primary": {
          "description": "Indicates whether this is the constituent's primary email address.",
          "type": "boolean"
        },
        "type": {
          "description": "The type of email address. Available values are the entries in the <a href=\"https://developer.sky.blackbaud.com/docs/services/56b76470069a0509c8f1c5b3/operations/ListEmailAddressTypes\"><b>Phone Types</b></a> table.",
          "type": "string"
        }
      },
      "x-hidden": true,
      "x-display-name": "Create constituent email address",
      "x-display-id": "CreateConstituentEmailAddress"
    },
    "ConstituentOnlinePresenceAdd": {
      "description": "Defines the shape of an online presence for adding with a constituent.",
      "required": [
        "address",
        "type"
      ],
      "type": "object",
      "properties": {
        "address": {
          "description": "The web address for the online presence.",
          "type": "string"
        },
        "inactive": {
          "description": "Indicates whether the online presence is inactive.",
          "type": "boolean"
        },
        "primary": {
          "description": "Indicates whether this is the constituent's primary online presence.",
          "type": "boolean"
        },
        "type": {
          "description": "The online presence type. Available values are the entries in the <a href=\"https://developer.sky.blackbaud.com/docs/services/56b76470069a0509c8f1c5b3/operations/ListOnlinePresenceTypes\"><b>Phone Types</b></a> table.",
          "type": "string"
        }
      },
      "x-hidden": true,
      "x-display-name": "Create constituent online presence",
      "x-display-id": "CreateConstituentOnlinePresence"
    },
    "ConstituentPhoneAdd": {
      "description": "Defines the shape of a phone for adding with a constituent.",
      "required": [
        "number",
        "type"
      ],
      "type": "object",
      "properties": {
        "do_not_call": {
          "description": "Indicates whether the constituent requests not to be contacted at this number.",
          "type": "boolean"
        },
        "inactive": {
          "description": "Indicates whether the phone is inactive.",
          "type": "boolean"
        },
        "number": {
          "description": "The phone number.",
          "type": "string"
        },
        "primary": {
          "description": "Indicates whether this is the constituent's primary phone number.",
          "type": "boolean"
        },
        "type": {
          "description": "The phone type. Available values are the entries in the <a href=\"https://developer.sky.blackbaud.com/docs/services/56b76470069a0509c8f1c5b3/operations/ListPhoneTypes\"><b>Phone Types</b></a> table.",
          "type": "string"
        }
      },
      "x-hidden": true,
      "x-display-name": "Create constituent phone",
      "x-display-id": "CreateConstituentPhone"
    },
    "Currency": {
      "description": "For consistency, currency is configured at the organization level. This ensures that all monetary amounts are consistent, regardless of where they are entered or viewed.",
      "type": "object",
      "properties": {
        "value": {
          "format": "double",
          "description": "The monetary value.",
          "type": "number"
        }
      }
    },
    "FuzzyDate": {
      "description": "Fuzzy dates provide a versatile date type to create partial dates such as February 9 (with no year indicated).",
      "type": "object",
      "properties": {
        "d": {
          "format": "int32",
          "description": "The day in the fuzzy date.",
          "type": "integer"
        },
        "m": {
          "format": "int32",
          "description": "The month in the fuzzy date.",
          "type": "integer"
        },
        "y": {
          "format": "int32",
          "description": "The year in the fuzzy date.",
          "type": "integer"
        }
      },
      "x-display-name": "Fuzzy date",
      "x-display-id": "FuzzyDate"
    },
    "PrimaryNameFormatEdit": {
      "description": "Primary name formats are elevated name formats used for the constituent's most commonly used addressee and salutation name formats.",
      "type": "object",
      "properties": {
        "configuration_id": {
          "description": "The name format configuration identifier. Required when custom_format is false.",
          "type": "string"
        },
        "custom_format": {
          "description": "Whether the name format uses a custom format.",
          "type": "boolean"
        },
        "formatted_name": {
          "description": "The name format formatted name. Required when custom_format is true. Character limit: 255.",
          "maxLength": 255,
          "minLength": 0,
          "type": "string"
        }
      },
      "x-hidden": true,
      "x-display-name": "Edit primary name format",
      "x-display-id": "EditPrimaryNameFormat"
    }
  }
}