Vendasta Forms API

The Forms API from Vendasta — 9 operation(s) for forms.

Operations 9

POST /v1/forms/create Create Form #
POST /v1/forms/embed-code Get Form Embed Code #
POST /v1/forms/generate-custom-css Generate Custom CSS #
POST /v1/forms/get Get Form #
GET /v1/forms/has-enterprise-api-key Has Enterprise API Key In Namespace #
POST /v1/forms/list List Forms #
POST /v1/forms/mapped-field-schema/list List Mapped Field Schema #
POST /v1/forms/provision-recaptcha-enterprise Provision reCAPTCHA Enterprise #
POST /v1/forms/update Update Form #

Work with this as data

Every API here is available over the APIs.io API and to AI agents over MCP.

MCP server

One button, every client — Claude, Cursor, VS Code and the rest.

https://apis.io/mcp

Tools for apis

7 MCP tools reach this
  • find_apisBrowse and filter every API in the catalog.
  • get_api_artifactsOne API's artifacts, grouped by type.
  • get_openapiThe primary OpenAPI for this API.
  • find_similar_apisAPIs that look like this one.
  • apis_io_searchSTART HERE — APIs, providers and tags for one query, each with its total.
  • resolveTurn a domain, URL or GitHub org into the provider it belongs to.
  • find_cohortsEvery scored population of providers in the catalog.
All 92 tools →

Call it yourself

curl for this page
This API
curl "https://apis.io/api/v1/apis/vendasta-forms-api"
All apis
curl "https://apis.io/api/v1/apis?limit=25"

Discovery needs no key. Ratings and market analysis are Pro.

Get an API key

Free tier, no email required.

A second provider on the same verified email joins the account you already have.

OpenAPI Specification

vendasta-forms-api-openapi.yml Raw ↑
openapi: 3.2.0
info:
  title: Forms API
  version: 0.43.0
servers:
- description: Production
  url: https://prod.apigateway.co/grpc
