Cvent Event Cloud Custom Fields API

Custom Fields are created by event planners to track important information about specific objects like events, contacts, or sessions. Use these APIs to view, create, and update custom fields in your account and their related details.

OpenAPI Specification

cvent-event-cloud-custom-fields-api-openapi.yml Raw ↑
openapi: 3.2.0
info:
  title: Cvent REST APIs — Event Cloud Custom Fields API
  description: "Event Cloud scope of the Cvent REST APIs. This document is a TAG-SCOPED SUBSET of the OpenAPI specification Cvent publishes at https://github.com/cvent/rest-sdks/blob/main/cvent-public-spec/openapi.yaml (the source of truth for Cvent's official TypeScript/.NET/Java SDKs). Venue-sourcing, RFP, housing-supplier and travel-supplier tags were removed because they belong to Cvent Hospitality Cloud; every path, operation, parameter, schema and security requirement below is verbatim from Cvent's published spec.\n\n# Introduction\nThe Cvent API Platform is built around REST. We aim to provide intuitive endpoints that can be easily\ndiscovered to help leverage the Cvent platform for your event needs. The RESTful APIs outlined here\nuse JSON-encoded request and response format, along with HTTP codes, to convey processing status of\nrequests received. The Cvent resources are protected using OAuth2.\n\n# Getting Started\n\nIf you're new to the Cvent API Platform, start by reading our\n[Developer Quickstart](https://developers.cvent.com/docs/rest-api/tutorials/developer-quickstart) guide. This will\ngive you an overview of how to authenticate and make requests using our APIs.\n\n## Authentication\n\nThe Cvent REST API uses [OAuth2](https://oauth.net/2/) to authorize requests to the platform. The client\ncredentials authorization flow is supported.\n\n<a name=\"oauth2-auth-code-planner-admin\"></a>\n\nAuthorization code flow is only supported for planner users with the administrator role in Cvent. Developer users\ncannot use authorization code flow.\n\n<!-- ReDoc-Inject: <security-definitions> -->\n\nHere's an example of using client credential flow to authorize. You'll supply your application's id and secret to\nmake a [Token](#operation/oauth2Token) request.\n\n```bash\ncurl --location --request POST '{hostName}/{version}/oauth2/token' \\\n--header 'Content-Type: application/x-www-form-urlencoded' \\\n--header 'Authorization: Basic {api_credentials}' \\\n--data-urlencode 'grant_type=client_credentials' \\\n--data-urlencode 'client_id={client_id}'\n```\n\n| Key               | Description                                          | Value                                                                                                        |\n| :---------------- | :--------------------------------------------------- | :----------------------------------------------------------------------------------------------------------- |\n| {hostName}        | https://api-platform.cvent.com                       | Location if your account is in the North American datacenter.                                                |\n|                   | https://api-platform-eur.cvent.com                   | Location if your account is in the European data center.                                                     |\n| {version}         | ea                                                   | The version of the API you're using. Only `ea` is currently supported.                                       |\n| {api_credentials} | {client_id}:{client_secret} in base64 encoded format | Supply your client id & client credentials in a base 64 encoded format.                                      |\n| {client_id}       | Retrieved from your application                      | Your application's client id.                                                                                |\n| {client_secret}   | Retrieved from your application                      | Your application's client secret.                                                                            |\n\nOn a successful call, you'll receive the following response:\n\n```json\n{\n  \"access_token\": \"{accessToken}\",\n  \"expires_in\": 3600,\n  \"token_type\": \"Bearer\"\n}\n```\n\nThis bearer token is valid for 3600 seconds (60 minutes) and must be used in subsequent calls.\n\n## Endpoints\n\nEndpoints start with `hostName` and `version`.\n\nThe `hostname` will depend on the region that your Cvent account is hosted in. Please see the table\nbelow to identify which hostname you should be using.\n\n| Region        |\tHostname                           |\n|:--------------|:-----------------------------------|\n| North America\t| https://api-platform.cvent.com     |\n| Europe        | https://api-platform-eur.cvent.com |\n\nThe current `version` of the Cvent API is `ea`.\n\n## Rate Limits\n\nCvent APIs enforce rate limits to ensure platform stability. Your limits depend on your tier: Free,\nStandard, or Premium.\n\n<br />\n\n### Usage Tiers\n\n| Tier     | Daily Calls | Calls per Second | Max Burst |\n| -------- | ----------- | ---------------- | --------- |\n| Free     | 1,000       | 2                | 1         |\n| Standard | 15,000      | 10               | 10        |\n| Premium  | 500,000     | 25               | 25        |\n\n- **Daily calls** define how many requests you can make in a 24-hour period. Quota\n  resets at 12 midnight (+0 GMT).\n- **Calls per second** define how many requests you can make in a 1-second window.\n- **Max Burst** defines how many requests you can make at once.\n\nIf you are unsure what usage tier applies to your account, you can check via\n[Get Current Usage Tier](#operation/getUsageTier).\n\nPlease note that these limits may change as the Cvent API Platform evolves.\n\n<br />\n\n### Handling Rate Limits\n\nSometimes, you may exceed your rate limits. When this happens, the API will return a `429 Too Many Requests`. See\n[handling rate limits](https://developers.cvent.com/docs/rest-api/guides/handling-rate-limits) for best practices on how to handle this.\n\n## Pagination\n\nSome APIs use pagination to manage records. Each page of records has a token associated to identify it.\n\nIf an API uses pagination, you’ll find up to three tokens in the response:\n- **currentToken**: Describes the token of the current page.\n- **nextToken**: Provides a token for the next page of records, if one exists.\n- **previousToken**: Provides a token for the previous page of records, if one exists. Not all APIs will return\n  this token.\n\nYou specify which page of records to view via the `token` parameter in your API call. To navigate through pages,\ntake the `nextToken` or `previousToken` value and pass it to your next call’s `token` parameter to get the\nrespective page of records. For example, if you made this request:\n\n```bash\ncurl -X GET {hostname}/{version}/contacts?limit=100 \\\n-H 'Accept: application/json' \\\n-H 'Authorization: Bearer {accessToken}'\n```\n\nThe response contains a paging array where you'll find the token information.\n\n```json\n{\n  \"paging\": {\n    \"currentToken\": \"90c5f062-76ad-4ea4-aa53-00eb698d9262\",\n    \"nextToken\": \"3b2359a7-4583-40ed-8afd-67e5f15373d3\",\n    \"limit\": 100,\n    \"totalCount\": 102,\n    \"_links\": {...}\n  },\n  \"data\": [...]\n}\n```\n\nTake the `nextToken` and use it in the `token` parameter on your subsequent call.\n\n```bash\ncurl -X GET {hostname}/{version}/contacts?limit=100&token=3b2359a7-4583-40ed-8afd-67e5f15373d3 \\\n-H 'Accept: application/json' \\\n-H 'Authorization: Bearer {accessToken}'\n```\n\nWhen the response doesn’t contain a `nextToken` field, you’ve reached the last page. Occasionally, you might\nencounter an empty page at the end of results. This typically happens when the results were evenly divisible.\nEnsure your client code handles the possibility of receiving an empty data array when using the `nextToken`.\n\n## Filtering\n\nUse filters to narrow down results. The filter follows the pattern\n`filter='field' comparisonType 'value'`. The value can be enclosed with single\nquotes (') or double quotes (\").\n\n```bash\nGET {hostName}/{version}/contacts?filter=lastName eq 'Smith'\n````\n\nTo correctly pass a single quote in the filter's value, use double quotes around\nthe string.\n\n```bash\nGET {hostName}/{version}/contacts?filter=lastName eq \"O'Keenan\"\n```\n\nTo correctly pass a double quote in the filter's value, use double quotes around\nthe string and add an escape character `\\` to each quote that is part of the\nstring.\n\n```bash\nGET {hostName}/{version}/events?filter=eventName eq \"\\\"Yearly\\\" Conference\"\n```\n\n## Versioning\n\nChange is inevitable in API development. Planning for it is crucial. We track\nboth backward-compatible and backward-incompatible changes.\n\n<br />\n\n### Backward Compatible Changes\n\nBackward compatible changes will be made often and are intended to avoid\nany adverse impact on our customers. It is highly advisable that when reading\nJSON payloads from Cvent, you are able to handle \"unknown\" attributes that\ncan be added over time. We consider the following changes backward-compatible:\n\n- Adding new resources\n- Adding new optional request parameters to existing operations\n- Adding new attributes to requests or responses\n- Changing the length or format (not type) of resource identifiers. For example, an ID can change from\n  \"1234/1234\" to \"1234::1234\".\n- Increasing the length of string fields\n\n<br />\n\n### Backward Incompatible Changes\n\nBackward-incompatible changes are made infrequently, however, they can be\ndisruptive to consumers. Due to this, our APIs are versioned to avoid\ndisruptions to customers. We leverage a URI-based versioning scheme,\nwhich means that a version value is included in the Cvent API URL.\nWhen breaking changes occur, a new version of the API is made available\nwhile the existing version is deprecated but remains available for a\nlimited period of time. We consider the following backward-incompatible changes:\n\n- Adding a new required parameter (query string param or payload attribute)\n- Deleting API resources\n- Deleting any attribute from API responses\n- Changing the data type on any parameter or attribute\n\n## Standards\nAs you begin working with our APIs, it's essential to be aware of standards around\ncountry codes, time formats, and other important details that ensure smooth integration.\nLearn more about our [API Standards](https://developers.cvent.com/docs/rest-api/reference/api-standards)\n"
  contact:
    name: Cvent Development Platform
    url: https://developers.cvent.com/
  version: ea
