> ## Documentation Index
> Fetch the complete documentation index at: https://docs.pinkfish.ai/llms.txt
> Use this file to discover all available pages before exploring further.

# google-forms

> Form creation and response management

**Server path:** `/google-forms` | **Type:** Application | **PCID required:** Yes

## Tools

| Tool                                                                      | Description                                                                                                                                                                                                                                                                                                                                                                                                                                                           |
| ------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| [`google-forms_batch_update`](#google-forms_batch_update)                 | Change the form with a batch of updates.                                                                                                                                                                                                                                                                                                                                                                                                                              |
| [`google-forms_create_form`](#google-forms_create_form)                   | Create a new form using the title given in the provided form message in the request. *Important:* Only the form.info.title and form.info.document\_title fields are copied to the new form. All other fields including the form description, items and settings are disallowed. To create a new form and add items, you must first call forms.create to create an empty form with a title and (optional) document title, and then call forms.update to add the items. |
| [`google-forms_create_watch`](#google-forms_create_watch)                 | Create a new watch. If a watch ID is provided, it must be unused. For each invoking project, the per form limit is one watch per Watch.EventType. A watch expires seven days after it is created (see Watch.expire\_time).                                                                                                                                                                                                                                            |
| [`google-forms_delete_watch`](#google-forms_delete_watch)                 | Delete a watch.                                                                                                                                                                                                                                                                                                                                                                                                                                                       |
| [`google-forms_get_form`](#google-forms_get_form)                         | Get a form.                                                                                                                                                                                                                                                                                                                                                                                                                                                           |
| [`google-forms_get_response`](#google-forms_get_response)                 | Get one response from the form.                                                                                                                                                                                                                                                                                                                                                                                                                                       |
| [`google-forms_list_responses`](#google-forms_list_responses)             | List a form's responses.                                                                                                                                                                                                                                                                                                                                                                                                                                              |
| [`google-forms_list_watches`](#google-forms_list_watches)                 | Return a list of the watches owned by the invoking project. The maximum number of watches is two: For each invoker, the limit is one for each event type per form.                                                                                                                                                                                                                                                                                                    |
| [`google-forms_renew_watch`](#google-forms_renew_watch)                   | Renew an existing watch for seven days. The state of the watch after renewal is `ACTIVE`, and the `expire_time` is seven days from the renewal. Renewing a watch in an error state (e.g. `SUSPENDED`) succeeds if the error is no longer present, but fail otherwise. After a watch has expired, RenewWatch returns `NOT_FOUND`.                                                                                                                                      |
| [`google-forms_set_publish_settings`](#google-forms_set_publish_settings) | Updates the publish settings of a form. Legacy forms aren't supported because they don't have the `publish_settings` field.                                                                                                                                                                                                                                                                                                                                           |

***

## google-forms\_batch\_update

Change the form with a batch of updates.

**Parameters:**

| Parameter               | Type      | Required | Default | Description                                                        |
| ----------------------- | --------- | -------- | ------- | ------------------------------------------------------------------ |
| `formId`                | string    | Yes      | —       | Required. The form ID.                                             |
| `includeFormInResponse` | boolean   | No       | —       | Whether to return an updated version of the model in the response. |
| `requests`              | object\[] | Yes      | —       | Required. The update requests of this batch.                       |
| `writeControl`          | object    | No       | —       | Provides control over how write requests are executed.             |

<Expandable title="inputSchema">
  ```json theme={null}
  {
    "type": "object",
    "properties": {
      "PCID": {
        "type": "string",
        "description": "Pink Connect ID for the authenticated connection"
      },
      "formId": {
        "type": "string",
        "description": "Required. The form ID."
      },
      "includeFormInResponse": {
        "type": "boolean",
        "description": "Whether to return an updated version of the model in the response."
      },
      "requests": {
        "type": "array",
        "items": {
          "type": "object",
          "properties": {
            "updateFormInfo": {
              "type": "object",
              "description": "Update Form's Info."
            },
            "updateSettings": {
              "type": "object",
              "description": "Update Form's FormSettings."
            },
            "createItem": {
              "type": "object",
              "description": "Create an item in a form."
            },
            "moveItem": {
              "type": "object",
              "description": "Move an item in a form."
            },
            "deleteItem": {
              "type": "object",
              "description": "Delete an item in a form."
            },
            "updateItem": {
              "type": "object",
              "description": "Update an item in a form."
            }
          }
        },
        "description": "Required. The update requests of this batch."
      },
      "writeControl": {
        "type": "object",
        "description": "Provides control over how write requests are executed.",
        "properties": {
          "requiredRevisionId": {
            "type": "string",
            "description": "The revision ID of the form that the write request is applied to. If this is not the latest revision of the form, the request is not processed and returns a 400 bad request error."
          },
          "targetRevisionId": {
            "type": "string",
            "description": "The target revision ID of the form that the write request is applied to. If changes have occurred after this revision, the changes in this update request are transformed against those changes. This results in a new revision of the form that incorporates both the changes in the request and the intervening changes, with the server resolving conflicting changes. The target revision ID may only be used to write to recent versions of a form. If the target revision is too far behind the latest revision, the request is not processed and returns a 400 (Bad Request Error). The request may be retried after reading the latest version of the form. In most cases a target revision ID remains valid for several minutes after it is read, but for frequently-edited forms this window may be shorter."
          }
        }
      }
    },
    "required": [
      "PCID",
      "formId",
      "requests"
    ]
  }
  ```
</Expandable>

***

## google-forms\_create\_form

Create a new form using the title given in the provided form message in the request. *Important:* Only the form.info.title and form.info.document\_title fields are copied to the new form. All other fields including the form description, items and settings are disallowed. To create a new form and add items, you must first call forms.create to create an empty form with a title and (optional) document title, and then call forms.update to add the items.

**Parameters:**

| Parameter     | Type    | Required | Default | Description                                                                                                                                                              |
| ------------- | ------- | -------- | ------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |
| `unpublished` | boolean | No       | —       | Optional. Whether the form is unpublished. If set to `true`, the form doesn't accept responses. If set to `false` or unset, the form is published and accepts responses. |
| `info`        | object  | Yes      | —       | The general information for a form.                                                                                                                                      |

<Expandable title="inputSchema">
  ```json theme={null}
  {
    "type": "object",
    "properties": {
      "PCID": {
        "type": "string",
        "description": "Pink Connect ID for the authenticated connection"
      },
      "unpublished": {
        "type": "boolean",
        "description": "Optional. Whether the form is unpublished. If set to `true`, the form doesn't accept responses. If set to `false` or unset, the form is published and accepts responses."
      },
      "info": {
        "type": "object",
        "description": "The general information for a form.",
        "properties": {
          "title": {
            "type": "string",
            "description": "Required. The title of the form which is visible to responders."
          },
          "documentTitle": {
            "type": "string",
            "description": "Output only. The title of the document which is visible in Drive. If Info.title is empty, `document_title` may appear in its place in the Google Forms UI and be visible to responders. `document_title` can be set on create, but cannot be modified by a batchUpdate request. Please use the [Google Drive API](https://developers.google.com/drive/api/v3/reference/files/update) if you need to programmatically update `document_title`."
          },
          "description": {
            "type": "string",
            "description": "The description of the form."
          }
        },
        "required": [
          "title"
        ]
      }
    },
    "required": [
      "PCID",
      "info"
    ]
  }
  ```
</Expandable>

***

## google-forms\_create\_watch

Create a new watch. If a watch ID is provided, it must be unused. For each invoking project, the per form limit is one watch per Watch.EventType. A watch expires seven days after it is created (see Watch.expire\_time).

**Parameters:**

| Parameter | Type   | Required | Default | Description                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          |
| --------- | ------ | -------- | ------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `formId`  | string | Yes      | —       | Required. ID of the Form to watch.                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                   |
| `watch`   | object | Yes      | —       | A watch for events for a form. When the designated event happens, a notification will be published to the specified target. The notification's attributes will include a `formId` key that has the ID of the watched form and an `eventType` key that has the string of the type. Messages are sent with at-least-once delivery and are only dropped in extraordinary circumstances. Typically all notifications should be reliably delivered within a few seconds; however, in some situations notifications may be delayed. A watch expires seven days after it is created unless it is renewed with watches.renew |
| `watchId` | string | No       | —       | The ID to use for the watch. If specified, the ID must not already be in use. If not specified, an ID is generated. This value should be 4-63 characters, and valid characters are /a-z-/.                                                                                                                                                                                                                                                                                                                                                                                                                           |

<Expandable title="inputSchema">
  ```json theme={null}
  {
    "type": "object",
    "properties": {
      "PCID": {
        "type": "string",
        "description": "Pink Connect ID for the authenticated connection"
      },
      "formId": {
        "type": "string",
        "description": "Required. ID of the Form to watch."
      },
      "watch": {
        "type": "object",
        "description": "A watch for events for a form. When the designated event happens, a notification will be published to the specified target. The notification's attributes will include a `formId` key that has the ID of the watched form and an `eventType` key that has the string of the type. Messages are sent with at-least-once delivery and are only dropped in extraordinary circumstances. Typically all notifications should be reliably delivered within a few seconds; however, in some situations notifications may be delayed. A watch expires seven days after it is created unless it is renewed with watches.renew",
        "properties": {
          "id": {
            "type": "string",
            "description": "Output only. The ID of this watch. See notes on CreateWatchRequest.watch_id."
          },
          "target": {
            "type": "object",
            "description": "The target for notification delivery."
          },
          "eventType": {
            "type": "string",
            "description": "Required. Which event type to watch for.",
            "enum": [
              "EVENT_TYPE_UNSPECIFIED",
              "SCHEMA",
              "RESPONSES"
            ]
          },
          "createTime": {
            "type": "string",
            "description": "Output only. Timestamp of when this was created."
          },
          "expireTime": {
            "type": "string",
            "description": "Output only. Timestamp for when this will expire. Each watches.renew call resets this to seven days in the future."
          },
          "errorType": {
            "type": "string",
            "description": "Output only. The most recent error type for an attempted delivery. To begin watching the form again a call can be made to watches.renew which also clears this error information.",
            "enum": [
              "ERROR_TYPE_UNSPECIFIED",
              "PROJECT_NOT_AUTHORIZED",
              "NO_USER_ACCESS",
              "OTHER_ERRORS"
            ]
          },
          "state": {
            "type": "string",
            "description": "Output only. The current state of the watch. Additional details about suspended watches can be found by checking the `error_type`.",
            "enum": [
              "STATE_UNSPECIFIED",
              "ACTIVE",
              "SUSPENDED"
            ]
          }
        }
      },
      "watchId": {
        "type": "string",
        "description": "The ID to use for the watch. If specified, the ID must not already be in use. If not specified, an ID is generated. This value should be 4-63 characters, and valid characters are /a-z-/."
      }
    },
    "required": [
      "PCID",
      "formId",
      "watch"
    ]
  }
  ```
</Expandable>

***

## google-forms\_delete\_watch

Delete a watch.

**Parameters:**

| Parameter | Type   | Required | Default | Description                              |
| --------- | ------ | -------- | ------- | ---------------------------------------- |
| `formId`  | string | Yes      | —       | Required. The ID of the Form.            |
| `watchId` | string | Yes      | —       | Required. The ID of the Watch to delete. |

<Expandable title="inputSchema">
  ```json theme={null}
  {
    "type": "object",
    "properties": {
      "PCID": {
        "type": "string",
        "description": "Pink Connect ID for the authenticated connection"
      },
      "formId": {
        "type": "string",
        "description": "Required. The ID of the Form."
      },
      "watchId": {
        "type": "string",
        "description": "Required. The ID of the Watch to delete."
      }
    },
    "required": [
      "PCID",
      "formId",
      "watchId"
    ]
  }
  ```
</Expandable>

***

## google-forms\_get\_form

Get a form.

**Parameters:**

| Parameter | Type   | Required | Default | Description            |
| --------- | ------ | -------- | ------- | ---------------------- |
| `formId`  | string | Yes      | —       | Required. The form ID. |

<Expandable title="inputSchema">
  ```json theme={null}
  {
    "type": "object",
    "properties": {
      "PCID": {
        "type": "string",
        "description": "Pink Connect ID for the authenticated connection"
      },
      "formId": {
        "type": "string",
        "description": "Required. The form ID."
      }
    },
    "required": [
      "PCID",
      "formId"
    ]
  }
  ```
</Expandable>

***

## google-forms\_get\_response

Get one response from the form.

**Parameters:**

| Parameter    | Type   | Required | Default | Description                                |
| ------------ | ------ | -------- | ------- | ------------------------------------------ |
| `formId`     | string | Yes      | —       | Required. The form ID.                     |
| `responseId` | string | Yes      | —       | Required. The response ID within the form. |

<Expandable title="inputSchema">
  ```json theme={null}
  {
    "type": "object",
    "properties": {
      "PCID": {
        "type": "string",
        "description": "Pink Connect ID for the authenticated connection"
      },
      "formId": {
        "type": "string",
        "description": "Required. The form ID."
      },
      "responseId": {
        "type": "string",
        "description": "Required. The response ID within the form."
      }
    },
    "required": [
      "PCID",
      "formId",
      "responseId"
    ]
  }
  ```
</Expandable>

***

## google-forms\_list\_responses

List a form's responses.

**Parameters:**

| Parameter   | Type    | Required | Default | Description                                                                                                                                                                                                                                                                                                                                                                                                                                  |
| ----------- | ------- | -------- | ------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `formId`    | string  | Yes      | —       | Required. ID of the Form whose responses to list.                                                                                                                                                                                                                                                                                                                                                                                            |
| `filter`    | string  | No       | —       | Which form responses to return. Currently, the only supported filters are: \* timestamp > *N* which means to get all form responses submitted after (but not at) timestamp *N*. \* timestamp >= *N* which means to get all form responses submitted at and after timestamp *N*. For both supported filters, timestamp must be formatted in RFC3339 UTC "Zulu" format. Examples: "2014-10-02T15:01:23Z" and "2014-10-02T15:01:23.045123456Z". |
| `pageSize`  | integer | No       | —       | The maximum number of responses to return. The service may return fewer than this value. If unspecified or zero, at most 5000 responses are returned.                                                                                                                                                                                                                                                                                        |
| `pageToken` | string  | No       | —       | A page token returned by a previous list response. If this field is set, the form and the values of the filter must be the same as for the original request.                                                                                                                                                                                                                                                                                 |

<Expandable title="inputSchema">
  ```json theme={null}
  {
    "type": "object",
    "properties": {
      "PCID": {
        "type": "string",
        "description": "Pink Connect ID for the authenticated connection"
      },
      "formId": {
        "type": "string",
        "description": "Required. ID of the Form whose responses to list."
      },
      "filter": {
        "type": "string",
        "description": "Which form responses to return. Currently, the only supported filters are: * timestamp > *N* which means to get all form responses submitted after (but not at) timestamp *N*. * timestamp >= *N* which means to get all form responses submitted at and after timestamp *N*. For both supported filters, timestamp must be formatted in RFC3339 UTC \"Zulu\" format. Examples: \"2014-10-02T15:01:23Z\" and \"2014-10-02T15:01:23.045123456Z\"."
      },
      "pageSize": {
        "type": "integer",
        "description": "The maximum number of responses to return. The service may return fewer than this value. If unspecified or zero, at most 5000 responses are returned."
      },
      "pageToken": {
        "type": "string",
        "description": "A page token returned by a previous list response. If this field is set, the form and the values of the filter must be the same as for the original request."
      }
    },
    "required": [
      "PCID",
      "formId"
    ]
  }
  ```
</Expandable>

***

## google-forms\_list\_watches

Return a list of the watches owned by the invoking project. The maximum number of watches is two: For each invoker, the limit is one for each event type per form.

**Parameters:**

| Parameter | Type   | Required | Default | Description                                     |
| --------- | ------ | -------- | ------- | ----------------------------------------------- |
| `formId`  | string | Yes      | —       | Required. ID of the Form whose watches to list. |

<Expandable title="inputSchema">
  ```json theme={null}
  {
    "type": "object",
    "properties": {
      "PCID": {
        "type": "string",
        "description": "Pink Connect ID for the authenticated connection"
      },
      "formId": {
        "type": "string",
        "description": "Required. ID of the Form whose watches to list."
      }
    },
    "required": [
      "PCID",
      "formId"
    ]
  }
  ```
</Expandable>

***

## google-forms\_renew\_watch

Renew an existing watch for seven days. The state of the watch after renewal is `ACTIVE`, and the `expire_time` is seven days from the renewal. Renewing a watch in an error state (e.g. `SUSPENDED`) succeeds if the error is no longer present, but fail otherwise. After a watch has expired, RenewWatch returns `NOT_FOUND`.

**Parameters:**

| Parameter | Type   | Required | Default | Description                             |
| --------- | ------ | -------- | ------- | --------------------------------------- |
| `formId`  | string | Yes      | —       | Required. The ID of the Form.           |
| `watchId` | string | Yes      | —       | Required. The ID of the Watch to renew. |

<Expandable title="inputSchema">
  ```json theme={null}
  {
    "type": "object",
    "properties": {
      "PCID": {
        "type": "string",
        "description": "Pink Connect ID for the authenticated connection"
      },
      "formId": {
        "type": "string",
        "description": "Required. The ID of the Form."
      },
      "watchId": {
        "type": "string",
        "description": "Required. The ID of the Watch to renew."
      }
    },
    "required": [
      "PCID",
      "formId",
      "watchId"
    ]
  }
  ```
</Expandable>

***

## google-forms\_set\_publish\_settings

Updates the publish settings of a form. Legacy forms aren't supported because they don't have the `publish_settings` field.

**Parameters:**

| Parameter         | Type   | Required | Default | Description                                                                                                                                                                                                                         |
| ----------------- | ------ | -------- | ------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `formId`          | string | Yes      | —       | Required. The ID of the form. You can get the id from Form.form\_id field.                                                                                                                                                          |
| `publishSettings` | object | Yes      | —       | The publishing settings of a form.                                                                                                                                                                                                  |
| `updateMask`      | string | No       | —       | Optional. The `publish_settings` fields to update. This field mask accepts the following values: \* `publish_state`: Updates or replaces all `publish_state` settings. \* `"*"`: Updates or replaces all `publish_settings` fields. |

<Expandable title="inputSchema">
  ```json theme={null}
  {
    "type": "object",
    "properties": {
      "PCID": {
        "type": "string",
        "description": "Pink Connect ID for the authenticated connection"
      },
      "formId": {
        "type": "string",
        "description": "Required. The ID of the form. You can get the id from Form.form_id field."
      },
      "publishSettings": {
        "type": "object",
        "description": "The publishing settings of a form.",
        "properties": {
          "publishState": {
            "type": "object",
            "description": "The publishing state of a form."
          }
        }
      },
      "updateMask": {
        "type": "string",
        "description": "Optional. The `publish_settings` fields to update. This field mask accepts the following values: * `publish_state`: Updates or replaces all `publish_state` settings. * `\"*\"`: Updates or replaces all `publish_settings` fields."
      }
    },
    "required": [
      "PCID",
      "formId",
      "publishSettings"
    ]
  }
  ```
</Expandable>