tags:
- name: Forms
paths:
  /v1/forms/create:
    post:
      description: "IMPORTANT: Use unmapped_field for custom fields. Do NOT add UTM tracking fields -\nthey are automatically added by the system.\n\nExample form_config:\n{\n  \"name\": \"Contact Form\",\n  \"namespace\": \"<use namespace from context>\",\n  \"fields\": [\n    {\n      \"label\": \"Name\",\n      \"required\": true,\n      \"schema\": {\n        \"unmapped_field\": {\"id\": \"name\", \"type\": \"FIELD_TYPE_STRING\"}\n      }\n    },\n    {\n      \"label\": \"Email\",\n      \"required\": true,\n      \"schema\": {\n        \"unmapped_field\": {\"id\": \"email\", \"type\": \"FIELD_TYPE_EMAIL\"}\n      }\n    },\n    {\n      \"label\": \"Message\",\n      \"required\": true,\n      \"schema\": {\n        \"unmapped_field\": {\"id\": \"message\", \"type\": \"FIELD_TYPE_TEXT_AREA\"}\n      }\n    }\n  ]\n}\n\nValid field types: FIELD_TYPE_STRING, FIELD_TYPE_EMAIL, FIELD_TYPE_PHONE,\nFIELD_TYPE_TEXT_AREA, FIELD_TYPE_DROPDOWN, FIELD_TYPE_DATE, FIELD_TYPE_BOOLEAN,\nFIELD_TYPE_CURRENCY, FIELD_TYPE_FILE, FIELD_TYPE_RADIO, FIELD_TYPE_RICH_TEXT_ELEMENT"
      operationId: Forms_CreateForm
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/v1CreateFormRequest'
        description: Request to create a new form with the provided configuration.
        required: true
      responses:
        '200':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/v1CreateFormResponse'
          description: A successful response.
        default:
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/rpcStatus'
          description: An unexpected error response.
      security:
      - OAuth2:
        - business-app
      summary: Create Form
      tags:
      - Forms
  /v1/forms/embed-code:
    post:
      description: 'Use the form_id returned from CreateForm or CreateFormFromTemplate.

        The embed code can be added to any webpage to display the form.'
      operationId: Forms_GetEmbedCode
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/v1GetEmbedCodeRequest'
        description: Request to fetch the HTML/JavaScript embed code for a form.
        required: true
      responses:
        '200':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/v1GetEmbedCodeResponse'
          description: A successful response.
        default:
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/rpcStatus'
          description: An unexpected error response.
      security:
      - OAuth2:
        - business-app
      summary: Get Form Embed Code
      tags:
      - Forms
  /v1/forms/generate-custom-css:
    post:
      description: 'Provide a prompt describing the desired styling, and optionally include

        image_urls for visual references. Returns generated Styles that can be

        applied to a form via UpdateForm.


        Example: prompt = "Make the form match a modern dark theme with rounded corners"'
      operationId: Forms_GenerateCustomCSS
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/v1GenerateCustomCSSRequest'
        description: Request to use AI to generate custom CSS styling for a form based on a text prompt and optional visual references.
        required: true
      responses:
        '200':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/v1GenerateCustomCSSResponse'
          description: A successful response.
        default:
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/rpcStatus'
          description: An unexpected error response.
      security:
      - OAuth2:
        - business-app
      summary: Generate Custom CSS
      tags:
      - Forms
  /v1/forms/get:
    post:
      operationId: Forms_GetForm
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/v1GetFormRequest'
        description: Request to retrieve the most recent version of a form's style, schema, and UI configuration.
        required: true
      responses:
        '200':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/v1GetFormResponse'
          description: A successful response.
        default:
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/rpcStatus'
          description: An unexpected error response.
      security:
      - OAuth2:
        - business-app
      summary: Get Form
      tags:
      - Forms
  /v1/forms/has-enterprise-api-key:
    get:
      operationId: Forms_HasEnterpriseAPIKeyInNamespace
      parameters:
      - description: Required. The namespace to check for an enterprise reCAPTCHA API key.
        in: query
        name: namespace
        required: true
        schema:
          type: string
      responses:
        '200':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/v1HasEnterpriseAPIKeyInNamespaceResponse'
          description: A successful response.
        default:
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/rpcStatus'
          description: An unexpected error response.
      security:
      - OAuth2:
        - business-app
      summary: Has Enterprise API Key In Namespace
      tags:
      - Forms
  /v1/forms/list:
    post:
      operationId: Forms_ListForms
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/v1ListFormsRequest'
        description: Request to list forms with optional filters, pagination, and search.
        required: true
      responses:
        '200':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/v1ListFormsResponse'
          description: A successful response.
        default:
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/rpcStatus'
          description: An unexpected error response.
      security:
      - OAuth2:
        - business-app
      summary: List Forms
      tags:
      - Forms
  /v1/forms/mapped-field-schema/list:
    post:
      description: 'Call this FIRST to understand what CRM fields are available before creating

        forms with mapped fields.


        mapped_to_resource options:

        - "crm_contact" - CRM Contact fields (name, email, phone, etc.)

        - "crm_company" - CRM Company fields

        - "utm_attribute" - UTM tracking fields (auto-added, don''t include manually)

        - "special_attribute" - Special fields like google_places_id'
      operationId: Forms_ListMappedFieldSchema
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/v1ListMappedFieldSchemaRequest'
        description: Request to list available CRM fields that can be mapped in forms.
        required: true
      responses:
        '200':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/v1ListMappedFieldSchemaResponse'
          description: A successful response.
        default:
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/rpcStatus'
          description: An unexpected error response.
      security:
      - OAuth2:
        - business-app
      summary: List Mapped Field Schema
      tags:
      - Forms
  /v1/forms/provision-recaptcha-enterprise:
    post:
      operationId: Forms_ProvisionRecaptchaEnterprise
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/v1ProvisionRecaptchaEnterpriseRequest'
        description: Request to create a reCAPTCHA Enterprise site for a specific form and domain.
        required: true
      responses:
        '200':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/v1ProvisionRecaptchaEnterpriseResponse'
          description: A successful response.
        default:
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/rpcStatus'
          description: An unexpected error response.
      security:
      - OAuth2:
        - business-app
      summary: Provision reCAPTCHA Enterprise
      tags:
      - Forms
  /v1/forms/update:
    post:
      operationId: Forms_UpdateForm
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/v1UpdateFormRequest'
        description: Request to update an existing form, creating a new version in the version chain.
        required: true
      responses:
        '200':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/v1UpdateFormResponse'
          description: A successful response.
        default:
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/rpcStatus'
          description: An unexpected error response.
      security:
      - OAuth2:
        - business-app
      summary: Update Form
      tags:
      - Forms