servers:
- url: https://api-platform.cvent.com/ea
- url: https://api-platform-eur.cvent.com/ea
tags:
- name: Custom Fields
  description: Custom Fields are created by event planners to track important information about specific objects like events, contacts, or sessions. Use these APIs to view, create, and update custom fields in your account and their related details.
paths:
  /custom-fields:
    get:
      security:
      - OAuth2.clientCredentials:
        - event/custom-fields:read
      - OAuth2.authorizationCode:
        - event/custom-fields:read
      summary: List Custom Fields
      description: Get a paginated list of custom fields in an account.
      operationId: listCustomFields
      parameters:
      - $ref: '#/components/parameters/after'
      - $ref: '#/components/parameters/before'
      - $ref: '#/components/parameters/limit'
      - $ref: '#/components/parameters/token'
      - name: filter
        in: query
        required: true
        description: 'Use filter query parameters to limit results

          to data that matches your criteria. See

          [Filters](https://developers.cvent.com/docs/rest-api/reference/filters) for details.


          Supported fields and operators are listed below:


          | Field            | Operators                          | Notes |

          |------------------|-------------------------------------|-------|

          | id               | `eq`, `ne`                          | |

          | category         | `eq`                                | Required, one category can be provided at a time |

          | lastModified     | `eq`, `ne`, `lt`, `le`, `gt`, `ge`  | |

          | code             | `eq`, `ne`                          | Case insensitive |


          The following logical operators are supported for combining filters:

          * and

          * or

          '
        schema:
          type: string
          example: category eq 'Event' and lastModified gt '2021-03-19T11:30:37.909Z' and code eq 'FAVORITE_COLOR_CODE'
      tags:
      - Custom Fields
      responses:
        '200':
          description: Successfully retrieved a paginated list of custom fields.
          headers: {}
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/custom-fields-paginated-response'
        '400':
          $ref: '#/components/responses/BadRequest1'
        '401':
          $ref: '#/components/responses/Unauthorized1'
        '403':
          $ref: '#/components/responses/Forbidden1'
        '429':
          $ref: '#/components/responses/TooManyRequests1'
      deprecated: false
      externalDocs:
        description: More about OAuth2 authorization code support for administrators
        url: '#oauth2-auth-code-planner-admin'
    post:
      security:
      - OAuth2.clientCredentials:
        - event/custom-fields:write
      - OAuth2.authorizationCode:
        - event/custom-fields:write
      summary: Create Custom Field
      description: Creates a single custom field based on the values provided.
      operationId: createCustomField
      requestBody:
        description: Custom field to be created
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/custom-field3'
      tags:
      - Custom Fields
      responses:
        '201':
          description: Successfully created a custom field.
          headers: {}
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/existing-custom-field'
        '400':
          $ref: '#/components/responses/BadRequest1'
        '401':
          $ref: '#/components/responses/Unauthorized1'
        '403':
          $ref: '#/components/responses/Forbidden1'
        '429':
          $ref: '#/components/responses/TooManyRequests1'
      externalDocs:
        description: More about OAuth2 authorization code support for administrators
        url: '#oauth2-auth-code-planner-admin'
  /custom-fields/{customFieldId}:
    parameters:
    - $ref: '#/components/parameters/customFieldId4'
    put:
      security:
      - OAuth2.clientCredentials:
        - event/custom-fields:write
      - OAuth2.authorizationCode:
        - event/custom-fields:write
      summary: Update Custom Field
      description: Updates a custom field based on the given custom field ID.
      operationId: updateCustomField
      requestBody:
        description: Custom field to be updated
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/existing-custom-field'
      tags:
      - Custom Fields
      responses:
        '200':
          description: Successfully updated the custom field.
          headers: {}
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/existing-custom-field'
        '400':
          $ref: '#/components/responses/BadRequest1'
        '401':
          $ref: '#/components/responses/Unauthorized1'
        '403':
          $ref: '#/components/responses/Forbidden1'
        '404':
          $ref: '#/components/responses/NotFound1'
        '429':
          $ref: '#/components/responses/TooManyRequests1'
      externalDocs:
        description: More about OAuth2 authorization code support for administrators
        url: '#oauth2-auth-code-planner-admin'
    get:
      security:
      - OAuth2.clientCredentials:
        - event/custom-fields:read
      - OAuth2.authorizationCode:
        - event/custom-fields:read
      summary: Get Custom Field
      description: Get a single custom field based on the given custom field ID.
      operationId: getCustomField
      tags:
      - Custom Fields
      responses:
        '200':
          description: Successfully retrieved a custom field.
          headers: {}
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/existing-custom-field'
        '401':
          $ref: '#/components/responses/Unauthorized1'
        '403':
          $ref: '#/components/responses/Forbidden1'
        '404':
          $ref: '#/components/responses/NotFound1'
        '429':
          $ref: '#/components/responses/TooManyRequests1'
      externalDocs:
        description: More about OAuth2 authorization code support for administrators
        url: '#oauth2-auth-code-planner-admin'
  /custom-fields/{customFieldId}/advanced-logic:
    parameters:
    - $ref: '#/components/parameters/customFieldId4'
    put:
      security:
      - OAuth2.clientCredentials:
        - event/custom-fields:write
      - OAuth2.authorizationCode:
        - event/custom-fields:write
      summary: Update Advanced Logic
      description: Updates the advanced logic for a custom field. Links the field given in the path to a 'source' custom field. Answers to the source custom field determine the visible choices in the given custom field. If the source field has no answers, only the default choices for the given field are visible.
      operationId: updateCustomFieldAdvancedLogic
      requestBody:
        description: Advanced logic rules to apply to the given custom field.
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/advanced-logic'
      tags:
      - Custom Fields
      responses:
        '200':
          description: Successfully updated the custom field's advanced logic.
          headers: {}
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/advanced-logic'
        '400':
          $ref: '#/components/responses/BadRequest1'
        '401':
          $ref: '#/components/responses/Unauthorized1'
        '403':
          $ref: '#/components/responses/Forbidden1'
        '404':
          $ref: '#/components/responses/NotFound1'
        '429':
          $ref: '#/components/responses/TooManyRequests1'
      externalDocs:
        description: More about OAuth2 authorization code support for administrators
        url: '#oauth2-auth-code-planner-admin'
  /custom-fields/{customFieldId}/translations:
    parameters:
    - $ref: '#/components/parameters/customFieldId4'
    post:
      security:
      - OAuth2.clientCredentials:
        - event/custom-fields:write
      - OAuth2.authorizationCode:
        - event/custom-fields:write
      summary: Create Custom Fld. Translation
      description: Creates translations for a single custom field based on the values provided.
      operationId: createCustomFieldTranslation
      requestBody:
        description: Translation details to be created for the custom field.
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/translation1'
      tags:
      - Custom Fields
      responses:
        '201':
          description: Successfully created translations for the custom field.
          headers: {}
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/translation1'
        '400':
          $ref: '#/components/responses/BadRequest1'
        '401':
          $ref: '#/components/responses/Unauthorized1'
        '403':
          $ref: '#/components/responses/Forbidden1'
        '404':
          $ref: '#/components/responses/NotFound1'
        '429':
          $ref: '#/components/responses/TooManyRequests1'
      externalDocs:
        description: More about OAuth2 authorization code support for administrators
        url: '#oauth2-auth-code-planner-admin'
    put:
      security:
      - OAuth2.clientCredentials:
        - event/custom-fields:write
      - OAuth2.authorizationCode:
        - event/custom-fields:write
      summary: Update Custom Fld. Translation
      description: Updates translations for a single custom field based on the given custom field ID.
      operationId: updateCustomFieldTranslation
      requestBody:
        description: Translation details to be updated for the custom field.
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/translation1'
      tags:
      - Custom Fields
      responses:
        '200':
          description: Successfully updated translations for the custom field.
          headers: {}
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/translation1'
        '400':
          $ref: '#/components/responses/BadRequest1'
        '401':
          $ref: '#/components/responses/Unauthorized1'
        '403':
          $ref: '#/components/responses/Forbidden1'
        '404':
          $ref: '#/components/responses/NotFound1'
        '429':
          $ref: '#/components/responses/TooManyRequests1'
      externalDocs:
        description: More about OAuth2 authorization code support for administrators
        url: '#oauth2-auth-code-planner-admin'
components:
  responses:
    TooManyRequests1:
      description: Too many requests
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/ErrorResponse'
          example:
            code: 429
            message: Limit Exceeded
    NotFound1:
      description: Resource not found
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/ErrorResponse'
          example:
            code: 404
            message: Not found
    Unauthorized1:
      description: Bad or expired token
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/ErrorResponse'
          example:
            code: 401
            message: Unauthorized
    Forbidden1:
      description: You do not have access to the resource
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/ErrorResponse'
          example:
            code: 403
            message: Access Forbidden
    BadRequest1:
      description: Bad request
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/ErrorResponse'
          example:
            code: 400
            message: Bad Request
  schemas:
    uuid-property:
      title: UUID Property
      description: A string that has to be a format matching the industry standard uuid
      type: string
      format: uuid
      example: 04ca6ae2-0dc3-487b-953e-86d6abbdf7d3
    Audit:
      title: Audit
      description: Audit information
      type: object
      properties:
        created:
          type: string
          format: date-time
          description: The ISO 8601 zoned date time when this record was created.
          readOnly: true
          example: '2017-01-02T02:00:00Z'
        createdBy:
          type: string
          description: The identifier of the user that created this record.
          readOnly: true
          example: hporter
        lastModified:
          type: string
          format: date-time
          description: The ISO 8601 zoned date time when this record was updated.
          readOnly: true
          example: '2019-02-12T03:00:00Z'
        lastModifiedBy:
          type: string
          description: The identifier of the user that last updated this record.
          readOnly: true
          example: hporter
    Language1:
      title: Language
      enum:
      - af-ZA
      - ar-SA
      - az-Latn-AZ
      - be-BY
      - bg-BG
      - bn-IN
      - bs-BA
      - ca-ES
      - cs-CZ
      - da-DK
      - de-CH
      - de-DE
      - el-GR
      - en-GB
      - en-US
      - es-ES
      - fi-FI
      - fr-CA
      - fr-FR
      - ga-IE
      - he-IL
      - hi-IN
      - hr-HR
      - hu-HU
      - hy-AM
      - id-ID
      - is-IS
      - it-IT
      - ja-JP
      - kn
      - ko-KR
      - lb-LU
      - lt-LT
      - lv-LV
      - mi-NZ
      - ml
      - mn-CN
      - ms-MY
      - mt-MT
      - nb-NO
      - ne-NP
      - nl-NL
      - pa-IN
      - pl-PL
      - pt-BR
      - pt-PT
      - ro-MO
      - ro-RO
      - ru-RU
      - sk-SK
      - sl-SI
      - sq-AL
      - sr-RS
      - sv-SE
      - ta-IN
      - te-IN
      - th-TH
      - tl-PH
      - tr-TR
      - uk-UA
      - vi-VN
      - zh-CHT
      - zh-CN
      - zh-tw
      type: string
      description: IETF language code used to specify a target language for the translation.
      example: es-ES
    PaginationLinks:
      title: PaginationLinks
      type: object
      description: Represents pagination links for navigating between pages of data.
      properties:
        next:
          $ref: '#/components/schemas/Link'
        self:
          $ref: '#/components/schemas/Link'
        prev:
          $ref: '#/components/schemas/Link'
    ErrorResponseBase:
      title: ErrorResponseBase
      type: object
      description: Represents an error response with no additional details.
      required:
      - code
      - message
      properties:
        code:
          type: integer
          description: The HTTP status code representing the error.
          example: 400
        message:
          type: string
          description: A brief description of the error.
          example: Bad Request
        target:
          type: string
          description: The target resource of the error.
          example: example target
    PageVisibility:
      title: PageVisibility
      description: Visibility of the custom field on various pages/forms.
      type: object
      properties:
        essentialEventCreationForm:
          type: boolean
          description: True indicates it's visible on the event essentials event creation form.
          default: false
        essentialEventDetailsForm:
          type: boolean
          description: True indicates it's visible on the event essentials event details form.
          default: false
        webinarCreationForm:
          type: boolean
          description: True indicates it's visible on webinar creation form.
          default: false
        webinarDetailsForm:
          type: boolean
          description: True indicates it's visible on the webinar details form.
          default: false
    ErrorResponse:
      title: ErrorResponse
      description: Represents an error response with additional details of cascading error messages.
      allOf:
      - $ref: '#/components/schemas/ErrorResponseBase'
      type: object
      required:
      - code
      - message
      properties:
        details:
          type: array
          items:
            $ref: '#/components/schemas/ErrorResponseBase'
          description: Additional details of cascading error messages.
    CustomFieldType2:
      title: CustomFieldType
      enum:
      - Open Ended Text - Date/Time
      - Open Ended Text - One Line
      - Open Ended Text - Comment Box
      - Choice - Single Answer
      - Choice - Multiple Answers
      - Auto-Increment
      type: string
      description: This is used to denote the type of data collected by a custom field. Auto-Increment custom fields are read only.
      example: Open Ended Text - One Line
    OpenEndedCommentBox:
      title: OpenEndedCommentBox
      description: This is used to denote the open ended comment box type of custom field.
      type: object
      properties:
        minimum:
          type: integer
          description: Minimum number/characters allowed.
          example: 2
        maximum:
          type: integer
          description: Maximum number/characters allowed.
          example: 8
    Link:
      title: Link
      required:
      - href
      type: object
      description: Represents a link to a related resource.
      properties:
        href:
          type: string
          description: A url provided that can be followed for linking
          example: ?token=90c5f062-76ad-4ea4-aa53-00eb698d9262
    advanced-logic:
      title: AdvancedLogic
      type: object
      description: Describes the advanced logic for a custom field.
      required:
      - sourceCustomFieldId
      properties:
        sourceCustomFieldId:
          type: string
          format: uuid
          description: The ID of the source custom field.
        defaultChoices:
          type: array
          items:
            type: string
            format: uuid
            description: The ID of the choice to display.
          description: The choices of this custom field to display by default (when no choice is selected for the source custom field), specified by choice ID. Leave empty to have no choices displayed by default.
          minItems: 0
          maxItems: 100
        sourceChoices:
          type: array
          items:
            $ref: '#/components/schemas/AdvancedLogicChoices'
          description: The choices of this custom field to display based on the choice selected for the source custom field, specified by choice ID.
    AdvancedLogicChoices:
      title: AdvancedLogicChoices
      type: object
      required:
      - sourceCustomFieldChoice
      description: This is used to denote which custom field choices to display when a source custom field choice is selected.
      properties:
        sourceCustomFieldChoice:
          type: string
          format: uuid
          description: The ID of a choice of the source custom field.
        choices:
          type: array
          items:
            type: string
            format: uuid
            description: The ID of the choice to display.
          description: The choices to display if the associated source custom field choice is selected. Leave empty to have no choices displayed.
          minItems: 0
          maxItems: 100
    existing-custom-field:
      title: ExistingCustomField
      description: This is used to denote an existing custom field.
      type: object
      allOf:
      - $ref: '#/components/schemas/custom-field3'
      properties:
        id:
          type: string
          format: uuid
          description: The ID of the custom field.
        pageVisibility:
          $ref: '#/components/schemas/PageVisibility'
    custom-field3:
      title: CustomField
      required:
      - category
      - name
      - code
      - type
      description: This is used to denote the custom field data.
      type: object
      allOf:
      - $ref: '#/components/schemas/Audit'
      properties:
        category:
          $ref: '#/components/schemas/CustomFieldCategory'
        name:
          type: string
          description: The actual text of the custom field.
          example: What is a your favorite color?
          maxLength: 300
        code:
          type: string
          description: Code to uniquely identify custom field.
          example: FAVORITE_COLOR_CODE
          maxLength: 50
        required:
          type: boolean
          description: Whether answer to custom field is mandatory or not.
          default: true
          example: true
        type:
          $ref: '#/components/schemas/CustomFieldType2'
        details:
          type: object
          description: Type-specific details of the custom-field.
          oneOf:
          - $ref: '#/components/schemas/OpenEndedOneLine'
          - $ref: '#/components/schemas/OpenEndedDateTime1'
          - $ref: '#/components/schemas/OpenEndedCommentBox'
          - $ref: '#/components/schemas/Choices1'
        order:
          type: integer
          description: The order of the custom field on the display page.
          example: 1
          readOnly: true
        helpText:
          type: string
          description: The help text of the custom field.
          example: Enter your favorite color.
          maxLength: 50
        displayInDataTag:
          $ref: '#/components/schemas/DisplayInDataTag'
        defaultTagText:
          type: string
          description: Default text in emails when a contact does not have a value answered for this custom field. Only applicable to contact custom fields.
          example: Your Division
          maxLength: 300
        consentField:
          type: boolean
          description: True means that this is a consent field. Only applicable to contact custom fields.
          default: false
          example: false
        active:


# --- truncated at 32 KB (79 KB total) ---
# Full source: https://raw.githubusercontent.com/api-evangelist/cvent-event-cloud/refs/heads/main/openapi/cvent-event-cloud-custom-fields-api-openapi.yml