Cvent Event Cloud RFP Requirements API

RFP requirements APIs for managing RFP-specific requirements including guest rooms, meeting rooms, custom questions, custom fields, and attachments (CRUD operations).

Operations 7

GET /rfps/{rfpId}/agenda-items List RFP Agenda Items #
GET /rfps/{rfpId}/agenda-items/schedules List RFP Agenda Item Schedules #
GET /rfps/{rfpId}/attachments List RFP Attachments #
GET /rfps/{rfpId}/custom-fields/answers List RFP Custom Fields Answers #
GET /rfps/{rfpId}/guest-rooms Get RFP Guest Rooms #
GET /rfps/{rfpId}/internal-documents List RFP Internal Documents #
GET /rfps/{rfpId}/questions List RFP Questions #

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/cvent-event-cloud-rfp-requirements-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 form to fill in. Signing in shares your email address with us — we store it to create your key and to recognise you if you sign in with another provider. See our Privacy Policy and Terms.

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

OpenAPI Specification

cvent-event-cloud-rfp-requirements-api-openapi.yml Raw ↑
openapi: 3.2.0
info:
  title: Cvent REST RFP Requirements API
  description: "# 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: RFP Requirements
  description: RFP requirements APIs for managing RFP-specific requirements including guest rooms, meeting rooms, custom questions, custom fields, and attachments (CRUD operations).