components:
  schemas:
    rpcStatus:
      properties:
        code:
          format: int32
          type: integer
        details:
          items:
            $ref: '#/components/schemas/protobufAny'
          type: array
        message:
          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 results. Omit or leave empty for the first page.
          type: string
        pageSize:
          description: Optional. The maximum number of items to return per page.
          format: int64
          type: string
      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
    FormConfigFieldSchema:
      properties:
        mappedField:
          $ref: '#/components/schemas/v1MappedField'
        unmappedField:
          $ref: '#/components/schemas/v1UnmappedField'
      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
    v1ActionParameters:
      properties:
        nextParameters:
          $ref: '#/components/schemas/v1NextParameters'
        submitConditionParams:
          $ref: '#/components/schemas/v1SubmitConditionParameters'
      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
    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
    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
    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
    v1FieldOption:
      properties:
        label:
          type: string
        value:
          type: string
      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
    v1CreateFormRequest:
      description: Request to create a new form with the provided configuration.
      properties:
        formConfig:
          $ref: '#/components/schemas/v1FormConfig'
      required:
      - formConfig
      title: CreateFormRequest
      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
    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
    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.

            Each form gets its own reCAPTCHA Enterprise site so different forms

            under the same namespace can have different domains.'
          type: string
      required:
      - formId
      - domain
      title: ProvisionRecaptchaEnterpriseRequest
      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
    FormConfigTemplateSetupSettings:
      properties:
        automationIds:
          items:
            type: string
          type: array
      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
    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
    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
    v1ConsentType:
      default: CONSENT_TYPE_INVALID
      enum:
      - CONSENT_TYPE_INVALID
      - CONSENT_TYPE_MARKETING_EMAIL
      - CONSENT_TYPE_TRANSACTION_SMS
      - CONSENT_TYPE_MARKETING_SMS
      type: string
    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
    v1ValidationError:
      properties:
        message:
          title: this can be a translation key
          type: string
        ruleId:
          type: string
      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
    v1FilterGroupOperator:
      default: FILTER_GROUP_OPERATOR_INVALID
      enum:
      - FILTER_GROUP_OPERATOR_INVALID
      - FILTER_GROUP_OPERATOR_AND
      - FILTER_GROUP_OPERATOR_OR
      type: string
    v1GetFormResponse:
      description: Response containing the most recent version of FormConfig for the requested form.
      properties:
        formConfig:
          $ref: '#/components/schemas/v1FormConfig'
      title: GetFormResponse
      type: object
    v1SectionConfig:
      properties:
        actionParameters:
          $ref: '#/components/schemas/v1ActionParameters'
        buttonAction:
          $ref: '#/components/schemas/v1SectionAction'
        buttonLabel:
          type: string
      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
    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
    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

            parameter. For example, you could fill out a hidden field with the

            utm_medium and utm_campaign, so you know how people landed on your page

            before filling out the form.'
          type: string
        required:
          type: boolean
        schema:
          $ref: '#/components/schemas/FormConfigFieldSchema'
        sectionConfig:
          $ref: '#/components/schemas/v1SectionConfig'
      type: object
    ListFormsRequestFilters:
      properties:
        namespace:
          description: Required. The namespace to list forms for.
          type: string
      required:
      - namespace
      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
    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
    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
    v1NextParameters:
      properties:
        nextSectionId:
          type: string
      type: object
    v1StringList:
      properties:
        values:
          items:
            type: string
          type: array
      type: object
    v1FilterGroup:
      properties:
        filters:
          items:
            $ref: '#/components/schemas/v1Filter'
          type: array
        operator:
          $ref: '#/components/schemas/v1FilterGroupOperator'
      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
    v1ConsentField:
      properties:
        text:
          type: string
        type:
          $ref: '#/components/schemas/v1ConsentType'
      type: object
    vendastatypesPagedResponseMetadata:
      properties:
        hasMore:
          title: Whether or not more results exist
          type: boolean
        nextCursor:
          title: A cursor that can be provided to retrieve the next page of results
          type: string
        totalResults:
          format: int64
          title: The total number of results. This is not supported on all paged apis and will be 0 if it is not supported
          type: string
      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
    protobufAny:
      additionalProperties: {}
      properties:
        '@type':
          type: string
      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
    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
    v1ConsentFieldConfig:
      properties:
        consent:
          items:
            $ref: '#/components/schemas/v1ConsentField'
          type: array
        headerText:
          type: string
      title: ConsentFieldConfig defines configuration options for consent field types
      type: object
    v1PromoSelectionConfig:
      properties:
        autoAdvance:
          type: boolean
        ctaButtonLabel:
          type: string
        multiSelection:
          type: boolean
      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
    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.

            An empty value indicates the form was created before we started

            adding 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
    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.
          r

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