cloudcommerceprocurement: add v1 API manually

cloudcommerceprocurement is not in https://www.googleapis.com/discovery/v1/apis.
Until it is, generating it manually and sticking it in this repository is a good
way to unblock customers that need it.

Change-Id: Iac31781b566a4c133c6911962dd53c198414f963
Reviewed-on: https://code-review.googlesource.com/c/google-api-go-client/+/47510
Reviewed-by: kokoro <noreply+kokoro@google.com>
Reviewed-by: Noah Dietz <ndietz@google.com>
diff --git a/cloudcommerceprocurement/v1/cloudcommerceprocurement-api.json b/cloudcommerceprocurement/v1/cloudcommerceprocurement-api.json
new file mode 100644
index 0000000..2f70f5c
--- /dev/null
+++ b/cloudcommerceprocurement/v1/cloudcommerceprocurement-api.json
@@ -0,0 +1,831 @@
+{
+  "version_module": true,
+  "schemas": {
+    "ApproveEntitlementRequest": {
+      "id": "ApproveEntitlementRequest",
+      "description": "Request message for [PartnerProcurementService.ApproveEntitlement[].",
+      "type": "object",
+      "properties": {
+        "properties": {
+          "additionalProperties": {
+            "type": "string"
+          },
+          "description": "Set of properties that should be associated with the entitlement.\nOptional.",
+          "type": "object"
+        }
+      }
+    },
+    "RejectEntitlementPlanChangeRequest": {
+      "description": "Request message for\nPartnerProcurementService.RejectEntitlementPlanChange.",
+      "type": "object",
+      "properties": {
+        "reason": {
+          "type": "string",
+          "description": "Free form text string explaining the rejection reason.\n\nMax allowed length: 256 bytes. Longer strings will be truncated."
+        },
+        "pendingPlanName": {
+          "description": "Name of the pending plan that is being rejected.\nRequired.",
+          "type": "string"
+        }
+      },
+      "id": "RejectEntitlementPlanChangeRequest"
+    },
+    "ListEntitlementsResponse": {
+      "type": "object",
+      "properties": {
+        "entitlements": {
+          "description": "The list of entitlements in this response.",
+          "type": "array",
+          "items": {
+            "$ref": "Entitlement"
+          }
+        },
+        "nextPageToken": {
+          "description": "The token for fetching the next page.",
+          "type": "string"
+        }
+      },
+      "id": "ListEntitlementsResponse",
+      "description": "Response message for PartnerProcurementService.ListEntitlements."
+    },
+    "RejectEntitlementRequest": {
+      "type": "object",
+      "properties": {
+        "reason": {
+          "description": "Free form text string explaining the rejection reason.\n\nMax allowed length: 256 bytes. Longer strings will be truncated.",
+          "type": "string"
+        }
+      },
+      "id": "RejectEntitlementRequest",
+      "description": "Request message for PartnerProcurementService.RejectEntitlement."
+    },
+    "ApproveAccountRequest": {
+      "description": "Request message for PartnerProcurementService.ApproveAccount.",
+      "type": "object",
+      "properties": {
+        "reason": {
+          "type": "string",
+          "description": "Free form text string explaining the approval reason.\nOptional.\n\nMax allowed length: 256 bytes. Longer strings will be truncated."
+        },
+        "approvalName": {
+          "description": "The name of the approval being approved. If absent and there is only one\napproval possible, that approval will be granted. If absent and there are\nmany approvals possible, the request will fail with a 400 Bad Request.\nOptional.",
+          "type": "string"
+        },
+        "properties": {
+          "additionalProperties": {
+            "type": "string"
+          },
+          "description": "Set of properties that should be associated with the account.\nOptional.",
+          "type": "object"
+        }
+      },
+      "id": "ApproveAccountRequest"
+    },
+    "ListAccountsResponse": {
+      "type": "object",
+      "properties": {
+        "nextPageToken": {
+          "description": "The token for fetching the next page.",
+          "type": "string"
+        },
+        "accounts": {
+          "description": "The list of accounts in this response.",
+          "type": "array",
+          "items": {
+            "$ref": "Account"
+          }
+        }
+      },
+      "id": "ListAccountsResponse",
+      "description": "Response message for [PartnerProcurementService.ListAccounts[]."
+    },
+    "SuspendEntitlementRequest": {
+      "description": "Request message for ParterProcurementService.SuspendEntitlement. This is\nnot yet supported.",
+      "type": "object",
+      "properties": {
+        "reason": {
+          "description": "A free-form reason string, explaining the reason for suspension request.",
+          "type": "string"
+        }
+      },
+      "id": "SuspendEntitlementRequest"
+    },
+    "Approval": {
+      "description": "An approval for some action on an account.",
+      "type": "object",
+      "properties": {
+        "state": {
+          "description": "Output only. The state of the approval.",
+          "type": "string",
+          "enumDescriptions": [
+            "Sentinel value; do not use.",
+            "The approval is pending response from the provider.\n\nThe approval state can transition to\nAccount.Approval.State.APPROVED or\nAccount.Approval.State.REJECTED.",
+            "The approval has been granted by the provider.",
+            "The approval has been rejected by the provider.\n\nA provider may choose to approve a previously rejected approval, so\nis it possible to transition to Account.Approval.State.APPROVED."
+          ],
+          "enum": [
+            "STATE_UNSPECIFIED",
+            "PENDING",
+            "APPROVED",
+            "REJECTED"
+          ]
+        },
+        "updateTime": {
+          "description": "Optional. The last update timestamp of the approval.",
+          "format": "google-datetime",
+          "type": "string"
+        },
+        "name": {
+          "type": "string",
+          "description": "Output only. The name of the approval."
+        },
+        "reason": {
+          "type": "string",
+          "description": "Output only. An explanation for the state of the approval."
+        }
+      },
+      "id": "Approval"
+    },
+    "Entitlement": {
+      "id": "Entitlement",
+      "description": "Represents a procured product of a customer.",
+      "type": "object",
+      "properties": {
+        "inputProperties": {
+          "additionalProperties": {
+            "description": "Properties of the object.",
+            "type": "any"
+          },
+          "description": "Output only. The custom properties that were collected from the user to create this\nentitlement.",
+          "type": "object"
+        },
+        "state": {
+          "description": "Output only. The state of the entitlement.",
+          "type": "string",
+          "enumDescriptions": [
+            "Sentinel value. Do not use.",
+            "Indicates that the entitlement is being created and the backend has sent\na notification to the provider for the activation approval.\n\nIf the provider approves, then the entitlement will transition to\nthe EntitlementState.ENTITLEMENT_ACTIVE state.\nOtherwise, the entitlement will be removed.\nPlan changes are not allowed in this state. Instead the entitlement is\ncancelled and re-created with a new plan name.",
+            "Indicates that the entitlement is active. The procured item is now usable\nand any associated billing events will start occurring.\n\nIn this state, the customer can decide to cancel the entitlement, which\nwould change the state to\nEntitlementState.ENTITLEMENT_PENDING_CANCELLATION, and then\nEntitlementState.ENTITLEMENT_CANCELLED.\n\nThe user can also request a change of plan, which will transition the\nstate to EntitlementState.ENTITLEMENT_PENDING_PLAN_CHANGE, and\nthen back to EntitlementState.ENTITLEMENT_ACTIVE.",
+            "Indicates that the entitlement was cancelled by the customer.\nThe entitlement typically stays in this state if the entitlement/plan\nallows use of the underlying resource until the end of the current billing\ncycle. Once the billing cycle completes, the resource will transition to\nEntitlementState.ENTITLEMENT_CANCELLED state.\n\nThe resource cannot be modified during this state.",
+            "Indicates that the entitlement was cancelled. The entitlement can now\nbe deleted.",
+            "Indicates that the entitlement is currently active, but there is a pending\nplan change that is requested by the customer. The entitlement typically\nstays in this state, if the entitlement/plan requires the completion of the\ncurrent billing cycle before the plan can be changed. Once the billing\ncycle completes, the resource will transition to\nEntitlementState.ENTITLEMENT_ACTIVE, with its plan changed.",
+            "Indicates that the entitlement is currently active, but there is a plan\nchange request pending provider approval. If the provider approves the plan\nchange, then the entitlement will transition either to\nEntitlementState.ENTITLEMENT_ACTIVE or\nEntitlementState.ENTITLEMENT_PENDING_PLAN_CHANGE depending on whether\ncurrent plan requires that the billing cycle completes.\n\nIf the provider rejects the plan change, then the pending plan change\nrequest is removed and the entitlement stays in\nEntitlementState.ENTITLEMENT_ACTIVE state with the old plan.",
+            "Indicates that the entitlement is suspended either by Google or provider\nrequest.\n\nThis can be triggered for various external reasons (e.g. expiration of\ncredit card on the billing account, violation of terms-of-service of the\nprovider etc.). As such, any remediating action needs\nto be taken externally, before the entitlement can be activated.\n\nThis is not yet supported."
+          ],
+          "enum": [
+            "ENTITLEMENT_STATE_UNSPECIFIED",
+            "ENTITLEMENT_ACTIVATION_REQUESTED",
+            "ENTITLEMENT_ACTIVE",
+            "ENTITLEMENT_PENDING_CANCELLATION",
+            "ENTITLEMENT_CANCELLED",
+            "ENTITLEMENT_PENDING_PLAN_CHANGE",
+            "ENTITLEMENT_PENDING_PLAN_CHANGE_APPROVAL",
+            "ENTITLEMENT_SUSPENDED"
+          ]
+        },
+        "name": {
+          "description": "Output only. The resource name of the entitlement.\nEntitlement names have the form `entitlements/{entitlement_id}`.",
+          "type": "string"
+        },
+        "product": {
+          "description": "Output only. The identifier of the product that was procured.",
+          "type": "string"
+        },
+        "provider": {
+          "description": "Output only. The identifier of the service provider that this entitlement was created\nagainst. Each service provider is assigned a unique provider value when\nthey onboard with Cloud Commerce platform.",
+          "type": "string"
+        },
+        "createTime": {
+          "description": "Output only. The creation timestamp.",
+          "format": "google-datetime",
+          "type": "string"
+        },
+        "updateTime": {
+          "description": "Output only. The last update timestamp.",
+          "format": "google-datetime",
+          "type": "string"
+        },
+        "newPendingPlan": {
+          "description": "Output only. The identifier of the pending new plan.\nRequired if the product has plans and the entitlement has a pending plan\nchange.",
+          "type": "string"
+        },
+        "usageReportingId": {
+          "description": "Output only. The consumerId to use when reporting usage through the Service Control API.\nSee the consumerId field at\n[Reporting\nMetrics](https://cloud.google.com/service-control/reporting-metrics) for\nmore details.\n\nThis field is present only if the product has usage-based billing\nconfigured.",
+          "type": "string"
+        },
+        "messageToUser": {
+          "description": "Provider-supplied message that is displayed to the end user. Currently this\nis used to communicate progress and ETA for provisioning.\nThis field can be updated only when a user is waiting for an action from\nthe provider, i.e. entitlement state is\nEntitlementState.ENTITLEMENT_ACTIVATION_REQUESTED or\nEntitlementState.ENTITLEMENT_PENDING_PLAN_CHANGE_APPROVAL.\n\nThis field is cleared automatically when the enitlement state changes.",
+          "type": "string"
+        },
+        "plan": {
+          "type": "string",
+          "description": "Output only. The identifier of the plan that was procured.\nRequired if the product has plans."
+        },
+        "account": {
+          "description": "Output only. The resource name of the account that this entitlement is based on, if any.",
+          "type": "string"
+        }
+      }
+    },
+    "RejectAccountRequest": {
+      "type": "object",
+      "properties": {
+        "reason": {
+          "type": "string",
+          "description": "Free form text string explaining the rejection reason.\n\nMax allowed length: 256 bytes. Longer strings will be truncated."
+        },
+        "approvalName": {
+          "description": "The name of the approval being rejected. If absent and there is only one\napproval possible, that approval will be rejected. If absent and there are\nmany approvals possible, the request will fail with a 400 Bad Request.\nOptional.",
+          "type": "string"
+        }
+      },
+      "id": "RejectAccountRequest",
+      "description": "Request message for PartnerProcurementService.RejectAccount."
+    },
+    "Account": {
+      "id": "Account",
+      "description": "Represents an account that was established by the customer on the service\nprovider's system.",
+      "type": "object",
+      "properties": {
+        "provider": {
+          "description": "Output only. The identifier of the service provider that this account was created\nagainst. Each service provider is assigned a unique provider value when\nthey onboard with Cloud Commerce platform.",
+          "type": "string"
+        },
+        "createTime": {
+          "description": "Output only. The creation timestamp.",
+          "format": "google-datetime",
+          "type": "string"
+        },
+        "updateTime": {
+          "type": "string",
+          "description": "Output only. The last update timestamp.",
+          "format": "google-datetime"
+        },
+        "state": {
+          "enumDescriptions": [
+            "Sentinel value, do not use.",
+            "The customer has requested the creation of the account resource, and\nthe provider notification message is dispatched.\n\nThis state has been deprecated, as accounts now immediately transition to\nAccountState.ACCOUNT_ACTIVE.",
+            "The account is active and ready for use.\n\nThe next possible states are:\n- Account getting deleted: After the user invokes delete from another API."
+          ],
+          "enum": [
+            "ACCOUNT_STATE_UNSPECIFIED",
+            "ACCOUNT_ACTIVATION_REQUESTED",
+            "ACCOUNT_ACTIVE"
+          ],
+          "description": "Output only. The state of the account. This is used to decide whether the customer is in\ngood standing with the provider and is able to make purchases. An account\nmight not be able to make a purchase if the billing account is suspended,\nfor example.",
+          "type": "string"
+        },
+        "name": {
+          "description": "Output only. The resource name of the account.\nAccount names have the form `accounts/{account_id}`.",
+          "type": "string"
+        },
+        "approvals": {
+          "description": "Output only. The approvals for this account. These approvals are used to track actions\nthat are permitted or have been completed by a customer within the context\nof the provider. This might include a sign up flow or a provisioning step,\nfor example, that the provider can admit to having happened.",
+          "type": "array",
+          "items": {
+            "$ref": "Approval"
+          }
+        },
+        "inputProperties": {
+          "additionalProperties": {
+            "description": "Properties of the object.",
+            "type": "any"
+          },
+          "description": "Output only. The custom properties that were collected from the user to create this\naccount.",
+          "type": "object"
+        }
+      }
+    },
+    "ApproveEntitlementPlanChangeRequest": {
+      "id": "ApproveEntitlementPlanChangeRequest",
+      "description": "Request message for\n[PartnerProcurementService.ApproveEntitlementPlanChange[].",
+      "type": "object",
+      "properties": {
+        "pendingPlanName": {
+          "type": "string",
+          "description": "Name of the pending plan that is being approved.\nRequired."
+        }
+      }
+    },
+    "ResetAccountRequest": {
+      "description": "Request message for for PartnerProcurementService.ResetAccount.",
+      "type": "object",
+      "properties": {},
+      "id": "ResetAccountRequest"
+    },
+    "Empty": {
+      "type": "object",
+      "properties": {},
+      "id": "Empty",
+      "description": "A generic empty message that you can re-use to avoid defining duplicated\nempty messages in your APIs. A typical example is to use it as the request\nor the response type of an API method. For instance:\n\n    service Foo {\n      rpc Bar(google.protobuf.Empty) returns (google.protobuf.Empty);\n    }\n\nThe JSON representation for `Empty` is empty JSON object `{}`."
+    }
+  },
+  "icons": {
+    "x16": "http://www.google.com/images/icons/product/search-16.gif",
+    "x32": "http://www.google.com/images/icons/product/search-32.gif"
+  },
+  "protocol": "rest",
+  "canonicalName": "Cloud Commerce Partner Procurement Service",
+  "auth": {
+    "oauth2": {
+      "scopes": {
+        "https://www.googleapis.com/auth/cloud-platform": {
+          "description": "View and manage your data across Google Cloud Platform services"
+        }
+      }
+    }
+  },
+  "rootUrl": "https://cloudcommerceprocurement.googleapis.com/",
+  "ownerDomain": "google.com",
+  "name": "cloudcommerceprocurement",
+  "batchPath": "batch",
+  "fullyEncodeReservedExpansion": true,
+  "title": "Cloud Commerce Partner Procurement API",
+  "ownerName": "Google",
+  "resources": {
+    "providers": {
+      "resources": {
+        "entitlements": {
+          "methods": {
+            "rejectPlanChange": {
+              "flatPath": "v1/providers/{providersId}/entitlements/{entitlementsId}:rejectPlanChange",
+              "id": "cloudcommerceprocurement.providers.entitlements.rejectPlanChange",
+              "path": "v1/{+name}:rejectPlanChange",
+              "request": {
+                "$ref": "RejectEntitlementPlanChangeRequest"
+              },
+              "description": "Reject an entitlement plan change that is in the\nEntitlementState.ENTITLEMENT_PENDING_PLAN_CHANGE_APPROVAL state.\n\nThis method is invoked by the provider to reject the plan change on the\nentitlement resource.",
+              "httpMethod": "POST",
+              "parameterOrder": [
+                "name"
+              ],
+              "response": {
+                "$ref": "Empty"
+              },
+              "scopes": [
+                "https://www.googleapis.com/auth/cloud-platform"
+              ],
+              "parameters": {
+                "name": {
+                  "location": "path",
+                  "description": "The resource name of the entitlement.\nRequired.",
+                  "required": true,
+                  "type": "string",
+                  "pattern": "^providers/[^/]+/entitlements/[^/]+$"
+                }
+              }
+            },
+            "list": {
+              "scopes": [
+                "https://www.googleapis.com/auth/cloud-platform"
+              ],
+              "parameters": {
+                "parent": {
+                  "location": "path",
+                  "description": "The parent resource name.",
+                  "required": true,
+                  "type": "string",
+                  "pattern": "^providers/[^/]+$"
+                },
+                "filter": {
+                  "type": "string",
+                  "location": "query",
+                  "description": "The filter that can be used to limit the list request.\n\nThe filter is a query string that can match a selected set of attributes\nwith string values. For example `account=E-1234-5678-ABCD-EFGH`,\n`state=pending_cancellation`, and `product!=foo-product`. Supported\nquery attributes are\n\n* `account`\n* `product`\n* `plan`\n* `newPendingPlan` or `new_pending_plan`\n* `state`\n\nNote that the state name match is case-insensitive and query can omit the\nprefix \"ENTITLEMENT_\". For example, `state=active` is equivalent to\n`state=ENTITLEMENT_ACTIVE`.\n\nIf the query contains some special characters other than letters,\nunderscore, or digits, the phrase must be quoted with double quotes. For\nexample, `product=\"providerId:productId\"`, where the product name needs to\nbe quoted because it contains special character colon.\n\nQueries can be combined with `AND`, `OR`, and `NOT` to form more complex\nqueries. They can also be grouped to force a desired evaluation order.\nFor example, `state=active AND (account=E-1234 OR account=5678) AND NOT\n(product=foo-product)`. Connective `AND` can be omitted between two\npredicates. For example `account=E-1234 state=active` is equivalent to\n`account=E-1234 AND state=active`."
+                },
+                "pageToken": {
+                  "location": "query",
+                  "description": "The token for fetching the next page.",
+                  "type": "string"
+                },
+                "pageSize": {
+                  "location": "query",
+                  "description": "The maximum number of entries that are requested.",
+                  "format": "int32",
+                  "type": "integer"
+                }
+              },
+              "flatPath": "v1/providers/{providersId}/entitlements",
+              "path": "v1/{+parent}/entitlements",
+              "id": "cloudcommerceprocurement.providers.entitlements.list",
+              "description": "List Entitlements for which the provider has read access.",
+              "response": {
+                "$ref": "ListEntitlementsResponse"
+              },
+              "parameterOrder": [
+                "parent"
+              ],
+              "httpMethod": "GET"
+            },
+            "suspend": {
+              "httpMethod": "POST",
+              "parameterOrder": [
+                "name"
+              ],
+              "response": {
+                "$ref": "Empty"
+              },
+              "parameters": {
+                "name": {
+                  "description": "The name of the entitlement to suspend.",
+                  "required": true,
+                  "type": "string",
+                  "pattern": "^providers/[^/]+/entitlements/[^/]+$",
+                  "location": "path"
+                }
+              },
+              "scopes": [
+                "https://www.googleapis.com/auth/cloud-platform"
+              ],
+              "flatPath": "v1/providers/{providersId}/entitlements/{entitlementsId}:suspend",
+              "id": "cloudcommerceprocurement.providers.entitlements.suspend",
+              "path": "v1/{+name}:suspend",
+              "description": "Request suspension of an active Entitlement. This is not yet supported.",
+              "request": {
+                "$ref": "SuspendEntitlementRequest"
+              }
+            },
+            "approve": {
+              "httpMethod": "POST",
+              "parameterOrder": [
+                "name"
+              ],
+              "response": {
+                "$ref": "Empty"
+              },
+              "scopes": [
+                "https://www.googleapis.com/auth/cloud-platform"
+              ],
+              "parameters": {
+                "name": {
+                  "location": "path",
+                  "description": "The resource name of the entitlement.\nRequired.",
+                  "required": true,
+                  "type": "string",
+                  "pattern": "^providers/[^/]+/entitlements/[^/]+$"
+                }
+              },
+              "flatPath": "v1/providers/{providersId}/entitlements/{entitlementsId}:approve",
+              "id": "cloudcommerceprocurement.providers.entitlements.approve",
+              "path": "v1/{+name}:approve",
+              "request": {
+                "$ref": "ApproveEntitlementRequest"
+              },
+              "description": "Approve an entitlement that is in the\nEntitlementState.ENTITLEMENT_ACTIVATION_REQUESTED state.\n\nThis method is invoked by the provider to approve the creation of the\nentitlement resource."
+            },
+            "patch": {
+              "scopes": [
+                "https://www.googleapis.com/auth/cloud-platform"
+              ],
+              "parameters": {
+                "name": {
+                  "location": "path",
+                  "description": "The name of the entitlement to update.",
+                  "required": true,
+                  "type": "string",
+                  "pattern": "^providers/[^/]+/entitlements/[^/]+$"
+                },
+                "updateMask": {
+                  "location": "query",
+                  "description": "The update mask that applies to the resource.\nSee the [FieldMask definition]\n(https://developers.google.com/protocol-buffers/docs/reference/google.protobuf#fieldmask)\nfor more details.",
+                  "format": "google-fieldmask",
+                  "type": "string"
+                }
+              },
+              "flatPath": "v1/providers/{providersId}/entitlements/{entitlementsId}",
+              "path": "v1/{+name}",
+              "id": "cloudcommerceprocurement.providers.entitlements.patch",
+              "request": {
+                "$ref": "Entitlement"
+              },
+              "description": "Updates an existing Entitlement.",
+              "response": {
+                "$ref": "Entitlement"
+              },
+              "parameterOrder": [
+                "name"
+              ],
+              "httpMethod": "PATCH"
+            },
+            "get": {
+              "response": {
+                "$ref": "Entitlement"
+              },
+              "parameterOrder": [
+                "name"
+              ],
+              "httpMethod": "GET",
+              "scopes": [
+                "https://www.googleapis.com/auth/cloud-platform"
+              ],
+              "parameters": {
+                "name": {
+                  "description": "The name of the entitlement to retrieve.",
+                  "required": true,
+                  "type": "string",
+                  "pattern": "^providers/[^/]+/entitlements/[^/]+$",
+                  "location": "path"
+                }
+              },
+              "flatPath": "v1/providers/{providersId}/entitlements/{entitlementsId}",
+              "path": "v1/{+name}",
+              "id": "cloudcommerceprocurement.providers.entitlements.get",
+              "description": "Get a requested Entitlement resource."
+            },
+            "reject": {
+              "path": "v1/{+name}:reject",
+              "id": "cloudcommerceprocurement.providers.entitlements.reject",
+              "request": {
+                "$ref": "RejectEntitlementRequest"
+              },
+              "description": "Reject an entitlement that is in the\nEntitlementState.ENTITLEMENT_ACTIVATION_REQUESTED state.\n\nThis method is invoked by the provider to reject the creation of the\nentitlement resource.",
+              "response": {
+                "$ref": "Empty"
+              },
+              "parameterOrder": [
+                "name"
+              ],
+              "httpMethod": "POST",
+              "scopes": [
+                "https://www.googleapis.com/auth/cloud-platform"
+              ],
+              "parameters": {
+                "name": {
+                  "location": "path",
+                  "description": "The resource name of the entitlement.\nRequired.",
+                  "required": true,
+                  "type": "string",
+                  "pattern": "^providers/[^/]+/entitlements/[^/]+$"
+                }
+              },
+              "flatPath": "v1/providers/{providersId}/entitlements/{entitlementsId}:reject"
+            },
+            "approvePlanChange": {
+              "response": {
+                "$ref": "Empty"
+              },
+              "parameterOrder": [
+                "name"
+              ],
+              "httpMethod": "POST",
+              "parameters": {
+                "name": {
+                  "required": true,
+                  "type": "string",
+                  "pattern": "^providers/[^/]+/entitlements/[^/]+$",
+                  "location": "path",
+                  "description": "The resource name of the entitlement.\nRequired."
+                }
+              },
+              "scopes": [
+                "https://www.googleapis.com/auth/cloud-platform"
+              ],
+              "flatPath": "v1/providers/{providersId}/entitlements/{entitlementsId}:approvePlanChange",
+              "path": "v1/{+name}:approvePlanChange",
+              "id": "cloudcommerceprocurement.providers.entitlements.approvePlanChange",
+              "description": "Approve an entitlement plan change that is in the\nEntitlementState.ENTITLEMENT_PENDING_PLAN_CHANGE_APPROVAL state.\n\nThis method is invoked by the provider to approve the plan change on the\nentitlement resource.",
+              "request": {
+                "$ref": "ApproveEntitlementPlanChangeRequest"
+              }
+            }
+          }
+        },
+        "accounts": {
+          "methods": {
+            "approve": {
+              "request": {
+                "$ref": "ApproveAccountRequest"
+              },
+              "description": "Grant an approval on an Account.",
+              "httpMethod": "POST",
+              "parameterOrder": [
+                "name"
+              ],
+              "response": {
+                "$ref": "Empty"
+              },
+              "scopes": [
+                "https://www.googleapis.com/auth/cloud-platform"
+              ],
+              "parameters": {
+                "name": {
+                  "location": "path",
+                  "description": "The resource name of the account.\nRequired.",
+                  "required": true,
+                  "type": "string",
+                  "pattern": "^providers/[^/]+/accounts/[^/]+$"
+                }
+              },
+              "flatPath": "v1/providers/{providersId}/accounts/{accountsId}:approve",
+              "id": "cloudcommerceprocurement.providers.accounts.approve",
+              "path": "v1/{+name}:approve"
+            },
+            "reset": {
+              "parameters": {
+                "name": {
+                  "description": "The resource name of the account.\nRequired.",
+                  "required": true,
+                  "type": "string",
+                  "pattern": "^providers/[^/]+/accounts/[^/]+$",
+                  "location": "path"
+                }
+              },
+              "scopes": [
+                "https://www.googleapis.com/auth/cloud-platform"
+              ],
+              "flatPath": "v1/providers/{providersId}/accounts/{accountsId}:reset",
+              "id": "cloudcommerceprocurement.providers.accounts.reset",
+              "path": "v1/{+name}:reset",
+              "description": "Reset an Account and cancel all associated Entitlements.\nPartner can only reset accounts they own rather than customer accounts.",
+              "request": {
+                "$ref": "ResetAccountRequest"
+              },
+              "httpMethod": "POST",
+              "parameterOrder": [
+                "name"
+              ],
+              "response": {
+                "$ref": "Empty"
+              }
+            },
+            "list": {
+              "response": {
+                "$ref": "ListAccountsResponse"
+              },
+              "parameterOrder": [
+                "parent"
+              ],
+              "httpMethod": "GET",
+              "scopes": [
+                "https://www.googleapis.com/auth/cloud-platform"
+              ],
+              "parameters": {
+                "pageToken": {
+                  "location": "query",
+                  "description": "The token for fetching the next page.",
+                  "type": "string"
+                },
+                "pageSize": {
+                  "type": "integer",
+                  "location": "query",
+                  "description": "The maximum number of entries that are requested. Default size is 200.",
+                  "format": "int32"
+                },
+                "parent": {
+                  "description": "The parent resource name.",
+                  "required": true,
+                  "type": "string",
+                  "pattern": "^providers/[^/]+$",
+                  "location": "path"
+                }
+              },
+              "flatPath": "v1/providers/{providersId}/accounts",
+              "path": "v1/{+parent}/accounts",
+              "id": "cloudcommerceprocurement.providers.accounts.list",
+              "description": "List Accounts that the provider has access to."
+            },
+            "get": {
+              "description": "Get a requested Account resource.",
+              "httpMethod": "GET",
+              "parameterOrder": [
+                "name"
+              ],
+              "response": {
+                "$ref": "Account"
+              },
+              "parameters": {
+                "name": {
+                  "required": true,
+                  "type": "string",
+                  "pattern": "^providers/[^/]+/accounts/[^/]+$",
+                  "location": "path",
+                  "description": "The name of the account to retrieve."
+                }
+              },
+              "scopes": [
+                "https://www.googleapis.com/auth/cloud-platform"
+              ],
+              "flatPath": "v1/providers/{providersId}/accounts/{accountsId}",
+              "id": "cloudcommerceprocurement.providers.accounts.get",
+              "path": "v1/{+name}"
+            },
+            "reject": {
+              "request": {
+                "$ref": "RejectAccountRequest"
+              },
+              "description": "Reject an approval on an Account.",
+              "response": {
+                "$ref": "Empty"
+              },
+              "parameterOrder": [
+                "name"
+              ],
+              "httpMethod": "POST",
+              "scopes": [
+                "https://www.googleapis.com/auth/cloud-platform"
+              ],
+              "parameters": {
+                "name": {
+                  "location": "path",
+                  "description": "The resource name of the account.\nRequired.",
+                  "required": true,
+                  "type": "string",
+                  "pattern": "^providers/[^/]+/accounts/[^/]+$"
+                }
+              },
+              "flatPath": "v1/providers/{providersId}/accounts/{accountsId}:reject",
+              "path": "v1/{+name}:reject",
+              "id": "cloudcommerceprocurement.providers.accounts.reject"
+            }
+          }
+        }
+      }
+    }
+  },
+  "parameters": {
+    "key": {
+      "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.",
+      "type": "string",
+      "location": "query"
+    },
+    "access_token": {
+      "type": "string",
+      "location": "query",
+      "description": "OAuth access token."
+    },
+    "upload_protocol": {
+      "description": "Upload protocol for media (e.g. \"raw\", \"multipart\").",
+      "type": "string",
+      "location": "query"
+    },
+    "prettyPrint": {
+      "type": "boolean",
+      "default": "true",
+      "location": "query",
+      "description": "Returns response with indentations and line breaks."
+    },
+    "quotaUser": {
+      "location": "query",
+      "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.",
+      "type": "string"
+    },
+    "uploadType": {
+      "location": "query",
+      "description": "Legacy upload protocol for media (e.g. \"media\", \"multipart\").",
+      "type": "string"
+    },
+    "fields": {
+      "type": "string",
+      "location": "query",
+      "description": "Selector specifying which fields to include in a partial response."
+    },
+    "$.xgafv": {
+      "enumDescriptions": [
+        "v1 error format",
+        "v2 error format"
+      ],
+      "location": "query",
+      "enum": [
+        "1",
+        "2"
+      ],
+      "description": "V1 error format.",
+      "type": "string"
+    },
+    "oauth_token": {
+      "location": "query",
+      "description": "OAuth 2.0 token for the current user.",
+      "type": "string"
+    },
+    "callback": {
+      "location": "query",
+      "description": "JSONP",
+      "type": "string"
+    },
+    "alt": {
+      "type": "string",
+      "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",
+      "description": "Data format for response.",
+      "default": "json",
+      "enum": [
+        "json",
+        "media",
+        "proto"
+      ]
+    }
+  },
+  "version": "v1",
+  "baseUrl": "https://cloudcommerceprocurement.googleapis.com/",
+  "servicePath": "",
+  "kind": "discovery#restDescription",
+  "description": "Partner API for the Cloud Commerce Procurement Service.",
+  "basePath": "",
+  "id": "cloudcommerceprocurement:v1",
+  "documentationLink": "https://cloud.google.com/marketplace/docs/partners/",
+  "revision": "20191018",
+  "discoveryVersion": "v1"
+}
diff --git a/cloudcommerceprocurement/v1/cloudcommerceprocurement-gen.go b/cloudcommerceprocurement/v1/cloudcommerceprocurement-gen.go
new file mode 100644
index 0000000..03a4822
--- /dev/null
+++ b/cloudcommerceprocurement/v1/cloudcommerceprocurement-gen.go
@@ -0,0 +1,2863 @@
+// Copyright 2019 Google LLC.
+// Use of this source code is governed by a BSD-style
+// license that can be found in the LICENSE file.
+
+// Code generated file. DO NOT EDIT.
+
+// Package cloudcommerceprocurement provides access to the Cloud Commerce Partner Procurement API.
+//
+// For product documentation, see: https://cloud.google.com/marketplace/docs/partners/
+//
+// Creating a client
+//
+// Usage example:
+//
+//   import "google.golang.org/api/cloudcommerceprocurement/v1"
+//   ...
+//   ctx := context.Background()
+//   cloudcommerceprocurementService, err := cloudcommerceprocurement.NewService(ctx)
+//
+// In this example, Google Application Default Credentials are used for authentication.
+//
+// For information on how to create and obtain Application Default Credentials, see https://developers.google.com/identity/protocols/application-default-credentials.
+//
+// Other authentication options
+//
+// To use an API key for authentication (note: some APIs do not support API keys), use option.WithAPIKey:
+//
+//   cloudcommerceprocurementService, err := cloudcommerceprocurement.NewService(ctx, option.WithAPIKey("AIza..."))
+//
+// To use an OAuth token (e.g., a user token obtained via a three-legged OAuth flow), use option.WithTokenSource:
+//
+//   config := &oauth2.Config{...}
+//   // ...
+//   token, err := config.Exchange(ctx, ...)
+//   cloudcommerceprocurementService, err := cloudcommerceprocurement.NewService(ctx, option.WithTokenSource(config.TokenSource(ctx, token)))
+//
+// See https://godoc.org/google.golang.org/api/option/ for details on options.
+package cloudcommerceprocurement // import "google.golang.org/api/cloudcommerceprocurement/v1"
+
+import (
+	"bytes"
+	"context"
+	"encoding/json"
+	"errors"
+	"fmt"
+	"io"
+	"net/http"
+	"net/url"
+	"strconv"
+	"strings"
+
+	googleapi "google.golang.org/api/googleapi"
+	gensupport "google.golang.org/api/internal/gensupport"
+	option "google.golang.org/api/option"
+	htransport "google.golang.org/api/transport/http"
+)
+
+// Always reference these packages, just in case the auto-generated code
+// below doesn't.
+var _ = bytes.NewBuffer
+var _ = strconv.Itoa
+var _ = fmt.Sprintf
+var _ = json.NewDecoder
+var _ = io.Copy
+var _ = url.Parse
+var _ = gensupport.MarshalJSON
+var _ = googleapi.Version
+var _ = errors.New
+var _ = strings.Replace
+var _ = context.Canceled
+
+const apiId = "cloudcommerceprocurement:v1"
+const apiName = "cloudcommerceprocurement"
+const apiVersion = "v1"
+const basePath = "https://cloudcommerceprocurement.googleapis.com/"
+
+// OAuth2 scopes used by this API.
+const (
+	// View and manage your data across Google Cloud Platform services
+	CloudPlatformScope = "https://www.googleapis.com/auth/cloud-platform"
+)
+
+// NewService creates a new Service.
+func NewService(ctx context.Context, opts ...option.ClientOption) (*Service, error) {
+	scopesOption := option.WithScopes(
+		"https://www.googleapis.com/auth/cloud-platform",
+	)
+	// NOTE: prepend, so we don't override user-specified scopes.
+	opts = append([]option.ClientOption{scopesOption}, opts...)
+	client, endpoint, err := htransport.NewClient(ctx, opts...)
+	if err != nil {
+		return nil, err
+	}
+	s, err := New(client)
+	if err != nil {
+		return nil, err
+	}
+	if endpoint != "" {
+		s.BasePath = endpoint
+	}
+	return s, nil
+}
+
+// New creates a new Service. It uses the provided http.Client for requests.
+//
+// Deprecated: please use NewService instead.
+// To provide a custom HTTP client, use option.WithHTTPClient.
+// If you are using google.golang.org/api/googleapis/transport.APIKey, use option.WithAPIKey with NewService instead.
+func New(client *http.Client) (*Service, error) {
+	if client == nil {
+		return nil, errors.New("client is nil")
+	}
+	s := &Service{client: client, BasePath: basePath}
+	s.Providers = NewProvidersService(s)
+	return s, nil
+}
+
+type Service struct {
+	client    *http.Client
+	BasePath  string // API endpoint base URL
+	UserAgent string // optional additional User-Agent fragment
+
+	Providers *ProvidersService
+}
+
+func (s *Service) userAgent() string {
+	if s.UserAgent == "" {
+		return googleapi.UserAgent
+	}
+	return googleapi.UserAgent + " " + s.UserAgent
+}
+
+func NewProvidersService(s *Service) *ProvidersService {
+	rs := &ProvidersService{s: s}
+	rs.Accounts = NewProvidersAccountsService(s)
+	rs.Entitlements = NewProvidersEntitlementsService(s)
+	return rs
+}
+
+type ProvidersService struct {
+	s *Service
+
+	Accounts *ProvidersAccountsService
+
+	Entitlements *ProvidersEntitlementsService
+}
+
+func NewProvidersAccountsService(s *Service) *ProvidersAccountsService {
+	rs := &ProvidersAccountsService{s: s}
+	return rs
+}
+
+type ProvidersAccountsService struct {
+	s *Service
+}
+
+func NewProvidersEntitlementsService(s *Service) *ProvidersEntitlementsService {
+	rs := &ProvidersEntitlementsService{s: s}
+	return rs
+}
+
+type ProvidersEntitlementsService struct {
+	s *Service
+}
+
+// Account: Represents an account that was established by the customer
+// on the service
+// provider's system.
+type Account struct {
+	// Approvals: Output only. The approvals for this account. These
+	// approvals are used to track actions
+	// that are permitted or have been completed by a customer within the
+	// context
+	// of the provider. This might include a sign up flow or a provisioning
+	// step,
+	// for example, that the provider can admit to having happened.
+	Approvals []*Approval `json:"approvals,omitempty"`
+
+	// CreateTime: Output only. The creation timestamp.
+	CreateTime string `json:"createTime,omitempty"`
+
+	// InputProperties: Output only. The custom properties that were
+	// collected from the user to create this
+	// account.
+	InputProperties googleapi.RawMessage `json:"inputProperties,omitempty"`
+
+	// Name: Output only. The resource name of the account.
+	// Account names have the form `accounts/{account_id}`.
+	Name string `json:"name,omitempty"`
+
+	// Provider: Output only. The identifier of the service provider that
+	// this account was created
+	// against. Each service provider is assigned a unique provider value
+	// when
+	// they onboard with Cloud Commerce platform.
+	Provider string `json:"provider,omitempty"`
+
+	// State: Output only. The state of the account. This is used to decide
+	// whether the customer is in
+	// good standing with the provider and is able to make purchases. An
+	// account
+	// might not be able to make a purchase if the billing account is
+	// suspended,
+	// for example.
+	//
+	// Possible values:
+	//   "ACCOUNT_STATE_UNSPECIFIED" - Sentinel value, do not use.
+	//   "ACCOUNT_ACTIVATION_REQUESTED" - The customer has requested the
+	// creation of the account resource, and
+	// the provider notification message is dispatched.
+	//
+	// This state has been deprecated, as accounts now immediately
+	// transition to
+	// AccountState.ACCOUNT_ACTIVE.
+	//   "ACCOUNT_ACTIVE" - The account is active and ready for use.
+	//
+	// The next possible states are:
+	// - Account getting deleted: After the user invokes delete from another
+	// API.
+	State string `json:"state,omitempty"`
+
+	// UpdateTime: Output only. The last update timestamp.
+	UpdateTime string `json:"updateTime,omitempty"`
+
+	// ServerResponse contains the HTTP response code and headers from the
+	// server.
+	googleapi.ServerResponse `json:"-"`
+
+	// ForceSendFields is a list of field names (e.g. "Approvals") to
+	// unconditionally include in API requests. By default, fields with
+	// empty values are omitted from API requests. However, any non-pointer,
+	// non-interface field appearing in ForceSendFields will be sent to the
+	// server regardless of whether the field is empty or not. This may be
+	// used to include empty fields in Patch requests.
+	ForceSendFields []string `json:"-"`
+
+	// NullFields is a list of field names (e.g. "Approvals") to include in
+	// API requests with the JSON null value. By default, fields with empty
+	// values are omitted from API requests. However, any field with an
+	// empty value appearing in NullFields will be sent to the server as
+	// null. It is an error if a field in this list has a non-empty value.
+	// This may be used to include null fields in Patch requests.
+	NullFields []string `json:"-"`
+}
+
+func (s *Account) MarshalJSON() ([]byte, error) {
+	type NoMethod Account
+	raw := NoMethod(*s)
+	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
+}
+
+// Approval: An approval for some action on an account.
+type Approval struct {
+	// Name: Output only. The name of the approval.
+	Name string `json:"name,omitempty"`
+
+	// Reason: Output only. An explanation for the state of the approval.
+	Reason string `json:"reason,omitempty"`
+
+	// State: Output only. The state of the approval.
+	//
+	// Possible values:
+	//   "STATE_UNSPECIFIED" - Sentinel value; do not use.
+	//   "PENDING" - The approval is pending response from the
+	// provider.
+	//
+	// The approval state can transition to
+	// Account.Approval.State.APPROVED or
+	// Account.Approval.State.REJECTED.
+	//   "APPROVED" - The approval has been granted by the provider.
+	//   "REJECTED" - The approval has been rejected by the provider.
+	//
+	// A provider may choose to approve a previously rejected approval,
+	// so
+	// is it possible to transition to Account.Approval.State.APPROVED.
+	State string `json:"state,omitempty"`
+
+	// UpdateTime: Optional. The last update timestamp of the approval.
+	UpdateTime string `json:"updateTime,omitempty"`
+
+	// ForceSendFields is a list of field names (e.g. "Name") to
+	// unconditionally include in API requests. By default, fields with
+	// empty values are omitted from API requests. However, any non-pointer,
+	// non-interface field appearing in ForceSendFields will be sent to the
+	// server regardless of whether the field is empty or not. This may be
+	// used to include empty fields in Patch requests.
+	ForceSendFields []string `json:"-"`
+
+	// NullFields is a list of field names (e.g. "Name") to include in API
+	// requests with the JSON null value. By default, fields with empty
+	// values are omitted from API requests. However, any field with an
+	// empty value appearing in NullFields will be sent to the server as
+	// null. It is an error if a field in this list has a non-empty value.
+	// This may be used to include null fields in Patch requests.
+	NullFields []string `json:"-"`
+}
+
+func (s *Approval) MarshalJSON() ([]byte, error) {
+	type NoMethod Approval
+	raw := NoMethod(*s)
+	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
+}
+
+// ApproveAccountRequest: Request message for
+// PartnerProcurementService.ApproveAccount.
+type ApproveAccountRequest struct {
+	// ApprovalName: The name of the approval being approved. If absent and
+	// there is only one
+	// approval possible, that approval will be granted. If absent and there
+	// are
+	// many approvals possible, the request will fail with a 400 Bad
+	// Request.
+	// Optional.
+	ApprovalName string `json:"approvalName,omitempty"`
+
+	// Properties: Set of properties that should be associated with the
+	// account.
+	// Optional.
+	Properties map[string]string `json:"properties,omitempty"`
+
+	// Reason: Free form text string explaining the approval
+	// reason.
+	// Optional.
+	//
+	// Max allowed length: 256 bytes. Longer strings will be truncated.
+	Reason string `json:"reason,omitempty"`
+
+	// ForceSendFields is a list of field names (e.g. "ApprovalName") to
+	// unconditionally include in API requests. By default, fields with
+	// empty values are omitted from API requests. However, any non-pointer,
+	// non-interface field appearing in ForceSendFields will be sent to the
+	// server regardless of whether the field is empty or not. This may be
+	// used to include empty fields in Patch requests.
+	ForceSendFields []string `json:"-"`
+
+	// NullFields is a list of field names (e.g. "ApprovalName") to include
+	// in API requests with the JSON null value. By default, fields with
+	// empty values are omitted from API requests. However, any field with
+	// an empty value appearing in NullFields will be sent to the server as
+	// null. It is an error if a field in this list has a non-empty value.
+	// This may be used to include null fields in Patch requests.
+	NullFields []string `json:"-"`
+}
+
+func (s *ApproveAccountRequest) MarshalJSON() ([]byte, error) {
+	type NoMethod ApproveAccountRequest
+	raw := NoMethod(*s)
+	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
+}
+
+// ApproveEntitlementPlanChangeRequest: Request message
+// for
+// [PartnerProcurementService.ApproveEntitlementPlanChange[].
+type ApproveEntitlementPlanChangeRequest struct {
+	// PendingPlanName: Name of the pending plan that is being
+	// approved.
+	// Required.
+	PendingPlanName string `json:"pendingPlanName,omitempty"`
+
+	// ForceSendFields is a list of field names (e.g. "PendingPlanName") to
+	// unconditionally include in API requests. By default, fields with
+	// empty values are omitted from API requests. However, any non-pointer,
+	// non-interface field appearing in ForceSendFields will be sent to the
+	// server regardless of whether the field is empty or not. This may be
+	// used to include empty fields in Patch requests.
+	ForceSendFields []string `json:"-"`
+
+	// NullFields is a list of field names (e.g. "PendingPlanName") to
+	// include in API requests with the JSON null value. By default, fields
+	// with empty values are omitted from API requests. However, any field
+	// with an empty value appearing in NullFields will be sent to the
+	// server as null. It is an error if a field in this list has a
+	// non-empty value. This may be used to include null fields in Patch
+	// requests.
+	NullFields []string `json:"-"`
+}
+
+func (s *ApproveEntitlementPlanChangeRequest) MarshalJSON() ([]byte, error) {
+	type NoMethod ApproveEntitlementPlanChangeRequest
+	raw := NoMethod(*s)
+	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
+}
+
+// ApproveEntitlementRequest: Request message for
+// [PartnerProcurementService.ApproveEntitlement[].
+type ApproveEntitlementRequest struct {
+	// Properties: Set of properties that should be associated with the
+	// entitlement.
+	// Optional.
+	Properties map[string]string `json:"properties,omitempty"`
+
+	// ForceSendFields is a list of field names (e.g. "Properties") to
+	// unconditionally include in API requests. By default, fields with
+	// empty values are omitted from API requests. However, any non-pointer,
+	// non-interface field appearing in ForceSendFields will be sent to the
+	// server regardless of whether the field is empty or not. This may be
+	// used to include empty fields in Patch requests.
+	ForceSendFields []string `json:"-"`
+
+	// NullFields is a list of field names (e.g. "Properties") to include in
+	// API requests with the JSON null value. By default, fields with empty
+	// values are omitted from API requests. However, any field with an
+	// empty value appearing in NullFields will be sent to the server as
+	// null. It is an error if a field in this list has a non-empty value.
+	// This may be used to include null fields in Patch requests.
+	NullFields []string `json:"-"`
+}
+
+func (s *ApproveEntitlementRequest) MarshalJSON() ([]byte, error) {
+	type NoMethod ApproveEntitlementRequest
+	raw := NoMethod(*s)
+	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
+}
+
+// Empty: 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);
+//     }
+//
+// The JSON representation for `Empty` is empty JSON object `{}`.
+type Empty struct {
+	// ServerResponse contains the HTTP response code and headers from the
+	// server.
+	googleapi.ServerResponse `json:"-"`
+}
+
+// Entitlement: Represents a procured product of a customer.
+type Entitlement struct {
+	// Account: Output only. The resource name of the account that this
+	// entitlement is based on, if any.
+	Account string `json:"account,omitempty"`
+
+	// CreateTime: Output only. The creation timestamp.
+	CreateTime string `json:"createTime,omitempty"`
+
+	// InputProperties: Output only. The custom properties that were
+	// collected from the user to create this
+	// entitlement.
+	InputProperties googleapi.RawMessage `json:"inputProperties,omitempty"`
+
+	// MessageToUser: Provider-supplied message that is displayed to the end
+	// user. Currently this
+	// is used to communicate progress and ETA for provisioning.
+	// This field can be updated only when a user is waiting for an action
+	// from
+	// the provider, i.e. entitlement state
+	// is
+	// EntitlementState.ENTITLEMENT_ACTIVATION_REQUESTED
+	// or
+	// EntitlementState.ENTITLEMENT_PENDING_PLAN_CHANGE_APPROVAL.
+	//
+	// This field is cleared automatically when the enitlement state
+	// changes.
+	MessageToUser string `json:"messageToUser,omitempty"`
+
+	// Name: Output only. The resource name of the entitlement.
+	// Entitlement names have the form `entitlements/{entitlement_id}`.
+	Name string `json:"name,omitempty"`
+
+	// NewPendingPlan: Output only. The identifier of the pending new
+	// plan.
+	// Required if the product has plans and the entitlement has a pending
+	// plan
+	// change.
+	NewPendingPlan string `json:"newPendingPlan,omitempty"`
+
+	// Plan: Output only. The identifier of the plan that was
+	// procured.
+	// Required if the product has plans.
+	Plan string `json:"plan,omitempty"`
+
+	// Product: Output only. The identifier of the product that was
+	// procured.
+	Product string `json:"product,omitempty"`
+
+	// Provider: Output only. The identifier of the service provider that
+	// this entitlement was created
+	// against. Each service provider is assigned a unique provider value
+	// when
+	// they onboard with Cloud Commerce platform.
+	Provider string `json:"provider,omitempty"`
+
+	// State: Output only. The state of the entitlement.
+	//
+	// Possible values:
+	//   "ENTITLEMENT_STATE_UNSPECIFIED" - Sentinel value. Do not use.
+	//   "ENTITLEMENT_ACTIVATION_REQUESTED" - Indicates that the entitlement
+	// is being created and the backend has sent
+	// a notification to the provider for the activation approval.
+	//
+	// If the provider approves, then the entitlement will transition to
+	// the EntitlementState.ENTITLEMENT_ACTIVE state.
+	// Otherwise, the entitlement will be removed.
+	// Plan changes are not allowed in this state. Instead the entitlement
+	// is
+	// cancelled and re-created with a new plan name.
+	//   "ENTITLEMENT_ACTIVE" - Indicates that the entitlement is active.
+	// The procured item is now usable
+	// and any associated billing events will start occurring.
+	//
+	// In this state, the customer can decide to cancel the entitlement,
+	// which
+	// would change the state
+	// to
+	// EntitlementState.ENTITLEMENT_PENDING_CANCELLATION, and
+	// then
+	// EntitlementState.ENTITLEMENT_CANCELLED.
+	//
+	// The user can also request a change of plan, which will transition
+	// the
+	// state to EntitlementState.ENTITLEMENT_PENDING_PLAN_CHANGE, and
+	// then back to EntitlementState.ENTITLEMENT_ACTIVE.
+	//   "ENTITLEMENT_PENDING_CANCELLATION" - Indicates that the entitlement
+	// was cancelled by the customer.
+	// The entitlement typically stays in this state if the
+	// entitlement/plan
+	// allows use of the underlying resource until the end of the current
+	// billing
+	// cycle. Once the billing cycle completes, the resource will transition
+	// to
+	// EntitlementState.ENTITLEMENT_CANCELLED state.
+	//
+	// The resource cannot be modified during this state.
+	//   "ENTITLEMENT_CANCELLED" - Indicates that the entitlement was
+	// cancelled. The entitlement can now
+	// be deleted.
+	//   "ENTITLEMENT_PENDING_PLAN_CHANGE" - Indicates that the entitlement
+	// is currently active, but there is a pending
+	// plan change that is requested by the customer. The entitlement
+	// typically
+	// stays in this state, if the entitlement/plan requires the completion
+	// of the
+	// current billing cycle before the plan can be changed. Once the
+	// billing
+	// cycle completes, the resource will transition
+	// to
+	// EntitlementState.ENTITLEMENT_ACTIVE, with its plan changed.
+	//   "ENTITLEMENT_PENDING_PLAN_CHANGE_APPROVAL" - Indicates that the
+	// entitlement is currently active, but there is a plan
+	// change request pending provider approval. If the provider approves
+	// the plan
+	// change, then the entitlement will transition either
+	// to
+	// EntitlementState.ENTITLEMENT_ACTIVE
+	// or
+	// EntitlementState.ENTITLEMENT_PENDING_PLAN_CHANGE depending on
+	// whether
+	// current plan requires that the billing cycle completes.
+	//
+	// If the provider rejects the plan change, then the pending plan
+	// change
+	// request is removed and the entitlement stays
+	// in
+	// EntitlementState.ENTITLEMENT_ACTIVE state with the old plan.
+	//   "ENTITLEMENT_SUSPENDED" - Indicates that the entitlement is
+	// suspended either by Google or provider
+	// request.
+	//
+	// This can be triggered for various external reasons (e.g. expiration
+	// of
+	// credit card on the billing account, violation of terms-of-service of
+	// the
+	// provider etc.). As such, any remediating action needs
+	// to be taken externally, before the entitlement can be
+	// activated.
+	//
+	// This is not yet supported.
+	State string `json:"state,omitempty"`
+
+	// UpdateTime: Output only. The last update timestamp.
+	UpdateTime string `json:"updateTime,omitempty"`
+
+	// UsageReportingId: Output only. The consumerId to use when reporting
+	// usage through the Service Control API.
+	// See the consumerId field
+	// at
+	// [Reporting
+	// Metrics](https://cloud.google.com/service-control/report
+	// ing-metrics) for
+	// more details.
+	//
+	// This field is present only if the product has usage-based
+	// billing
+	// configured.
+	UsageReportingId string `json:"usageReportingId,omitempty"`
+
+	// ServerResponse contains the HTTP response code and headers from the
+	// server.
+	googleapi.ServerResponse `json:"-"`
+
+	// ForceSendFields is a list of field names (e.g. "Account") to
+	// unconditionally include in API requests. By default, fields with
+	// empty values are omitted from API requests. However, any non-pointer,
+	// non-interface field appearing in ForceSendFields will be sent to the
+	// server regardless of whether the field is empty or not. This may be
+	// used to include empty fields in Patch requests.
+	ForceSendFields []string `json:"-"`
+
+	// NullFields is a list of field names (e.g. "Account") to include in
+	// API requests with the JSON null value. By default, fields with empty
+	// values are omitted from API requests. However, any field with an
+	// empty value appearing in NullFields will be sent to the server as
+	// null. It is an error if a field in this list has a non-empty value.
+	// This may be used to include null fields in Patch requests.
+	NullFields []string `json:"-"`
+}
+
+func (s *Entitlement) MarshalJSON() ([]byte, error) {
+	type NoMethod Entitlement
+	raw := NoMethod(*s)
+	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
+}
+
+// ListAccountsResponse: Response message for
+// [PartnerProcurementService.ListAccounts[].
+type ListAccountsResponse struct {
+	// Accounts: The list of accounts in this response.
+	Accounts []*Account `json:"accounts,omitempty"`
+
+	// NextPageToken: The token for fetching the next page.
+	NextPageToken string `json:"nextPageToken,omitempty"`
+
+	// ServerResponse contains the HTTP response code and headers from the
+	// server.
+	googleapi.ServerResponse `json:"-"`
+
+	// ForceSendFields is a list of field names (e.g. "Accounts") to
+	// unconditionally include in API requests. By default, fields with
+	// empty values are omitted from API requests. However, any non-pointer,
+	// non-interface field appearing in ForceSendFields will be sent to the
+	// server regardless of whether the field is empty or not. This may be
+	// used to include empty fields in Patch requests.
+	ForceSendFields []string `json:"-"`
+
+	// NullFields is a list of field names (e.g. "Accounts") to include in
+	// API requests with the JSON null value. By default, fields with empty
+	// values are omitted from API requests. However, any field with an
+	// empty value appearing in NullFields will be sent to the server as
+	// null. It is an error if a field in this list has a non-empty value.
+	// This may be used to include null fields in Patch requests.
+	NullFields []string `json:"-"`
+}
+
+func (s *ListAccountsResponse) MarshalJSON() ([]byte, error) {
+	type NoMethod ListAccountsResponse
+	raw := NoMethod(*s)
+	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
+}
+
+// ListEntitlementsResponse: Response message for
+// PartnerProcurementService.ListEntitlements.
+type ListEntitlementsResponse struct {
+	// Entitlements: The list of entitlements in this response.
+	Entitlements []*Entitlement `json:"entitlements,omitempty"`
+
+	// NextPageToken: The token for fetching the next page.
+	NextPageToken string `json:"nextPageToken,omitempty"`
+
+	// ServerResponse contains the HTTP response code and headers from the
+	// server.
+	googleapi.ServerResponse `json:"-"`
+
+	// ForceSendFields is a list of field names (e.g. "Entitlements") to
+	// unconditionally include in API requests. By default, fields with
+	// empty values are omitted from API requests. However, any non-pointer,
+	// non-interface field appearing in ForceSendFields will be sent to the
+	// server regardless of whether the field is empty or not. This may be
+	// used to include empty fields in Patch requests.
+	ForceSendFields []string `json:"-"`
+
+	// NullFields is a list of field names (e.g. "Entitlements") to include
+	// in API requests with the JSON null value. By default, fields with
+	// empty values are omitted from API requests. However, any field with
+	// an empty value appearing in NullFields will be sent to the server as
+	// null. It is an error if a field in this list has a non-empty value.
+	// This may be used to include null fields in Patch requests.
+	NullFields []string `json:"-"`
+}
+
+func (s *ListEntitlementsResponse) MarshalJSON() ([]byte, error) {
+	type NoMethod ListEntitlementsResponse
+	raw := NoMethod(*s)
+	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
+}
+
+// RejectAccountRequest: Request message for
+// PartnerProcurementService.RejectAccount.
+type RejectAccountRequest struct {
+	// ApprovalName: The name of the approval being rejected. If absent and
+	// there is only one
+	// approval possible, that approval will be rejected. If absent and
+	// there are
+	// many approvals possible, the request will fail with a 400 Bad
+	// Request.
+	// Optional.
+	ApprovalName string `json:"approvalName,omitempty"`
+
+	// Reason: Free form text string explaining the rejection reason.
+	//
+	// Max allowed length: 256 bytes. Longer strings will be truncated.
+	Reason string `json:"reason,omitempty"`
+
+	// ForceSendFields is a list of field names (e.g. "ApprovalName") to
+	// unconditionally include in API requests. By default, fields with
+	// empty values are omitted from API requests. However, any non-pointer,
+	// non-interface field appearing in ForceSendFields will be sent to the
+	// server regardless of whether the field is empty or not. This may be
+	// used to include empty fields in Patch requests.
+	ForceSendFields []string `json:"-"`
+
+	// NullFields is a list of field names (e.g. "ApprovalName") to include
+	// in API requests with the JSON null value. By default, fields with
+	// empty values are omitted from API requests. However, any field with
+	// an empty value appearing in NullFields will be sent to the server as
+	// null. It is an error if a field in this list has a non-empty value.
+	// This may be used to include null fields in Patch requests.
+	NullFields []string `json:"-"`
+}
+
+func (s *RejectAccountRequest) MarshalJSON() ([]byte, error) {
+	type NoMethod RejectAccountRequest
+	raw := NoMethod(*s)
+	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
+}
+
+// RejectEntitlementPlanChangeRequest: Request message
+// for
+// PartnerProcurementService.RejectEntitlementPlanChange.
+type RejectEntitlementPlanChangeRequest struct {
+	// PendingPlanName: Name of the pending plan that is being
+	// rejected.
+	// Required.
+	PendingPlanName string `json:"pendingPlanName,omitempty"`
+
+	// Reason: Free form text string explaining the rejection reason.
+	//
+	// Max allowed length: 256 bytes. Longer strings will be truncated.
+	Reason string `json:"reason,omitempty"`
+
+	// ForceSendFields is a list of field names (e.g. "PendingPlanName") to
+	// unconditionally include in API requests. By default, fields with
+	// empty values are omitted from API requests. However, any non-pointer,
+	// non-interface field appearing in ForceSendFields will be sent to the
+	// server regardless of whether the field is empty or not. This may be
+	// used to include empty fields in Patch requests.
+	ForceSendFields []string `json:"-"`
+
+	// NullFields is a list of field names (e.g. "PendingPlanName") to
+	// include in API requests with the JSON null value. By default, fields
+	// with empty values are omitted from API requests. However, any field
+	// with an empty value appearing in NullFields will be sent to the
+	// server as null. It is an error if a field in this list has a
+	// non-empty value. This may be used to include null fields in Patch
+	// requests.
+	NullFields []string `json:"-"`
+}
+
+func (s *RejectEntitlementPlanChangeRequest) MarshalJSON() ([]byte, error) {
+	type NoMethod RejectEntitlementPlanChangeRequest
+	raw := NoMethod(*s)
+	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
+}
+
+// RejectEntitlementRequest: Request message for
+// PartnerProcurementService.RejectEntitlement.
+type RejectEntitlementRequest struct {
+	// Reason: Free form text string explaining the rejection reason.
+	//
+	// Max allowed length: 256 bytes. Longer strings will be truncated.
+	Reason string `json:"reason,omitempty"`
+
+	// ForceSendFields is a list of field names (e.g. "Reason") to
+	// unconditionally include in API requests. By default, fields with
+	// empty values are omitted from API requests. However, any non-pointer,
+	// non-interface field appearing in ForceSendFields will be sent to the
+	// server regardless of whether the field is empty or not. This may be
+	// used to include empty fields in Patch requests.
+	ForceSendFields []string `json:"-"`
+
+	// NullFields is a list of field names (e.g. "Reason") to include in API
+	// requests with the JSON null value. By default, fields with empty
+	// values are omitted from API requests. However, any field with an
+	// empty value appearing in NullFields will be sent to the server as
+	// null. It is an error if a field in this list has a non-empty value.
+	// This may be used to include null fields in Patch requests.
+	NullFields []string `json:"-"`
+}
+
+func (s *RejectEntitlementRequest) MarshalJSON() ([]byte, error) {
+	type NoMethod RejectEntitlementRequest
+	raw := NoMethod(*s)
+	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
+}
+
+// ResetAccountRequest: Request message for for
+// PartnerProcurementService.ResetAccount.
+type ResetAccountRequest struct {
+}
+
+// SuspendEntitlementRequest: Request message for
+// ParterProcurementService.SuspendEntitlement. This is
+// not yet supported.
+type SuspendEntitlementRequest struct {
+	// Reason: A free-form reason string, explaining the reason for
+	// suspension request.
+	Reason string `json:"reason,omitempty"`
+
+	// ForceSendFields is a list of field names (e.g. "Reason") to
+	// unconditionally include in API requests. By default, fields with
+	// empty values are omitted from API requests. However, any non-pointer,
+	// non-interface field appearing in ForceSendFields will be sent to the
+	// server regardless of whether the field is empty or not. This may be
+	// used to include empty fields in Patch requests.
+	ForceSendFields []string `json:"-"`
+
+	// NullFields is a list of field names (e.g. "Reason") to include in API
+	// requests with the JSON null value. By default, fields with empty
+	// values are omitted from API requests. However, any field with an
+	// empty value appearing in NullFields will be sent to the server as
+	// null. It is an error if a field in this list has a non-empty value.
+	// This may be used to include null fields in Patch requests.
+	NullFields []string `json:"-"`
+}
+
+func (s *SuspendEntitlementRequest) MarshalJSON() ([]byte, error) {
+	type NoMethod SuspendEntitlementRequest
+	raw := NoMethod(*s)
+	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
+}
+
+// method id "cloudcommerceprocurement.providers.accounts.approve":
+
+type ProvidersAccountsApproveCall struct {
+	s                     *Service
+	name                  string
+	approveaccountrequest *ApproveAccountRequest
+	urlParams_            gensupport.URLParams
+	ctx_                  context.Context
+	header_               http.Header
+}
+
+// Approve: Grant an approval on an Account.
+func (r *ProvidersAccountsService) Approve(name string, approveaccountrequest *ApproveAccountRequest) *ProvidersAccountsApproveCall {
+	c := &ProvidersAccountsApproveCall{s: r.s, urlParams_: make(gensupport.URLParams)}
+	c.name = name
+	c.approveaccountrequest = approveaccountrequest
+	return c
+}
+
+// Fields allows partial responses to be retrieved. See
+// https://developers.google.com/gdata/docs/2.0/basics#PartialResponse
+// for more information.
+func (c *ProvidersAccountsApproveCall) Fields(s ...googleapi.Field) *ProvidersAccountsApproveCall {
+	c.urlParams_.Set("fields", googleapi.CombineFields(s))
+	return c
+}
+
+// Context sets the context to be used in this call's Do method. Any
+// pending HTTP request will be aborted if the provided context is
+// canceled.
+func (c *ProvidersAccountsApproveCall) Context(ctx context.Context) *ProvidersAccountsApproveCall {
+	c.ctx_ = ctx
+	return c
+}
+
+// Header returns an http.Header that can be modified by the caller to
+// add HTTP headers to the request.
+func (c *ProvidersAccountsApproveCall) Header() http.Header {
+	if c.header_ == nil {
+		c.header_ = make(http.Header)
+	}
+	return c.header_
+}
+
+func (c *ProvidersAccountsApproveCall) doRequest(alt string) (*http.Response, error) {
+	reqHeaders := make(http.Header)
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.13.1 gdcl/20191026")
+	for k, v := range c.header_ {
+		reqHeaders[k] = v
+	}
+	reqHeaders.Set("User-Agent", c.s.userAgent())
+	var body io.Reader = nil
+	body, err := googleapi.WithoutDataWrapper.JSONReader(c.approveaccountrequest)
+	if err != nil {
+		return nil, err
+	}
+	reqHeaders.Set("Content-Type", "application/json")
+	c.urlParams_.Set("alt", alt)
+	c.urlParams_.Set("prettyPrint", "false")
+	urls := googleapi.ResolveRelative(c.s.BasePath, "v1/{+name}:approve")
+	urls += "?" + c.urlParams_.Encode()
+	req, err := http.NewRequest("POST", urls, body)
+	if err != nil {
+		return nil, err
+	}
+	req.Header = reqHeaders
+	googleapi.Expand(req.URL, map[string]string{
+		"name": c.name,
+	})
+	return gensupport.SendRequest(c.ctx_, c.s.client, req)
+}
+
+// Do executes the "cloudcommerceprocurement.providers.accounts.approve" call.
+// Exactly one of *Empty or error will be non-nil. Any non-2xx status
+// code is an error. Response headers are in either
+// *Empty.ServerResponse.Header or (if a response was returned at all)
+// in error.(*googleapi.Error).Header. Use googleapi.IsNotModified to
+// check whether the returned error was because http.StatusNotModified
+// was returned.
+func (c *ProvidersAccountsApproveCall) Do(opts ...googleapi.CallOption) (*Empty, error) {
+	gensupport.SetOptions(c.urlParams_, opts...)
+	res, err := c.doRequest("json")
+	if res != nil && res.StatusCode == http.StatusNotModified {
+		if res.Body != nil {
+			res.Body.Close()
+		}
+		return nil, &googleapi.Error{
+			Code:   res.StatusCode,
+			Header: res.Header,
+		}
+	}
+	if err != nil {
+		return nil, err
+	}
+	defer googleapi.CloseBody(res)
+	if err := googleapi.CheckResponse(res); err != nil {
+		return nil, err
+	}
+	ret := &Empty{
+		ServerResponse: googleapi.ServerResponse{
+			Header:         res.Header,
+			HTTPStatusCode: res.StatusCode,
+		},
+	}
+	target := &ret
+	if err := gensupport.DecodeResponse(target, res); err != nil {
+		return nil, err
+	}
+	return ret, nil
+	// {
+	//   "description": "Grant an approval on an Account.",
+	//   "flatPath": "v1/providers/{providersId}/accounts/{accountsId}:approve",
+	//   "httpMethod": "POST",
+	//   "id": "cloudcommerceprocurement.providers.accounts.approve",
+	//   "parameterOrder": [
+	//     "name"
+	//   ],
+	//   "parameters": {
+	//     "name": {
+	//       "description": "The resource name of the account.\nRequired.",
+	//       "location": "path",
+	//       "pattern": "^providers/[^/]+/accounts/[^/]+$",
+	//       "required": true,
+	//       "type": "string"
+	//     }
+	//   },
+	//   "path": "v1/{+name}:approve",
+	//   "request": {
+	//     "$ref": "ApproveAccountRequest"
+	//   },
+	//   "response": {
+	//     "$ref": "Empty"
+	//   },
+	//   "scopes": [
+	//     "https://www.googleapis.com/auth/cloud-platform"
+	//   ]
+	// }
+
+}
+
+// method id "cloudcommerceprocurement.providers.accounts.get":
+
+type ProvidersAccountsGetCall struct {
+	s            *Service
+	name         string
+	urlParams_   gensupport.URLParams
+	ifNoneMatch_ string
+	ctx_         context.Context
+	header_      http.Header
+}
+
+// Get: Get a requested Account resource.
+func (r *ProvidersAccountsService) Get(name string) *ProvidersAccountsGetCall {
+	c := &ProvidersAccountsGetCall{s: r.s, urlParams_: make(gensupport.URLParams)}
+	c.name = name
+	return c
+}
+
+// Fields allows partial responses to be retrieved. See
+// https://developers.google.com/gdata/docs/2.0/basics#PartialResponse
+// for more information.
+func (c *ProvidersAccountsGetCall) Fields(s ...googleapi.Field) *ProvidersAccountsGetCall {
+	c.urlParams_.Set("fields", googleapi.CombineFields(s))
+	return c
+}
+
+// IfNoneMatch sets the optional parameter which makes the operation
+// fail if the object's ETag matches the given value. This is useful for
+// getting updates only after the object has changed since the last
+// request. Use googleapi.IsNotModified to check whether the response
+// error from Do is the result of In-None-Match.
+func (c *ProvidersAccountsGetCall) IfNoneMatch(entityTag string) *ProvidersAccountsGetCall {
+	c.ifNoneMatch_ = entityTag
+	return c
+}
+
+// Context sets the context to be used in this call's Do method. Any
+// pending HTTP request will be aborted if the provided context is
+// canceled.
+func (c *ProvidersAccountsGetCall) Context(ctx context.Context) *ProvidersAccountsGetCall {
+	c.ctx_ = ctx
+	return c
+}
+
+// Header returns an http.Header that can be modified by the caller to
+// add HTTP headers to the request.
+func (c *ProvidersAccountsGetCall) Header() http.Header {
+	if c.header_ == nil {
+		c.header_ = make(http.Header)
+	}
+	return c.header_
+}
+
+func (c *ProvidersAccountsGetCall) doRequest(alt string) (*http.Response, error) {
+	reqHeaders := make(http.Header)
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.13.1 gdcl/20191026")
+	for k, v := range c.header_ {
+		reqHeaders[k] = v
+	}
+	reqHeaders.Set("User-Agent", c.s.userAgent())
+	if c.ifNoneMatch_ != "" {
+		reqHeaders.Set("If-None-Match", c.ifNoneMatch_)
+	}
+	var body io.Reader = nil
+	c.urlParams_.Set("alt", alt)
+	c.urlParams_.Set("prettyPrint", "false")
+	urls := googleapi.ResolveRelative(c.s.BasePath, "v1/{+name}")
+	urls += "?" + c.urlParams_.Encode()
+	req, err := http.NewRequest("GET", urls, body)
+	if err != nil {
+		return nil, err
+	}
+	req.Header = reqHeaders
+	googleapi.Expand(req.URL, map[string]string{
+		"name": c.name,
+	})
+	return gensupport.SendRequest(c.ctx_, c.s.client, req)
+}
+
+// Do executes the "cloudcommerceprocurement.providers.accounts.get" call.
+// Exactly one of *Account or error will be non-nil. Any non-2xx status
+// code is an error. Response headers are in either
+// *Account.ServerResponse.Header or (if a response was returned at all)
+// in error.(*googleapi.Error).Header. Use googleapi.IsNotModified to
+// check whether the returned error was because http.StatusNotModified
+// was returned.
+func (c *ProvidersAccountsGetCall) Do(opts ...googleapi.CallOption) (*Account, error) {
+	gensupport.SetOptions(c.urlParams_, opts...)
+	res, err := c.doRequest("json")
+	if res != nil && res.StatusCode == http.StatusNotModified {
+		if res.Body != nil {
+			res.Body.Close()
+		}
+		return nil, &googleapi.Error{
+			Code:   res.StatusCode,
+			Header: res.Header,
+		}
+	}
+	if err != nil {
+		return nil, err
+	}
+	defer googleapi.CloseBody(res)
+	if err := googleapi.CheckResponse(res); err != nil {
+		return nil, err
+	}
+	ret := &Account{
+		ServerResponse: googleapi.ServerResponse{
+			Header:         res.Header,
+			HTTPStatusCode: res.StatusCode,
+		},
+	}
+	target := &ret
+	if err := gensupport.DecodeResponse(target, res); err != nil {
+		return nil, err
+	}
+	return ret, nil
+	// {
+	//   "description": "Get a requested Account resource.",
+	//   "flatPath": "v1/providers/{providersId}/accounts/{accountsId}",
+	//   "httpMethod": "GET",
+	//   "id": "cloudcommerceprocurement.providers.accounts.get",
+	//   "parameterOrder": [
+	//     "name"
+	//   ],
+	//   "parameters": {
+	//     "name": {
+	//       "description": "The name of the account to retrieve.",
+	//       "location": "path",
+	//       "pattern": "^providers/[^/]+/accounts/[^/]+$",
+	//       "required": true,
+	//       "type": "string"
+	//     }
+	//   },
+	//   "path": "v1/{+name}",
+	//   "response": {
+	//     "$ref": "Account"
+	//   },
+	//   "scopes": [
+	//     "https://www.googleapis.com/auth/cloud-platform"
+	//   ]
+	// }
+
+}
+
+// method id "cloudcommerceprocurement.providers.accounts.list":
+
+type ProvidersAccountsListCall struct {
+	s            *Service
+	parent       string
+	urlParams_   gensupport.URLParams
+	ifNoneMatch_ string
+	ctx_         context.Context
+	header_      http.Header
+}
+
+// List: List Accounts that the provider has access to.
+func (r *ProvidersAccountsService) List(parent string) *ProvidersAccountsListCall {
+	c := &ProvidersAccountsListCall{s: r.s, urlParams_: make(gensupport.URLParams)}
+	c.parent = parent
+	return c
+}
+
+// PageSize sets the optional parameter "pageSize": The maximum number
+// of entries that are requested. Default size is 200.
+func (c *ProvidersAccountsListCall) PageSize(pageSize int64) *ProvidersAccountsListCall {
+	c.urlParams_.Set("pageSize", fmt.Sprint(pageSize))
+	return c
+}
+
+// PageToken sets the optional parameter "pageToken": The token for
+// fetching the next page.
+func (c *ProvidersAccountsListCall) PageToken(pageToken string) *ProvidersAccountsListCall {
+	c.urlParams_.Set("pageToken", pageToken)
+	return c
+}
+
+// Fields allows partial responses to be retrieved. See
+// https://developers.google.com/gdata/docs/2.0/basics#PartialResponse
+// for more information.
+func (c *ProvidersAccountsListCall) Fields(s ...googleapi.Field) *ProvidersAccountsListCall {
+	c.urlParams_.Set("fields", googleapi.CombineFields(s))
+	return c
+}
+
+// IfNoneMatch sets the optional parameter which makes the operation
+// fail if the object's ETag matches the given value. This is useful for
+// getting updates only after the object has changed since the last
+// request. Use googleapi.IsNotModified to check whether the response
+// error from Do is the result of In-None-Match.
+func (c *ProvidersAccountsListCall) IfNoneMatch(entityTag string) *ProvidersAccountsListCall {
+	c.ifNoneMatch_ = entityTag
+	return c
+}
+
+// Context sets the context to be used in this call's Do method. Any
+// pending HTTP request will be aborted if the provided context is
+// canceled.
+func (c *ProvidersAccountsListCall) Context(ctx context.Context) *ProvidersAccountsListCall {
+	c.ctx_ = ctx
+	return c
+}
+
+// Header returns an http.Header that can be modified by the caller to
+// add HTTP headers to the request.
+func (c *ProvidersAccountsListCall) Header() http.Header {
+	if c.header_ == nil {
+		c.header_ = make(http.Header)
+	}
+	return c.header_
+}
+
+func (c *ProvidersAccountsListCall) doRequest(alt string) (*http.Response, error) {
+	reqHeaders := make(http.Header)
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.13.1 gdcl/20191026")
+	for k, v := range c.header_ {
+		reqHeaders[k] = v
+	}
+	reqHeaders.Set("User-Agent", c.s.userAgent())
+	if c.ifNoneMatch_ != "" {
+		reqHeaders.Set("If-None-Match", c.ifNoneMatch_)
+	}
+	var body io.Reader = nil
+	c.urlParams_.Set("alt", alt)
+	c.urlParams_.Set("prettyPrint", "false")
+	urls := googleapi.ResolveRelative(c.s.BasePath, "v1/{+parent}/accounts")
+	urls += "?" + c.urlParams_.Encode()
+	req, err := http.NewRequest("GET", urls, body)
+	if err != nil {
+		return nil, err
+	}
+	req.Header = reqHeaders
+	googleapi.Expand(req.URL, map[string]string{
+		"parent": c.parent,
+	})
+	return gensupport.SendRequest(c.ctx_, c.s.client, req)
+}
+
+// Do executes the "cloudcommerceprocurement.providers.accounts.list" call.
+// Exactly one of *ListAccountsResponse or error will be non-nil. Any
+// non-2xx status code is an error. Response headers are in either
+// *ListAccountsResponse.ServerResponse.Header or (if a response was
+// returned at all) in error.(*googleapi.Error).Header. Use
+// googleapi.IsNotModified to check whether the returned error was
+// because http.StatusNotModified was returned.
+func (c *ProvidersAccountsListCall) Do(opts ...googleapi.CallOption) (*ListAccountsResponse, error) {
+	gensupport.SetOptions(c.urlParams_, opts...)
+	res, err := c.doRequest("json")
+	if res != nil && res.StatusCode == http.StatusNotModified {
+		if res.Body != nil {
+			res.Body.Close()
+		}
+		return nil, &googleapi.Error{
+			Code:   res.StatusCode,
+			Header: res.Header,
+		}
+	}
+	if err != nil {
+		return nil, err
+	}
+	defer googleapi.CloseBody(res)
+	if err := googleapi.CheckResponse(res); err != nil {
+		return nil, err
+	}
+	ret := &ListAccountsResponse{
+		ServerResponse: googleapi.ServerResponse{
+			Header:         res.Header,
+			HTTPStatusCode: res.StatusCode,
+		},
+	}
+	target := &ret
+	if err := gensupport.DecodeResponse(target, res); err != nil {
+		return nil, err
+	}
+	return ret, nil
+	// {
+	//   "description": "List Accounts that the provider has access to.",
+	//   "flatPath": "v1/providers/{providersId}/accounts",
+	//   "httpMethod": "GET",
+	//   "id": "cloudcommerceprocurement.providers.accounts.list",
+	//   "parameterOrder": [
+	//     "parent"
+	//   ],
+	//   "parameters": {
+	//     "pageSize": {
+	//       "description": "The maximum number of entries that are requested. Default size is 200.",
+	//       "format": "int32",
+	//       "location": "query",
+	//       "type": "integer"
+	//     },
+	//     "pageToken": {
+	//       "description": "The token for fetching the next page.",
+	//       "location": "query",
+	//       "type": "string"
+	//     },
+	//     "parent": {
+	//       "description": "The parent resource name.",
+	//       "location": "path",
+	//       "pattern": "^providers/[^/]+$",
+	//       "required": true,
+	//       "type": "string"
+	//     }
+	//   },
+	//   "path": "v1/{+parent}/accounts",
+	//   "response": {
+	//     "$ref": "ListAccountsResponse"
+	//   },
+	//   "scopes": [
+	//     "https://www.googleapis.com/auth/cloud-platform"
+	//   ]
+	// }
+
+}
+
+// Pages invokes f for each page of results.
+// A non-nil error returned from f will halt the iteration.
+// The provided context supersedes any context provided to the Context method.
+func (c *ProvidersAccountsListCall) Pages(ctx context.Context, f func(*ListAccountsResponse) error) error {
+	c.ctx_ = ctx
+	defer c.PageToken(c.urlParams_.Get("pageToken")) // reset paging to original point
+	for {
+		x, err := c.Do()
+		if err != nil {
+			return err
+		}
+		if err := f(x); err != nil {
+			return err
+		}
+		if x.NextPageToken == "" {
+			return nil
+		}
+		c.PageToken(x.NextPageToken)
+	}
+}
+
+// method id "cloudcommerceprocurement.providers.accounts.reject":
+
+type ProvidersAccountsRejectCall struct {
+	s                    *Service
+	name                 string
+	rejectaccountrequest *RejectAccountRequest
+	urlParams_           gensupport.URLParams
+	ctx_                 context.Context
+	header_              http.Header
+}
+
+// Reject: Reject an approval on an Account.
+func (r *ProvidersAccountsService) Reject(name string, rejectaccountrequest *RejectAccountRequest) *ProvidersAccountsRejectCall {
+	c := &ProvidersAccountsRejectCall{s: r.s, urlParams_: make(gensupport.URLParams)}
+	c.name = name
+	c.rejectaccountrequest = rejectaccountrequest
+	return c
+}
+
+// Fields allows partial responses to be retrieved. See
+// https://developers.google.com/gdata/docs/2.0/basics#PartialResponse
+// for more information.
+func (c *ProvidersAccountsRejectCall) Fields(s ...googleapi.Field) *ProvidersAccountsRejectCall {
+	c.urlParams_.Set("fields", googleapi.CombineFields(s))
+	return c
+}
+
+// Context sets the context to be used in this call's Do method. Any
+// pending HTTP request will be aborted if the provided context is
+// canceled.
+func (c *ProvidersAccountsRejectCall) Context(ctx context.Context) *ProvidersAccountsRejectCall {
+	c.ctx_ = ctx
+	return c
+}
+
+// Header returns an http.Header that can be modified by the caller to
+// add HTTP headers to the request.
+func (c *ProvidersAccountsRejectCall) Header() http.Header {
+	if c.header_ == nil {
+		c.header_ = make(http.Header)
+	}
+	return c.header_
+}
+
+func (c *ProvidersAccountsRejectCall) doRequest(alt string) (*http.Response, error) {
+	reqHeaders := make(http.Header)
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.13.1 gdcl/20191026")
+	for k, v := range c.header_ {
+		reqHeaders[k] = v
+	}
+	reqHeaders.Set("User-Agent", c.s.userAgent())
+	var body io.Reader = nil
+	body, err := googleapi.WithoutDataWrapper.JSONReader(c.rejectaccountrequest)
+	if err != nil {
+		return nil, err
+	}
+	reqHeaders.Set("Content-Type", "application/json")
+	c.urlParams_.Set("alt", alt)
+	c.urlParams_.Set("prettyPrint", "false")
+	urls := googleapi.ResolveRelative(c.s.BasePath, "v1/{+name}:reject")
+	urls += "?" + c.urlParams_.Encode()
+	req, err := http.NewRequest("POST", urls, body)
+	if err != nil {
+		return nil, err
+	}
+	req.Header = reqHeaders
+	googleapi.Expand(req.URL, map[string]string{
+		"name": c.name,
+	})
+	return gensupport.SendRequest(c.ctx_, c.s.client, req)
+}
+
+// Do executes the "cloudcommerceprocurement.providers.accounts.reject" call.
+// Exactly one of *Empty or error will be non-nil. Any non-2xx status
+// code is an error. Response headers are in either
+// *Empty.ServerResponse.Header or (if a response was returned at all)
+// in error.(*googleapi.Error).Header. Use googleapi.IsNotModified to
+// check whether the returned error was because http.StatusNotModified
+// was returned.
+func (c *ProvidersAccountsRejectCall) Do(opts ...googleapi.CallOption) (*Empty, error) {
+	gensupport.SetOptions(c.urlParams_, opts...)
+	res, err := c.doRequest("json")
+	if res != nil && res.StatusCode == http.StatusNotModified {
+		if res.Body != nil {
+			res.Body.Close()
+		}
+		return nil, &googleapi.Error{
+			Code:   res.StatusCode,
+			Header: res.Header,
+		}
+	}
+	if err != nil {
+		return nil, err
+	}
+	defer googleapi.CloseBody(res)
+	if err := googleapi.CheckResponse(res); err != nil {
+		return nil, err
+	}
+	ret := &Empty{
+		ServerResponse: googleapi.ServerResponse{
+			Header:         res.Header,
+			HTTPStatusCode: res.StatusCode,
+		},
+	}
+	target := &ret
+	if err := gensupport.DecodeResponse(target, res); err != nil {
+		return nil, err
+	}
+	return ret, nil
+	// {
+	//   "description": "Reject an approval on an Account.",
+	//   "flatPath": "v1/providers/{providersId}/accounts/{accountsId}:reject",
+	//   "httpMethod": "POST",
+	//   "id": "cloudcommerceprocurement.providers.accounts.reject",
+	//   "parameterOrder": [
+	//     "name"
+	//   ],
+	//   "parameters": {
+	//     "name": {
+	//       "description": "The resource name of the account.\nRequired.",
+	//       "location": "path",
+	//       "pattern": "^providers/[^/]+/accounts/[^/]+$",
+	//       "required": true,
+	//       "type": "string"
+	//     }
+	//   },
+	//   "path": "v1/{+name}:reject",
+	//   "request": {
+	//     "$ref": "RejectAccountRequest"
+	//   },
+	//   "response": {
+	//     "$ref": "Empty"
+	//   },
+	//   "scopes": [
+	//     "https://www.googleapis.com/auth/cloud-platform"
+	//   ]
+	// }
+
+}
+
+// method id "cloudcommerceprocurement.providers.accounts.reset":
+
+type ProvidersAccountsResetCall struct {
+	s                   *Service
+	name                string
+	resetaccountrequest *ResetAccountRequest
+	urlParams_          gensupport.URLParams
+	ctx_                context.Context
+	header_             http.Header
+}
+
+// Reset: Reset an Account and cancel all associated
+// Entitlements.
+// Partner can only reset accounts they own rather than customer
+// accounts.
+func (r *ProvidersAccountsService) Reset(name string, resetaccountrequest *ResetAccountRequest) *ProvidersAccountsResetCall {
+	c := &ProvidersAccountsResetCall{s: r.s, urlParams_: make(gensupport.URLParams)}
+	c.name = name
+	c.resetaccountrequest = resetaccountrequest
+	return c
+}
+
+// Fields allows partial responses to be retrieved. See
+// https://developers.google.com/gdata/docs/2.0/basics#PartialResponse
+// for more information.
+func (c *ProvidersAccountsResetCall) Fields(s ...googleapi.Field) *ProvidersAccountsResetCall {
+	c.urlParams_.Set("fields", googleapi.CombineFields(s))
+	return c
+}
+
+// Context sets the context to be used in this call's Do method. Any
+// pending HTTP request will be aborted if the provided context is
+// canceled.
+func (c *ProvidersAccountsResetCall) Context(ctx context.Context) *ProvidersAccountsResetCall {
+	c.ctx_ = ctx
+	return c
+}
+
+// Header returns an http.Header that can be modified by the caller to
+// add HTTP headers to the request.
+func (c *ProvidersAccountsResetCall) Header() http.Header {
+	if c.header_ == nil {
+		c.header_ = make(http.Header)
+	}
+	return c.header_
+}
+
+func (c *ProvidersAccountsResetCall) doRequest(alt string) (*http.Response, error) {
+	reqHeaders := make(http.Header)
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.13.1 gdcl/20191026")
+	for k, v := range c.header_ {
+		reqHeaders[k] = v
+	}
+	reqHeaders.Set("User-Agent", c.s.userAgent())
+	var body io.Reader = nil
+	body, err := googleapi.WithoutDataWrapper.JSONReader(c.resetaccountrequest)
+	if err != nil {
+		return nil, err
+	}
+	reqHeaders.Set("Content-Type", "application/json")
+	c.urlParams_.Set("alt", alt)
+	c.urlParams_.Set("prettyPrint", "false")
+	urls := googleapi.ResolveRelative(c.s.BasePath, "v1/{+name}:reset")
+	urls += "?" + c.urlParams_.Encode()
+	req, err := http.NewRequest("POST", urls, body)
+	if err != nil {
+		return nil, err
+	}
+	req.Header = reqHeaders
+	googleapi.Expand(req.URL, map[string]string{
+		"name": c.name,
+	})
+	return gensupport.SendRequest(c.ctx_, c.s.client, req)
+}
+
+// Do executes the "cloudcommerceprocurement.providers.accounts.reset" call.
+// Exactly one of *Empty or error will be non-nil. Any non-2xx status
+// code is an error. Response headers are in either
+// *Empty.ServerResponse.Header or (if a response was returned at all)
+// in error.(*googleapi.Error).Header. Use googleapi.IsNotModified to
+// check whether the returned error was because http.StatusNotModified
+// was returned.
+func (c *ProvidersAccountsResetCall) Do(opts ...googleapi.CallOption) (*Empty, error) {
+	gensupport.SetOptions(c.urlParams_, opts...)
+	res, err := c.doRequest("json")
+	if res != nil && res.StatusCode == http.StatusNotModified {
+		if res.Body != nil {
+			res.Body.Close()
+		}
+		return nil, &googleapi.Error{
+			Code:   res.StatusCode,
+			Header: res.Header,
+		}
+	}
+	if err != nil {
+		return nil, err
+	}
+	defer googleapi.CloseBody(res)
+	if err := googleapi.CheckResponse(res); err != nil {
+		return nil, err
+	}
+	ret := &Empty{
+		ServerResponse: googleapi.ServerResponse{
+			Header:         res.Header,
+			HTTPStatusCode: res.StatusCode,
+		},
+	}
+	target := &ret
+	if err := gensupport.DecodeResponse(target, res); err != nil {
+		return nil, err
+	}
+	return ret, nil
+	// {
+	//   "description": "Reset an Account and cancel all associated Entitlements.\nPartner can only reset accounts they own rather than customer accounts.",
+	//   "flatPath": "v1/providers/{providersId}/accounts/{accountsId}:reset",
+	//   "httpMethod": "POST",
+	//   "id": "cloudcommerceprocurement.providers.accounts.reset",
+	//   "parameterOrder": [
+	//     "name"
+	//   ],
+	//   "parameters": {
+	//     "name": {
+	//       "description": "The resource name of the account.\nRequired.",
+	//       "location": "path",
+	//       "pattern": "^providers/[^/]+/accounts/[^/]+$",
+	//       "required": true,
+	//       "type": "string"
+	//     }
+	//   },
+	//   "path": "v1/{+name}:reset",
+	//   "request": {
+	//     "$ref": "ResetAccountRequest"
+	//   },
+	//   "response": {
+	//     "$ref": "Empty"
+	//   },
+	//   "scopes": [
+	//     "https://www.googleapis.com/auth/cloud-platform"
+	//   ]
+	// }
+
+}
+
+// method id "cloudcommerceprocurement.providers.entitlements.approve":
+
+type ProvidersEntitlementsApproveCall struct {
+	s                         *Service
+	name                      string
+	approveentitlementrequest *ApproveEntitlementRequest
+	urlParams_                gensupport.URLParams
+	ctx_                      context.Context
+	header_                   http.Header
+}
+
+// Approve: Approve an entitlement that is in
+// the
+// EntitlementState.ENTITLEMENT_ACTIVATION_REQUESTED state.
+//
+// This method is invoked by the provider to approve the creation of
+// the
+// entitlement resource.
+func (r *ProvidersEntitlementsService) Approve(name string, approveentitlementrequest *ApproveEntitlementRequest) *ProvidersEntitlementsApproveCall {
+	c := &ProvidersEntitlementsApproveCall{s: r.s, urlParams_: make(gensupport.URLParams)}
+	c.name = name
+	c.approveentitlementrequest = approveentitlementrequest
+	return c
+}
+
+// Fields allows partial responses to be retrieved. See
+// https://developers.google.com/gdata/docs/2.0/basics#PartialResponse
+// for more information.
+func (c *ProvidersEntitlementsApproveCall) Fields(s ...googleapi.Field) *ProvidersEntitlementsApproveCall {
+	c.urlParams_.Set("fields", googleapi.CombineFields(s))
+	return c
+}
+
+// Context sets the context to be used in this call's Do method. Any
+// pending HTTP request will be aborted if the provided context is
+// canceled.
+func (c *ProvidersEntitlementsApproveCall) Context(ctx context.Context) *ProvidersEntitlementsApproveCall {
+	c.ctx_ = ctx
+	return c
+}
+
+// Header returns an http.Header that can be modified by the caller to
+// add HTTP headers to the request.
+func (c *ProvidersEntitlementsApproveCall) Header() http.Header {
+	if c.header_ == nil {
+		c.header_ = make(http.Header)
+	}
+	return c.header_
+}
+
+func (c *ProvidersEntitlementsApproveCall) doRequest(alt string) (*http.Response, error) {
+	reqHeaders := make(http.Header)
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.13.1 gdcl/20191026")
+	for k, v := range c.header_ {
+		reqHeaders[k] = v
+	}
+	reqHeaders.Set("User-Agent", c.s.userAgent())
+	var body io.Reader = nil
+	body, err := googleapi.WithoutDataWrapper.JSONReader(c.approveentitlementrequest)
+	if err != nil {
+		return nil, err
+	}
+	reqHeaders.Set("Content-Type", "application/json")
+	c.urlParams_.Set("alt", alt)
+	c.urlParams_.Set("prettyPrint", "false")
+	urls := googleapi.ResolveRelative(c.s.BasePath, "v1/{+name}:approve")
+	urls += "?" + c.urlParams_.Encode()
+	req, err := http.NewRequest("POST", urls, body)
+	if err != nil {
+		return nil, err
+	}
+	req.Header = reqHeaders
+	googleapi.Expand(req.URL, map[string]string{
+		"name": c.name,
+	})
+	return gensupport.SendRequest(c.ctx_, c.s.client, req)
+}
+
+// Do executes the "cloudcommerceprocurement.providers.entitlements.approve" call.
+// Exactly one of *Empty or error will be non-nil. Any non-2xx status
+// code is an error. Response headers are in either
+// *Empty.ServerResponse.Header or (if a response was returned at all)
+// in error.(*googleapi.Error).Header. Use googleapi.IsNotModified to
+// check whether the returned error was because http.StatusNotModified
+// was returned.
+func (c *ProvidersEntitlementsApproveCall) Do(opts ...googleapi.CallOption) (*Empty, error) {
+	gensupport.SetOptions(c.urlParams_, opts...)
+	res, err := c.doRequest("json")
+	if res != nil && res.StatusCode == http.StatusNotModified {
+		if res.Body != nil {
+			res.Body.Close()
+		}
+		return nil, &googleapi.Error{
+			Code:   res.StatusCode,
+			Header: res.Header,
+		}
+	}
+	if err != nil {
+		return nil, err
+	}
+	defer googleapi.CloseBody(res)
+	if err := googleapi.CheckResponse(res); err != nil {
+		return nil, err
+	}
+	ret := &Empty{
+		ServerResponse: googleapi.ServerResponse{
+			Header:         res.Header,
+			HTTPStatusCode: res.StatusCode,
+		},
+	}
+	target := &ret
+	if err := gensupport.DecodeResponse(target, res); err != nil {
+		return nil, err
+	}
+	return ret, nil
+	// {
+	//   "description": "Approve an entitlement that is in the\nEntitlementState.ENTITLEMENT_ACTIVATION_REQUESTED state.\n\nThis method is invoked by the provider to approve the creation of the\nentitlement resource.",
+	//   "flatPath": "v1/providers/{providersId}/entitlements/{entitlementsId}:approve",
+	//   "httpMethod": "POST",
+	//   "id": "cloudcommerceprocurement.providers.entitlements.approve",
+	//   "parameterOrder": [
+	//     "name"
+	//   ],
+	//   "parameters": {
+	//     "name": {
+	//       "description": "The resource name of the entitlement.\nRequired.",
+	//       "location": "path",
+	//       "pattern": "^providers/[^/]+/entitlements/[^/]+$",
+	//       "required": true,
+	//       "type": "string"
+	//     }
+	//   },
+	//   "path": "v1/{+name}:approve",
+	//   "request": {
+	//     "$ref": "ApproveEntitlementRequest"
+	//   },
+	//   "response": {
+	//     "$ref": "Empty"
+	//   },
+	//   "scopes": [
+	//     "https://www.googleapis.com/auth/cloud-platform"
+	//   ]
+	// }
+
+}
+
+// method id "cloudcommerceprocurement.providers.entitlements.approvePlanChange":
+
+type ProvidersEntitlementsApprovePlanChangeCall struct {
+	s                                   *Service
+	name                                string
+	approveentitlementplanchangerequest *ApproveEntitlementPlanChangeRequest
+	urlParams_                          gensupport.URLParams
+	ctx_                                context.Context
+	header_                             http.Header
+}
+
+// ApprovePlanChange: Approve an entitlement plan change that is in
+// the
+// EntitlementState.ENTITLEMENT_PENDING_PLAN_CHANGE_APPROVAL
+// state.
+//
+// This method is invoked by the provider to approve the plan change on
+// the
+// entitlement resource.
+func (r *ProvidersEntitlementsService) ApprovePlanChange(name string, approveentitlementplanchangerequest *ApproveEntitlementPlanChangeRequest) *ProvidersEntitlementsApprovePlanChangeCall {
+	c := &ProvidersEntitlementsApprovePlanChangeCall{s: r.s, urlParams_: make(gensupport.URLParams)}
+	c.name = name
+	c.approveentitlementplanchangerequest = approveentitlementplanchangerequest
+	return c
+}
+
+// Fields allows partial responses to be retrieved. See
+// https://developers.google.com/gdata/docs/2.0/basics#PartialResponse
+// for more information.
+func (c *ProvidersEntitlementsApprovePlanChangeCall) Fields(s ...googleapi.Field) *ProvidersEntitlementsApprovePlanChangeCall {
+	c.urlParams_.Set("fields", googleapi.CombineFields(s))
+	return c
+}
+
+// Context sets the context to be used in this call's Do method. Any
+// pending HTTP request will be aborted if the provided context is
+// canceled.
+func (c *ProvidersEntitlementsApprovePlanChangeCall) Context(ctx context.Context) *ProvidersEntitlementsApprovePlanChangeCall {
+	c.ctx_ = ctx
+	return c
+}
+
+// Header returns an http.Header that can be modified by the caller to
+// add HTTP headers to the request.
+func (c *ProvidersEntitlementsApprovePlanChangeCall) Header() http.Header {
+	if c.header_ == nil {
+		c.header_ = make(http.Header)
+	}
+	return c.header_
+}
+
+func (c *ProvidersEntitlementsApprovePlanChangeCall) doRequest(alt string) (*http.Response, error) {
+	reqHeaders := make(http.Header)
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.13.1 gdcl/20191026")
+	for k, v := range c.header_ {
+		reqHeaders[k] = v
+	}
+	reqHeaders.Set("User-Agent", c.s.userAgent())
+	var body io.Reader = nil
+	body, err := googleapi.WithoutDataWrapper.JSONReader(c.approveentitlementplanchangerequest)
+	if err != nil {
+		return nil, err
+	}
+	reqHeaders.Set("Content-Type", "application/json")
+	c.urlParams_.Set("alt", alt)
+	c.urlParams_.Set("prettyPrint", "false")
+	urls := googleapi.ResolveRelative(c.s.BasePath, "v1/{+name}:approvePlanChange")
+	urls += "?" + c.urlParams_.Encode()
+	req, err := http.NewRequest("POST", urls, body)
+	if err != nil {
+		return nil, err
+	}
+	req.Header = reqHeaders
+	googleapi.Expand(req.URL, map[string]string{
+		"name": c.name,
+	})
+	return gensupport.SendRequest(c.ctx_, c.s.client, req)
+}
+
+// Do executes the "cloudcommerceprocurement.providers.entitlements.approvePlanChange" call.
+// Exactly one of *Empty or error will be non-nil. Any non-2xx status
+// code is an error. Response headers are in either
+// *Empty.ServerResponse.Header or (if a response was returned at all)
+// in error.(*googleapi.Error).Header. Use googleapi.IsNotModified to
+// check whether the returned error was because http.StatusNotModified
+// was returned.
+func (c *ProvidersEntitlementsApprovePlanChangeCall) Do(opts ...googleapi.CallOption) (*Empty, error) {
+	gensupport.SetOptions(c.urlParams_, opts...)
+	res, err := c.doRequest("json")
+	if res != nil && res.StatusCode == http.StatusNotModified {
+		if res.Body != nil {
+			res.Body.Close()
+		}
+		return nil, &googleapi.Error{
+			Code:   res.StatusCode,
+			Header: res.Header,
+		}
+	}
+	if err != nil {
+		return nil, err
+	}
+	defer googleapi.CloseBody(res)
+	if err := googleapi.CheckResponse(res); err != nil {
+		return nil, err
+	}
+	ret := &Empty{
+		ServerResponse: googleapi.ServerResponse{
+			Header:         res.Header,
+			HTTPStatusCode: res.StatusCode,
+		},
+	}
+	target := &ret
+	if err := gensupport.DecodeResponse(target, res); err != nil {
+		return nil, err
+	}
+	return ret, nil
+	// {
+	//   "description": "Approve an entitlement plan change that is in the\nEntitlementState.ENTITLEMENT_PENDING_PLAN_CHANGE_APPROVAL state.\n\nThis method is invoked by the provider to approve the plan change on the\nentitlement resource.",
+	//   "flatPath": "v1/providers/{providersId}/entitlements/{entitlementsId}:approvePlanChange",
+	//   "httpMethod": "POST",
+	//   "id": "cloudcommerceprocurement.providers.entitlements.approvePlanChange",
+	//   "parameterOrder": [
+	//     "name"
+	//   ],
+	//   "parameters": {
+	//     "name": {
+	//       "description": "The resource name of the entitlement.\nRequired.",
+	//       "location": "path",
+	//       "pattern": "^providers/[^/]+/entitlements/[^/]+$",
+	//       "required": true,
+	//       "type": "string"
+	//     }
+	//   },
+	//   "path": "v1/{+name}:approvePlanChange",
+	//   "request": {
+	//     "$ref": "ApproveEntitlementPlanChangeRequest"
+	//   },
+	//   "response": {
+	//     "$ref": "Empty"
+	//   },
+	//   "scopes": [
+	//     "https://www.googleapis.com/auth/cloud-platform"
+	//   ]
+	// }
+
+}
+
+// method id "cloudcommerceprocurement.providers.entitlements.get":
+
+type ProvidersEntitlementsGetCall struct {
+	s            *Service
+	name         string
+	urlParams_   gensupport.URLParams
+	ifNoneMatch_ string
+	ctx_         context.Context
+	header_      http.Header
+}
+
+// Get: Get a requested Entitlement resource.
+func (r *ProvidersEntitlementsService) Get(name string) *ProvidersEntitlementsGetCall {
+	c := &ProvidersEntitlementsGetCall{s: r.s, urlParams_: make(gensupport.URLParams)}
+	c.name = name
+	return c
+}
+
+// Fields allows partial responses to be retrieved. See
+// https://developers.google.com/gdata/docs/2.0/basics#PartialResponse
+// for more information.
+func (c *ProvidersEntitlementsGetCall) Fields(s ...googleapi.Field) *ProvidersEntitlementsGetCall {
+	c.urlParams_.Set("fields", googleapi.CombineFields(s))
+	return c
+}
+
+// IfNoneMatch sets the optional parameter which makes the operation
+// fail if the object's ETag matches the given value. This is useful for
+// getting updates only after the object has changed since the last
+// request. Use googleapi.IsNotModified to check whether the response
+// error from Do is the result of In-None-Match.
+func (c *ProvidersEntitlementsGetCall) IfNoneMatch(entityTag string) *ProvidersEntitlementsGetCall {
+	c.ifNoneMatch_ = entityTag
+	return c
+}
+
+// Context sets the context to be used in this call's Do method. Any
+// pending HTTP request will be aborted if the provided context is
+// canceled.
+func (c *ProvidersEntitlementsGetCall) Context(ctx context.Context) *ProvidersEntitlementsGetCall {
+	c.ctx_ = ctx
+	return c
+}
+
+// Header returns an http.Header that can be modified by the caller to
+// add HTTP headers to the request.
+func (c *ProvidersEntitlementsGetCall) Header() http.Header {
+	if c.header_ == nil {
+		c.header_ = make(http.Header)
+	}
+	return c.header_
+}
+
+func (c *ProvidersEntitlementsGetCall) doRequest(alt string) (*http.Response, error) {
+	reqHeaders := make(http.Header)
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.13.1 gdcl/20191026")
+	for k, v := range c.header_ {
+		reqHeaders[k] = v
+	}
+	reqHeaders.Set("User-Agent", c.s.userAgent())
+	if c.ifNoneMatch_ != "" {
+		reqHeaders.Set("If-None-Match", c.ifNoneMatch_)
+	}
+	var body io.Reader = nil
+	c.urlParams_.Set("alt", alt)
+	c.urlParams_.Set("prettyPrint", "false")
+	urls := googleapi.ResolveRelative(c.s.BasePath, "v1/{+name}")
+	urls += "?" + c.urlParams_.Encode()
+	req, err := http.NewRequest("GET", urls, body)
+	if err != nil {
+		return nil, err
+	}
+	req.Header = reqHeaders
+	googleapi.Expand(req.URL, map[string]string{
+		"name": c.name,
+	})
+	return gensupport.SendRequest(c.ctx_, c.s.client, req)
+}
+
+// Do executes the "cloudcommerceprocurement.providers.entitlements.get" call.
+// Exactly one of *Entitlement or error will be non-nil. Any non-2xx
+// status code is an error. Response headers are in either
+// *Entitlement.ServerResponse.Header or (if a response was returned at
+// all) in error.(*googleapi.Error).Header. Use googleapi.IsNotModified
+// to check whether the returned error was because
+// http.StatusNotModified was returned.
+func (c *ProvidersEntitlementsGetCall) Do(opts ...googleapi.CallOption) (*Entitlement, error) {
+	gensupport.SetOptions(c.urlParams_, opts...)
+	res, err := c.doRequest("json")
+	if res != nil && res.StatusCode == http.StatusNotModified {
+		if res.Body != nil {
+			res.Body.Close()
+		}
+		return nil, &googleapi.Error{
+			Code:   res.StatusCode,
+			Header: res.Header,
+		}
+	}
+	if err != nil {
+		return nil, err
+	}
+	defer googleapi.CloseBody(res)
+	if err := googleapi.CheckResponse(res); err != nil {
+		return nil, err
+	}
+	ret := &Entitlement{
+		ServerResponse: googleapi.ServerResponse{
+			Header:         res.Header,
+			HTTPStatusCode: res.StatusCode,
+		},
+	}
+	target := &ret
+	if err := gensupport.DecodeResponse(target, res); err != nil {
+		return nil, err
+	}
+	return ret, nil
+	// {
+	//   "description": "Get a requested Entitlement resource.",
+	//   "flatPath": "v1/providers/{providersId}/entitlements/{entitlementsId}",
+	//   "httpMethod": "GET",
+	//   "id": "cloudcommerceprocurement.providers.entitlements.get",
+	//   "parameterOrder": [
+	//     "name"
+	//   ],
+	//   "parameters": {
+	//     "name": {
+	//       "description": "The name of the entitlement to retrieve.",
+	//       "location": "path",
+	//       "pattern": "^providers/[^/]+/entitlements/[^/]+$",
+	//       "required": true,
+	//       "type": "string"
+	//     }
+	//   },
+	//   "path": "v1/{+name}",
+	//   "response": {
+	//     "$ref": "Entitlement"
+	//   },
+	//   "scopes": [
+	//     "https://www.googleapis.com/auth/cloud-platform"
+	//   ]
+	// }
+
+}
+
+// method id "cloudcommerceprocurement.providers.entitlements.list":
+
+type ProvidersEntitlementsListCall struct {
+	s            *Service
+	parent       string
+	urlParams_   gensupport.URLParams
+	ifNoneMatch_ string
+	ctx_         context.Context
+	header_      http.Header
+}
+
+// List: List Entitlements for which the provider has read access.
+func (r *ProvidersEntitlementsService) List(parent string) *ProvidersEntitlementsListCall {
+	c := &ProvidersEntitlementsListCall{s: r.s, urlParams_: make(gensupport.URLParams)}
+	c.parent = parent
+	return c
+}
+
+// Filter sets the optional parameter "filter": The filter that can be
+// used to limit the list request.
+//
+// The filter is a query string that can match a selected set of
+// attributes
+// with string values. For example
+// `account=E-1234-5678-ABCD-EFGH`,
+// `state=pending_cancellation`, and `product!=foo-product`.
+// Supported
+// query attributes are
+//
+// * `account`
+// * `product`
+// * `plan`
+// * `newPendingPlan` or `new_pending_plan`
+// * `state`
+//
+// Note that the state name match is case-insensitive and query can omit
+// the
+// prefix "ENTITLEMENT_". For example, `state=active` is equivalent
+// to
+// `state=ENTITLEMENT_ACTIVE`.
+//
+// If the query contains some special characters other than
+// letters,
+// underscore, or digits, the phrase must be quoted with double quotes.
+// For
+// example, `product="providerId:productId", where the product name
+// needs to
+// be quoted because it contains special character colon.
+//
+// Queries can be combined with `AND`, `OR`, and `NOT` to form more
+// complex
+// queries. They can also be grouped to force a desired evaluation
+// order.
+// For example, `state=active AND (account=E-1234 OR account=5678) AND
+// NOT
+// (product=foo-product)`. Connective `AND` can be omitted between
+// two
+// predicates. For example `account=E-1234 state=active` is equivalent
+// to
+// `account=E-1234 AND state=active`.
+func (c *ProvidersEntitlementsListCall) Filter(filter string) *ProvidersEntitlementsListCall {
+	c.urlParams_.Set("filter", filter)
+	return c
+}
+
+// PageSize sets the optional parameter "pageSize": The maximum number
+// of entries that are requested.
+func (c *ProvidersEntitlementsListCall) PageSize(pageSize int64) *ProvidersEntitlementsListCall {
+	c.urlParams_.Set("pageSize", fmt.Sprint(pageSize))
+	return c
+}
+
+// PageToken sets the optional parameter "pageToken": The token for
+// fetching the next page.
+func (c *ProvidersEntitlementsListCall) PageToken(pageToken string) *ProvidersEntitlementsListCall {
+	c.urlParams_.Set("pageToken", pageToken)
+	return c
+}
+
+// Fields allows partial responses to be retrieved. See
+// https://developers.google.com/gdata/docs/2.0/basics#PartialResponse
+// for more information.
+func (c *ProvidersEntitlementsListCall) Fields(s ...googleapi.Field) *ProvidersEntitlementsListCall {
+	c.urlParams_.Set("fields", googleapi.CombineFields(s))
+	return c
+}
+
+// IfNoneMatch sets the optional parameter which makes the operation
+// fail if the object's ETag matches the given value. This is useful for
+// getting updates only after the object has changed since the last
+// request. Use googleapi.IsNotModified to check whether the response
+// error from Do is the result of In-None-Match.
+func (c *ProvidersEntitlementsListCall) IfNoneMatch(entityTag string) *ProvidersEntitlementsListCall {
+	c.ifNoneMatch_ = entityTag
+	return c
+}
+
+// Context sets the context to be used in this call's Do method. Any
+// pending HTTP request will be aborted if the provided context is
+// canceled.
+func (c *ProvidersEntitlementsListCall) Context(ctx context.Context) *ProvidersEntitlementsListCall {
+	c.ctx_ = ctx
+	return c
+}
+
+// Header returns an http.Header that can be modified by the caller to
+// add HTTP headers to the request.
+func (c *ProvidersEntitlementsListCall) Header() http.Header {
+	if c.header_ == nil {
+		c.header_ = make(http.Header)
+	}
+	return c.header_
+}
+
+func (c *ProvidersEntitlementsListCall) doRequest(alt string) (*http.Response, error) {
+	reqHeaders := make(http.Header)
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.13.1 gdcl/20191026")
+	for k, v := range c.header_ {
+		reqHeaders[k] = v
+	}
+	reqHeaders.Set("User-Agent", c.s.userAgent())
+	if c.ifNoneMatch_ != "" {
+		reqHeaders.Set("If-None-Match", c.ifNoneMatch_)
+	}
+	var body io.Reader = nil
+	c.urlParams_.Set("alt", alt)
+	c.urlParams_.Set("prettyPrint", "false")
+	urls := googleapi.ResolveRelative(c.s.BasePath, "v1/{+parent}/entitlements")
+	urls += "?" + c.urlParams_.Encode()
+	req, err := http.NewRequest("GET", urls, body)
+	if err != nil {
+		return nil, err
+	}
+	req.Header = reqHeaders
+	googleapi.Expand(req.URL, map[string]string{
+		"parent": c.parent,
+	})
+	return gensupport.SendRequest(c.ctx_, c.s.client, req)
+}
+
+// Do executes the "cloudcommerceprocurement.providers.entitlements.list" call.
+// Exactly one of *ListEntitlementsResponse or error will be non-nil.
+// Any non-2xx status code is an error. Response headers are in either
+// *ListEntitlementsResponse.ServerResponse.Header or (if a response was
+// returned at all) in error.(*googleapi.Error).Header. Use
+// googleapi.IsNotModified to check whether the returned error was
+// because http.StatusNotModified was returned.
+func (c *ProvidersEntitlementsListCall) Do(opts ...googleapi.CallOption) (*ListEntitlementsResponse, error) {
+	gensupport.SetOptions(c.urlParams_, opts...)
+	res, err := c.doRequest("json")
+	if res != nil && res.StatusCode == http.StatusNotModified {
+		if res.Body != nil {
+			res.Body.Close()
+		}
+		return nil, &googleapi.Error{
+			Code:   res.StatusCode,
+			Header: res.Header,
+		}
+	}
+	if err != nil {
+		return nil, err
+	}
+	defer googleapi.CloseBody(res)
+	if err := googleapi.CheckResponse(res); err != nil {
+		return nil, err
+	}
+	ret := &ListEntitlementsResponse{
+		ServerResponse: googleapi.ServerResponse{
+			Header:         res.Header,
+			HTTPStatusCode: res.StatusCode,
+		},
+	}
+	target := &ret
+	if err := gensupport.DecodeResponse(target, res); err != nil {
+		return nil, err
+	}
+	return ret, nil
+	// {
+	//   "description": "List Entitlements for which the provider has read access.",
+	//   "flatPath": "v1/providers/{providersId}/entitlements",
+	//   "httpMethod": "GET",
+	//   "id": "cloudcommerceprocurement.providers.entitlements.list",
+	//   "parameterOrder": [
+	//     "parent"
+	//   ],
+	//   "parameters": {
+	//     "filter": {
+	//       "description": "The filter that can be used to limit the list request.\n\nThe filter is a query string that can match a selected set of attributes\nwith string values. For example `account=E-1234-5678-ABCD-EFGH`,\n`state=pending_cancellation`, and `product!=foo-product`. Supported\nquery attributes are\n\n* `account`\n* `product`\n* `plan`\n* `newPendingPlan` or `new_pending_plan`\n* `state`\n\nNote that the state name match is case-insensitive and query can omit the\nprefix \"ENTITLEMENT_\". For example, `state=active` is equivalent to\n`state=ENTITLEMENT_ACTIVE`.\n\nIf the query contains some special characters other than letters,\nunderscore, or digits, the phrase must be quoted with double quotes. For\nexample, `product=\"providerId:productId\"`, where the product name needs to\nbe quoted because it contains special character colon.\n\nQueries can be combined with `AND`, `OR`, and `NOT` to form more complex\nqueries. They can also be grouped to force a desired evaluation order.\nFor example, `state=active AND (account=E-1234 OR account=5678) AND NOT\n(product=foo-product)`. Connective `AND` can be omitted between two\npredicates. For example `account=E-1234 state=active` is equivalent to\n`account=E-1234 AND state=active`.",
+	//       "location": "query",
+	//       "type": "string"
+	//     },
+	//     "pageSize": {
+	//       "description": "The maximum number of entries that are requested.",
+	//       "format": "int32",
+	//       "location": "query",
+	//       "type": "integer"
+	//     },
+	//     "pageToken": {
+	//       "description": "The token for fetching the next page.",
+	//       "location": "query",
+	//       "type": "string"
+	//     },
+	//     "parent": {
+	//       "description": "The parent resource name.",
+	//       "location": "path",
+	//       "pattern": "^providers/[^/]+$",
+	//       "required": true,
+	//       "type": "string"
+	//     }
+	//   },
+	//   "path": "v1/{+parent}/entitlements",
+	//   "response": {
+	//     "$ref": "ListEntitlementsResponse"
+	//   },
+	//   "scopes": [
+	//     "https://www.googleapis.com/auth/cloud-platform"
+	//   ]
+	// }
+
+}
+
+// Pages invokes f for each page of results.
+// A non-nil error returned from f will halt the iteration.
+// The provided context supersedes any context provided to the Context method.
+func (c *ProvidersEntitlementsListCall) Pages(ctx context.Context, f func(*ListEntitlementsResponse) error) error {
+	c.ctx_ = ctx
+	defer c.PageToken(c.urlParams_.Get("pageToken")) // reset paging to original point
+	for {
+		x, err := c.Do()
+		if err != nil {
+			return err
+		}
+		if err := f(x); err != nil {
+			return err
+		}
+		if x.NextPageToken == "" {
+			return nil
+		}
+		c.PageToken(x.NextPageToken)
+	}
+}
+
+// method id "cloudcommerceprocurement.providers.entitlements.patch":
+
+type ProvidersEntitlementsPatchCall struct {
+	s           *Service
+	name        string
+	entitlement *Entitlement
+	urlParams_  gensupport.URLParams
+	ctx_        context.Context
+	header_     http.Header
+}
+
+// Patch: Updates an existing Entitlement.
+func (r *ProvidersEntitlementsService) Patch(name string, entitlement *Entitlement) *ProvidersEntitlementsPatchCall {
+	c := &ProvidersEntitlementsPatchCall{s: r.s, urlParams_: make(gensupport.URLParams)}
+	c.name = name
+	c.entitlement = entitlement
+	return c
+}
+
+// UpdateMask sets the optional parameter "updateMask": The update mask
+// that applies to the resource.
+// See the [FieldMask
+// definition]
+// (https://developers.google.com/protocol-buffers/docs/refer
+// ence/google.protobuf#fieldmask)
+// for more details.
+func (c *ProvidersEntitlementsPatchCall) UpdateMask(updateMask string) *ProvidersEntitlementsPatchCall {
+	c.urlParams_.Set("updateMask", updateMask)
+	return c
+}
+
+// Fields allows partial responses to be retrieved. See
+// https://developers.google.com/gdata/docs/2.0/basics#PartialResponse
+// for more information.
+func (c *ProvidersEntitlementsPatchCall) Fields(s ...googleapi.Field) *ProvidersEntitlementsPatchCall {
+	c.urlParams_.Set("fields", googleapi.CombineFields(s))
+	return c
+}
+
+// Context sets the context to be used in this call's Do method. Any
+// pending HTTP request will be aborted if the provided context is
+// canceled.
+func (c *ProvidersEntitlementsPatchCall) Context(ctx context.Context) *ProvidersEntitlementsPatchCall {
+	c.ctx_ = ctx
+	return c
+}
+
+// Header returns an http.Header that can be modified by the caller to
+// add HTTP headers to the request.
+func (c *ProvidersEntitlementsPatchCall) Header() http.Header {
+	if c.header_ == nil {
+		c.header_ = make(http.Header)
+	}
+	return c.header_
+}
+
+func (c *ProvidersEntitlementsPatchCall) doRequest(alt string) (*http.Response, error) {
+	reqHeaders := make(http.Header)
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.13.1 gdcl/20191026")
+	for k, v := range c.header_ {
+		reqHeaders[k] = v
+	}
+	reqHeaders.Set("User-Agent", c.s.userAgent())
+	var body io.Reader = nil
+	body, err := googleapi.WithoutDataWrapper.JSONReader(c.entitlement)
+	if err != nil {
+		return nil, err
+	}
+	reqHeaders.Set("Content-Type", "application/json")
+	c.urlParams_.Set("alt", alt)
+	c.urlParams_.Set("prettyPrint", "false")
+	urls := googleapi.ResolveRelative(c.s.BasePath, "v1/{+name}")
+	urls += "?" + c.urlParams_.Encode()
+	req, err := http.NewRequest("PATCH", urls, body)
+	if err != nil {
+		return nil, err
+	}
+	req.Header = reqHeaders
+	googleapi.Expand(req.URL, map[string]string{
+		"name": c.name,
+	})
+	return gensupport.SendRequest(c.ctx_, c.s.client, req)
+}
+
+// Do executes the "cloudcommerceprocurement.providers.entitlements.patch" call.
+// Exactly one of *Entitlement or error will be non-nil. Any non-2xx
+// status code is an error. Response headers are in either
+// *Entitlement.ServerResponse.Header or (if a response was returned at
+// all) in error.(*googleapi.Error).Header. Use googleapi.IsNotModified
+// to check whether the returned error was because
+// http.StatusNotModified was returned.
+func (c *ProvidersEntitlementsPatchCall) Do(opts ...googleapi.CallOption) (*Entitlement, error) {
+	gensupport.SetOptions(c.urlParams_, opts...)
+	res, err := c.doRequest("json")
+	if res != nil && res.StatusCode == http.StatusNotModified {
+		if res.Body != nil {
+			res.Body.Close()
+		}
+		return nil, &googleapi.Error{
+			Code:   res.StatusCode,
+			Header: res.Header,
+		}
+	}
+	if err != nil {
+		return nil, err
+	}
+	defer googleapi.CloseBody(res)
+	if err := googleapi.CheckResponse(res); err != nil {
+		return nil, err
+	}
+	ret := &Entitlement{
+		ServerResponse: googleapi.ServerResponse{
+			Header:         res.Header,
+			HTTPStatusCode: res.StatusCode,
+		},
+	}
+	target := &ret
+	if err := gensupport.DecodeResponse(target, res); err != nil {
+		return nil, err
+	}
+	return ret, nil
+	// {
+	//   "description": "Updates an existing Entitlement.",
+	//   "flatPath": "v1/providers/{providersId}/entitlements/{entitlementsId}",
+	//   "httpMethod": "PATCH",
+	//   "id": "cloudcommerceprocurement.providers.entitlements.patch",
+	//   "parameterOrder": [
+	//     "name"
+	//   ],
+	//   "parameters": {
+	//     "name": {
+	//       "description": "The name of the entitlement to update.",
+	//       "location": "path",
+	//       "pattern": "^providers/[^/]+/entitlements/[^/]+$",
+	//       "required": true,
+	//       "type": "string"
+	//     },
+	//     "updateMask": {
+	//       "description": "The update mask that applies to the resource.\nSee the [FieldMask definition]\n(https://developers.google.com/protocol-buffers/docs/reference/google.protobuf#fieldmask)\nfor more details.",
+	//       "format": "google-fieldmask",
+	//       "location": "query",
+	//       "type": "string"
+	//     }
+	//   },
+	//   "path": "v1/{+name}",
+	//   "request": {
+	//     "$ref": "Entitlement"
+	//   },
+	//   "response": {
+	//     "$ref": "Entitlement"
+	//   },
+	//   "scopes": [
+	//     "https://www.googleapis.com/auth/cloud-platform"
+	//   ]
+	// }
+
+}
+
+// method id "cloudcommerceprocurement.providers.entitlements.reject":
+
+type ProvidersEntitlementsRejectCall struct {
+	s                        *Service
+	name                     string
+	rejectentitlementrequest *RejectEntitlementRequest
+	urlParams_               gensupport.URLParams
+	ctx_                     context.Context
+	header_                  http.Header
+}
+
+// Reject: Reject an entitlement that is in
+// the
+// EntitlementState.ENTITLEMENT_ACTIVATION_REQUESTED state.
+//
+// This method is invoked by the provider to reject the creation of
+// the
+// entitlement resource.
+func (r *ProvidersEntitlementsService) Reject(name string, rejectentitlementrequest *RejectEntitlementRequest) *ProvidersEntitlementsRejectCall {
+	c := &ProvidersEntitlementsRejectCall{s: r.s, urlParams_: make(gensupport.URLParams)}
+	c.name = name
+	c.rejectentitlementrequest = rejectentitlementrequest
+	return c
+}
+
+// Fields allows partial responses to be retrieved. See
+// https://developers.google.com/gdata/docs/2.0/basics#PartialResponse
+// for more information.
+func (c *ProvidersEntitlementsRejectCall) Fields(s ...googleapi.Field) *ProvidersEntitlementsRejectCall {
+	c.urlParams_.Set("fields", googleapi.CombineFields(s))
+	return c
+}
+
+// Context sets the context to be used in this call's Do method. Any
+// pending HTTP request will be aborted if the provided context is
+// canceled.
+func (c *ProvidersEntitlementsRejectCall) Context(ctx context.Context) *ProvidersEntitlementsRejectCall {
+	c.ctx_ = ctx
+	return c
+}
+
+// Header returns an http.Header that can be modified by the caller to
+// add HTTP headers to the request.
+func (c *ProvidersEntitlementsRejectCall) Header() http.Header {
+	if c.header_ == nil {
+		c.header_ = make(http.Header)
+	}
+	return c.header_
+}
+
+func (c *ProvidersEntitlementsRejectCall) doRequest(alt string) (*http.Response, error) {
+	reqHeaders := make(http.Header)
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.13.1 gdcl/20191026")
+	for k, v := range c.header_ {
+		reqHeaders[k] = v
+	}
+	reqHeaders.Set("User-Agent", c.s.userAgent())
+	var body io.Reader = nil
+	body, err := googleapi.WithoutDataWrapper.JSONReader(c.rejectentitlementrequest)
+	if err != nil {
+		return nil, err
+	}
+	reqHeaders.Set("Content-Type", "application/json")
+	c.urlParams_.Set("alt", alt)
+	c.urlParams_.Set("prettyPrint", "false")
+	urls := googleapi.ResolveRelative(c.s.BasePath, "v1/{+name}:reject")
+	urls += "?" + c.urlParams_.Encode()
+	req, err := http.NewRequest("POST", urls, body)
+	if err != nil {
+		return nil, err
+	}
+	req.Header = reqHeaders
+	googleapi.Expand(req.URL, map[string]string{
+		"name": c.name,
+	})
+	return gensupport.SendRequest(c.ctx_, c.s.client, req)
+}
+
+// Do executes the "cloudcommerceprocurement.providers.entitlements.reject" call.
+// Exactly one of *Empty or error will be non-nil. Any non-2xx status
+// code is an error. Response headers are in either
+// *Empty.ServerResponse.Header or (if a response was returned at all)
+// in error.(*googleapi.Error).Header. Use googleapi.IsNotModified to
+// check whether the returned error was because http.StatusNotModified
+// was returned.
+func (c *ProvidersEntitlementsRejectCall) Do(opts ...googleapi.CallOption) (*Empty, error) {
+	gensupport.SetOptions(c.urlParams_, opts...)
+	res, err := c.doRequest("json")
+	if res != nil && res.StatusCode == http.StatusNotModified {
+		if res.Body != nil {
+			res.Body.Close()
+		}
+		return nil, &googleapi.Error{
+			Code:   res.StatusCode,
+			Header: res.Header,
+		}
+	}
+	if err != nil {
+		return nil, err
+	}
+	defer googleapi.CloseBody(res)
+	if err := googleapi.CheckResponse(res); err != nil {
+		return nil, err
+	}
+	ret := &Empty{
+		ServerResponse: googleapi.ServerResponse{
+			Header:         res.Header,
+			HTTPStatusCode: res.StatusCode,
+		},
+	}
+	target := &ret
+	if err := gensupport.DecodeResponse(target, res); err != nil {
+		return nil, err
+	}
+	return ret, nil
+	// {
+	//   "description": "Reject an entitlement that is in the\nEntitlementState.ENTITLEMENT_ACTIVATION_REQUESTED state.\n\nThis method is invoked by the provider to reject the creation of the\nentitlement resource.",
+	//   "flatPath": "v1/providers/{providersId}/entitlements/{entitlementsId}:reject",
+	//   "httpMethod": "POST",
+	//   "id": "cloudcommerceprocurement.providers.entitlements.reject",
+	//   "parameterOrder": [
+	//     "name"
+	//   ],
+	//   "parameters": {
+	//     "name": {
+	//       "description": "The resource name of the entitlement.\nRequired.",
+	//       "location": "path",
+	//       "pattern": "^providers/[^/]+/entitlements/[^/]+$",
+	//       "required": true,
+	//       "type": "string"
+	//     }
+	//   },
+	//   "path": "v1/{+name}:reject",
+	//   "request": {
+	//     "$ref": "RejectEntitlementRequest"
+	//   },
+	//   "response": {
+	//     "$ref": "Empty"
+	//   },
+	//   "scopes": [
+	//     "https://www.googleapis.com/auth/cloud-platform"
+	//   ]
+	// }
+
+}
+
+// method id "cloudcommerceprocurement.providers.entitlements.rejectPlanChange":
+
+type ProvidersEntitlementsRejectPlanChangeCall struct {
+	s                                  *Service
+	name                               string
+	rejectentitlementplanchangerequest *RejectEntitlementPlanChangeRequest
+	urlParams_                         gensupport.URLParams
+	ctx_                               context.Context
+	header_                            http.Header
+}
+
+// RejectPlanChange: Reject an entitlement plan change that is in
+// the
+// EntitlementState.ENTITLEMENT_PENDING_PLAN_CHANGE_APPROVAL
+// state.
+//
+// This method is invoked by the provider to reject the plan change on
+// the
+// entitlement resource.
+func (r *ProvidersEntitlementsService) RejectPlanChange(name string, rejectentitlementplanchangerequest *RejectEntitlementPlanChangeRequest) *ProvidersEntitlementsRejectPlanChangeCall {
+	c := &ProvidersEntitlementsRejectPlanChangeCall{s: r.s, urlParams_: make(gensupport.URLParams)}
+	c.name = name
+	c.rejectentitlementplanchangerequest = rejectentitlementplanchangerequest
+	return c
+}
+
+// Fields allows partial responses to be retrieved. See
+// https://developers.google.com/gdata/docs/2.0/basics#PartialResponse
+// for more information.
+func (c *ProvidersEntitlementsRejectPlanChangeCall) Fields(s ...googleapi.Field) *ProvidersEntitlementsRejectPlanChangeCall {
+	c.urlParams_.Set("fields", googleapi.CombineFields(s))
+	return c
+}
+
+// Context sets the context to be used in this call's Do method. Any
+// pending HTTP request will be aborted if the provided context is
+// canceled.
+func (c *ProvidersEntitlementsRejectPlanChangeCall) Context(ctx context.Context) *ProvidersEntitlementsRejectPlanChangeCall {
+	c.ctx_ = ctx
+	return c
+}
+
+// Header returns an http.Header that can be modified by the caller to
+// add HTTP headers to the request.
+func (c *ProvidersEntitlementsRejectPlanChangeCall) Header() http.Header {
+	if c.header_ == nil {
+		c.header_ = make(http.Header)
+	}
+	return c.header_
+}
+
+func (c *ProvidersEntitlementsRejectPlanChangeCall) doRequest(alt string) (*http.Response, error) {
+	reqHeaders := make(http.Header)
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.13.1 gdcl/20191026")
+	for k, v := range c.header_ {
+		reqHeaders[k] = v
+	}
+	reqHeaders.Set("User-Agent", c.s.userAgent())
+	var body io.Reader = nil
+	body, err := googleapi.WithoutDataWrapper.JSONReader(c.rejectentitlementplanchangerequest)
+	if err != nil {
+		return nil, err
+	}
+	reqHeaders.Set("Content-Type", "application/json")
+	c.urlParams_.Set("alt", alt)
+	c.urlParams_.Set("prettyPrint", "false")
+	urls := googleapi.ResolveRelative(c.s.BasePath, "v1/{+name}:rejectPlanChange")
+	urls += "?" + c.urlParams_.Encode()
+	req, err := http.NewRequest("POST", urls, body)
+	if err != nil {
+		return nil, err
+	}
+	req.Header = reqHeaders
+	googleapi.Expand(req.URL, map[string]string{
+		"name": c.name,
+	})
+	return gensupport.SendRequest(c.ctx_, c.s.client, req)
+}
+
+// Do executes the "cloudcommerceprocurement.providers.entitlements.rejectPlanChange" call.
+// Exactly one of *Empty or error will be non-nil. Any non-2xx status
+// code is an error. Response headers are in either
+// *Empty.ServerResponse.Header or (if a response was returned at all)
+// in error.(*googleapi.Error).Header. Use googleapi.IsNotModified to
+// check whether the returned error was because http.StatusNotModified
+// was returned.
+func (c *ProvidersEntitlementsRejectPlanChangeCall) Do(opts ...googleapi.CallOption) (*Empty, error) {
+	gensupport.SetOptions(c.urlParams_, opts...)
+	res, err := c.doRequest("json")
+	if res != nil && res.StatusCode == http.StatusNotModified {
+		if res.Body != nil {
+			res.Body.Close()
+		}
+		return nil, &googleapi.Error{
+			Code:   res.StatusCode,
+			Header: res.Header,
+		}
+	}
+	if err != nil {
+		return nil, err
+	}
+	defer googleapi.CloseBody(res)
+	if err := googleapi.CheckResponse(res); err != nil {
+		return nil, err
+	}
+	ret := &Empty{
+		ServerResponse: googleapi.ServerResponse{
+			Header:         res.Header,
+			HTTPStatusCode: res.StatusCode,
+		},
+	}
+	target := &ret
+	if err := gensupport.DecodeResponse(target, res); err != nil {
+		return nil, err
+	}
+	return ret, nil
+	// {
+	//   "description": "Reject an entitlement plan change that is in the\nEntitlementState.ENTITLEMENT_PENDING_PLAN_CHANGE_APPROVAL state.\n\nThis method is invoked by the provider to reject the plan change on the\nentitlement resource.",
+	//   "flatPath": "v1/providers/{providersId}/entitlements/{entitlementsId}:rejectPlanChange",
+	//   "httpMethod": "POST",
+	//   "id": "cloudcommerceprocurement.providers.entitlements.rejectPlanChange",
+	//   "parameterOrder": [
+	//     "name"
+	//   ],
+	//   "parameters": {
+	//     "name": {
+	//       "description": "The resource name of the entitlement.\nRequired.",
+	//       "location": "path",
+	//       "pattern": "^providers/[^/]+/entitlements/[^/]+$",
+	//       "required": true,
+	//       "type": "string"
+	//     }
+	//   },
+	//   "path": "v1/{+name}:rejectPlanChange",
+	//   "request": {
+	//     "$ref": "RejectEntitlementPlanChangeRequest"
+	//   },
+	//   "response": {
+	//     "$ref": "Empty"
+	//   },
+	//   "scopes": [
+	//     "https://www.googleapis.com/auth/cloud-platform"
+	//   ]
+	// }
+
+}
+
+// method id "cloudcommerceprocurement.providers.entitlements.suspend":
+
+type ProvidersEntitlementsSuspendCall struct {
+	s                         *Service
+	name                      string
+	suspendentitlementrequest *SuspendEntitlementRequest
+	urlParams_                gensupport.URLParams
+	ctx_                      context.Context
+	header_                   http.Header
+}
+
+// Suspend: Request suspension of an active Entitlement. This is not yet
+// supported.
+func (r *ProvidersEntitlementsService) Suspend(name string, suspendentitlementrequest *SuspendEntitlementRequest) *ProvidersEntitlementsSuspendCall {
+	c := &ProvidersEntitlementsSuspendCall{s: r.s, urlParams_: make(gensupport.URLParams)}
+	c.name = name
+	c.suspendentitlementrequest = suspendentitlementrequest
+	return c
+}
+
+// Fields allows partial responses to be retrieved. See
+// https://developers.google.com/gdata/docs/2.0/basics#PartialResponse
+// for more information.
+func (c *ProvidersEntitlementsSuspendCall) Fields(s ...googleapi.Field) *ProvidersEntitlementsSuspendCall {
+	c.urlParams_.Set("fields", googleapi.CombineFields(s))
+	return c
+}
+
+// Context sets the context to be used in this call's Do method. Any
+// pending HTTP request will be aborted if the provided context is
+// canceled.
+func (c *ProvidersEntitlementsSuspendCall) Context(ctx context.Context) *ProvidersEntitlementsSuspendCall {
+	c.ctx_ = ctx
+	return c
+}
+
+// Header returns an http.Header that can be modified by the caller to
+// add HTTP headers to the request.
+func (c *ProvidersEntitlementsSuspendCall) Header() http.Header {
+	if c.header_ == nil {
+		c.header_ = make(http.Header)
+	}
+	return c.header_
+}
+
+func (c *ProvidersEntitlementsSuspendCall) doRequest(alt string) (*http.Response, error) {
+	reqHeaders := make(http.Header)
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.13.1 gdcl/20191026")
+	for k, v := range c.header_ {
+		reqHeaders[k] = v
+	}
+	reqHeaders.Set("User-Agent", c.s.userAgent())
+	var body io.Reader = nil
+	body, err := googleapi.WithoutDataWrapper.JSONReader(c.suspendentitlementrequest)
+	if err != nil {
+		return nil, err
+	}
+	reqHeaders.Set("Content-Type", "application/json")
+	c.urlParams_.Set("alt", alt)
+	c.urlParams_.Set("prettyPrint", "false")
+	urls := googleapi.ResolveRelative(c.s.BasePath, "v1/{+name}:suspend")
+	urls += "?" + c.urlParams_.Encode()
+	req, err := http.NewRequest("POST", urls, body)
+	if err != nil {
+		return nil, err
+	}
+	req.Header = reqHeaders
+	googleapi.Expand(req.URL, map[string]string{
+		"name": c.name,
+	})
+	return gensupport.SendRequest(c.ctx_, c.s.client, req)
+}
+
+// Do executes the "cloudcommerceprocurement.providers.entitlements.suspend" call.
+// Exactly one of *Empty or error will be non-nil. Any non-2xx status
+// code is an error. Response headers are in either
+// *Empty.ServerResponse.Header or (if a response was returned at all)
+// in error.(*googleapi.Error).Header. Use googleapi.IsNotModified to
+// check whether the returned error was because http.StatusNotModified
+// was returned.
+func (c *ProvidersEntitlementsSuspendCall) Do(opts ...googleapi.CallOption) (*Empty, error) {
+	gensupport.SetOptions(c.urlParams_, opts...)
+	res, err := c.doRequest("json")
+	if res != nil && res.StatusCode == http.StatusNotModified {
+		if res.Body != nil {
+			res.Body.Close()
+		}
+		return nil, &googleapi.Error{
+			Code:   res.StatusCode,
+			Header: res.Header,
+		}
+	}
+	if err != nil {
+		return nil, err
+	}
+	defer googleapi.CloseBody(res)
+	if err := googleapi.CheckResponse(res); err != nil {
+		return nil, err
+	}
+	ret := &Empty{
+		ServerResponse: googleapi.ServerResponse{
+			Header:         res.Header,
+			HTTPStatusCode: res.StatusCode,
+		},
+	}
+	target := &ret
+	if err := gensupport.DecodeResponse(target, res); err != nil {
+		return nil, err
+	}
+	return ret, nil
+	// {
+	//   "description": "Request suspension of an active Entitlement. This is not yet supported.",
+	//   "flatPath": "v1/providers/{providersId}/entitlements/{entitlementsId}:suspend",
+	//   "httpMethod": "POST",
+	//   "id": "cloudcommerceprocurement.providers.entitlements.suspend",
+	//   "parameterOrder": [
+	//     "name"
+	//   ],
+	//   "parameters": {
+	//     "name": {
+	//       "description": "The name of the entitlement to suspend.",
+	//       "location": "path",
+	//       "pattern": "^providers/[^/]+/entitlements/[^/]+$",
+	//       "required": true,
+	//       "type": "string"
+	//     }
+	//   },
+	//   "path": "v1/{+name}:suspend",
+	//   "request": {
+	//     "$ref": "SuspendEntitlementRequest"
+	//   },
+	//   "response": {
+	//     "$ref": "Empty"
+	//   },
+	//   "scopes": [
+	//     "https://www.googleapis.com/auth/cloud-platform"
+	//   ]
+	// }
+
+}