paths:
  /rfps/{rfpId}/agenda-items:
    get:
      tags:
      - RFP Requirements
      summary: List RFP Agenda Items
      description: Returns a paginated list of agenda items associated with an RFP.
      operationId: listRfpAgendaItems
      security:
      - OAuth2.clientCredentials:
        - rfp/rfp-agenda-items:read
      - OAuth2.authorizationCode:
        - rfp/rfp-agenda-items:read
      parameters:
      - $ref: '#/components/parameters/rfpId'
      - $ref: '#/components/parameters/limit'
      - $ref: '#/components/parameters/token'
      - name: filter
        in: query
        description: 'A filter query string narrows search results and supports the combination of logical and comparison operators.

          The filter adheres to the pattern filter=''field'' comparisonType ''value''.


          The following fields are filterable:

          * id (in)

          '
        schema:
          type: string
          example: id in ('209a11d-5bf6-47d2-b81f-89360d7229b6')
      responses:
        '200':
          description: Successfully retrieved a paginated list of agenda items associated with an RFP.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/PaginatedRfpAgendaItems'
        '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'
  /rfps/{rfpId}/agenda-items/schedules:
    get:
      tags:
      - RFP Requirements
      summary: List RFP Agenda Item Schedules
      description: Returns paginated list of schedules for agenda items added on an RFP.
      operationId: listRfpAgendaItemSchedules
      security:
      - OAuth2.clientCredentials:
        - rfp/rfp-agenda-items:read
      - OAuth2.authorizationCode:
        - rfp/rfp-agenda-items:read
      parameters:
      - $ref: '#/components/parameters/rfpId'
      - $ref: '#/components/parameters/limit'
      - $ref: '#/components/parameters/token'
      responses:
        '200':
          description: Successfully retrieved a paginated list of RFP agenda item schedules.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/PaginatedRfpAgendaItemsSchedule'
        '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'
  /rfps/{rfpId}/attachments:
    get:
      tags:
      - RFP Requirements
      summary: List RFP Attachments
      description: Returns paginated list of [attachments](#tag/RFP-Requirements) added on an RFP.
      operationId: listRfpAttachments
      security:
      - OAuth2.clientCredentials:
        - rfp/rfp-attachments:read
      - OAuth2.authorizationCode:
        - rfp/rfp-attachments:read
      parameters:
      - $ref: '#/components/parameters/rfpId'
      - $ref: '#/components/parameters/limit'
      - $ref: '#/components/parameters/token'
      - name: filter
        in: query
        description: 'A filter query string narrows search results and supports the combination of logical and comparison operators.

          The filter adheres to the pattern filter=''field'' comparisonType ''value''.


          These are the comparison types that can be used in filter expressions:

          * equal: eq

          * includes value(s): in


          The following fields are filterable:

          * sendInEmail (eq)

          * supplier.id (in)

          * supplierSpecific (eq)


          The following operators are available:

          * and

          * or

          '
        schema:
          type: string
          example: supplierSpecific eq 'false' or supplier.id in ('37f2de41-6f50-484a-a55d-3cf0ede2ebac','f56a51a4-84b0-46c9-a612-716dc95a1c96') AND sendInEmail eq 'false'
      responses:
        '200':
          description: Successfully retrieved a paginated list of RFP Attachments.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/PaginatedRfpAttachments'
        '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'
  /rfps/{rfpId}/custom-fields/answers:
    get:
      tags:
      - RFP Requirements
      summary: List RFP Custom Fields Answers
      description: Returns a paginated list of answers for each custom field associated with a given RFP.
      operationId: listRfpCustomFields
      security:
      - OAuth2.clientCredentials:
        - rfp/rfp-custom-fields:read
      - OAuth2.authorizationCode:
        - rfp/rfp-custom-fields:read
      parameters:
      - $ref: '#/components/parameters/rfpId'
      - $ref: '#/components/parameters/limit'
      - $ref: '#/components/parameters/token'
      - $ref: '#/components/parameters/customFieldExpand'
      responses:
        '200':
          description: Successfully retrieved a paginated list of RFP custom field answers.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/PaginatedRfpCustomField'
        '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'
  /rfps/{rfpId}/guest-rooms:
    get:
      tags:
      - RFP Requirements
      summary: Get RFP Guest Rooms
      description: Returns guest room requirements associated with an RFP.
      operationId: getRfpGuestRooms
      security:
      - OAuth2.clientCredentials:
        - rfp/rfp-guest-rooms:read
      - OAuth2.authorizationCode:
        - rfp/rfp-guest-rooms:read
      parameters:
      - $ref: '#/components/parameters/rfpId'
      responses:
        '200':
          description: Successfully returns the guest room requirements associated with an RFP.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/RfpGuestRooms'
        '401':
          $ref: '#/components/responses/Unauthorized1'
        '403':
          $ref: '#/components/responses/Forbidden1'
        '404':
          $ref: '#/components/responses/NotFound1'
        '429':
          $ref: '#/components/responses/TooManyRequests1'
  /rfps/{rfpId}/internal-documents:
    get:
      tags:
      - RFP Requirements
      summary: List RFP Internal Documents
      description: Returns paginated list of [internal documents](#tag/RFP-Requirements) added on an RFP.
      operationId: listRfpInternalDocuments
      security:
      - OAuth2.clientCredentials:
        - rfp/rfp-internal-documents:read
      - OAuth2.authorizationCode:
        - rfp/rfp-internal-documents:read
      parameters:
      - $ref: '#/components/parameters/rfpId'
      - $ref: '#/components/parameters/limit'
      - $ref: '#/components/parameters/token'
      - name: filter
        in: query
        description: 'A filter query string narrows search results and supports the combination of logical and comparison operators.

          The filter adheres to the pattern filter=''field'' comparisonType ''value''.


          The following fields are filterable:

          * id (in)

          '
        schema:
          type: string
          example: id in ('209a11d-5bf6-47d2-b81f-89360d7229b6')
      responses:
        '200':
          description: Successfully retrieved a paginated list of RFP internal documents.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/PaginatedInternalDocuments'
        '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'
  /rfps/{rfpId}/questions:
    parameters:
    - $ref: '#/components/parameters/rfpId'
    get:
      tags:
      - RFP Requirements
      summary: List RFP Questions
      description: Returns a paginated list of standard and custom questions associated with the given RFP. Does not include answer details.
      operationId: listRfpQuestions
      security:
      - OAuth2.clientCredentials:
        - rfp/rfp-questions:read
      - OAuth2.authorizationCode:
        - rfp/rfp-questions:read
      parameters:
      - $ref: '#/components/parameters/limit'
      - $ref: '#/components/parameters/token'
      responses:
        '200':
          description: Successfully retrieved a paginated list of RFP questions.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/PaginatedRfpQuestions'
        '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'
components:
  schemas:
    PaginatedRfpAgendaItemsSchedule:
      title: PaginatedRfpAgendaItemsSchedule
      description: Paginated list of agenda items schedule attached to an RFP.
      type: object
      properties:
        paging:
          $ref: '#/components/schemas/Paging'
        data:
          description: List of agenda items schedule attached to an RFP.
          type: array
          items:
            $ref: '#/components/schemas/RfpAgendaItemScheduleWithId'
    QuestionClassificationType:
      type: string
      title: QuestionClassificationType
      description: 'Indicates the types of RFP that can be assigned this custom question. `MEETING_ROOM`: Meeting room type RFPs can be assigned this custom question. `GUEST_ROOM`: Guest room type RFPs can be assigned this custom question. `ALL_RFPS`:  All RFPs can be assigned this custom question.'
      enum:
      - MEETING_ROOM
      - GUEST_ROOM
      - ALL_RFPS
    Choice:
      title: Choice
      description: A question choice.
      type: object
      allOf:
      - $ref: '#/components/schemas/TextField'
      properties:
        label:
          type: string
          description: Label of choice.
          example: Choice A
    FieldType:
      title: FieldType
      enum:
      - DateTime
      - MultiChoice
      - Number
      - SingleChoice
      - Text
      type: string
      description: 'Determines the required format for a field. `DateTime`: Data is in date-time format. `MultiChoice`: Data is one or more options from a list. `Number`: Data is a number. `SingleChoice`: Data is a a single option from a list. `Text`: Data is free-text input.'
    GuestRoomOccupancyPerRoomType:
      title: GuestRoomOccupancyPerRoomType
      description: Room occupancy for a room type.
      type: object
      properties:
        occupancy:
          $ref: '#/components/schemas/GuestRoomOccupancy'
        type:
          $ref: '#/components/schemas/GuestRoomType'
    text-answer-format:
      description: 'Text answer format. Used for `OpenEndedTextOneLine` question types.`CustomFormat`: Answers must follow a planner defined custom format. `EmailAddress`: Answers must follow the pattern of an email address. `General`: Answers can be any string. `USPhoneNumber`: Answers must be formatted as a phone number.'
      type: string
      enum:
      - CustomFormat
      - EmailAddress
      - General
      - USPhoneNumber
    PaginatedRfpQuestions:
      title: PaginatedRfpQuestions
      description: Paginated response containing questions associated to an RFP.
      type: object
      properties:
        paging:
          $ref: '#/components/schemas/Paging'
        data:
          description: List of questions associated to an RFP.
          type: array
          items:
            $ref: '#/components/schemas/RfpQuestion'
    numeric-answer-format:
      type: string
      description: The answer format that a given number is stored in.
      enum:
      - Currency
      - Decimal
      - Number
    TextField:
      title: TextField
      description: A survey text field.
      type: object
      properties:
        id:
          type: string
          format: uuid
          description: Text field ID.
          readOnly: true
        text:
          type: string
          description: Text value of the field. Displays to users in the UI.
          example: Are you spending any significant time offsite and need transportation?
        shortText:
          type: string
          description: Concise version or abbreviation of the question text. Set by the planner to simplify presentation of the question in reports.
          example: Needs offsite transportation?
    RfpQuestion:
      title: RfpQuestion
      description: Question associated with an RFP.
      type: object
      allOf:
      - $ref: '#/components/schemas/QuestionCommon'
      properties:
        supplierTypes:
          type: array
          description: List of supplier types that can view the question on the RFP.
          items:
            $ref: '#/components/schemas/SupplierType'
          uniqueItems: true
          example:
          - CVB
          - HOTEL
        classificationType:
          $ref: '#/components/schemas/QuestionClassificationType'
        order:
          type: integer
          description: Determines the display order for questions on the RFP. Questions with smaller values appear first.
          example: 1
          minimum: 1
        standardQuestion:
          $ref: '#/components/schemas/StandardQuestion'
        aiQuestionGenerationSource:
          type: string
          maxLength: 100
          readOnly: true
          description: Represents the AI generation source for the custom question on RFP. This field is set during question creation and cannot be modified afterwards.
          example: MCP-Visual Studio Code/1.107.1
    DocumentType-1:
      type: string
      title: DocumentType
      readOnly: true
      description: The document type.
      enum:
      - AI
      - AVI
      - BMP
      - DOC
      - DOCX
      - EML
      - EPS
      - FLV
      - GIF
      - HTM
      - HTML
      - ICS
      - JFIF
      - JPEG
      - JPG
      - LINK
      - MOV
      - MP4
      - MSG
      - ONE
      - OST
      - PDF
      - PNG
      - PPT
      - PPTX
      - PST
      - SVG
      - TIF
      - TIFF
      - TXT
      - WMV
      - XLS
      - XLSX
    QuestionCommon:
      title: QuestionCommon
      description: Base model with common properties for a question.
      type: object
      allOf:
      - $ref: '#/components/schemas/Audit'
      properties:
        id:
          type: string
          format: uuid
          description: Unique identifier of the question.
          readOnly: true
        text:
          type: string
          description: Text value of the question field. Displays to users in the UI.
          example: Are you spending any significant time offsite and need transportation?
        shortText:
          type: string
          description: Concise version or abbreviation of the question text. Set by the planner to simplify presentation of the question in reports.
          example: Needs offsite transportation?
        htmlText:
          type: string
          description: Html of the question.
          example: Question Html
          maxLength: 5000
        code:
          type: string
          description: Question code is unique identifier for every questions within a survey (can be same across surveys). This code is used in reporting and in question and answer data tags for emails. With every new question a random question code is generated.
          example: 4l6x
          maxLength: 30
        type:
          $ref: '#/components/schemas/QuestionType'
        choices:
          type: array
          description: List of choices for the question.
          items:
            $ref: '#/components/schemas/Choice'
          maxItems: 100
        categories:
          type: array
          description: List of categories for the question.
          items:
            $ref: '#/components/schemas/Category'
          maxItems: 100
        subCategories:
          type: array
          description: List of sub categories for matrix side-by-side questions.
          items:
            $ref: '#/components/schemas/TextField'
          maxItems: 100
        notApplicableAnswer:
          $ref: '#/components/schemas/AdditionalChoice'
        otherAnswer:
          $ref: '#/components/schemas/AdditionalChoice'
        comments:
          type: string
          description: Text Value of Comments Input box placeholder.
          example: Comments Text
          maxLength: 16000
        required:
          type: boolean
          default: false
          description: True indicates this is a mandatory question field.
          example: true
        fields:
          type: array
          description: List of fields for form/matrix questions.
          items:
            $ref: '#/components/schemas/Field'
          maxItems: 100
        maxScore:
          type: number
          description: Max possible score.
          example: 20
          minimum: 0
        totalSum:
          type: integer
          description: Total configured sum of all choices for number allocation question.
          example: 45
        choiceSortOrder:
          $ref: '#/components/schemas/choice-sort-order'
        displayType:
          $ref: '#/components/schemas/display-type'
        minSelection:
          type: integer
          description: Minimum number of choices that must be selected.
          example: 1
          default: 0
        maxSelection:
          type: integer
          description: Maximum number of choices that can be selected.
          example: 3
          default: 0
        minDate:
          type: string
          format: date
          description: The earliest date that can be selected, starting from or after this date.
          example: '2020-01-01'
        maxDate:
          type: string
          format: date
          description: The latest date that can be selected, up to or before this date.
          example: '2020-12-31'
        showDateSelector:
          type: boolean
          description: Indicates if this is a date range question.
          example: true
        showCurrentDate:
          type: boolean
          description: Indicates if the current date should be shown.
          example: true
        dateAnswerFormat:
          $ref: '#/components/schemas/date-answer-format'
        numericAnswerFormat:
          $ref: '#/components/schemas/numeric-answer-format'
        unitLabel:
          type: string
          description: Label to add before or after textbox.
          example: miles
        unitPosition:
          $ref: '#/components/schemas/unit-position'
        minLength:
          type: integer
          description: Minimum number of characters that must be entered.
          example: 5
          default: 0
        maxLength:
          type: integer
          description: Maximum number of characters that can be entered.
          example: 100
          default: 500
        textAnswerFormat:
          $ref: '#/components/schemas/text-answer-format'
        customAnswerFormat:
          type: object
          description: An object that contains custom answer format data.
          properties:
            id:
              type: integer
              description: The unique identifier of the custom answer format for the account.
              example: 104
    RfpAttachment:
      type: object
      title: RfpAttachment
      description: This object contains Rfp specific attachments attributes.
      required:
      - id
      properties:
        id:
          type: string
          format: uuid
          description: Unique identifier for this attachment record.
          example: f56a51a4-84b0-46c9-a612-716dc95a1c96
          readOnly: true
        created:
          type: string
          format: date-time
          description: ISO 8601 date-time the attachment was uploaded.
          example: '2021-01-13T14:06:20.080Z'
          readOnly: true
        size:
          type: integer
          format: int64
          description: The size of attachment in bytes.
          example: 777835
          readOnly: true
        type:
          $ref: '#/components/schemas/DocumentType-1'
        secure:
          type: boolean
          description: True indicates the attachment is uploaded behind a secured URL.
          example: true
          readOnly: true
        name:
          type: string
          description: Display name of the attachment.
          example: BudgetCostSavings
          readOnly: true
        uniqueName:
          type: string
          description: Name of the attachment. Must be unique in the account.
          example: 183f9efaa4c14070985782ee31abbf3c.jpg
          readOnly: true
        mimeType:
          type: string
          description: The content type of the attachment
          example: image/jpeg
          readOnly: true
        source:
          $ref: '#/components/schemas/AttachmentSource'
        relativePath:
          type: string
          description: The file path pointing to where the attachment is stored in Cvent. This path is relative to the base URL of the storage system and omits the root address.
          example: 0B7DEF22676A4434982BDAD2D6EC591F/files/supplier/0713cef78d4e4d818899d4522022d5ad/73ab2e3054fd4321a5e0f846a7adb0d7.jpg
          readOnly: true
        sendInEmail:
          type: boolean
          description: True indicates the attachment should be sent in emails that notify suppliers about RFPs.
          example: false
        deletionAllowed:

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