Vendasta Forms API

Forms service API for creating and managing the forms a business publishes and the submissions they collect.

OpenAPI Specification

vendasta-forms-openapi.json Raw ↑
{
  "components": {
    "schemas": {
      "FormConfigField": {
        "properties": {
          "defaultPhoneIsoCountryCode": {
            "type": "string"
          },
          "defaultValue": {
            "$ref": "#/components/schemas/v1FieldValue"
          },
          "hidden": {
            "type": "boolean"
          },
          "label": {
            "type": "string"
          },
          "placeholder": {
            "type": "string"
          },
          "preFillByUrlQueryParameter": {
            "description": "When displaying the form, pre-fill it with the value in this query\nparameter. For example, you could fill out a hidden field with the\nutm_medium and utm_campaign, so you know how people landed on your page\nbefore filling out the form.",
            "type": "string"
          },
          "required": {
            "type": "boolean"
          },
          "schema": {
            "$ref": "#/components/schemas/FormConfigFieldSchema"
          },
          "sectionConfig": {
            "$ref": "#/components/schemas/v1SectionConfig"
          }
        },
        "type": "object"
      },
      "FormConfigFieldSchema": {
        "properties": {
          "mappedField": {
            "$ref": "#/components/schemas/v1MappedField"
          },
          "unmappedField": {
            "$ref": "#/components/schemas/v1UnmappedField"
          }
        },
        "type": "object"
      },
      "FormConfigTemplateSetupSettings": {
        "properties": {
          "automationIds": {
            "items": {
              "type": "string"
            },
            "type": "array"
          }
        },
        "type": "object"
      },
      "ListFormsRequestFilters": {
        "properties": {
          "namespace": {
            "description": "Required. The namespace to list forms for.",
            "type": "string"
          }
        },
        "required": [
          "namespace"
        ],
        "type": "object"
      },
      "ListFormsResponseFormRow": {
        "properties": {
          "form": {
            "$ref": "#/components/schemas/v1FormConfig"
          },
          "numberOfSubmissions": {
            "description": "Output only. The total number of submissions for this form.",
            "format": "int64",
            "readOnly": true,
            "type": "string"
          },
          "recentProcessingStatus": {
            "$ref": "#/components/schemas/v1ListFormsResponseProcessResultStatus"
          }
        },
        "type": "object"
      },
      "protobufAny": {
        "additionalProperties": {},
        "properties": {
          "@type": {
            "type": "string"
          }
        },
        "type": "object"
      },
      "rpcStatus": {
        "properties": {
          "code": {
            "format": "int32",
            "type": "integer"
          },
          "details": {
            "items": {
              "$ref": "#/components/schemas/protobufAny"
            },
            "type": "array"
          },
          "message": {
            "type": "string"
          }
        },
        "type": "object"
      },
      "v1ActionParameters": {
        "properties": {
          "nextParameters": {
            "$ref": "#/components/schemas/v1NextParameters"
          },
          "submitConditionParams": {
            "$ref": "#/components/schemas/v1SubmitConditionParameters"
          }
        },
        "type": "object"
      },
      "v1ConsentField": {
        "properties": {
          "text": {
            "type": "string"
          },
          "type": {
            "$ref": "#/components/schemas/v1ConsentType"
          }
        },
        "type": "object"
      },
      "v1ConsentFieldConfig": {
        "properties": {
          "consent": {
            "items": {
              "$ref": "#/components/schemas/v1ConsentField"
            },
            "type": "array"
          },
          "headerText": {
            "type": "string"
          }
        },
        "title": "ConsentFieldConfig defines configuration options for consent field types",
        "type": "object"
      },
      "v1ConsentType": {
        "default": "CONSENT_TYPE_INVALID",
        "enum": [
          "CONSENT_TYPE_INVALID",
          "CONSENT_TYPE_MARKETING_EMAIL",
          "CONSENT_TYPE_TRANSACTION_SMS",
          "CONSENT_TYPE_MARKETING_SMS"
        ],
        "type": "string"
      },
      "v1CreateFormRequest": {
        "description": "Request to create a new form with the provided configuration.",
        "properties": {
          "formConfig": {
            "$ref": "#/components/schemas/v1FormConfig"
          }
        },
        "required": [
          "formConfig"
        ],
        "title": "CreateFormRequest",
        "type": "object"
      },
      "v1CreateFormResponse": {
        "description": "Response containing the newly generated form ID, version, and any validation errors.",
        "properties": {
          "errors": {
            "description": "Output only. Any validation errors encountered during form creation.",
            "items": {
              "$ref": "#/components/schemas/v1ValidationError"
            },
            "readOnly": true,
            "type": "array"
          },
          "formId": {
            "description": "Output only. The unique identifier assigned to the newly created form.",
            "readOnly": true,
            "type": "string"
          },
          "version": {
            "description": "Output only. The version identifier for the newly created form.",
            "readOnly": true,
            "type": "string"
          }
        },
        "title": "CreateFormResponse",
        "type": "object"
      },
      "v1DateDefault": {
        "default": "DATE_DEFAULT_INVALID",
        "enum": [
          "DATE_DEFAULT_INVALID",
          "DATE_DEFAULT_TODAY",
          "DATE_DEFAULT_YESTERDAY",
          "DATE_DEFAULT_TOMORROW",
          "DATE_DEFAULT_THIS_WEEK",
          "DATE_DEFAULT_LAST_WEEK",
          "DATE_DEFAULT_NEXT_WEEK",
          "DATE_DEFAULT_THIS_MONTH",
          "DATE_DEFAULT_LAST_MONTH",
          "DATE_DEFAULT_NEXT_MONTH",
          "DATE_DEFAULT_THIS_QUARTER",
          "DATE_DEFAULT_LAST_QUARTER",
          "DATE_DEFAULT_NEXT_QUARTER",
          "DATE_DEFAULT_THIS_YEAR",
          "DATE_DEFAULT_LAST_YEAR",
          "DATE_DEFAULT_NEXT_YEAR"
        ],
        "type": "string"
      },
      "v1FieldOption": {
        "properties": {
          "label": {
            "type": "string"
          },
          "value": {
            "type": "string"
          }
        },
        "type": "object"
      },
      "v1FieldType": {
        "default": "FIELD_TYPE_INVALID",
        "enum": [
          "FIELD_TYPE_INVALID",
          "FIELD_TYPE_STRING",
          "FIELD_TYPE_INTEGER",
          "FIELD_TYPE_DATE",
          "FIELD_TYPE_DROPDOWN",
          "FIELD_TYPE_CURRENCY",
          "FIELD_TYPE_BOOLEAN",
          "FIELD_TYPE_RADIO",
          "FIELD_TYPE_RICH_TEXT_ELEMENT",
          "FIELD_TYPE_EMAIL",
          "FIELD_TYPE_PHONE",
          "FIELD_TYPE_BUSINESS_SEARCH",
          "FIELD_TYPE_TEXT_AREA",
          "FIELD_TYPE_TAG",
          "FIELD_TYPE_SECTION",
          "FIELD_TYPE_FILE",
          "FIELD_TYPE_PRIVACY_CONSENT",
          "FIELD_TYPE_PROMO_SECTION",
          "FIELD_TYPE_MULTISELECT"
        ],
        "type": "string"
      },
      "v1FieldValue": {
        "properties": {
          "boolean": {
            "title": "used for boolean",
            "type": "boolean"
          },
          "integer": {
            "format": "int64",
            "title": "used for integer and currency",
            "type": "string"
          },
          "invalid": {
            "type": "boolean"
          },
          "string": {
            "title": "used for string, date, dropdown and radio",
            "type": "string"
          },
          "stringValues": {
            "$ref": "#/components/schemas/v1StringList"
          }
        },
        "type": "object"
      },
      "v1Filter": {
        "properties": {
          "fieldId": {
            "type": "string"
          },
          "floatTolerance": {
            "format": "float",
            "type": "number"
          },
          "operator": {
            "$ref": "#/components/schemas/v1FilterOperator"
          },
          "values": {
            "items": {
              "$ref": "#/components/schemas/v1FilterValue"
            },
            "title": "This is repeated to support operations that take zero or more than one value.\nFor example\n   isEmpty()\n   isAnyOf(a, b, c)\n   isBetween(date1, date2)",
            "type": "array"
          }
        },
        "type": "object"
      },
      "v1FilterGroup": {
        "properties": {
          "filters": {
            "items": {
              "$ref": "#/components/schemas/v1Filter"
            },
            "type": "array"
          },
          "operator": {
            "$ref": "#/components/schemas/v1FilterGroupOperator"
          }
        },
        "type": "object"
      },
      "v1FilterGroupOperator": {
        "default": "FILTER_GROUP_OPERATOR_INVALID",
        "enum": [
          "FILTER_GROUP_OPERATOR_INVALID",
          "FILTER_GROUP_OPERATOR_AND",
          "FILTER_GROUP_OPERATOR_OR"
        ],
        "type": "string"
      },
      "v1FilterOperator": {
        "default": "FILTER_OPERATOR_INVALID",
        "enum": [
          "FILTER_OPERATOR_INVALID",
          "FILTER_OPERATOR_IS_EMPTY",
          "FILTER_OPERATOR_IS_NOT_EMPTY",
          "FILTER_OPERATOR_IS",
          "FILTER_OPERATOR_IS_NOT",
          "FILTER_OPERATOR_IS_ANY",
          "FILTER_OPERATOR_IS_NOT_ANY",
          "FILTER_OPERATOR_IS_ALL",
          "FILTER_OPERATOR_IS_NOT_ALL",
          "FILTER_OPERATOR_CONTAINS",
          "FILTER_OPERATOR_DOES_NOT_CONTAIN",
          "FILTER_OPERATOR_IS_EQUAL_TO",
          "FILTER_OPERATOR_IS_NOT_EQUAL_TO",
          "FILTER_OPERATOR_IS_GREATER_THAN",
          "FILTER_OPERATOR_IS_GREATER_THAN_OR_EQUAL_TO",
          "FILTER_OPERATOR_IS_LESS_THAN",
          "FILTER_OPERATOR_IS_LESS_THAN_OR_EQUAL_TO",
          "FILTER_OPERATOR_IS_BEFORE",
          "FILTER_OPERATOR_IS_BEFORE_OR_ON",
          "FILTER_OPERATOR_IS_AFTER",
          "FILTER_OPERATOR_IS_AFTER_OR_ON",
          "FILTER_OPERATOR_IS_BETWEEN",
          "FILTER_OPERATOR_IS_NOT_BETWEEN",
          "FILTER_OPERATOR_IS_VALID",
          "FILTER_OPERATOR_IS_NOT_VALID",
          "FILTER_OPERATOR_ANNIVERSARY_IS"
        ],
        "type": "string"
      },
      "v1FilterValue": {
        "properties": {
          "boolean": {
            "type": "boolean"
          },
          "date": {
            "format": "date-time",
            "type": "string"
          },
          "dateDefault": {
            "$ref": "#/components/schemas/v1DateDefault"
          },
          "float": {
            "format": "float",
            "type": "number"
          },
          "integer": {
            "format": "int64",
            "type": "string"
          },
          "phone": {
            "$ref": "#/components/schemas/v1Phone"
          },
          "string": {
            "type": "string"
          }
        },
        "type": "object"
      },
      "v1FormConfig": {
        "description": "Complete configuration for a form, including fields, styles, and metadata.",
        "properties": {
          "createInboxConversation": {
            "description": "Optional. On form submission, create a conversation in the inbox or associate submission with an existing conversation.",
            "type": "boolean"
          },
          "created": {
            "description": "Output only. The timestamp when the form was created.",
            "format": "date-time",
            "readOnly": true,
            "type": "string"
          },
          "description": {
            "description": "Optional. Short description for the purpose of a form.",
            "type": "string"
          },
          "fields": {
            "description": "Optional. The list of fields in the form.",
            "items": {
              "$ref": "#/components/schemas/FormConfigField"
            },
            "type": "array"
          },
          "formId": {
            "description": "The unique identifier for this form. Assigned by the system on create; must be provided on update.",
            "type": "string"
          },
          "formType": {
            "description": "Optional. The type of the form. The value 'template' makes the form a template.",
            "type": "string"
          },
          "mostRecent": {
            "description": "Output only. Whether this is the most recent version of the form.",
            "readOnly": true,
            "type": "boolean"
          },
          "name": {
            "description": "Optional. The display name for the form.",
            "type": "string"
          },
          "namespace": {
            "description": "Required. The namespace that owns this form.",
            "type": "string"
          },
          "recaptchaEnterprise": {
            "$ref": "#/components/schemas/v1RecaptchaEnterpriseConfig"
          },
          "recaptchaSecretKey": {
            "description": "Optional. This will be redacted but non-empty when retrieving an existing form.\nAn empty value indicates the form was created before we started\nadding recaptcha, and a value must be provided in order to update the form.",
            "type": "string"
          },
          "recaptchaSiteKey": {
            "description": "Optional. The reCAPTCHA site key for legacy reCAPTCHA integration.",
            "type": "string"
          },
          "redirectUrl": {
            "description": "Optional. URL to redirect to after successful form submission.",
            "type": "string"
          },
          "styles": {
            "$ref": "#/components/schemas/v1Styles"
          },
          "submitButtonLabel": {
            "description": "Optional. Custom label for the form's submit button.",
            "type": "string"
          },
          "successPage": {
            "$ref": "#/components/schemas/v1SuccessPage"
          },
          "tags": {
            "description": "Optional. Tags used to categorize forms.",
            "items": {
              "type": "string"
            },
            "type": "array"
          },
          "templateSetupSettings": {
            "$ref": "#/components/schemas/FormConfigTemplateSetupSettings"
          },
          "updated": {
            "description": "Output only. The timestamp when the form was last updated.",
            "format": "date-time",
            "readOnly": true,
            "type": "string"
          },
          "version": {
            "description": "Output only. The version identifier for this form configuration.",
            "readOnly": true,
            "type": "string"
          }
        },
        "required": [
          "namespace"
        ],
        "title": "FormConfig",
        "type": "object"
      },
      "v1GenerateCustomCSSRequest": {
        "description": "Request to use AI to generate custom CSS styling for a form based on a text prompt and optional visual references.",
        "properties": {
          "currentCss": {
            "$ref": "#/components/schemas/v1Styles"
          },
          "formId": {
            "description": "Optional. The unique identifier of the form to generate CSS for.",
            "type": "string"
          },
          "htmlTemplate": {
            "description": "Optional. HTML template to apply the generated CSS to.",
            "type": "string"
          },
          "imageUrls": {
            "description": "Optional. URLs of images to use as visual references for the styling.",
            "items": {
              "type": "string"
            },
            "type": "array"
          },
          "namespace": {
            "description": "Required. The namespace of the form.",
            "type": "string"
          },
          "prompt": {
            "description": "Required. A text prompt describing the desired styling, e.g. \"Make the form match a modern dark theme with rounded corners\".",
            "type": "string"
          }
        },
        "required": [
          "namespace",
          "prompt"
        ],
        "title": "GenerateCustomCSSRequest",
        "type": "object"
      },
      "v1GenerateCustomCSSResponse": {
        "description": "Response containing the AI-generated CSS styles that can be applied to a form via UpdateForm.",
        "properties": {
          "generatedCss": {
            "$ref": "#/components/schemas/v1Styles"
          }
        },
        "title": "GenerateCustomCSSResponse",
        "type": "object"
      },
      "v1GetEmbedCodeRequest": {
        "description": "Request to fetch the HTML/JavaScript embed code for a form.",
        "properties": {
          "formId": {
            "description": "Required. The unique identifier of the form to retrieve embed code for.",
            "type": "string"
          }
        },
        "required": [
          "formId"
        ],
        "title": "GetEmbedCodeRequest",
        "type": "object"
      },
      "v1GetEmbedCodeResponse": {
        "description": "Response containing the HTML/JavaScript embed code that can be added to any webpage to display the form.",
        "properties": {
          "embedCode": {
            "description": "Output only. The HTML embed code for the form.",
            "readOnly": true,
            "type": "string"
          }
        },
        "title": "GetEmbedCodeResponse",
        "type": "object"
      },
      "v1GetFormRequest": {
        "description": "Request to retrieve the most recent version of a form's style, schema, and UI configuration.",
        "properties": {
          "formId": {
            "description": "Required. The unique identifier of the form to retrieve.",
            "type": "string"
          },
          "locale": {
            "description": "Optional. Locale of the user, e.g. \"en\", \"de\", \"fr\", \"it\", \"nl\", \"pt\". Empty defaults to English.",
            "type": "string"
          }
        },
        "required": [
          "formId"
        ],
        "title": "GetFormRequest",
        "type": "object"
      },
      "v1GetFormResponse": {
        "description": "Response containing the most recent version of FormConfig for the requested form.",
        "properties": {
          "formConfig": {
            "$ref": "#/components/schemas/v1FormConfig"
          }
        },
        "title": "GetFormResponse",
        "type": "object"
      },
      "v1HasEnterpriseAPIKeyInNamespaceResponse": {
        "description": "Response indicating whether the namespace has a platform-level reCAPTCHA Enterprise API key.",
        "properties": {
          "hasApiKey": {
            "description": "Output only. Whether the namespace has an enterprise reCAPTCHA API key configured.",
            "readOnly": true,
            "type": "boolean"
          }
        },
        "title": "HasEnterpriseAPIKeyInNamespaceResponse",
        "type": "object"
      },
      "v1ListFormsRequest": {
        "description": "Request to list forms with optional filters, pagination, and search.",
        "properties": {
          "filters": {
            "$ref": "#/components/schemas/ListFormsRequestFilters"
          },
          "filtersV2": {
            "$ref": "#/components/schemas/v1FilterGroup"
          },
          "locale": {
            "description": "Optional. Locale of the user, e.g. \"en\", \"de\", \"fr\", \"it\", \"nl\", \"pt\". Empty defaults to English.",
            "type": "string"
          },
          "pagingOptions": {
            "$ref": "#/components/schemas/vendastatypesPagedRequestOptions"
          },
          "searchTerm": {
            "description": "Optional. Search term to filter forms by name or description.",
            "type": "string"
          }
        },
        "title": "ListFormsRequest",
        "type": "object"
      },
      "v1ListFormsResponse": {
        "description": "Response containing a paginated list of forms with submission counts and processing status.",
        "properties": {
          "formRows": {
            "description": "Output only. The list of form rows matching the filter criteria.",
            "items": {
              "$ref": "#/components/schemas/ListFormsResponseFormRow"
            },
            "readOnly": true,
            "type": "array"
          },
          "pagingMetadata": {
            "$ref": "#/components/schemas/vendastatypesPagedResponseMetadata"
          }
        },
        "title": "ListFormsResponse",
        "type": "object"
      },
      "v1ListFormsResponseProcessResultStatus": {
        "default": "PROCESS_RESULT_STATUS_UNSPECIFIED",
        "enum": [
          "PROCESS_RESULT_STATUS_UNSPECIFIED",
          "PROCESS_RESULT_STATUS_IN_PROGRESS",
          "PROCESS_RESULT_STATUS_COMPLETED",
          "PROCESS_RESULT_STATUS_COMPLETED_WITH_WARNINGS",
          "PROCESS_RESULT_STATUS_FAILED"
        ],
        "type": "string"
      },
      "v1ListMappedFieldSchemaRequest": {
        "description": "Request to list available CRM fields that can be mapped in forms.",
        "properties": {
          "crmObjectSubtype": {
            "description": "Deprecated. Use mapped_to_resource instead.",
            "type": "string"
          },
          "crmObjectType": {
            "description": "Deprecated. Use mapped_to_resource instead.",
            "type": "string"
          },
          "locale": {
            "description": "Optional. Locale of the user such as \"af\", \"cs\", \"de\", \"en\", \"es-419\", \"fr\", \"it\", \"nl\", \"pt\", \"ru\".",
            "type": "string"
          },
          "mappedToResource": {
            "description": "Optional. The resource type to filter mapped fields by, e.g. \"crm_contact\", \"crm_company\", \"utm_attribute\", \"special_attribute\".",
            "type": "string"
          },
          "namespace": {
            "description": "Required. The namespace to list mapped field schemas for.",
            "type": "string"
          },
          "pagingOptions": {
            "$ref": "#/components/schemas/vendastatypesPagedRequestOptions"
          }
        },
        "required": [
          "namespace"
        ],
        "title": "ListMappedFieldSchemaRequest",
        "type": "object"
      },
      "v1ListMappedFieldSchemaResponse": {
        "description": "Response containing available CRM field schemas that can be used when creating or updating forms.",
        "properties": {
          "fieldSchemas": {
            "description": "Output only. The list of available mapped field schemas.",
            "items": {
              "$ref": "#/components/schemas/v1MappedField"
            },
            "readOnly": true,
            "type": "array"
          },
          "pagingMetadata": {
            "$ref": "#/components/schemas/vendastatypesPagedResponseMetadata"
          }
        },
        "title": "ListMappedFieldSchemaResponse",
        "type": "object"
      },
      "v1MappedField": {
        "properties": {
          "consentConfig": {
            "$ref": "#/components/schemas/v1ConsentFieldConfig"
          },
          "id": {
            "type": "string"
          },
          "mappedTo": {
            "type": "string"
          },
          "name": {
            "type": "string"
          },
          "options": {
            "items": {
              "$ref": "#/components/schemas/v1FieldOption"
            },
            "type": "array"
          },
          "promoSelectionConfig": {
            "$ref": "#/components/schemas/v1PromoSelectionConfig"
          },
          "readonly": {
            "type": "boolean"
          },
          "systemDefined": {
            "$ref": "#/components/schemas/v1SystemDefined"
          },
          "type": {
            "$ref": "#/components/schemas/v1FieldType"
          }
        },
        "type": "object"
      },
      "v1NextParameters": {
        "properties": {
          "nextSectionId": {
            "type": "string"
          }
        },
        "type": "object"
      },
      "v1Phone": {
        "properties": {
          "extension": {
            "type": "string"
          },
          "isoCountryCode": {
            "title": "ISO country code is the 2 or 3 letter code for the country, example 'CA' for Canada",
            "type": "string"
          },
          "nationalNumber": {
            "type": "string"
          }
        },
        "title": "This follows the E164 international standard specification for phone numbers",
        "type": "object"
      },
      "v1PromoSelectionConfig": {
        "properties": {
          "autoAdvance": {
            "type": "boolean"
          },
          "ctaButtonLabel": {
            "type": "string"
          },
          "multiSelection": {
            "type": "boolean"
          }
        },
        "type": "object"
      },
      "v1ProvisionRecaptchaEnterpriseRequest": {
        "description": "Request to create a reCAPTCHA Enterprise site for a specific form and domain.",
        "properties": {
          "domain": {
            "description": "Required. The domain to register in the reCAPTCHA Enterprise site (e.g. \"example.com\").",
            "type": "string"
          },
          "formId": {
            "description": "Required. The ID of the form to provision reCAPTCHA Enterprise for.\nEach form gets its own reCAPTCHA Enterprise site so different forms\nunder the same namespace can have different domains.",
            "type": "string"
          }
        },
        "required": [
          "formId",
          "domain"
        ],
        "title": "ProvisionRecaptchaEnterpriseRequest",
        "type": "object"
      },
      "v1ProvisionRecaptchaEnterpriseResponse": {
        "description": "Response containing the site key of the newly provisioned reCAPTCHA Enterprise site.",
        "properties": {
          "siteKey": {
            "description": "Output only. The site key of the provisioned reCAPTCHA Enterprise site.",
            "readOnly": true,
            "type": "string"
          }
        },
        "title": "ProvisionRecaptchaEnterpriseResponse",
        "type": "object"
      },
      "v1RecaptchaEnterpriseConfig": {
        "properties": {
          "apiKey": {
            "description": "Redacted (non-empty sentinel) when retrieving an existing form.",
            "type": "string"
          },
          "managed": {
            "description": "When true, uses platform-level credentials instead of per-form BYO keys.",
            "type": "boolean"
          },
          "projectId": {
            "type": "string"
          },
          "siteKey": {
            "type": "string"
          }
        },
        "type": "object"
      },
      "v1SectionAction": {
        "default": "SECTION_ACTION_UNDEFINED",
        "enum": [
          "SECTION_ACTION_UNDEFINED",
          "SECTION_ACTION_SUBMIT",
          "SECTION_ACTION_SUBMIT_CONDITION",
          "SECTION_ACTION_NEXT_PAGE",
          "SECTION_ACTION_NEXT_APPEND"
        ],
        "type": "string"
      },
      "v1SectionConfig": {
        "properties": {
          "actionParameters": {
            "$ref": "#/components/schemas/v1ActionParameters"
          },
          "buttonAction": {
            "$ref": "#/components/schemas/v1SectionAction"
          },
          "buttonLabel": {
            "type": "string"
          }
        },
        "type": "object"
      },
      "v1StringList": {
        "properties": {
          "values": {
            "items": {
              "type": "string"
            },
            "type": "array"
          }
        },
        "type": "object"
      },
      "v1Styles": {
        "properties": {
          "backgroundColor": {
            "type": "string"
          },
          "borderColor": {
            "type": "string"
          },
          "borderRadius": {
            "type": "string"
          },
          "borderStyle": {
            "type": "string"
          },
          "borderWidth": {
            "type": "string"
          },
          "customCss": {
            "title": "allow more specific customizations by the user",
            "type": "string"
          },
          "onPrimaryColor": {
            "title": "text on primary buttons, checkmarks in checkboxes, etc",
            "type": "string"
          },
          "padding": {
            "type": "string"
          },
          "primaryColor": {
            "title": "These follow the naming of Material and Bootstrap, with primary, secondary, warning...\nbackgrounds of primary button, checkboxes, etc",
            "type": "string"
          },
          "primaryFontColor": {
            "title": "in material, this would be the \"on background\" color",
            "type": "string"
          },
          "width": {
            "type": "string"
          }
        },
        "title": "CSS style linked to a form",
        "type": "object"
      },
      "v1SubmitConditionParameters": {
        "properties": {
          "anyValue": {
            "type": "boolean"
          },
          "fieldId": {
            "type": "string"
          },
          "isNotValue": {
            "type": "string"
          },
          "isValue": {
            "type": "string"
          },
          "noValue": {
            "type": "boolean"
          },
          "onConditionFailure": {
            "$ref": "#/components/schemas/v1SectionAction"
          },
          "onConditionFailureParameters": {
            "$ref": "#/components/schemas/v1ActionParameters"
          }
        },
        "type": "object"
      },
      "v1SuccessPage": {
        "properties": {
          "body": {
            "type": "string"
          },
          "heading": {
            "type": "string"
          },
          "resubmitButtonLabel": {
            "type": "string"
          },
          "showResubmitButton": {
            "type": "boolean"
          }
        },
        "type": "object"
      },
      "v1SystemDefined": {
        "properties": {
          "hidden": {
            "title": "hidden fields won't display in editor",
            "type": "boolean"
          },
          "includedByDefault": {
            "title": "included_by_default fields will be auto-dropped upon init",
            "type": "boolean"
          },
          "required": {
            "type": "boolean"
          }
        },
        "type": "object"
      },
      "v1UnmappedField": {
        "properties": {
          "currencyCode": {
            "type": "string"
          },
          "id": {
            "type": "string"
          },
          "options": {
            "items": {
              "$ref": "#/components/schemas/v1FieldOption"
            },
            "type": "array"
          },
          "type": {
            "$ref": "#/components/schemas/v1FieldType"
          }
        },
        "type": "object"
      },
      "v1UpdateFormRequest": {
        "description": "Request to update an existing form, creating a new version in the version chain.",
        "properties": {
          "formConfig": {
            "$ref": "#/components/schemas/v1FormConfig"
          }
        },
        "required": [
          "formConfig"
        ],
        "title": "UpdateFormRequest",
        "type": "object"
      },
      "v1UpdateFormResponse": {
        "description": "Response containing the newly generated version identifier and any validation errors.",
        "properties": {
          "errors": {
            "description": "Output only. Any validation errors encountered during form update.",
            "items": {
              "$ref": "#/components/schemas/v1ValidationError"
            },
            "readOnly": true,
            "type": "array"
          },
          "version": {
            "description": "Output only. The version identifier for the newly created form version.",
            "readOnly": true,
            "type": "string"
          }
        },
        "title": "UpdateFormResponse",
        "type": "object"
      },
      "v1ValidationError": {
        "properties": {
          "message": {
            "title": "this can be a translation key",
            "type": "string"
          },
          "ruleId": {
            "type": "string"
          }
        },
        "type": "object"
      },
      "vendastatypesPagedRequestOptions": {
        "properties": {
          "cursor": {
            "description": "Optional. An opaque token from a previous response's next_cursor to retrieve the next page of resu

# --- truncated at 32 KB (47 KB total) ---
# Full source: https://raw.githubusercontent.com/api-evangelist/vendasta/refs/heads/main/openapi/vendasta-forms-openapi.json