{
  "auth": {
    "oauth2": {
      "scopes": {
        "https://www.googleapis.com/auth/keep": {
          "description": "See, edit, create and permanently delete all your Google Keep data"
        },
        "https://www.googleapis.com/auth/keep.readonly": {
          "description": "View all your Google Keep data"
        }
      }
    }
  },
  "servicePath": "",
  "resources": {
    "notes": {
      "methods": {
        "create": {
          "id": "keep.notes.create",
          "path": "v1/notes",
          "flatPath": "v1/notes",
          "httpMethod": "POST",
          "parameters": {},
          "parameterOrder": [],
          "request": {
            "$ref": "Note"
          },
          "response": {
            "$ref": "Note"
          },
          "scopes": [
            "https://www.googleapis.com/auth/keep"
          ],
          "description": "Creates a new note."
        },
        "get": {
          "id": "keep.notes.get",
          "path": "v1/{+name}",
          "flatPath": "v1/notes/{notesId}",
          "httpMethod": "GET",
          "parameters": {
            "name": {
              "description": "Required. Name of the resource.",
              "pattern": "^notes/[^/]+$",
              "location": "path",
              "required": true,
              "type": "string"
            }
          },
          "parameterOrder": [
            "name"
          ],
          "response": {
            "$ref": "Note"
          },
          "scopes": [
            "https://www.googleapis.com/auth/keep",
            "https://www.googleapis.com/auth/keep.readonly"
          ],
          "description": "Gets a note."
        },
        "list": {
          "id": "keep.notes.list",
          "path": "v1/notes",
          "flatPath": "v1/notes",
          "httpMethod": "GET",
          "parameters": {
            "pageSize": {
              "description": "The maximum number of results to return.",
              "location": "query",
              "type": "integer",
              "format": "int32"
            },
            "pageToken": {
              "description": "The previous page's `next_page_token` field.",
              "location": "query",
              "type": "string"
            },
            "filter": {
              "description": "Filter for list results. If no filter is supplied, the `trashed` filter is applied by default. Valid fields to filter by are: `create_time`, `update_time`, `trash_time`, and `trashed`. Filter syntax follows the [Google AIP filtering spec](https://aip.dev/160).",
              "location": "query",
              "type": "string"
            }
          },
          "parameterOrder": [],
          "response": {
            "$ref": "ListNotesResponse"
          },
          "scopes": [
            "https://www.googleapis.com/auth/keep",
            "https://www.googleapis.com/auth/keep.readonly"
          ],
          "description": "Lists notes. Every list call returns a page of results with `page_size` as the upper bound of returned items. A `page_size` of zero allows the server to choose the upper bound. The ListNotesResponse contains at most `page_size` entries. If there are more things left to list, it provides a `next_page_token` value. (Page tokens are opaque values.) To get the next page of results, copy the result's `next_page_token` into the next request's `page_token`. Repeat until the `next_page_token` returned with a page of results is empty. ListNotes return consistent results in the face of concurrent changes, or signals that it cannot with an ABORTED error."
        },
        "delete": {
          "id": "keep.notes.delete",
          "path": "v1/{+name}",
          "flatPath": "v1/notes/{notesId}",
          "httpMethod": "DELETE",
          "parameters": {
            "name": {
              "description": "Required. Name of the note to delete.",
              "pattern": "^notes/[^/]+$",
              "location": "path",
              "required": true,
              "type": "string"
            }
          },
          "parameterOrder": [
            "name"
          ],
          "response": {
            "$ref": "Empty"
          },
          "scopes": [
            "https://www.googleapis.com/auth/keep"
          ],
          "description": "Deletes a note. Caller must have the `OWNER` role on the note to delete. Deleting a note removes the resource immediately and cannot be undone. Any collaborators will lose access to the note."
        }
      },
      "resources": {
        "permissions": {
          "methods": {
            "batchCreate": {
              "id": "keep.notes.permissions.batchCreate",
              "path": "v1/{+parent}/permissions:batchCreate",
              "flatPath": "v1/notes/{notesId}/permissions:batchCreate",
              "httpMethod": "POST",
              "parameters": {
                "parent": {
                  "description": "The parent resource shared by all Permissions being created. Format: `notes/{note}` If this is set, the parent field in the CreatePermission messages must either be empty or match this field.",
                  "pattern": "^notes/[^/]+$",
                  "location": "path",
                  "required": true,
                  "type": "string"
                }
              },
              "parameterOrder": [
                "parent"
              ],
              "request": {
                "$ref": "BatchCreatePermissionsRequest"
              },
              "response": {
                "$ref": "BatchCreatePermissionsResponse"
              },
              "scopes": [
                "https://www.googleapis.com/auth/keep"
              ],
              "description": "Creates one or more permissions on the note. Only permissions with the `WRITER` role may be created. If adding any permission fails, then the entire request fails and no changes are made."
            },
            "batchDelete": {
              "id": "keep.notes.permissions.batchDelete",
              "path": "v1/{+parent}/permissions:batchDelete",
              "flatPath": "v1/notes/{notesId}/permissions:batchDelete",
              "httpMethod": "POST",
              "parameters": {
                "parent": {
                  "description": "The parent resource shared by all permissions being deleted. Format: `notes/{note}` If this is set, the parent of all of the permissions specified in the DeletePermissionRequest messages must match this field.",
                  "pattern": "^notes/[^/]+$",
                  "location": "path",
                  "required": true,
                  "type": "string"
                }
              },
              "parameterOrder": [
                "parent"
              ],
              "request": {
                "$ref": "BatchDeletePermissionsRequest"
              },
              "response": {
                "$ref": "Empty"
              },
              "scopes": [
                "https://www.googleapis.com/auth/keep"
              ],
              "description": "Deletes one or more permissions on the note. The specified entities will immediately lose access. A permission with the `OWNER` role can't be removed. If removing a permission fails, then the entire request fails and no changes are made. Returns a 400 bad request error if a specified permission does not exist on the note."
            }
          }
        }
      }
    },
    "media": {
      "methods": {
        "download": {
          "id": "keep.media.download",
          "path": "v1/{+name}",
          "flatPath": "v1/notes/{notesId}/attachments/{attachmentsId}",
          "httpMethod": "GET",
          "parameters": {
            "name": {
              "description": "Required. The name of the attachment.",
              "pattern": "^notes/[^/]+/attachments/[^/]+$",
              "location": "path",
              "required": true,
              "type": "string"
            },
            "mimeType": {
              "description": "The IANA MIME type format requested. The requested MIME type must be one specified in the attachment.mime_type. Required when downloading attachment media and ignored otherwise.",
              "location": "query",
              "type": "string"
            }
          },
          "parameterOrder": [
            "name"
          ],
          "supportsMediaDownload": true,
          "useMediaDownloadService": true,
          "response": {
            "$ref": "Attachment"
          },
          "scopes": [
            "https://www.googleapis.com/auth/keep",
            "https://www.googleapis.com/auth/keep.readonly"
          ],
          "description": "Gets an attachment. To download attachment media via REST requires the alt=media query parameter. Returns a 400 bad request error if attachment media is not available in the requested MIME type."
        }
      }
    }
  },
  "title": "Google Keep API",
  "ownerDomain": "google.com",
  "documentationLink": "https://developers.google.com/workspace/keep/api",
  "parameters": {
    "access_token": {
      "type": "string",
      "description": "OAuth access token.",
      "location": "query"
    },
    "alt": {
      "type": "string",
      "description": "Data format for response.",
      "default": "json",
      "enum": [
        "json",
        "media",
        "proto"
      ],
      "enumDescriptions": [
        "Responses with Content-Type of application/json",
        "Media download with context-dependent Content-Type",
        "Responses with Content-Type of application/x-protobuf"
      ],
      "location": "query"
    },
    "callback": {
      "type": "string",
      "description": "JSONP",
      "location": "query"
    },
    "fields": {
      "type": "string",
      "description": "Selector specifying which fields to include in a partial response.",
      "location": "query"
    },
    "key": {
      "type": "string",
      "description": "API key. Your API key identifies your project and provides you with API access, quota, and reports. Required unless you provide an OAuth 2.0 token.",
      "location": "query"
    },
    "oauth_token": {
      "type": "string",
      "description": "OAuth 2.0 token for the current user.",
      "location": "query"
    },
    "prettyPrint": {
      "type": "boolean",
      "description": "Returns response with indentations and line breaks.",
      "default": "true",
      "location": "query"
    },
    "quotaUser": {
      "type": "string",
      "description": "Available to use for quota purposes for server-side applications. Can be any arbitrary string assigned to a user, but should not exceed 40 characters.",
      "location": "query"
    },
    "upload_protocol": {
      "type": "string",
      "description": "Upload protocol for media (e.g. \"raw\", \"multipart\").",
      "location": "query"
    },
    "uploadType": {
      "type": "string",
      "description": "Legacy upload protocol for media (e.g. \"media\", \"multipart\").",
      "location": "query"
    },
    "$.xgafv": {
      "type": "string",
      "description": "V1 error format.",
      "enum": [
        "1",
        "2"
      ],
      "enumDescriptions": [
        "v1 error format",
        "v2 error format"
      ],
      "location": "query"
    }
  },
  "discoveryVersion": "v1",
  "canonicalName": "Keep",
  "version": "v1",
  "id": "keep:v1",
  "kind": "discovery#restDescription",
  "basePath": "",
  "ownerName": "Google",
  "rootUrl": "https://keep.googleapis.com/",
  "batchPath": "batch",
  "mtlsRootUrl": "https://keep.mtls.googleapis.com/",
  "version_module": true,
  "protocol": "rest",
  "revision": "20260511",
  "name": "keep",
  "schemas": {
    "Note": {
      "id": "Note",
      "description": "A single note.",
      "type": "object",
      "properties": {
        "name": {
          "description": "Output only. The resource name of this note. See general note on identifiers in KeepService.",
          "readOnly": true,
          "type": "string"
        },
        "createTime": {
          "description": "Output only. When this note was created.",
          "readOnly": true,
          "type": "string",
          "format": "google-datetime"
        },
        "updateTime": {
          "description": "Output only. When this note was last modified.",
          "readOnly": true,
          "type": "string",
          "format": "google-datetime"
        },
        "trashTime": {
          "description": "Output only. When this note was trashed. If `trashed`, the note is eventually deleted. If the note is not trashed, this field is not set (and the trashed field is `false`).",
          "readOnly": true,
          "type": "string",
          "format": "google-datetime"
        },
        "trashed": {
          "description": "Output only. `true` if this note has been trashed. If trashed, the note is eventually deleted.",
          "readOnly": true,
          "type": "boolean"
        },
        "attachments": {
          "description": "Output only. The attachments attached to this note.",
          "readOnly": true,
          "type": "array",
          "items": {
            "$ref": "Attachment"
          }
        },
        "permissions": {
          "description": "Output only. The list of permissions set on the note. Contains at least one entry for the note owner.",
          "readOnly": true,
          "type": "array",
          "items": {
            "$ref": "Permission"
          }
        },
        "title": {
          "description": "The title of the note. Length must be less than 1,000 characters.",
          "type": "string"
        },
        "body": {
          "description": "The body of the note.",
          "$ref": "Section"
        }
      }
    },
    "Attachment": {
      "id": "Attachment",
      "description": "An attachment to a note.",
      "type": "object",
      "properties": {
        "name": {
          "description": "The resource name;",
          "type": "string"
        },
        "mimeType": {
          "description": "The MIME types (IANA media types) in which the attachment is available.",
          "type": "array",
          "items": {
            "type": "string"
          }
        }
      }
    },
    "Permission": {
      "id": "Permission",
      "description": "A single permission on the note. Associates a `member` with a `role`.",
      "type": "object",
      "properties": {
        "name": {
          "description": "Output only. The resource name.",
          "readOnly": true,
          "type": "string"
        },
        "role": {
          "description": "The role granted by this permission. The role determines the entity’s ability to read, write, and share notes.",
          "type": "string",
          "enumDescriptions": [
            "An undefined role.",
            "A role granting full access. This role cannot be added or removed. Defined by the creator of the note.",
            "A role granting the ability to contribute content and modify note permissions."
          ],
          "enum": [
            "ROLE_UNSPECIFIED",
            "OWNER",
            "WRITER"
          ]
        },
        "email": {
          "description": "The email associated with the member. If set on create, the `email` field in the `User` or `Group` message must either be empty or match this field. On read, may be unset if the member does not have an associated email.",
          "type": "string"
        },
        "user": {
          "description": "Output only. The user to whom this role applies.",
          "readOnly": true,
          "$ref": "User"
        },
        "group": {
          "description": "Output only. The group to which this role applies.",
          "readOnly": true,
          "$ref": "Group"
        },
        "family": {
          "description": "Output only. The Google Family to which this role applies.",
          "readOnly": true,
          "$ref": "Family"
        },
        "deleted": {
          "description": "Output only. Whether this member has been deleted. If the member is recovered, this value is set to false and the recovered member retains the role on the note.",
          "readOnly": true,
          "type": "boolean"
        }
      }
    },
    "User": {
      "id": "User",
      "description": "Describes a single user.",
      "type": "object",
      "properties": {
        "email": {
          "description": "The user's email.",
          "type": "string"
        }
      }
    },
    "Group": {
      "id": "Group",
      "description": "Describes a single Group.",
      "type": "object",
      "properties": {
        "email": {
          "description": "The group email.",
          "type": "string"
        }
      }
    },
    "Family": {
      "id": "Family",
      "description": "Describes a single Google Family.",
      "type": "object",
      "properties": {}
    },
    "Section": {
      "id": "Section",
      "description": "The content of the note.",
      "type": "object",
      "properties": {
        "text": {
          "description": "Used if this section's content is a block of text. The length of the text content must be less than 20,000 characters.",
          "$ref": "TextContent"
        },
        "list": {
          "description": "Used if this section's content is a list.",
          "$ref": "ListContent"
        }
      }
    },
    "TextContent": {
      "id": "TextContent",
      "description": "The block of text for a single text section or list item.",
      "type": "object",
      "properties": {
        "text": {
          "description": "The text of the note. The limits on this vary with the specific field using this type.",
          "type": "string"
        }
      }
    },
    "ListContent": {
      "id": "ListContent",
      "description": "The list of items for a single list note.",
      "type": "object",
      "properties": {
        "listItems": {
          "description": "The items in the list. The number of items must be less than 1,000.",
          "type": "array",
          "items": {
            "$ref": "ListItem"
          }
        }
      }
    },
    "ListItem": {
      "id": "ListItem",
      "description": "A single list item in a note's list.",
      "type": "object",
      "properties": {
        "childListItems": {
          "description": "If set, list of list items nested under this list item. Only one level of nesting is allowed.",
          "type": "array",
          "items": {
            "$ref": "ListItem"
          }
        },
        "text": {
          "description": "The text of this item. Length must be less than 1,000 characters.",
          "$ref": "TextContent"
        },
        "checked": {
          "description": "Whether this item has been checked off or not.",
          "type": "boolean"
        }
      }
    },
    "ListNotesResponse": {
      "id": "ListNotesResponse",
      "description": "The response when listing a page of notes.",
      "type": "object",
      "properties": {
        "notes": {
          "description": "A page of notes.",
          "type": "array",
          "items": {
            "$ref": "Note"
          }
        },
        "nextPageToken": {
          "description": "Next page's `page_token` field.",
          "type": "string"
        }
      }
    },
    "Empty": {
      "id": "Empty",
      "description": "A generic empty message that you can re-use to avoid defining duplicated empty messages in your APIs. A typical example is to use it as the request or the response type of an API method. For instance: service Foo { rpc Bar(google.protobuf.Empty) returns (google.protobuf.Empty); }",
      "type": "object",
      "properties": {}
    },
    "BatchCreatePermissionsRequest": {
      "id": "BatchCreatePermissionsRequest",
      "description": "The request to add one or more permissions on the note. Currently, only the `WRITER` role may be specified. If adding a permission fails, then the entire request fails and no changes are made.",
      "type": "object",
      "properties": {
        "requests": {
          "description": "The request message specifying the resources to create.",
          "type": "array",
          "items": {
            "$ref": "CreatePermissionRequest"
          }
        }
      }
    },
    "CreatePermissionRequest": {
      "id": "CreatePermissionRequest",
      "description": "The request to add a single permission on the note.",
      "type": "object",
      "properties": {
        "parent": {
          "description": "Required. The parent note where this permission will be created. Format: `notes/{note}`",
          "type": "string"
        },
        "permission": {
          "description": "Required. The permission to create. One of Permission.email, User.email or Group.email must be supplied.",
          "$ref": "Permission"
        }
      }
    },
    "BatchCreatePermissionsResponse": {
      "id": "BatchCreatePermissionsResponse",
      "description": "The response for creating permissions on a note.",
      "type": "object",
      "properties": {
        "permissions": {
          "description": "Permissions created.",
          "type": "array",
          "items": {
            "$ref": "Permission"
          }
        }
      }
    },
    "BatchDeletePermissionsRequest": {
      "id": "BatchDeletePermissionsRequest",
      "description": "The request to remove one or more permissions from a note. A permission with the `OWNER` role can't be removed. If removing a permission fails, then the entire request fails and no changes are made. Returns a 400 bad request error if a specified permission does not exist on the note.",
      "type": "object",
      "properties": {
        "names": {
          "description": "Required. The names of the permissions to delete. Format: `notes/{note}/permissions/{permission}`",
          "type": "array",
          "items": {
            "type": "string"
          }
        }
      }
    }
  },
  "icons": {
    "x16": "http://www.google.com/images/icons/product/search-16.gif",
    "x32": "http://www.google.com/images/icons/product/search-32.gif"
  },
  "description": "The Google Keep API is used in an enterprise environment to manage Google Keep content and resolve issues identified by cloud security software.",
  "baseUrl": "https://keep.googleapis.com/",
  "fullyEncodeReservedExpansion": true
}
