# v0.1808.0
## Additions
* `api::groups::issues::Issues::epic_id` now supports direct ID
parameters.
* Add `api::issues::Issues` to search for issues instance-wide.
* Add `api::projects::repository::commits::CherryPick` endpoint
# v0.1807.0
## Additions
* Add `api::projects::releases::ProjectReleaseByTag` to get a release by tag
# v0.1806.0
## Additions
* Add `gitlab::Gitlab::new_custom_root_certs` method
* `api::projects::registry::Repositories` now supports the `tags` and
`tags_count` parameters.
* Add `api::projects::registry::repositories::tags::DeleteRepositoryTags`
to delete container repository tags.
* Add `api::registry::repository::RepositoryDetails` endpoint.
* Support the `ci_push_repository_for_job_token_allowed` parameter when
editing a project.
# v0.1805.0
## Additions
* Add missing `api::projects::jobs::JobScope` variants: `Preparing`,
`Canceling`, and `Scheduled` to support all job status values documented
in the GitLab Jobs API.
# v0.1804.0
* Removal of deprecated symbols:
- `api::groups::CreateGroup::default_branch_protection`
- `api::groups::EditGroup::default_branch_protection`
# v0.1803.0
* No changes needed for GitLab 18.3.
# v0.1802.1
## Breaking changes
* Removal of long-deprecated symbols:
- `api::error::ApiError<E>::Gitlab`
- `api::error::ApiError<E>::GitlabObject`
- `api::error::ApiError<E>::GitlabUnrecognized`
- `api::issues::GroupIssues::without_milestone`
- `api::issues::GroupIssues::any_milestone`
- `api::issues::GroupIssues::milestone`
- All specific hook type specifications.
- `api::projects::merge_requests::MergeRequestSearchScope`
## Deprecations
* Deprecation of `ProjectAccessTokensBuilder::description`. This parameter
does not actually exist.
## Additions
* Responses from GitLab now log the [`X-Request-Id` response
header][tracing-correlation-id] at the `debug` level. See
* Add `api::projects::StarProject`, `api::projects::UnstarProject`, and
`api::projects::Starrers` endpoints.
* Add `api::projects::artifacts::DeleteProjectArtifacts` endpoint.
* Add `api::projects::jobs::artifacts::DeleteJobArtifacts` endpoint.
* Add `api::projects::jobs::artifacts::KeepJobArtifacts` endpoint.
* Add `api::projects::jobs::artifacts::DownloadJobArtifacts` endpoint.
* Add `api::projects::jobs::artifacts::DownloadRefJobArtifacts` endpoint.
* Add `api::projects::jobs::artifacts::DownloadJobArtifactFile` endpoint.
* Add `api::projects::jobs::artifacts::DownloadRefJobArtifactFile` endpoint.
[tracing-correlation-id]: https://docs.gitlab.com/administration/logs/tracing_correlation_id/
# v0.1802.0
* No changes needed for GitLab 18.2.
# v0.1801.0
* No changes needed for GitLab 18.1.
# v0.1800.0
## Breaking changes
* `api::projects::JobScope` no longer `impl Hash`; instead it has
`PartialOrd` and `Ord` implementations.
* `api::users::ImpersonationTokenScope` no longer `impl Hash`; instead it has
`PartialOrd` and `Ord` implementations.
## Deprecations
* String representations of `api::projects::labels::LabelColor` are
deprecated. They may still be passed to methods, but there is no way to
trigger a diagnostic.
## Additions
* Support for sorting project lists by `StarCount`.
* Support `member_role_id` when sharing groups via `api::groups::ShareGroup`.
* Support `default_branch`, `enabled_git_access_protocol`, `organization_id`,
`duo_availability`, and `experiment_features_enabled` when creating groups
via `api::groups::CreateGroup`.
* Support `default_branch`, `enabled_git_access_protocol`,
`allowed_email_domains_list`, `duo_availability`,
`experiment_features_enabled`, `math_rendering_limits_enabled`,
`lock_math_rendering_limits_enabled`, `duo_features_enabled`, and
`max_artifacts_size` when editing groups via `api::groups::EditGroup`.
* Support `visibility` and `marked_for_deletion_on` when listing groups via
`api::groups::Groups`.
* Support `masked_and_hidden` when creating group variables via
`api::groups::variables::CreateGroupVariable`.
* Support `masked_and_hidden` when updating group variables via
`api::groups::variables::UpdateGroupVariable`.
* Support `description` when creating project access tokens via
`api::projects::access_tokens::CreateProjectAccessToken`.
* Support `created_after`, `created_before`, `last_used_after`,
`last_used_before`, `revoked`, `search`, `state`, `description`,
`order_by`, and `sort` when listing project access tokens via
`api::projects::access_tokens::ProjectAccessTokens`.
* Support `full_path` and `permanently_remove` when deleting projects via
`api::projects::DeleteProject`.
* Support `merge_after` when creating merge requests via
`api::projects::merge_requests::CreateMergeRequest`.
* Support `merge_after` when editing merge requests via
`api::projects::merge_requests::EditMergeRequest`.
* Support `name` when querying pipelines via
`api::projects::pipelines::Pipelines`.
* Support `masked_and_hidden` when creating project variables via
`api::projects::variables::CreateProjectVariable`.
* Support `masked_and_hidden` when updating project variables via
`api::projects::variables::UpdateProjectVariable`.
* Support `description` when creating personal access tokens via
`api::users::personal_access_tokens::CreatePersonalAccessToken`.
* Support `description` when creating personal access tokens for a user via
`api::users::personal_access_tokens::CreatePersonalAccessTokenForUser`.
* Support `description` when creating impersonation tokens via
`api::users::impersonation_tokens::CreateImpersonationToken`.
* Support `name`, `description`, `branch_filter_strategy`,
`feature_flag_events`, `resource_access_token_events`,
`custom_webhook_template`, and `custom_headers` when creating or editing
project and group hooks via `api::projects::hooks::CreateHook`,
`api::projects::hooks::EditHook`, `api::groups::hooks::CreateHook`, and
`api::groups::hooks::EditHook`.
* Support filtering issues by `Task` type via `api::issues::IssueType`.
* Add a `IssueMilestone::named` constructor to ease usage of non-`Cow`
values.
* Support filtering packages by `Deprecated` status via
`api::packages::PackageStatus`.
* Support `marked_for_deletion_on` when listing projects via
`api::projects::Projects`.
* Support `pipeline_id`, `order_by`, and `sort` when listing commit statuses
via `api::projects::repository::commits::CommitStatuses`.
* Support `Skipped` state for
`api::projects::repository::commits::CreateCommitStatus`.
* Support `username` and `member_role_id` for
`api::groups::members::AddGroupMember`.
* Support `reject_non_dco_commits` when editing project push rules via
`api::projects::push_rule::EditProjectPushRule`.
* Support `include_lfs_blobs` and `exclude_paths` when getting project
repository archives via `api::projects::repository::archive::Archive`.
* Support `with_programming_language`, `id_after`, `id_before`, `membership`,
`statistics`, `updated_after`, and `updated_before` when listing user
projects via `api::users::projects::UserProjects`.
* Support `exclude_active`, `exclude_humans`, and `humans` when listing users
via `api::users::Users`.
* Support setting deploy key access to push to protected branches and tags.
* Support for setting an HTTP user agent via `GitlabBuilder::user_agent`.
* Support project job token scope APIs.
* Add `api::projects::pipelines::PipelineBridges` endpoint
* Add `api::projects::pages` to manage pages settings.
* Add `api::projects::labels::LabelPriority` type
* Add `api::projects::labels::LabelColor` type
* Add `api::projects::labels::EditLabel` to edit project labels.
* `api::common::directory_path_escaped` now exists for escaping
directory paths in URL components.
## Changes
* Support for better error messages for rate limited responses. (#121)
## Bug fixes
* Fix `milestone` parameters when filtering issues within groups or projects.
* Enforce character limits for `ref_`, `target_url`, and `description` when
creating commit statuses via
`api::projects::repository::commits::CreateCommitStatus`.
* Fix `file_name` encoding when it contains a directory paths for package
operations via `api::projects::packages::generic::GetPackageFile` and
`api::projects::packages::generic::UploadPackageFile`
# v0.1711.0
* No changes needed for GitLab 17.11.
# v0.1710.0
* No changes needed for GitLab 17.10.
# v0.1709.3
## Changes
* `DisableProjectRunner` and `EnableProjectRunner` now accept project names
as well. A slight break as the types are now lifetime-aware, but this only
affects code that needed to name the endpoint types across an API boundary
(which should be rare).
# v0.1709.2
## Changes
* Internal dependency version updates; no user-facing changes.
# v0.1709.1
## Additions
* Add support for GitLab API authentication with job tokens.
* Add DeleteTag api
# v0.1709.0
## Breaking changes
* Removal of APIs deprecated prior to 0.1700.0. Includes:
- `api::groups::CreateGroup::emails_disabled`
- `api::groups::EditGroup::emails_disabled`
- `api::groups::Groups::with_projects`
- `api::groups::members::AddGroupMember::tasks_to_be_done`
- `api::groups::members::AddGroupMember::tasks_project_id`
- `api::issues::IssueOrderBy::WeightFields`
- `api::issues::ProjectIssuesBuilder::without_milestone`
- `api::issues::ProjectIssuesBuilder::any_milestone`
- `api::issues::ProjectIssuesBuilder::milestone`
- `api::projects::ContainerExpirationPolicy::name_regex`
- `api::projects::CreateProject::operations_access_level`
- `api::projects::CreateProject::emails_disabled`
- `api::projects::CreateProject::container_registry_enabled`
- `api::projects::CreateProject::tag_list`
- `api::projects::CreateProject::build_coverage_regex`
- `api::projects::CreateProject::approvals_before_merge`
- `api::projects::CreateProject::issues_enabled`
- `api::projects::CreateProject::merge_requests_enabled`
- `api::projects::CreateProject::jobs_enabled`
- `api::projects::CreateProject::wiki_enabled`
- `api::projects::CreateProject::snippets_enabled`
- `api::projects::CreateProject::tag`
- `api::projects::CreateProject::tags`
- `api::projects::EditProject::operations_access_level`
- `api::projects::EditProject::emails_disabled`
- `api::projects::EditProject::container_registry_enabled`
- `api::projects::EditProject::build_coverage_regex`
- `api::projects::EditProject::approvals_before_merge`
- `api::projects::EditProject::issues_enabled`
- `api::projects::EditProject::merge_requests_enabled`
- `api::projects::EditProject::jobs_enabled`
- `api::projects::EditProject::wiki_enabled`
- `api::projects::EditProject::snippets_enabled`
- `api::projects::EditProject::tag`
- `api::projects::EditProject::tags`
- `api::projects::EditProject::printing_merge_requests_link_enabled`
- `api::projects::issues::CreateIssue::epic_iid`
- `api::projects::issues::EditIssue::epic_iid`
- `api::projects::issues::EditIssue::issue_iid`
- `api::projects::issues::EditIssue::remove_labels`
- `api::projects::issues::notes::CreateIssueNote::confidential`
- `api::projects::issues::notes::EditIssueNote::confidential`
- `api::projects::members::ProjectInviteTasksToBeDone`
- `api::projects::members::AddProjectMember::task_to_be_done`
- `api::projects::members::AddProjectMember::tasks_to_be_done`
- `api::projects::members::AddProjectMember::tasks_project_id`
- `api::projects::members::ProjectMember::all_builder`
- `api::projects::members::ProjectMembers::all_builder`
- `api::projects::merge_requests::MergeRequestPipelines`
- `api::projects::merge_requests::MergeRequestPipelinesBuilder`
- `api::projects::merge_requests::MergeRequestPipelinesBuilderError`
- `api::projects::merge_requests::MergeRequestChanges`
- `api::projects::merge_requests::MergeRequestChangesBuilder`
- `api::projects::merge_requests::MergeRequestChangesBuilderError`
- `api::projects::merge_requests::CreateMergeRequest::approvals_before_merge`
- `api::projects::merge_requests::CreateMergeRequest::allow_maintainer_to_push`
- `api::projects::merge_requests::EditMergeRequest::allow_maintainer_to_push`
- `api::projects::merge_requests::EditMergeRequest::remove_labels`
- `api::projects::merge_requests::MergeRequests::search_in`
- `api::projects::merge_requests::note::CreateMergeRequestNote::merge_request_diff_sha`
- `api::projects::merge_requests::note::EditMergeRequestNote::merge_request_diff_sha`
- `api::projects::pipelines::Pipelines::name`
- `api::projects::protected_branches::ProtectedAccessLevel`
- `api::projects::registry::Repositories::tags`
- `api::projects::registry::Repositories::tags_count`
- `api::users::ExternalProvider::id`
- `webhooks::MergeRequestHookAttrs::work_in_progress`
# v0.1708.2
## Fixes
* `hooktypes::HookDate` parsing of local-offset time specifications has been
restored.
# v0.1708.1
## Breaking changes
* `IssueHookAttrs::time_estimate` is allowed to be `null` (observed with a
deployment).
# v0.1708.0
## Additions
* Add `api::projects::variables` to list and delete project-level CI/CD variables.
## Changes
* Add support for `Planner` access levels where necessary. This access level
is new in GitLab 17.7.
# v0.1707.0
## Additions
* Add `api::paged::pagination::Pagination::AllPerPageLimit(usize)` to get all
results with smaller page size. Some endpoints return a 500 Internal Server
Error when trying to fetch 100 results at once.
* Add `api::groups::variables` to manage group-level CI/CD variables similar
to the already available project-level CI/CD variable endpoints.
# v0.1706.0
## Additions
* Properly expose `api::runners::RunnerMetadata` for use with the
`CreateRunner::info` method.
* The following endpoints now support keyset pagination (depending on the
ordering request):
- `api::groups::GroupProjects`
- `api::projects::repository::Tree`
- `api::users::UserProjects`
## Fixes
* `api::projects::repository::CreateCommit` now property forces the encoding
to `base64` when non-UTF-8 contents are detected. This bumps the minimum
Rust version to use the `client_api` feature to 1.66.
* `api::users::Users` now supports keyset pagination when sorting by
`created_at` or `updated_at`.
## Deprecations
* All `webhooks` and `systemhooks` types are deprecated. Parsing hooks should
be done in the client crate to extract the fields of interest. See the
`hooktypes` module for helpers with GitLab-specific oddities.
* Deprecate
`api::issues::GroupIssues::{without_milestone,any_milestone,milestone}` in
preference for `milestone_id`. Previously documented to be deprecated in
0.1602.1, but the attributes were missed.
## Additions
* New `hooktypes` module for stable types to assist in webhook parsing.
* `hooktypes::HookDate` to support parsing dates that appear in webhooks.
* `hooktypes::{HookKind, SystemHookType, WebHookType}` to help classify
webhooks.
# v0.1705.0
## Additions
* Add `ApiError` code variants which give HTTP status codes with the GitLab
error information (#116). These variants are now returned instead of the
status-less variants. The variants without status information are now
deprecated.
# v0.1704.1
## Additions
* Add `api::projects::issues::DeleteIssue` endpoint
* Add `api::projects::issues::notes::DeleteIssueNote` endpoint
* Add `api::projects::approvals::ProjectApprovals` endpoint
* Add `api::projects::approvals::ProjectApprovalRules` endpoint
* Add `api::projects::repository::contributors::Contributors` endpoint
* Add `api::users::CreateRunner` endpoint
* Add `api::project::repository::branches::DeleteBranch` endpoint
* Add `api::merge_requests::*` datatypes (reexported from
`api::projects::merge_requests`)
* Support sorting merge requests by merge date
* Add `api::merge_requests::MergeRequests` endpoint
# v0.1704.0
* No changes needed for GitLab 17.4.
# v0.1703.0
* No changes needed for GitLab 17.3.
# v0.1702.0
## Additions
* Add `api::projects:repository::commits::CompareCommits` endpoint
# v0.1701.0
## Additions
* Add `api::projects::DeleteProject` endpoint
* Add `api::projects::deployments::CreateDeployment` endpoint
* Add `api::projects::deployments::DeleteDeployment` endpoint
* Add `api::projects::deployments::Deployment` endpoint
* Add `api::projects::deployments::Deployments` endpoint
* Add `api::projects::deployments::EditDeployment` endpoint
# v0.1700.1
## Additions
* Add `api::projects::access_tokens::CreateProjectAccessToken` endpoint
* Add `api::projects::access_tokens::ProjectAccessToken` endpoint
* Add `api::projects::access_tokens::ProjectAccessTokens` endpoint
* Add `api::projects::access_tokens::RevokeProjectAccessToken` endpoint
* Add `api::projects::access_tokens::RotateProjectAccessToken` endpoint
# v0.1611.2
## Additions
* Actually build the
`/project/:project/issues/:issue_iid/related_merge_requests` endpoint.
* Add `api::pipelines::PipelineTestReportSummary` endpoint
## Breaking changes
* `api::users::CreatePersonalAccessToken` now uses
`PersonalAccessTokenCreateScope` as this endpoint is actually quite limited
compared to the `CreatePersonalAccessTokenForUser` endpoint.
# v0.1611.1
## Additions
* Add `api::users::CreatePersonalAccessToken` endpoint
* Add `api::users::CreatePersonalAccessTokenForUser` endpoint
* Add `api::personal_access_tokens::PersonalAccessToken` endpoint
* Add `api::personal_access_tokens::PersonalAccessTokenSelf` endpoint
* Add `api::personal_access_tokens::PersonalAccessTokens` endpoint
* Add `api::personal_access_tokens::RevokePersonalAccessToken` endpoint
* Add `api::personal_access_tokens::RevokePersonalAccessTokenSelf` endpoint
* Add `api::personal_access_tokens::RotatePersonalAccessToken` endpoint
* Add `api::personal_access_tokens::RotatePersonalAccessTokenSelf` endpoint
# v0.1611.0
## Breaking changes
* GraphQL support has been updated to use `graphql_client` 0.14.
* The `http` crate has been updated to 1.x.
## Additions
* Add `api::projects::repository::commits::refs` endpoint
* Add `api::pipelines::PipelineTestReport` endpoint
# v0.1610.0
## Additions
* `api::runners::EditRunner` can now edit `maintenance_note`
## Breaking changes
* The `types` module has been removed. Clients should define their own
deserialization types.
* Some `enum` types have been preserved for `webhooks` usage and are now
exported from its module (though `NoteableId` has changed internal
definition to avoid `*Id` types).
* Hook type structures no longer `impl Serialize` as this crate is intended
to parse hooks, not write them.
# v0.1609.2
## Additions
* Add `api::job::Job` endpoint
## Fixes
* Job token authentication is now compliant with its limited permissions.
# v0.1609.1
## Fixes
* The `ProtectedTags` endpoint now `impl Pageable`.
# v0.1609.0
## Breaking changes
* `hooks` types no longer use the `types::*Id` types for simple wrappers.
## Deprecations
* The `types` module and its members have been deprecated. Migrate to
defining types in client crates directly.
# v0.1608.1
## Additions
* `&Endpoint` now has an `impl Endpoint`
* `&Pageable` now has an `impl Pageable`
* `api::paged` now supports `into_iter()` and `into_iter_async()` methods.
* Add `api::runners::Runners` endpoint
* Add `api::runners::AllRunners` endpoint
* Add `api::projects::runners::ProjectRunners` endpoint
* Add `api::projects::runners::EnableProjectRunner` endpoint
* Add `api::projects::runners::DisableProjectRunner` endpoint
* Add `api::groups::runners::GroupRunners` endpoint
* Add `api::runners::Runner` endpoint
* Add `api::runners::EditRunner` endpoint
* Add `api::runners::CreateRunner` endpoint
* Add `api::runners::DeleteRunner` endpoint
* Add `api::runners::DeleteRunnerByToken` endpoint
* Add `api::runners::ResetRunnerAuthenticationToken` endpoint
* Add `api::runners::ResetRunnerAuthenticationTokenByToken` endpoint
* Add `api::runners::VerifyRunner` endpoint
* Add `api::runners::RunnerJobs` endpoint
## Breaking changes
* `api::paged` now requires that the item type be `'static` (shouldn't break
anything).
* `api::Paged::into_iter` now returns a `LazilyPagedIter` with `&'a E` rather
than `E` (shouldn't break anything).
# v0.1608.0
## Additions
* Add `From<&'a String>` impl for `NameOrId<'a>`.
# v0.1607.0
* No changes needed for GitLab 16.7.
# v0.1606.2
## Additions
* `api::projects::releases::CreateRelease`
* Add `api::projects::repository::commits::signature` endpoint.
* Add endpoints for groups/projects access requests `api::projects::access_requests::{access_requests,request,approve,deny}`
and `api::groups::access_requests::{access_requests,request,approve,deny}`.
* Add `api::users::CreateUser`
* The `Endpoint::url_base` method may be used to select the base for the
endpoint's URL. Current options include `UrlBase::ApiV4` and
`UrlBase::Instance`.
* `api::RestClient::instance_endpoint` now has a default implementation of
not supporting `UrlBase::Instance` endpoints.
* `ImpersonationClient` may now be switched to an OAuth2 token like the main
builder can.
## Changes
* Add `JsonEncoded` variant to `BodyError` enum.
* Add `JsonParams` helper to create JSON-bodied queries.
* Update to use the 2021 edition; used in the test suite.
## Breaking changes
* `api::users::ExternalProvider` members are now private; use the associated
`builder()` method to build an instance instead.
# v0.1606.1
## Additions
* Add missing endpoints to `api::projects::merge_requests::awards` and `api::projects::merge_requests::notes::awards`.
* Add `api::projects::issues::awards` and `api::projects::issues::notes::awards` endpoints.
* Add `api::users::projects::UserProjects` endpoint.
* Add `api::projects::ArchiveProject` and `api::projects::UnarchiveProject` endpoints.
* Support `emails_enabled` parameters when creating or editing groups and projects.
* Support filtering groups based on the repository storage.
* Support enforcing expiration on service access tokens for group hooks.
* Support filtering group and project packages by version.
* Support enforcing committer name requirements for push rules.
* Support model experimentl access levels when creating or editng projects.
* Support `unidiff` requests for merge request diffs.
* Support the `SecurityOrchestrationPolicy` for the pipeline source filter.
* Support returning users marked as auditors when listing all users.
* Detect and notify of `301 Moved Permanently` responses.
* Support editing `prevent_merge_without_jira_issue` when editing a project.
* Support filtering projects by those that are hidden or are pending deletion.
* Support keyset pagination for the `/users` endpoint.
* Support authentication with job tokens.
* Support `default_branch_protection_defaults` parameters when creating and editing groups.
* `api::projects::releases::links::ListReleaseLinks`
* `api::projects::releases::links::CreateReleaseLink`
* `api::projects::releases::links::GetReleaseLink`
* `api::projects::releases::links::UpdateReleaseLink`
* `api::projects::releases::links::DeleteReleaseLink`
## Deprecations
* The `emails_disabled` parameter has been replaced by `emails_enabled` when
creating or editing groups and projects.
* The `tasks_to_be_done` and `tasks_project_id` parameters for group and
project memberships have been removed upstream.
## Changes
* `enum` types under the `api` module (with a few exceptions) have been
marked as `#[non_exhaustive] with the intent to keep semver stability
if/when GitLab enhances the API in ways that require these types to change.
# v0.1606.0
* No changes needed for GitLab 16.6.
# v0.1605.2
## Additions
* Add `api::projects::packages::generic::UploadPackageFile` and `api::projects::packages::generic::GetPackageFile` endpoints.
# v0.1605.1
## Fixes
* Fix "self" query used to verify authentication tokens (#96)
# v0.1605.0
## Additions
* Add Email Address to User Hook Attributes.
* Support managing group/project push rules.
* Add `api::projects::merge_requests::MergeRequestDiffs` endpoint.
* `api::paged` iterators can be turned into async `Stream`s using the
`into_async()` method.
* `api::paged` iterators can now set the page number (1-indexed) for direct
access.
* Extend enum `systemhooks::ProjectEvent` with `project_update`
## Fixes
* `api::retry::Client` now forwards the HTTP version for requests as well.
## Deprecations
* Deprecate `api::projects::merge_requests::MergeRequestChanges` endpoint.
Deprecated in GitLab 15.7; use `MergeRequestDiffs` instead.
# v0.1604.0
* No changes needed for GitLab 16.4.
# v0.1603.0
## Additions
* Support `/project/:project/issues/:issue_iid/related_merge_requests`
endpoint.
## Fixes
* Switches `/api/projects/repository/tree` to use ordinary pagination.
## Changes
* Minimum dependency build now requires 1.63 to avoid security advisories.
# v0.1602.1
## Breaking changes
* `api::projects::protected_branches::ProtectBranch::allowed_to_unprotect` no
longer supports the `NoAccess` level as GitLab does not support it. Callers
need to update to use the `ProtectedAccessLevelWithAccess` set of levels
instead.
## Fixes
* Milestone filters for `api::issues::{Group,Project}Issues` now use the
proper query parameter (`milestone_id`).
## Additions
* Add `api::groups::BranchProtection::PushExceptInitial` protection rule.
* Support editing member rule IDs on group and project memberships.
* Support `Upcoming` and `Started` milestone queries for issues.
* Support `skip_users` in group and project member list queries.
* Support `show_seat_info` parameter when listing memberships.
* Support `None` and `Any` epic filters for project issues.
* Support epic filters for group issues.
* Support filtering project and group issues by health status.
* Support `Any`, `Today`, and `Tomorrow` issue due date filters.
* Support sorting issue results by their title.
* Support filtering group issues by their type.
* Support filtering out external users when listing users.
* Support setting and editing the `raw` flag on project CI variables.
* Support setting and editing the `description` field on project CI
variables.
* Support sorting tags by version number.
* Support filtering commits by author.
* Support filtering branches by regex.
* Support setting the `internal` flag for created issue and MR notes.
* Support the `WaitingForResource` job scope when filtering jobs.
* Support the `include_retried` field for project jobs.
* Support filtering MRs by approver usernames.
* Support filtering MRs by whether they are approved or not.
* Support setting `merge_commit_template` when creating a project.
* Support setting `mr_default_target_self` when creating a project.
* Support IP restriction ranges when editing groups.
* Support wiki access level when editing groups.
* Support project download limit parameters when editing groups.
* Support filtering projects by last updated timestamps.
* Support skipping LDAP users when searching users.
* Support downloading raw file contents backed by LFS.
* Support setting and editing access levels for `releases`, `environments`,
`feature flags`, `infrastructure`, and `monitor` project features.
* Support setting and editing the
`only_allow_merge_if_all_status_checks_passed` flag on projects.
* Support setting and editing group runner support on projects.
* Support editing `mirror_branch_regex` on projects.
* Support editing `ci_allow_fork_pipelines_to_run_in_parent_project`,
`enforce_auth_checks_on_uploads`, `issue_branch_template`,
`allow_pipeline_trigger_approve_deployment`, and
`ci_forward_deployment_rollback_allowed` settings on projects.
## Changes
* Deprecate
`api::issues::{Group,Project}Issues::{without_milestone,any_milestone,milestone}`
in preference for `milestone_id`. With new enumerations possible, using the
actual name for the parameter is best with the actual type exposed.
* The `ref` parameter for raw file contents is no longer required. If not
provided, the repository's `HEAD` commit will be used.
* Deprecate including `tags` and `tags_count` in project registry repository
queries. Removed in GitLab 15.0.
* Deprecate MR note creation and editing with `merge_request_diff_sha`
fields. The documentation had a typo and it is only supported when creating
an MR note. Use `merge_request_diff_head_sha` instead.
* Deprecate `approvals_before_merge` in project creation and editing and MR
creation. MR approval rules APIs (currently no bindings are provided)
should be used instead.
* Deprecate `confidential` for issue notes. Use `internal` instead, but note
that it is only available at note creation and cannot be edited later.
* `ProtectedAccess` is now a generic type in order to support different
fields with different available access levels. Most call sites should not
be affected.
* Deprecate `build_coverage_regex` when creating and editing a project. This
setting is now set via `.gitlab-ci.yml` rather than at the project-level.
* Deprecate `operations_access_level` for more granular feature selections.
# v0.1602.0
## Additions
* Pipeline schedule API endpoints added.
* Introduce the `draft` field to all MergeRequest structs.
## Changes
* Deprecate the `work_in_progress` field on all MergeRequest structs.
# v0.1601.0
## Fixes
* `api::projects::registry::RepositoryTags` is now `Pageable`.
## Changes
* `api::projects::Jobs` now supports keyset pagination.
# v0.1600.1
* CI updates to publish via CI.
# v0.1600.0
## Additions
* Support for GET /projects/:id/repository/files/:file_path endpoint
# v0.1511.0
## Additions
* Add "title" to `webhooks::MergeRequestChanges`.
* Support `/projects/:id/packages/:package_id` endpoint
* Support `/projects/:id/packages/:package_id/package_files` endpoint
* Support `/projects/:id/packages/:package_id/package_files/:package_file_id` endpoint
* Support `/groups/:id/packages` endpoint.
* New endpoints for creating commits with `gitlab::api::projects::repository::commits::CreateCommit`
# v0.1510.0
## Additions
* Add "approval" and "unapproval" to `webhooks::MergeRequestAction`.
# v0.1509.0
## Additions
* Expose `RestError` at the crate root.
* Add an `ImpersonationClient` type to use impersonation tokens with an
existing client.
* Support `/projects/:id/packages` endpoint.
# v0.1508.0
## Additions
* Add API endpoint `api::projects::merge_requests::approval_rules`.
# v0.1507.0
## Additions
* Implement `Clone` for structs that implement `Endpoint`.
* Support for container registry endpoints.
* Support `/project/:project/repository/archive` endpoint.
# v0.1506.0
* No changes needed for GitLab 15.6.
# v0.1505.0
* No changes needed for GitLab 15.5.
# v0.1504.0
## Additions
* API endpoints for user impersonation tokens.
# v0.1503.0
## Additions
* `types::GroupHook` has been added.
* New endpoints for:
- Creating, getting, editing, listing and deleting group hooks.
* Support for `Push` branch protections when creating groups.
* Support for sorting project search results by `Similarity`.
* Support for setting group shared runner settings, `path`,
`prevent_sharing_groups_outside_hierarchy`,
`prevent_forking_outside_group`, and `file_template_project_id`.
* Support for `invite_source`, `tasks_to_be_done`, and `tasks_project_id`
when adding a member to a group or project.
* Support `skip_subresources` when deleting group memberships.
* Support for filtering on `epic_id` when listing issues.
* Support for issue types when creating, editing, and filtering issues.
* Support sorting merge requests by title.
* Support requesting retried jobs when requesting pipeline jobs.
* Support pipeline status states `Preparing` and `WaitingForResource`.
* Support setting the `security_and_compliance_access_level` when creating
and editing projects.
* Support editing the `mr_default_target_self` and `ci_separated_caches`
project fields.
* Support setting variables when playing manual jobs.
* Support `merge_request_diff_sha` when editing and creating MR notes
(required for the `/merge` command).
* Support filtering pipelines by their source.
* Support allowing force pushes when protecting branches.
* Support including HTML descriptions in project releases.
* Support sorting parameters for project releases.
* Support including trailers in commit queries.
* Support `execute_filemode` and `last_commit_id` when editing files through
the API.
* Support querying custom attributes of users.
* Support `without_project_bots` and `saml_provider_id` when listing users.
* Support for filtering projects based on import status and topics.
* Support for finer-grained creation rules for protected tags.
* Support filters when updating project pipeline variables.
* Keyset pagination is now supported for group searches ordered by name.
* Support filtering groups based on custom attributes.
* The `all` project membership endpoints have been split out.
## Deprecations
* `api::issues::IssueOrderBy::WeightFields` is now
`api::issues::IssueOrderBy::Weight`. The old name seems to come from a
misreading of the documentation's list of supported fields. Its field name
has also been fixed to `weight` instead of `weight_fields`.
* `api::projects::{CreateProject, EditProject}::container_registry_enabled`
is deprecated in favor of `container_registry_access_level`.
* `api::projects::{CreateProject, EditProject}::{tag, tags}` are deprecated
in favor of `topic` and `topics`.
* `api::projects::merge_requests::MergeRequests::search_in` is deprecated
because GitLab doesn't actually have such a query parameter.
* `api::projects::merge_requests::MergeRequestSearchScope` is deprecated
because GitLab doesn't actually have such a query parameter it represented.
* `api::projects::pipelines::Pipelines::name` is deprecated; GitLab never
supported such a parameter.
* `api::projects::members::{ProjectMember, ProjectMembers}::all_members` is
deprecated. The `all` endpoints have different parameters, so merging them
doesn't work anymore.
## Breaking changes
* `api::deploy_keys::DeployKeys::public` is now private.
* `api::projects::{CreateProject, EditProject}::requirements_access_level` do
not support `Public`, so they now uses `api::FeatureAccessLevel` instead of
`api::FeatureAccessLevelPublic`.
* `api::users::Users::external` is now a `()` instead of `bool` because
GitLab doesn't actually support `external=false`.
* `api::projects::repository::Tree` now uses keyset pagination and requires
GitLab 15.0. Page-based iteration has been deprecated by GitLab.
* `api::projects::variables::ProjectVariableFilter::environment_scope` is now
private.
# v0.1502.0
## Changes
* `graphql_client` has been updated to 0.11.
# v0.1501.0
## Changes
* `api::projects::merge_requests::MergeRequestPipelines` and associated
structures have been moved to `api::projects::merge_requests::pipelines`.
## Fixes
* `api::projects::edit::EditProject` fixes a typo from
`printing_merge_requests_link_enabled` to
`printing_merge_request_link_enabled`
* `api::projects::protected_branches::ProtectedBranches` is now paginated.
## Additions
* `types::UserState::Deactivated` has been added.
* New endpoints for:
- Sharing and unsharing groups
- Listing shared projects in a group
- Sharing and unsharing projects
- Creating a pipeline on a merge request
* New fields on `types::Hook`:
- `push_events_branch_filter`
- `issues_events`
- `confidential_issues_events`
- `merge_requests_events`
- `note_events`
- `confidential_note_events`
- `repository_update_events`
- `job_events`
- `pipeline_events`
- `wiki_page_events`
* New fields on `types::ProjectHook`:
- `deployment_events`
- `releases_events`
* New fields on `types::Project`:
- `build_git_strategy`
- `ci_default_git_depth`
* New fields on `webhooks::MergeRequestHook`:
- `changes`
* New `webhooks::MergeRequestChanges` structure
# v0.1500.0
* No changes needed for GitLab 15.0.
# v0.1410.0
* No changes needed for GitLab 14.10.
-------
# v0.1409.1 (unreleased)
## Additions
* The `api::projects::repository::branches::Branches` endpoint is now pageable.
* Extend type `webhooks::MergeRequestHook` with changes entry
* The `api::projects::protected_branches::ProtectedBranches` endpoint is now pageable.
* Extend UserState enum with Deactivated
* Extend Hook type with fields:
- push_events_branch_filter
- issues_events
- confidential_issues_events
- merge_requests_events
- note_events
- confidential_note_events
- job_events
- pipeline_events
- wiki_page_events
- repository_update_events
* Extend Project type with fields:
- build_git_strategy
- ci_default_git_depth
* Move api endpoint `api::projects::merge_requests::pipelines` to `api::projects::merge_requests::pipelines::pipelines`
* Add api endpoint `api::projects::merge_requests::pipelines::create`
* Fix parameters for editing projects:
- printing_merge_request_link_enabled
-------
# v0.1409.0
* No changes needed for GitLab 14.9.
# v0.1408.0
## Additions
* Added the `api::projects::merge_trains` endpoint to get merge trains
for a specific project.
# v0.1407.0
## Breaking changes
* `types::RepoCommit::parent_ids` is now an `Option`.
## Fixes
* Protected tags with special URL characters (namely `/`) are now handled
properly with `api::projects::protected_tags::ProtectedTag`.
* Tags on a repository are now pageable.
* The `types::DiscussionNoteType::Note` variant has been added.
## Additions
* Groups can now be edited via `EditGroup`.
* New `rustls` feature to support static linking (no OpenSSL).
* New type definitions for:
- `MergeRequestCommit`
- `ProjectVariable`
- `ProtectedTagAccessLevel`
- `ProtectedTag`
- `ReleaseTag`
- `Tag`
* New endpoints for:
- Creating, updating, and inspecting project-level pipeline variables.
- Deleting project hooks.
- Getting tree object from projects.
- Updating a file in a project.
- Getting merge requests associated with a commit.
- Getting commits of a merge request.
- Deleting a file from the repository.
- Deploy keys
* New parameters for creating projects:
- `container_registry_access_level`
- `merge_pipelines_enabled`
- `merge_trains_enabled`
- `squash_option`
- `topics`
* New parameters for editing projects:
- `container_registry_access_level`
- `merge_commit_template`
- `squash_commit_template`
- `issues_template`
- `merge_requests_template`
- `squash_option`
- `merge_pipelines_enabled`
- `merge_trains_enabled`
- `printing_merge_requests_link_enabled`
- `topics`
- `keep_latest_artifact`
* Repository branches are now pageable
## Changes
* Use explicit type for referencing associated items for rustc 1.57
# v0.1406.0
* No changes needed for GitLab 14.6.
# v0.1405.1
* No functional changes. Only documentation and tests were updated.
# v0.1405.0
## Additions
* Missing `Builder` type exports have been added.
## Breaking changes
* The error types from `Builder` instances are now distinct per builder type.
# v0.1404.0
## Additions
* Added the `first_contributors` field to `api::projects::merge_requests::MergeRequest`
* Added the `api::projects::merge_requests::pipelines` endpoint to get
the pipelines attached to a merge request
* Added the `api::projects::merge_requests::changes` endpoint to get
information about a merge request along with diffs
* Made field `code_owner_approval_required` in `types::ProtectedRepoBranch`
an `Option<bool>` instead of `bool` as the field is only present in
Gitlab premium
* Added `Paged::iter_async` returning a paginated asynchronous stream
analogous to `Pages::iter`.
* Added the `api::groups::issues::Issues` endpoint to get issues associated
with a group.
* Added support for TLS-authenticated clients to `GitlabBuilder`
# v0.1403.0
* No changes needed for GitLab 14.3.
# v0.1402.0
## Additions
* Added the `api::projects::merge_requests::approvals::MergeRequestApprovals`
endpoint to get approvals of a merge request.
* Added graphql requests to the async client.
* The `Gitlab` client now supports unauthenticated connections.
## New features
* Clients may be wrapped by `api::retry::Client` in order to perform
exponential backoff for service-side errors. Backoff parameters are
configurable via the `api::retry::Backoff` structure.
# v0.1401.0
## Breaking changes
* `types::MergeRequest::source_project_id` is now an `Option<ProjectId>`
# v0.1400.0
## Changes
* A new `RestClient` trait has been refactored from `Client` and
`AsyncClient`.
* The `api::paged` type now has an `.iter()` method which may be used to
iterate over paginated results using lazily fetched API results. This can
be used to reduce memory usage for large result sets.
* Added a `confidential` parameter for `api::projects::issues::EditIssue`
* GitLab responses which do not return JSON (e.g., 5xx status codes) are now
caught as the `ApiError::GitlabService` error variant. Previously, the JSON
deserialization would have been exposed.
# v0.1312.0
## Breaking changes
* Allow arbitrary strings for the UID of `ExternalProvider` matching what the
API expects and allows.
# v0.1311.2
## Additions
* Project hooks can now be edited via `EditHook`.
# v0.1311.1
## Breaking changes
* Upgraded `reqwest` and `bytes` which use tokio 1.0.
# v0.1311.0
## Additions
* Added the `api::projects::releases::ProjectReleases` endpoint to list all
releases for a project.
* Added tags related api endpoints under `api::projects::repository::tags`
* Listing commits in a repository can now be done via `Commits`
* Added asynchronous API for query `api::AsyncQuery` and client `api::AsyncClient`.
* Added asynchronous client `AsyncGitlab` (created by `GitlabBuilder::build_async`).
# v0.1310.0
## Additions
* `types::{Pipeline,PipelineBasic}` now have a `project_id` member.
# v0.1309.0
## Breaking changes
* `ParamValue::as_value` now takes its value as `&self` rather than `self`.
This was required in order to implement `CommaSeparatedList` reliably.
* Merge request discussions on code now have a more fine-grained API. This
change was made by GitLab and is just being followed by the crate.
## Additions
* `api::common::CommaSeparatedList` now exists for easy use of
comma-separated values.
* Project members can now be removed via `RemoveProjectMember`.
* Group members can now be edited via `EditGroupMember`.
* Project members can now be edited via `EditProjectMember`.
## Deprecations
* `EditIssue::remove_labels` is deprecated in favor of the better
`clear_labels` wording.
* `EditMergeRequest::remove_labels` is deprecated in favor of the better
`clear_labels` wording.
## Changes
* API bindings for the `"minimal"` access level.
* Groups can have "inherit" set as their shared runner minute limit.
* Listing groups can now be set to only return top-level groups.
* Searching for projects within a group can now be sorted by a similarity
score based on the search criteria.
* Project container expiration policies can now use an arbitrary "keep n"
count.
* Project container expiration policies now have `name_regex_delete`
(replacing the now-deprecated `name_regex`) and `name_regex_keep`.
* Projects can now be created and edited with `operations_access_level`
settings.
* Projects can now be created and edited with `requirements_access_level`
settings.
* Projects can now be created and edited with `analytics_access_level`
settings.
* Projects can now be created and edited with `show_default_award_emojis`
settings.
* Projects can now be created and edited with
`restrict_user_defined_variables` settings.
* Projects can now be created and edited with
`allow_merge_on_skipped_pipeline` settings.
* Projects can now be edited with `ci_forward_deployment_enabled` settings.
* Environments can now be filtered by their deployment state.
* Project hooks can now be registered for events related to confidential
notes, deployments, and releases.
* Issues can now be edited with incremental label changes.
* Issues can now be filtered by iterations, due dates, and search queries can
now be scoped.
* Issue notes can now be created and edited with the confidential flag.
* Project labels can be filtered by search queries.
* Project members can now be edited in batch (using multiple IDs).
* Merge requests can now be created and edited with reviewer settings.
* Merge requests can now be created with the `approvals_before_merge`
setting.
* Merge request discussions can now be created on a specific commit.
* Merge requests can now be edited with incremental label changes.
* Merge requests can now be filtered by search scopes.
* Merge requests can now trigger merge status rechecks when listing.
* Merge requests can now be filtered by reviewer.
* Merge requests can now be filtered by environment status.
* API bindings for the `"scheduled"` pipeline status.
* Projects can now be sorted by various resource sizes.
* Projects can now be filtered by storage backend.
* Users can now be filtered by GitLab-internal users and administrator
status.
* Group member removal can now specify to unassign issuables.
# v0.1308.0
* No changes needed for GitLab 13.8.
# v0.1307.0
## Additions
* Added `api::projects::repository::files::FileRaw`
* Added `api::projects::merge_requests::approval_state::MergeRequestApprovalState`
query to access the approval rules state of a particular merge request.
# v0.1306.0
* No changes needed for GitLab 13.6.
# v0.1305.1
## Changes
* Changed `ci_config_path` to `Option<String>` in `gitlab::webhooks::PipelineHookAttrs`
# v0.1305.0
## Additions
* Added `head_pipeline_id` field to `gitlab::webhooks::MergeRequestHookAttrs`
# v0.1304.0
## Changes
* Error types now use `#[non_exhaustive]`
# v0.1303.0
## Additions
* Added `gitlab::webhooks::PipelineHook`
# v0.1302.2
## Additions
* `Id` types now implement `Hash`
# v0.1302.1
## Additions
* Added `api::projects::issues::MergeRequestsClosing` and
`api::projects::issues::MergeRequestsClosing`
## Fixes
* GitLab 13.2 added the `approved` and `unapproved` merge request actions for
CE.
# v0.1302.0
## Additions
* Added the `api::projects::protected_tags::ProtectTag`
`api::projects::protected_tags::UnprotectTag`
`api::projects::protected_tags::ProtectedTag`
`api::projects::protected_tags::ProtectedTags` endpoint to query, protect
and unprotect a projects tags.
* Added the `api::projects::labels::DeleteLabel` endpoint to delete existing
labels from a project.
* Added the `api::projects::labels::PromoteLabel` endpoint to promote a project
label to a group label.
* Added the `api::projects:merge_requests::MergeMergeRequest` endpoint to
merge open merge requests.
* Added the `api::projects:merge_requests::RebaseMergeRequest` endpoint to
rebase open merge requests when using the fast-forward merge model.
* Added the `api::projects:merge_requests::ApproveMergeRequest` endpoint to
approve open merge requests.
* Added the `api::projects:merge_requests::UnapproveMergeRequest` endpoint to
unapprove approved merge requests.
# v0.1301.1
## Changes
* Updated `api::projects::members::ProjectMember[s]` to support the ability
to include member details for those members that have access as a result
of belonging to ancestor/enclosing groups, in addition to directly added
members.
* Allow a label via the `api::projects::labels::Label` endpoint to be queried
by id or name.
## Additions
* Added the `api::groups::projects::GroupProjects` endpoint to list a groups
projects.
* Added the `api::groups::subgroups::GroupSubgroups` endpoint to list a
groups subgroups.
* Added the `api::projects::protected_branches::ProtectedBranches` endpoint
to list a projects protected branches.
* Added the `api::projects::protected_branches::ProtectedBranch` endpoint
to query a projects protected branch.
## Fixes
* Added pagination support to `api::projects::labels::Labels`
* Keyset pagination also supports the to-be-removed (14.0) `Links` HTTP
header.
# v0.1301.0
## Deprecations
* The REST endpoint methods on the `Gitlab` structure have been removed.
Associated helper structures for resource creation endpoints have been
removed as well:
- `CreateMergeRequestParams`
- `CreateMergeRequestParamsBuilder`
- `CreateGroupParams`
- `CreateGroupParamsBuilder`
- `CreateProjectParams`
- `CreateProjectParamsBuilder`
- `MergeMethod`
- `BuildGitStrategy`
- `AutoDeployStrategy`
- `WebhookEvents`
- `CommitStatusInfo`
- `MergeRequestStateFilter`
- `RepoFile`
- `ProjectFeatures`
- `QueryParamSlice`
- `QueryParamVec`
* Now-impossible error conditions have been removed from `GitlabError`.
# v0.1300.0
## Deprecations
* All methods on the `Gitlab` structure now have `Endpoint` structures
implemented. In a future release, these methods (and their support types)
will be removed.
* The `Serialize` implementations of the API types are deprecated (though
marking them as such is difficult).
## Changes
* The `api::projects::issues::Issues` endpoint's `milestone` field was
changed to match the actual API exposed by GitLab (with `None` and `Any`
options).
* The `api::projects::pipelines::PipelineVariables` endpoint is now pageable.
* All `EnableState` fields may now be set using `bool` values.
* The `api::projects::merge_requests::EditMergeRequest` endpoint now supports
unlabeling a merge request.
* The `api::Client` trait has been changed to use the `http` crate types.
This allows for clients to not be tied to `reqwest` and for mocking and
testing of the endpoints themselves.
* GitLab errors now detect error objects returned from the API.
## Fixes
* The `min_access_level` field for `api::groups::Groups` and the
`access_level` for `api::projects::members::AddProjectMember` are now
properly passed as integers to the API. (#42)
* The path used for the project and group milestone endpoints has been fixed.
# v0.1210.2
## New request body handling
It was observed (#41) that the new API pattern was not handling `POST` and
`PUT` parameters properly. This has now been fixed.
## New request parameter handling
In the process of updating the body handling, a simpler pattern for query
parameters was also implemented.
## Additional merge status cases
Some additional merge status names for merge requests were missing and have
been added.
## Fixes
* The `api::projects::environments::Environment` endpoint uses the correct
path now.
* The `api::groups::members::GroupMembers`,
`api::projects::members::ProjectMembers`, and
`api::projects::repository::Branches` endpoints now accepts plain strings
for their `query` fields.
* The `api::projects::protected_branches::UnprotectBranch` endpoint now
properly escapes branch names with URL-special characters.
* The `api::projects::repository::CreateFile` endpoint now properly upgrades
the encoding when attempting to encode binary contents using
`Encoding::Text`.
* The `api::projects::CreateProject` and `api::projects::EditProject`
endpoints now accepts plain strings in its `import_url` field.
## Changes
* The `api::projects::issues::EditIssue` now uses `issue` rather than
`issue_iid` for consistency.
# v0.1210.1
## New API strategy
A new pattern for API implementation is now underway. Instead of methods
directly on the `Gitlab` instance, there are now structures which implement an
`api::Endpoint` trait. This trait may be used to query any structure
implementing the `api::Client` trait using the `api::Query` trait. All
endpoints use the "builder" pattern to collect required and optional
parameters.
There are some adaptor functions to handle various use cases:
- `api::paged`: This may be used to handle pagination of any endpoint which
supports it (checked at compile time).
- `api::ignore`: This may be used to ignore the content of the response for
any endpoint. HTTP and GitLab error messages are still captured.
- `api::raw`: Instead of deserializing the contents of the result from GitLab
into a structure, the raw bytes may be fetched instead using this function.
- `api::sudo`: This function adapts any endpoint into being called as another
user if the client is able to do so (basically, is an administrator).
The `api::Query` trait deserializes the contents from GitLab into any structure
which implements the `serde::DeserializeOwned` trait. This can be used to only
grab information of interest to the caller instead of extracting all of the
information available through the `types` module.
If your endpoint is deprecated, it has been marked as such and you should
migrate to the new pattern. Please see the docs for available endpoints.
All new endpoint implementations should use the new pattern rather than adding
methods to `Gitlab`. Result structures do not need to be added to this crate
either. It is expected that they too will be deprecated at some point and
either not provided or moved to a dedicated crate.
### Examples:
```rust
use std::env;
use serde::Deserialize;
use gitlab::Gitlab;
use gitlab::api::{self, projects, Query};
#[derive(Debug, Deserialize)]
struct Project {
name: String,
}
fn example() {
// Create the client.
let client = Gitlab::new("gitlab.com", env::get("GITLAB_TOKEN").unwrap()).unwrap();
// Create a simple endpoint.
let endpoint = projects::Project::builder().project("gitlab-org/gitlab").build().unwrap();
// Get the information.
let project: Project = endpoint.query(&client).unwrap();
// Call it again, but ignore the response from GitLab.
let _: () = api::ignore(endpoint).query(&client).unwrap();
// Create an endpoint that supports pagination.
let pageable_endpoint = projects::Projects::builder().build().unwrap();
// Get just the first page (20 results).
let first_page: Vec<Project> = pageable_endpoint.query(&client).unwrap();
// Get 200 results instead.
let first_200_projects: Vec<Project> = api::paged(pageable_endpoint, api::Pagination::Limit(200)).query(&client).unwrap();
// Query `gitlab-org/gitlab` except by ID this time.
let endpoint = projects::Project::builder().project(278964).build().unwrap();
// Get the raw data from the response.
let raw_data: Vec<u8> = api::raw(endpoint).query(&client).unwrap();
}
```
## Changes
* Include a changelog.