gitlab 0.1610.0

Gitlab API client.
Documentation
# Contributing

Welcome to the GitLab bindings crate for Rust! This crate aims to offer
definitions of all of GitLab's API endpoints. The API patterns involved are
documented in [this blog post][designing-rust-bindings-for-rest-apis].

[designing-rust-bindings-for-rest-apis]: https://plume.benboeckel.net/~/JustAnotherBlog/designing-rust-bindings-for-rest-ap-is

This design means that this crate aims to define:

- basic endpoint types
- endpoint combinators
- authentication mechanisms
- endpoint definitions themselves

It also means that it does *not* provide:

- definitions for response types
- server-version-aware variants of the API

Eventually, the API should adhere to semver, but it is hard to give a timeline.

## Type definitions and webhooks

Older releases of this crate tried to define endpoints as methods and define
the response types. This did not scale well. As such, the `types` module is
deprecated as of `0.1609.0`.

The `hooks`, `systemhooks`, and `webhooks` are hard to provide semver
guarantees and may be migrated to their own crate in the future.

None of the hook or types modules provide any semver guarantees.

## Guidelines

### Implementing an endpoint

- [ ] Add an entry to `CHANGELOG.md`. If there is no new section after a
      release, add a new section with a bumped patch number and ` (unreleased)`
      after the new version number.
- [ ] Update `src/api/README.md`:
  - [ ] Move the endpoint from the `Todo` section to the `Implemented` section,
        keeping things sorted.
  - [ ] If implementing an API from a page in the `Endpoint groups` section,
        please add all unimplemented endpoints to the `Todo` list and remove
        the entry from the list of files.
- [ ] All `Endpoint` structs must be `Clone`.
- [ ] Use `#[builder(setter(strip_option))]` if-and-only-if the endpoint has
      `Option` parameters.
- [ ] For `BTreeSet` and/or `Vec` parameters, make the default builder methods
      private and offer:
      - [ ] a method to reset and/or remove items
      - [ ] a method to add a single item
      - [ ] a method to add a sequence of items from an `Iterator` (if
            sensible)
- [ ] Test that each required parameter is actually required by providing all
      required parameters except the parameter under test.
- [ ] For each optional parameter, add a test which provides the required
      parameters and the single optional parameter.
- [ ] Expose the endpoint, its builder, and its builder error in the parent
      module.
- [ ] Consider whether the endpoint should `impl Pageable` or not.

### Adding a new parameter

- [ ] Add an entry to `CHANGELOG.md`. If there is no new section after a
      release, add a new section with a bumped patch number and ` (unreleased)`
      after the new version number.
- [ ] All `enum` types backing parameters should (generally) be
      `#[non_exhaustive]` because GitLab can add new variants at any time.
- [ ] Add tests for all `enum` types implementing `ParamQuery` and `Default`.
- [ ] Expose any new `enum` types in the parent module.