Repository: xanzy/go-gitlab
Pull request #1033 (2021-01-14 06:09:02)

Add ContainerExpirationPolicyAttributes
The project API contains settings for changing the container expiration policy. 

This PR implements these settings for both the create / edit project as well as for retrieving the project settings.


Patch:
diff --git a/CHANGELOG.md b/CHANGELOG.md
new file mode 100644
index 0000000..29e93ff
--- /dev/null
+++ b/CHANGELOG.md
@@ -0,0 +1,27 @@
+go-github CHANGELOG
+===================
+
+0.6.0
+-----
+- Add support for the V4 Gitlab API. This means the older V3 API is no longer fully supported
+  with this version. If you still need that version, please use the `f-api-v3` branch.
+
+0.4.0
+-----
+- Add support to use [`sudo`](https://docs.gitlab.com/ce/api/README.html#sudo) for all API calls.
+- Add support for the Notification Settings API.
+- Add support for the Time Tracking API.
+- Make sure that the error response correctly outputs any returned errors.
+- And a reasonable number of smaller enhanchements and bugfixes.
+
+0.3.0
+-----
+- Moved the tags related API calls to their own service, following the Gitlab API structure.
+
+0.2.0
+-----
+- Convert all Option structs to use pointers for their fields.
+
+0.1.0
+-----
+- Initial release.
diff --git a/access_requests.go b/access_requests.go
index 75757bc..fa00d75 100644
--- a/access_requests.go
+++ b/access_requests.go
@@ -1,19 +1,3 @@
-//
-// Copyright 2021, Sander van Harmelen
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//     http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-//
-
 package gitlab
 
 import (
diff --git a/applications.go b/applications.go
index 9e125cf..496f7a8 100644
--- a/applications.go
+++ b/applications.go
@@ -1,5 +1,5 @@
 //
-// Copyright 2021, Sander van Harmelen
+// Copyright 2017, Sander van Harmelen
 //
 // Licensed under the Apache License, Version 2.0 (the "License");
 // you may not use this file except in compliance with the License.
diff --git a/award_emojis.go b/award_emojis.go
index 7ed797a..d365472 100644
--- a/award_emojis.go
+++ b/award_emojis.go
@@ -1,5 +1,5 @@
 //
-// Copyright 2021, Arkbriar
+// Copyright 2017, Arkbriar
 //
 // Licensed under the Apache License, Version 2.0 (the "License");
 // you may not use this file except in compliance with the License.
diff --git a/boards.go b/boards.go
index b12cace..eed377c 100644
--- a/boards.go
+++ b/boards.go
@@ -1,5 +1,5 @@
 //
-// Copyright 2021, Sander van Harmelen
+// Copyright 2015, Sander van Harmelen
 //
 // Licensed under the Apache License, Version 2.0 (the "License");
 // you may not use this file except in compliance with the License.
diff --git a/branches.go b/branches.go
index 762fbf0..df5facd 100644
--- a/branches.go
+++ b/branches.go
@@ -1,5 +1,5 @@
 //
-// Copyright 2021, Sander van Harmelen
+// Copyright 2017, Sander van Harmelen
 //
 // Licensed under the Apache License, Version 2.0 (the "License");
 // you may not use this file except in compliance with the License.
diff --git a/broadcast_messages.go b/broadcast_messages.go
index a71ac7f..0824710 100644
--- a/broadcast_messages.go
+++ b/broadcast_messages.go
@@ -1,5 +1,5 @@
 //
-// Copyright 2021, Sander van Harmelen
+// Copyright 2018, Sander van Harmelen
 //
 // Licensed under the Apache License, Version 2.0 (the "License");
 // you may not use this file except in compliance with the License.
diff --git a/ci_yml_templates.go b/ci_yml_templates.go
index 2735f5c..1f5ca5c 100644
--- a/ci_yml_templates.go
+++ b/ci_yml_templates.go
@@ -1,19 +1,3 @@
-//
-// Copyright 2021, Sander van Harmelen
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//     http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-//
-
 package gitlab
 
 import (
diff --git a/client_options.go b/client_options.go
index 276e1eb..4d9b0d6 100644
--- a/client_options.go
+++ b/client_options.go
@@ -1,19 +1,3 @@
-//
-// Copyright 2021, Sander van Harmelen
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//     http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-//
-
 package gitlab
 
 import (
diff --git a/commits.go b/commits.go
index 930428e..1a89f0e 100644
--- a/commits.go
+++ b/commits.go
@@ -1,5 +1,5 @@
 //
-// Copyright 2021, Sander van Harmelen
+// Copyright 2017, Sander van Harmelen
 //
 // Licensed under the Apache License, Version 2.0 (the "License");
 // you may not use this file except in compliance with the License.
diff --git a/custom_attributes.go b/custom_attributes.go
index 71adfe5..02e9e5c 100644
--- a/custom_attributes.go
+++ b/custom_attributes.go
@@ -1,19 +1,3 @@
-//
-// Copyright 2021, Sander van Harmelen
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//     http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-//
-
 package gitlab
 
 import (
diff --git a/deploy_keys.go b/deploy_keys.go
index 03abf98..9d71bff 100644
--- a/deploy_keys.go
+++ b/deploy_keys.go
@@ -1,5 +1,5 @@
 //
-// Copyright 2021, Sander van Harmelen
+// Copyright 2017, Sander van Harmelen
 //
 // Licensed under the Apache License, Version 2.0 (the "License");
 // you may not use this file except in compliance with the License.
diff --git a/deploy_tokens.go b/deploy_tokens.go
index ca3ad08..6d6ece3 100644
--- a/deploy_tokens.go
+++ b/deploy_tokens.go
@@ -1,19 +1,3 @@
-//
-// Copyright 2021, Sander van Harmelen
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//     http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-//
-
 package gitlab
 
 import (
diff --git a/deployments.go b/deployments.go
index cc2e0ff..c510266 100644
--- a/deployments.go
+++ b/deployments.go
@@ -1,5 +1,5 @@
 //
-// Copyright 2021, Sander van Harmelen
+// Copyright 2018, Sander van Harmelen
 //
 // Licensed under the Apache License, Version 2.0 (the "License");
 // you may not use this file except in compliance with the License.
diff --git a/discussions.go b/discussions.go
index 6060bb7..14a5401 100644
--- a/discussions.go
+++ b/discussions.go
@@ -1,5 +1,5 @@
 //
-// Copyright 2021, Sander van Harmelen
+// Copyright 2018, Sander van Harmelen
 //
 // Licensed under the Apache License, Version 2.0 (the "License");
 // you may not use this file except in compliance with the License.
diff --git a/environments.go b/environments.go
index 8e734c7..f666cde 100644
--- a/environments.go
+++ b/environments.go
@@ -1,5 +1,5 @@
 //
-// Copyright 2021, Sander van Harmelen
+// Copyright 2017, Sander van Harmelen
 //
 // Licensed under the Apache License, Version 2.0 (the "License");
 // you may not use this file except in compliance with the License.
diff --git a/epic_issues.go b/epic_issues.go
index 7e69091..3286b84 100644
--- a/epic_issues.go
+++ b/epic_issues.go
@@ -1,19 +1,3 @@
-//
-// Copyright 2021, Sander van Harmelen
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//     http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-//
-
 package gitlab
 
 import "fmt"
diff --git a/epics.go b/epics.go
index 1286474..7f24c50 100644
--- a/epics.go
+++ b/epics.go
@@ -1,19 +1,3 @@
-//
-// Copyright 2021, Sander van Harmelen
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//     http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-//
-
 package gitlab
 
 import (
diff --git a/event_parsing.go b/event_parsing.go
index 6585db8..675d681 100644
--- a/event_parsing.go
+++ b/event_parsing.go
@@ -1,19 +1,3 @@
-//
-// Copyright 2021, Sander van Harmelen
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//     http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-//
-
 package gitlab
 
 import (
diff --git a/event_systemhook_types.go b/event_systemhook_types.go
index fd99bc5..4f3d527 100644
--- a/event_systemhook_types.go
+++ b/event_systemhook_types.go
@@ -1,19 +1,3 @@
-//
-// Copyright 2021, Sander van Harmelen
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//     http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-//
-
 package gitlab
 
 // systemHookEvent is used to pre-process events to determine the
diff --git a/event_webhook_types.go b/event_webhook_types.go
index 49354e8..3ac08ca 100644
--- a/event_webhook_types.go
+++ b/event_webhook_types.go
@@ -1,5 +1,5 @@
 //
-// Copyright 2021, Sander van Harmelen
+// Copyright 2017, Sander van Harmelen
 //
 // Licensed under the Apache License, Version 2.0 (the "License");
 // you may not use this file except in compliance with the License.
diff --git a/events.go b/events.go
index f1bfe4b..468d932 100644
--- a/events.go
+++ b/events.go
@@ -1,5 +1,5 @@
 //
-// Copyright 2021, Sander van Harmelen
+// Copyright 2017, Sander van Harmelen
 //
 // Licensed under the Apache License, Version 2.0 (the "License");
 // you may not use this file except in compliance with the License.
diff --git a/examples/applications.go b/examples/applications.go
index 74be8d4..50f9789 100644
--- a/examples/applications.go
+++ b/examples/applications.go
@@ -1,19 +1,3 @@
-//
-// Copyright 2021, Sander van Harmelen
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//     http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-//
-
 package main
 
 import (
diff --git a/examples/basic_auth.go b/examples/basic_auth.go
index 4f69acf..7b063f3 100644
--- a/examples/basic_auth.go
+++ b/examples/basic_auth.go
@@ -1,19 +1,3 @@
-//
-// Copyright 2021, Sander van Harmelen
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//     http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-//
-
 package main
 
 import (
diff --git a/examples/impersonation.go b/examples/impersonation.go
index 43215d3..95ca50e 100644
--- a/examples/impersonation.go
+++ b/examples/impersonation.go
@@ -1,19 +1,3 @@
-//
-// Copyright 2021, Sander van Harmelen
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//     http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-//
-
 package main
 
 import (
diff --git a/examples/labels.go b/examples/labels.go
index 678d69f..cd4742b 100644
--- a/examples/labels.go
+++ b/examples/labels.go
@@ -1,19 +1,3 @@
-//
-// Copyright 2021, Sander van Harmelen
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//     http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-//
-
 package main
 
 import (
diff --git a/examples/languages.go b/examples/languages.go
index 83d77ef..2b18531 100644
--- a/examples/languages.go
+++ b/examples/languages.go
@@ -1,19 +1,3 @@
-//
-// Copyright 2021, Sander van Harmelen
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//     http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-//
-
 package main
 
 import (
diff --git a/examples/main.go b/examples/main.go
index 0cb1a1d..80fe975 100644
--- a/examples/main.go
+++ b/examples/main.go
@@ -1,19 +1,3 @@
-//
-// Copyright 2021, Sander van Harmelen
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//     http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-//
-
 package main
 
 func main() {
diff --git a/examples/pagination.go b/examples/pagination.go
index a7041a4..f9e6b58 100644
--- a/examples/pagination.go
+++ b/examples/pagination.go
@@ -1,19 +1,3 @@
-//
-// Copyright 2021, Sander van Harmelen
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//     http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-//
-
 package main
 
 import (
diff --git a/examples/pipelines.go b/examples/pipelines.go
index eaafb49..4aa980e 100644
--- a/examples/pipelines.go
+++ b/examples/pipelines.go
@@ -1,19 +1,3 @@
-//
-// Copyright 2021, Sander van Harmelen
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//     http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-//
-
 package main
 
 import (
diff --git a/examples/projects.go b/examples/projects.go
index b5a9196..b78d0ea 100644
--- a/examples/projects.go
+++ b/examples/projects.go
@@ -1,19 +1,3 @@
-//
-// Copyright 2021, Sander van Harmelen
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//     http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-//
-
 package main
 
 import (
diff --git a/examples/repository_files.go b/examples/repository_files.go
index de73e9f..44cb356 100644
--- a/examples/repository_files.go
+++ b/examples/repository_files.go
@@ -1,19 +1,3 @@
-//
-// Copyright 2021, Sander van Harmelen
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//     http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-//
-
 package main
 
 import (
diff --git a/feature_flags.go b/feature_flags.go
index 7b825e6..f5926c2 100644
--- a/feature_flags.go
+++ b/feature_flags.go
@@ -1,19 +1,3 @@
-//
-// Copyright 2021, Sander van Harmelen
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//     http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-//
-
 package gitlab
 
 import (
diff --git a/freeze_periods.go b/freeze_periods.go
index f8958fe..f7483f3 100644
--- a/freeze_periods.go
+++ b/freeze_periods.go
@@ -1,5 +1,5 @@
 //
-// Copyright 2021 Paul Cioanca
+// Copyright 2020 Paul Cioanca
 //
 // Licensed under the Apache License, Version 2.0 (the "License");
 // you may not use this file except in compliance with the License.
diff --git a/gitignore_templates.go b/gitignore_templates.go
index 8796a22..e2dea83 100644
--- a/gitignore_templates.go
+++ b/gitignore_templates.go
@@ -1,5 +1,5 @@
 //
-// Copyright 2021, Sander van Harmelen
+// Copyright 2018, Sander van Harmelen
 //
 // Licensed under the Apache License, Version 2.0 (the "License");
 // you may not use this file except in compliance with the License.
diff --git a/gitlab.go b/gitlab.go
index 7585208..5bab400 100644
--- a/gitlab.go
+++ b/gitlab.go
@@ -1,5 +1,5 @@
 //
-// Copyright 2021, Sander van Harmelen
+// Copyright 2017, Sander van Harmelen
 //
 // Licensed under the Apache License, Version 2.0 (the "License");
 // you may not use this file except in compliance with the License.
diff --git a/group_badges.go b/group_badges.go
index 0253784..8f284c8 100644
--- a/group_badges.go
+++ b/group_badges.go
@@ -1,19 +1,3 @@
-//
-// Copyright 2021, Sander van Harmelen
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//     http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-//
-
 package gitlab
 
 import (
diff --git a/group_boards.go b/group_boards.go
index 1570b5c..8618654 100644
--- a/group_boards.go
+++ b/group_boards.go
@@ -1,5 +1,5 @@
 //
-// Copyright 2021, Patrick Webster
+// Copyright 2018, Patrick Webster
 //
 // Licensed under the Apache License, Version 2.0 (the "License");
 // you may not use this file except in compliance with the License.
diff --git a/group_clusters.go b/group_clusters.go
index f009585..e91cbd2 100644
--- a/group_clusters.go
+++ b/group_clusters.go
@@ -1,5 +1,5 @@
 //
-// Copyright 2021, Paul Shoemaker
+// Copyright 2019, Paul Shoemaker
 //
 // Licensed under the Apache License, Version 2.0 (the "License");
 // you may not use this file except in compliance with the License.
diff --git a/group_hooks.go b/group_hooks.go
index bbc8d1b..fa2ac4f 100644
--- a/group_hooks.go
+++ b/group_hooks.go
@@ -1,5 +1,5 @@
 //
-// Copyright 2021, Eric Stevens
+// Copyright 2020, Eric Stevens
 //
 // Licensed under the Apache License, Version 2.0 (the "License");
 // you may not use this file except in compliance with the License.
diff --git a/group_labels.go b/group_labels.go
index bc60a56..87a5ea6 100644
--- a/group_labels.go
+++ b/group_labels.go
@@ -1,19 +1,3 @@
-//
-// Copyright 2021, Sander van Harmelen
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//     http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-//
-
 package gitlab
 
 import (
diff --git a/group_members.go b/group_members.go
index 104a761..7fc1d4c 100644
--- a/group_members.go
+++ b/group_members.go
@@ -1,5 +1,5 @@
 //
-// Copyright 2021, Sander van Harmelen
+// Copyright 2017, Sander van Harmelen
 //
 // Licensed under the Apache License, Version 2.0 (the "License");
 // you may not use this file except in compliance with the License.
diff --git a/group_milestones.go b/group_milestones.go
index 3bfb75e..7c12552 100644
--- a/group_milestones.go
+++ b/group_milestones.go
@@ -1,5 +1,5 @@
 //
-// Copyright 2021, Sander van Harmelen
+// Copyright 2018, Sander van Harmelen
 //
 // Licensed under the Apache License, Version 2.0 (the "License");
 // you may not use this file except in compliance with the License.
diff --git a/group_variables.go b/group_variables.go
index 7639304..fea12a2 100644
--- a/group_variables.go
+++ b/group_variables.go
@@ -1,5 +1,5 @@
 //
-// Copyright 2021, Patrick Webster
+// Copyright 2018, Patrick Webster
 //
 // Licensed under the Apache License, Version 2.0 (the "License");
 // you may not use this file except in compliance with the License.
diff --git a/groups.go b/groups.go
index 20993c9..6a3f64f 100644
--- a/groups.go
+++ b/groups.go
@@ -1,5 +1,5 @@
 //
-// Copyright 2021, Sander van Harmelen
+// Copyright 2017, Sander van Harmelen
 //
 // Licensed under the Apache License, Version 2.0 (the "License");
 // you may not use this file except in compliance with the License.
diff --git a/instance_clusters.go b/instance_clusters.go
index 46759a1..e646cc8 100644
--- a/instance_clusters.go
+++ b/instance_clusters.go
@@ -1,5 +1,5 @@
 //
-// Copyright 2021, Serena Fang
+// Copyright 2020, Serena Fang
 //
 // Licensed under the Apache License, Version 2.0 (the "License");
 // you may not use this file except in compliance with the License.
diff --git a/instance_variables.go b/instance_variables.go
index 08a2a13..0d4006b 100644
--- a/instance_variables.go
+++ b/instance_variables.go
@@ -1,5 +1,5 @@
 //
-// Copyright 2021, Patrick Webster
+// Copyright 2018, Patrick Webster
 //
 // Licensed under the Apache License, Version 2.0 (the "License");
 // you may not use this file except in compliance with the License.
diff --git a/issue_links.go b/issue_links.go
index 8353b40..ab8cfdf 100644
--- a/issue_links.go
+++ b/issue_links.go
@@ -1,5 +1,5 @@
 //
-// Copyright 2021, Arkbriar
+// Copyright 2017, Arkbriar
 //
 // Licensed under the Apache License, Version 2.0 (the "License");
 // you may not use this file except in compliance with the License.
diff --git a/issues.go b/issues.go
index 627d785..a55bf08 100644
--- a/issues.go
+++ b/issues.go
@@ -1,5 +1,5 @@
 //
-// Copyright 2021, Sander van Harmelen
+// Copyright 2017, Sander van Harmelen
 //
 // Licensed under the Apache License, Version 2.0 (the "License");
 // you may not use this file except in compliance with the License.
diff --git a/issues_statistics.go b/issues_statistics.go
index 3753f13..990544a 100644
--- a/issues_statistics.go
+++ b/issues_statistics.go
@@ -1,5 +1,5 @@
 //
-// Copyright 2021, Sander van Harmelen
+// Copyright 2017, Sander van Harmelen
 //
 // Licensed under the Apache License, Version 2.0 (the "License");
 // you may not use this file except in compliance with the License.
diff --git a/jobs.go b/jobs.go
index c9d076e..e6540cf 100644
--- a/jobs.go
+++ b/jobs.go
@@ -1,5 +1,5 @@
 //
-// Copyright 2021, Arkbriar
+// Copyright 2017, Arkbriar
 //
 // Licensed under the Apache License, Version 2.0 (the "License");
 // you may not use this file except in compliance with the License.
diff --git a/keys.go b/keys.go
index 56060f1..c520377 100644
--- a/keys.go
+++ b/keys.go
@@ -1,5 +1,5 @@
 //
-// Copyright 2021, Patrick Webster
+// Copyright 2018, Patrick Webster
 //
 // Licensed under the Apache License, Version 2.0 (the "License");
 // you may not use this file except in compliance with the License.
diff --git a/labels.go b/labels.go
index 7890ab3..0aab8c5 100644
--- a/labels.go
+++ b/labels.go
@@ -1,5 +1,5 @@
 //
-// Copyright 2021, Sander van Harmelen
+// Copyright 2017, Sander van Harmelen
 //
 // Licensed under the Apache License, Version 2.0 (the "License");
 // you may not use this file except in compliance with the License.
diff --git a/license.go b/license.go
index e1ea517..c6deb44 100644
--- a/license.go
+++ b/license.go
@@ -1,5 +1,5 @@
 //
-// Copyright 2021, Patrick Webster
+// Copyright 2018, Patrick Webster
 //
 // Licensed under the Apache License, Version 2.0 (the "License");
 // you may not use this file except in compliance with the License.
diff --git a/license_templates.go b/license_templates.go
index c94b9a9..41dcdc3 100644
--- a/license_templates.go
+++ b/license_templates.go
@@ -1,19 +1,3 @@
-//
-// Copyright 2021, Sander van Harmelen
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//     http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-//
-
 package gitlab
 
 import (
diff --git a/merge_request_approvals.go b/merge_request_approvals.go
index 8be706c..9ef8a7e 100644
--- a/merge_request_approvals.go
+++ b/merge_request_approvals.go
@@ -1,19 +1,3 @@
-//
-// Copyright 2021, Sander van Harmelen
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//     http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-//
-
 package gitlab
 
 import (
diff --git a/merge_requests.go b/merge_requests.go
index 10c2c6a..e842551 100644
--- a/merge_requests.go
+++ b/merge_requests.go
@@ -1,5 +1,5 @@
 //
-// Copyright 2021, Sander van Harmelen
+// Copyright 2017, Sander van Harmelen
 //
 // Licensed under the Apache License, Version 2.0 (the "License");
 // you may not use this file except in compliance with the License.
diff --git a/milestones.go b/milestones.go
index 5f5b367..3d881d5 100644
--- a/milestones.go
+++ b/milestones.go
@@ -1,5 +1,5 @@
 //
-// Copyright 2021, Sander van Harmelen
+// Copyright 2017, Sander van Harmelen
 //
 // Licensed under the Apache License, Version 2.0 (the "License");
 // you may not use this file except in compliance with the License.
diff --git a/namespaces.go b/namespaces.go
index 3043dec..4e92880 100644
--- a/namespaces.go
+++ b/namespaces.go
@@ -1,5 +1,5 @@
 //
-// Copyright 2021, Sander van Harmelen
+// Copyright 2017, Sander van Harmelen
 //
 // Licensed under the Apache License, Version 2.0 (the "License");
 // you may not use this file except in compliance with the License.
diff --git a/notes.go b/notes.go
index baf57fe..9eb4c59 100644
--- a/notes.go
+++ b/notes.go
@@ -1,5 +1,5 @@
 //
-// Copyright 2021, Sander van Harmelen
+// Copyright 2017, Sander van Harmelen
 //
 // Licensed under the Apache License, Version 2.0 (the "License");
 // you may not use this file except in compliance with the License.
diff --git a/notifications.go b/notifications.go
index 88fc046..70c8cb7 100644
--- a/notifications.go
+++ b/notifications.go
@@ -1,19 +1,3 @@
-//
-// Copyright 2021, Sander van Harmelen
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//     http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-//
-
 package gitlab
 
 import (
diff --git a/pages_domains.go b/pages_domains.go
index 89e3230..fea9910 100644
--- a/pages_domains.go
+++ b/pages_domains.go
@@ -1,19 +1,3 @@
-//
-// Copyright 2021, Sander van Harmelen
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//     http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-//
-
 package gitlab
 
 import (
diff --git a/pipeline_schedules.go b/pipeline_schedules.go
index c4735fb..b57adcf 100644
--- a/pipeline_schedules.go
+++ b/pipeline_schedules.go
@@ -1,5 +1,5 @@
 //
-// Copyright 2021, Sander van Harmelen
+// Copyright 2018, Sander van Harmelen
 //
 // Licensed under the Apache License, Version 2.0 (the "License");
 // you may not use this file except in compliance with the License.
diff --git a/pipeline_triggers.go b/pipeline_triggers.go
index c8fce47..999025a 100644
--- a/pipeline_triggers.go
+++ b/pipeline_triggers.go
@@ -1,19 +1,3 @@
-//
-// Copyright 2021, Sander van Harmelen
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//     http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-//
-
 package gitlab
 
 import (
diff --git a/pipelines.go b/pipelines.go
index 7610a71..4d2bd77 100644
--- a/pipelines.go
+++ b/pipelines.go
@@ -1,5 +1,5 @@
 //
-// Copyright 2021, Igor Varavko
+// Copyright 2017, Igor Varavko
 //
 // Licensed under the Apache License, Version 2.0 (the "License");
 // you may not use this file except in compliance with the License.
diff --git a/project_badges.go b/project_badges.go
index 231aed3..1490d36 100644
--- a/project_badges.go
+++ b/project_badges.go
@@ -1,19 +1,3 @@
-//
-// Copyright 2021, Sander van Harmelen
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//     http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-//
-
 package gitlab
 
 import (
diff --git a/project_clusters.go b/project_clusters.go
index 7ca36d3..d6802da 100644
--- a/project_clusters.go
+++ b/project_clusters.go
@@ -1,5 +1,5 @@
 //
-// Copyright 2021, Matej Velikonja
+// Copyright 2019, Matej Velikonja
 //
 // Licensed under the Apache License, Version 2.0 (the "License");
 // you may not use this file except in compliance with the License.
diff --git a/project_import_export.go b/project_import_export.go
index 05fdfbd..f052159 100644
--- a/project_import_export.go
+++ b/project_import_export.go
@@ -1,19 +1,3 @@
-//
-// Copyright 2021, Sander van Harmelen
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//     http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-//
-
 package gitlab
 
 import (
diff --git a/project_members.go b/project_members.go
index 99c2955..0a1b57f 100644
--- a/project_members.go
+++ b/project_members.go
@@ -1,5 +1,5 @@
 //
-// Copyright 2021, Sander van Harmelen
+// Copyright 2017, Sander van Harmelen
 //
 // Licensed under the Apache License, Version 2.0 (the "License");
 // you may not use this file except in compliance with the License.
diff --git a/project_mirror.go b/project_mirror.go
index 59dbe5b..e246a43 100644
--- a/project_mirror.go
+++ b/project_mirror.go
@@ -1,5 +1,5 @@
 //
-// Copyright 2021, Sander van Harmelen
+// Copyright 2017, Sander van Harmelen
 //
 // Licensed under the Apache License, Version 2.0 (the "License");
 // you may not use this file except in compliance with the License.
diff --git a/project_snippets.go b/project_snippets.go
index 15f12a2..8789db7 100644
--- a/project_snippets.go
+++ b/project_snippets.go
@@ -1,5 +1,5 @@
 //
-// Copyright 2021, Sander van Harmelen
+// Copyright 2017, Sander van Harmelen
 //
 // Licensed under the Apache License, Version 2.0 (the "License");
 // you may not use this file except in compliance with the License.
diff --git a/project_variables.go b/project_variables.go
index 860032d..86f9d0b 100644
--- a/project_variables.go
+++ b/project_variables.go
@@ -1,5 +1,5 @@
 //
-// Copyright 2021, Patrick Webster
+// Copyright 2018, Patrick Webster
 //
 // Licensed under the Apache License, Version 2.0 (the "License");
 // you may not use this file except in compliance with the License.
diff --git a/projects.go b/projects.go
index dd2b131..b6b50a4 100644
--- a/projects.go
+++ b/projects.go
@@ -1,5 +1,5 @@
 //
-// Copyright 2021, Sander van Harmelen
+// Copyright 2017, Sander van Harmelen
 //
 // Licensed under the Apache License, Version 2.0 (the "License");
 // you may not use this file except in compliance with the License.
@@ -38,71 +38,72 @@ type ProjectsService struct {
 //
 // GitLab API docs: https://docs.gitlab.com/ce/api/projects.html
 type Project struct {
-	ID                                        int                `json:"id"`
-	Description                               string             `json:"description"`
-	DefaultBranch                             string             `json:"default_branch"`
-	Public                                    bool               `json:"public"`
-	Visibility                                VisibilityValue    `json:"visibility"`
-	SSHURLToRepo                              string             `json:"ssh_url_to_repo"`
-	HTTPURLToRepo                             string             `json:"http_url_to_repo"`
-	WebURL                                    string             `json:"web_url"`
-	ReadmeURL                                 string             `json:"readme_url"`
-	TagList                                   []string           `json:"tag_list"`
-	Owner                                     *User              `json:"owner"`
-	Name                                      string             `json:"name"`
-	NameWithNamespace                         string             `json:"name_with_namespace"`
-	Path                                      string             `json:"path"`
-	PathWithNamespace                         string             `json:"path_with_namespace"`
-	IssuesEnabled                             bool               `json:"issues_enabled"`
-	OpenIssuesCount                           int                `json:"open_issues_count"`
-	MergeRequestsEnabled                      bool               `json:"merge_requests_enabled"`
-	ApprovalsBeforeMerge                      int                `json:"approvals_before_merge"`
-	JobsEnabled                               bool               `json:"jobs_enabled"`
-	WikiEnabled                               bool               `json:"wiki_enabled"`
-	SnippetsEnabled                           bool               `json:"snippets_enabled"`
-	ResolveOutdatedDiffDiscussions            bool               `json:"resolve_outdated_diff_discussions"`
-	ContainerRegistryEnabled                  bool               `json:"container_registry_enabled"`
-	CreatedAt                                 *time.Time         `json:"created_at,omitempty"`
-	LastActivityAt                            *time.Time         `json:"last_activity_at,omitempty"`
-	CreatorID                                 int                `json:"creator_id"`
-	Namespace                                 *ProjectNamespace  `json:"namespace"`
-	ImportStatus                              string             `json:"import_status"`
-	ImportError                               string             `json:"import_error"`
-	Permissions                               *Permissions       `json:"permissions"`
-	MarkedForDeletionAt                       *ISOTime           `json:"marked_for_deletion_at"`
-	Archived                                  bool               `json:"archived"`
-	AvatarURL                                 string             `json:"avatar_url"`
-	SharedRunnersEnabled                      bool               `json:"shared_runners_enabled"`
-	ForksCount                                int                `json:"forks_count"`
-	StarCount                                 int                `json:"star_count"`
-	RunnersToken                              string             `json:"runners_token"`
-	PublicBuilds                              bool               `json:"public_builds"`
-	AllowMergeOnSkippedPipeline               bool               `json:"allow_merge_on_skipped_pipeline"`
-	OnlyAllowMergeIfPipelineSucceeds          bool               `json:"only_allow_merge_if_pipeline_succeeds"`
-	OnlyAllowMergeIfAllDiscussionsAreResolved bool               `json:"only_allow_merge_if_all_discussions_are_resolved"`
-	RemoveSourceBranchAfterMerge              bool               `json:"remove_source_branch_after_merge"`
-	LFSEnabled                                bool               `json:"lfs_enabled"`
-	RequestAccessEnabled                      bool               `json:"request_access_enabled"`
-	MergeMethod                               MergeMethodValue   `json:"merge_method"`
-	ForkedFromProject                         *ForkParent        `json:"forked_from_project"`
-	Mirror                                    bool               `json:"mirror"`
-	MirrorUserID                              int                `json:"mirror_user_id"`
-	MirrorTriggerBuilds                       bool               `json:"mirror_trigger_builds"`
-	OnlyMirrorProtectedBranches               bool               `json:"only_mirror_protected_branches"`
-	MirrorOverwritesDivergedBranches          bool               `json:"mirror_overwrites_diverged_branches"`
-	PackagesEnabled                           bool               `json:"packages_enabled"`
-	ServiceDeskEnabled                        bool               `json:"service_desk_enabled"`
-	ServiceDeskAddress                        string             `json:"service_desk_address"`
-	IssuesAccessLevel                         AccessControlValue `json:"issues_access_level"`
-	RepositoryAccessLevel                     AccessControlValue `json:"repository_access_level"`
-	MergeRequestsAccessLevel                  AccessControlValue `json:"merge_requests_access_level"`
-	ForkingAccessLevel                        AccessControlValue `json:"forking_access_level"`
-	WikiAccessLevel                           AccessControlValue `json:"wiki_access_level"`
-	BuildsAccessLevel                         AccessControlValue `json:"builds_access_level"`
-	SnippetsAccessLevel                       AccessControlValue `json:"snippets_access_level"`
-	PagesAccessLevel                          AccessControlValue `json:"pages_access_level"`
-	AutocloseReferencedIssues                 bool               `json:"autoclose_referenced_issues"`
-	CIForwardDeploymentEnabled                bool               `json:"ci_forward_deployment_enabled"`
+	ID                                        int                        `json:"id"`
+	Description                               string                     `json:"description"`
+	DefaultBranch                             string                     `json:"default_branch"`
+	Public                                    bool                       `json:"public"`
+	Visibility                                VisibilityValue            `json:"visibility"`
+	SSHURLToRepo                              string                     `json:"ssh_url_to_repo"`
+	HTTPURLToRepo                             string                     `json:"http_url_to_repo"`
+	WebURL                                    string                     `json:"web_url"`
+	ReadmeURL                                 string                     `json:"readme_url"`
+	TagList                                   []string                   `json:"tag_list"`
+	Owner                                     *User                      `json:"owner"`
+	Name                                      string                     `json:"name"`
+	NameWithNamespace                         string                     `json:"name_with_namespace"`
+	Path                                      string                     `json:"path"`
+	PathWithNamespace                         string                     `json:"path_with_namespace"`
+	IssuesEnabled                             bool                       `json:"issues_enabled"`
+	OpenIssuesCount                           int                        `json:"open_issues_count"`
+	MergeRequestsEnabled                      bool                       `json:"merge_requests_enabled"`
+	ApprovalsBeforeMerge                      int                        `json:"approvals_before_merge"`
+	JobsEnabled                               bool                       `json:"jobs_enabled"`
+	WikiEnabled                               bool                       `json:"wiki_enabled"`
+	SnippetsEnabled                           bool                       `json:"snippets_enabled"`
+	ResolveOutdatedDiffDiscussions            bool                       `json:"resolve_outdated_diff_discussions"`
+	ContainerExpirationPolicy                 *ContainerExpirationPolicy `json:"container_expiration_policy,omitempty"`
+	ContainerRegistryEnabled                  bool                       `json:"container_registry_enabled"`
+	CreatedAt                                 *time.Time                 `json:"created_at,omitempty"`
+	LastActivityAt                            *time.Time                 `json:"last_activity_at,omitempty"`
+	CreatorID                                 int                        `json:"creator_id"`
+	Namespace                                 *ProjectNamespace          `json:"namespace"`
+	ImportStatus                              string                     `json:"import_status"`
+	ImportError                               string                     `json:"import_error"`
+	Permissions                               *Permissions               `json:"permissions"`
+	MarkedForDeletionAt                       *ISOTime                   `json:"marked_for_deletion_at"`
+	Archived                                  bool                       `json:"archived"`
+	AvatarURL                                 string                     `json:"avatar_url"`
+	SharedRunnersEnabled                      bool                       `json:"shared_runners_enabled"`
+	ForksCount                                int                        `json:"forks_count"`
+	StarCount                                 int                        `json:"star_count"`
+	RunnersToken                              string                     `json:"runners_token"`
+	PublicBuilds                              bool                       `json:"public_builds"`
+	AllowMergeOnSkippedPipeline               bool                       `json:"allow_merge_on_skipped_pipeline"`
+	OnlyAllowMergeIfPipelineSucceeds          bool                       `json:"only_allow_merge_if_pipeline_succeeds"`
+	OnlyAllowMergeIfAllDiscussionsAreResolved bool                       `json:"only_allow_merge_if_all_discussions_are_resolved"`
+	RemoveSourceBranchAfterMerge              bool                       `json:"remove_source_branch_after_merge"`
+	LFSEnabled                                bool                       `json:"lfs_enabled"`
+	RequestAccessEnabled                      bool                       `json:"request_access_enabled"`
+	MergeMethod                               MergeMethodValue           `json:"merge_method"`
+	ForkedFromProject                         *ForkParent                `json:"forked_from_project"`
+	Mirror                                    bool                       `json:"mirror"`
+	MirrorUserID                              int                        `json:"mirror_user_id"`
+	MirrorTriggerBuilds                       bool                       `json:"mirror_trigger_builds"`
+	OnlyMirrorProtectedBranches               bool                       `json:"only_mirror_protected_branches"`
+	MirrorOverwritesDivergedBranches          bool                       `json:"mirror_overwrites_diverged_branches"`
+	PackagesEnabled                           bool                       `json:"packages_enabled"`
+	ServiceDeskEnabled                        bool                       `json:"service_desk_enabled"`
+	ServiceDeskAddress                        string                     `json:"service_desk_address"`
+	IssuesAccessLevel                         AccessControlValue         `json:"issues_access_level"`
+	RepositoryAccessLevel                     AccessControlValue         `json:"repository_access_level"`
+	MergeRequestsAccessLevel                  AccessControlValue         `json:"merge_requests_access_level"`
+	ForkingAccessLevel                        AccessControlValue         `json:"forking_access_level"`
+	WikiAccessLevel                           AccessControlValue         `json:"wiki_access_level"`
+	BuildsAccessLevel                         AccessControlValue         `json:"builds_access_level"`
+	SnippetsAccessLevel                       AccessControlValue         `json:"snippets_access_level"`
+	PagesAccessLevel                          AccessControlValue         `json:"pages_access_level"`
+	AutocloseReferencedIssues                 bool                       `json:"autoclose_referenced_issues"`
+	CIForwardDeploymentEnabled                bool                       `json:"ci_forward_deployment_enabled"`
 	SharedWithGroups                          []struct {
 		GroupID          int    `json:"group_id"`
 		GroupName        string `json:"group_name"`
@@ -116,6 +117,17 @@ type Project struct {
 	ComplianceFrameworks []string           `json:"compliance_frameworks"`
 }
 
+// ContainerExpirationPolicy represents the container expiration policy.
+type ContainerExpirationPolicy struct {
+	Cadence         string     `json:"cadence"`
+	KeepN           int        `json:"keep_n"`
+	OlderThan       string     `json:"older_than"`
+	NameRegexDelete string     `json:"name_regex_delete"`
+	NameRegexKeep   string     `json:"name_regex_keep"`
+	Enabled         bool       `json:"enabled"`
+	NextRunAt       *time.Time `json:"next_run_at"`
+}
+
 // Repository represents a repository.
 type Repository struct {
 	Name              string          `json:"name"`
@@ -468,55 +480,55 @@ func (s *ProjectsService) GetProjectEvents(pid interface{}, opt *GetProjectEvent
 //
 // GitLab API docs: https://docs.gitlab.com/ee/api/projects.html#create-project
 type CreateProjectOptions struct {
-	Name                                      *string             `url:"name,omitempty" json:"name,omitempty"`
-	Path                                      *string             `url:"path,omitempty" json:"path,omitempty"`
-	NamespaceID                               *int                `url:"namespace_id,omitempty" json:"namespace_id,omitempty"`
-	DefaultBranch                             *string             `url:"default_branch,omitempty" json:"default_branch,omitempty"`
-	Description                               *string             `url:"description,omitempty" json:"description,omitempty"`
-	IssuesAccessLevel                         *AccessControlValue `url:"issues_access_level,omitempty" json:"issues_access_level,omitempty"`
-	RepositoryAccessLevel                     *AccessControlValue `url:"repository_access_level,omitempty" json:"repository_access_level,omitempty"`
-	MergeRequestsAccessLevel                  *AccessControlValue `url:"merge_requests_access_level,omitempty" json:"merge_requests_access_level,omitempty"`
-	ForkingAccessLevel                        *AccessControlValue `url:"forking_access_level,omitempty" json:"forking_access_level,omitempty"`
-	BuildsAccessLevel                         *AccessControlValue `url:"builds_access_level,omitempty" json:"builds_access_level,omitempty"`
-	WikiAccessLevel                           *AccessControlValue `url:"wiki_access_level,omitempty" json:"wiki_access_level,omitempty"`
-	SnippetsAccessLevel                       *AccessControlValue `url:"snippets_access_level,omitempty" json:"snippets_access_level,omitempty"`
-	PagesAccessLevel                          *AccessControlValue `url:"pages_access_level,omitempty" json:"pages_access_level,omitempty"`
-	EmailsDisabled                            *bool               `url:"emails_disabled,omitempty" json:"emails_disabled,omitempty"`
-	ResolveOutdatedDiffDiscussions            *bool               `url:"resolve_outdated_diff_discussions,omitempty" json:"resolve_outdated_diff_discussions,omitempty"`
-	ContainerRegistryEnabled                  *bool               `url:"container_registry_enabled,omitempty" json:"container_registry_enabled,omitempty"`
-	SharedRunnersEnabled                      *bool               `url:"shared_runners_enabled,omitempty" json:"shared_runners_enabled,omitempty"`
-	Visibility                                *VisibilityValue    `url:"visibility,omitempty" json:"visibility,omitempty"`
-	ImportURL                                 *string             `url:"import_url,omitempty" json:"import_url,omitempty"`
-	PublicBuilds                              *bool               `url:"public_builds,omitempty" json:"public_builds,omitempty"`
-	AllowMergeOnSkippedPipeline               *bool               `url:"allow_merge_on_skipped_pipeline,omitempty" json:"allow_merge_on_skipped_pipeline,omitempty"`
-	OnlyAllowMergeIfPipelineSucceeds          *bool               `url:"only_allow_merge_if_pipeline_succeeds,omitempty" json:"only_allow_merge_if_pipeline_succeeds,omitempty"`
-	OnlyAllowMergeIfAllDiscussionsAreResolved *bool               `url:"only_allow_merge_if_all_discussions_are_resolved,omitempty" json:"only_allow_merge_if_all_discussions_are_resolved,omitempty"`
-	MergeMethod                               *MergeMethodValue   `url:"merge_method,omitempty" json:"merge_method,omitempty"`
-	RemoveSourceBranchAfterMerge              *bool               `url:"remove_source_branch_after_merge,omitempty" json:"remove_source_branch_after_merge,omitempty"`
-	LFSEnabled                                *bool               `url:"lfs_enabled,omitempty" json:"lfs_enabled,omitempty"`
-	RequestAccessEnabled                      *bool               `url:"request_access_enabled,omitempty" json:"request_access_enabled,omitempty"`
-	TagList                                   *[]string           `url:"tag_list,omitempty" json:"tag_list,omitempty"`
-	PrintingMergeRequestLinkEnabled           *bool               `url:"printing_merge_request_link_enabled,omitempty" json:"printing_merge_request_link_enabled,omitempty"`
-	BuildGitStrategy                          *string             `url:"build_git_strategy,omitempty" json:"build_git_strategy,omitempty"`
-	BuildTimeout                              *int                `url:"build_timeout,omitempty" json:"build_timeout,omitempty"`
-	AutoCancelPendingPipelines                *string             `url:"auto_cancel_pending_pipelines,omitempty" json:"auto_cancel_pending_pipelines,omitempty"`
-	BuildCoverageRegex                        *string             `url:"build_coverage_regex,omitempty" json:"build_coverage_regex,omitempty"`
-	CIConfigPath                              *string             `url:"ci_config_path,omitempty" json:"ci_config_path,omitempty"`
-	CIForwardDeploymentEnabled                *bool               `url:"ci_forward_deployment_enabled,omitempty" json:"ci_forward_deployment_enabled,omitempty"`
-	AutoDevopsEnabled                         *bool               `url:"auto_devops_enabled,omitempty" json:"auto_devops_enabled,omitempty"`
-	AutoDevopsDeployStrategy                  *string             `url:"auto_devops_deploy_strategy,omitempty" json:"auto_devops_deploy_strategy,omitempty"`
-	ApprovalsBeforeMerge                      *int                `url:"approvals_before_merge,omitempty" json:"approvals_before_merge,omitempty"`
-	ExternalAuthorizationClassificationLabel  *string             `url:"external_authorization_classification_label,omitempty" json:"external_authorization_classification_label,omitempty"`
-	Mirror                                    *bool               `url:"mirror,omitempty" json:"mirror,omitempty"`
-	MirrorTriggerBuilds                       *bool               `url:"mirror_trigger_builds,omitempty" json:"mirror_trigger_builds,omitempty"`
-	InitializeWithReadme                      *bool               `url:"initialize_with_readme,omitempty" json:"initialize_with_readme,omitempty"`
-	TemplateName                              *string             `url:"template_name,omitempty" json:"template_name,omitempty"`
-	TemplateProjectID                         *int                `url:"template_project_id,omitempty" json:"template_project_id,omitempty"`
-	UseCustomTemplate                         *bool               `url:"use_custom_template,omitempty" json:"use_custom_template,omitempty"`
-	GroupWithProjectTemplatesID               *int                `url:"group_with_project_templates_id,omitempty" json:"group_with_project_templates_id,omitempty"`
-	PackagesEnabled                           *bool               `url:"packages_enabled,omitempty" json:"packages_enabled,omitempty"`
-	ServiceDeskEnabled                        *bool               `url:"service_desk_enabled,omitempty" json:"service_desk_enabled,omitempty"`
-	AutocloseReferencedIssues                 *bool               `url:"autoclose_referenced_issues,omitempty" json:"autoclose_referenced_issues,omitempty"`
+	Name                                      *string                              `url:"name,omitempty" json:"name,omitempty"`
+	Path                                      *string                              `url:"path,omitempty" json:"path,omitempty"`
+	NamespaceID                               *int                                 `url:"namespace_id,omitempty" json:"namespace_id,omitempty"`
+	DefaultBranch                             *string                              `url:"default_branch,omitempty" json:"default_branch,omitempty"`
+	Description                               *string                              `url:"description,omitempty" json:"description,omitempty"`
+	IssuesAccessLevel                         *AccessControlValue                  `url:"issues_access_level,omitempty" json:"issues_access_level,omitempty"`
+	RepositoryAccessLevel                     *AccessControlValue                  `url:"repository_access_level,omitempty" json:"repository_access_level,omitempty"`
+	MergeRequestsAccessLevel                  *AccessControlValue                  `url:"merge_requests_access_level,omitempty" json:"merge_requests_access_level,omitempty"`
+	ForkingAccessLevel                        *AccessControlValue                  `url:"forking_access_level,omitempty" json:"forking_access_level,omitempty"`
+	BuildsAccessLevel                         *AccessControlValue                  `url:"builds_access_level,omitempty" json:"builds_access_level,omitempty"`
+	WikiAccessLevel                           *AccessControlValue                  `url:"wiki_access_level,omitempty" json:"wiki_access_level,omitempty"`
+	SnippetsAccessLevel                       *AccessControlValue                  `url:"snippets_access_level,omitempty" json:"snippets_access_level,omitempty"`
+	PagesAccessLevel                          *AccessControlValue                  `url:"pages_access_level,omitempty" json:"pages_access_level,omitempty"`
+	EmailsDisabled                            *bool                                `url:"emails_disabled,omitempty" json:"emails_disabled,omitempty"`
+	ResolveOutdatedDiffDiscussions            *bool                                `url:"resolve_outdated_diff_discussions,omitempty" json:"resolve_outdated_diff_discussions,omitempty"`
+	ContainerExpirationPolicyAttributes       *ContainerExpirationPolicyAttributes `url:"container_expiration_policy_attributes,omitempty" json:"container_expiration_policy_attributes,omitempty"`
+	ContainerRegistryEnabled                  *bool                                `url:"container_registry_enabled,omitempty" json:"container_registry_enabled,omitempty"`
+	SharedRunnersEnabled                      *bool                                `url:"shared_runners_enabled,omitempty" json:"shared_runners_enabled,omitempty"`
+	Visibility                                *VisibilityValue                     `url:"visibility,omitempty" json:"visibility,omitempty"`
+	ImportURL                                 *string                              `url:"import_url,omitempty" json:"import_url,omitempty"`
+	PublicBuilds                              *bool                                `url:"public_builds,omitempty" json:"public_builds,omitempty"`
+	OnlyAllowMergeIfPipelineSucceeds          *bool                                `url:"only_allow_merge_if_pipeline_succeeds,omitempty" json:"only_allow_merge_if_pipeline_succeeds,omitempty"`
+	OnlyAllowMergeIfAllDiscussionsAreResolved *bool                                `url:"only_allow_merge_if_all_discussions_are_resolved,omitempty" json:"only_allow_merge_if_all_discussions_are_resolved,omitempty"`
+	MergeMethod                               *MergeMethodValue                    `url:"merge_method,omitempty" json:"merge_method,omitempty"`
+	RemoveSourceBranchAfterMerge              *bool                                `url:"remove_source_branch_after_merge,omitempty" json:"remove_source_branch_after_merge,omitempty"`
+	LFSEnabled                                *bool                                `url:"lfs_enabled,omitempty" json:"lfs_enabled,omitempty"`
+	RequestAccessEnabled                      *bool                                `url:"request_access_enabled,omitempty" json:"request_access_enabled,omitempty"`
+	TagList                                   *[]string                            `url:"tag_list,omitempty" json:"tag_list,omitempty"`
+	PrintingMergeRequestLinkEnabled           *bool                                `url:"printing_merge_request_link_enabled,omitempty" json:"printing_merge_request_link_enabled,omitempty"`
+	BuildGitStrategy                          *string                              `url:"build_git_strategy,omitempty" json:"build_git_strategy,omitempty"`
+	BuildTimeout                              *int                                 `url:"build_timeout,omitempty" json:"build_timeout,omitempty"`
+	AutoCancelPendingPipelines                *string                              `url:"auto_cancel_pending_pipelines,omitempty" json:"auto_cancel_pending_pipelines,omitempty"`
+	BuildCoverageRegex                        *string                              `url:"build_coverage_regex,omitempty" json:"build_coverage_regex,omitempty"`
+	CIConfigPath                              *string                              `url:"ci_config_path,omitempty" json:"ci_config_path,omitempty"`
+	CIForwardDeploymentEnabled                *bool                                `url:"ci_forward_deployment_enabled,omitempty" json:"ci_forward_deployment_enabled,omitempty"`
+	AutoDevopsEnabled                         *bool                                `url:"auto_devops_enabled,omitempty" json:"auto_devops_enabled,omitempty"`
+	AutoDevopsDeployStrategy                  *string                              `url:"auto_devops_deploy_strategy,omitempty" json:"auto_devops_deploy_strategy,omitempty"`
+	ApprovalsBeforeMerge                      *int                                 `url:"approvals_before_merge,omitempty" json:"approvals_before_merge,omitempty"`
+	ExternalAuthorizationClassificationLabel  *string                              `url:"external_authorization_classification_label,omitempty" json:"external_authorization_classification_label,omitempty"`
+	Mirror                                    *bool                                `url:"mirror,omitempty" json:"mirror,omitempty"`
+	MirrorTriggerBuilds                       *bool                                `url:"mirror_trigger_builds,omitempty" json:"mirror_trigger_builds,omitempty"`
+	InitializeWithReadme                      *bool                                `url:"initialize_with_readme,omitempty" json:"initialize_with_readme,omitempty"`
+	TemplateName                              *string                              `url:"template_name,omitempty" json:"template_name,omitempty"`
+	TemplateProjectID                         *int                                 `url:"template_project_id,omitempty" json:"template_project_id,omitempty"`
+	UseCustomTemplate                         *bool                                `url:"use_custom_template,omitempty" json:"use_custom_template,omitempty"`
+	GroupWithProjectTemplatesID               *int                                 `url:"group_with_project_templates_id,omitempty" json:"group_with_project_templates_id,omitempty"`
+	PackagesEnabled                           *bool                                `url:"packages_enabled,omitempty" json:"packages_enabled,omitempty"`
+	ServiceDeskEnabled                        *bool                                `url:"service_desk_enabled,omitempty" json:"service_desk_enabled,omitempty"`
+	AutocloseReferencedIssues                 *bool                                `url:"autoclose_referenced_issues,omitempty" json:"autoclose_referenced_issues,omitempty"`
 
 	// Deprecated members
 	IssuesEnabled        *bool `url:"issues_enabled,omitempty" json:"issues_enabled,omitempty"`
@@ -526,10 +538,33 @@ type CreateProjectOptions struct {
 	SnippetsEnabled      *bool `url:"snippets_enabled,omitempty" json:"snippets_enabled,omitempty"`
 }
 
+// ContainerExpirationPolicyAttributes represents the available container
+// expiration policy attributes.
+//
+// GitLab API docs: https://docs.gitlab.com/ee/api/projects.html#create-project
+type ContainerExpirationPolicyAttributes struct {
+	Cadence         *string `url:"cadence,omitempty" json:"cadence,omitempty"`
+	KeepN           *int    `url:"keep_n,omitempty" json:"keep_n,omitempty"`
+	OlderThan       *string `url:"older_than,omitempty" json:"older_than,omitempty"`
+	NameRegexDelete *string `url:"name_regex_delete,omitempty" json:"name_regex_delete,omitempty"`
+	NameRegexKeep   *string `url:"name_regex_keep,omitempty" json:"name_regex_keep,omitempty"`
+	Enabled         *bool   `url:"enabled,omitempty" json:"enabled,omitempty"`
+
+	// Deprecated members
+	NameRegex *string `url:"name_regex,omitempty" json:"name_regex,omitempty"`
+}
+
 // CreateProject creates a new project owned by the authenticated user.
 //
 // GitLab API docs: https://docs.gitlab.com/ce/api/projects.html#create-project
 func (s *ProjectsService) CreateProject(opt *CreateProjectOptions, options ...RequestOptionFunc) (*Project, *Response, error) {
+	if opt.ContainerExpirationPolicyAttributes != nil {
+		// This is needed to satisfy the API. Should be deleted
+		// when NameRegex is removed (it's now deprecated).
+		opt.ContainerExpirationPolicyAttributes.NameRegex =
+			opt.ContainerExpirationPolicyAttributes.NameRegexDelete
+	}
+
 	req, err := s.client.NewRequest("POST", "projects", opt, options)
 	if err != nil {
 		return nil, nil, err
@@ -557,8 +592,14 @@ type CreateProjectForUserOptions CreateProjectOptions
 // GitLab API docs:
 // https://docs.gitlab.com/ce/api/projects.html#create-project-for-user
 func (s *ProjectsService) CreateProjectForUser(user int, opt *CreateProjectForUserOptions, options ...RequestOptionFunc) (*Project, *Response, error) {
-	u := fmt.Sprintf("projects/user/%d", user)
+	if opt.ContainerExpirationPolicyAttributes != nil {
+		// This is needed to satisfy the API. Should be deleted
+		// when NameRegex is removed (it's now deprecated).
+		opt.ContainerExpirationPolicyAttributes.NameRegex =
+			opt.ContainerExpirationPolicyAttributes.NameRegexDelete
+	}
 
+	u := fmt.Sprintf("projects/user/%d", user)
 	req, err := s.client.NewRequest("POST", u, opt, options)
 	if err != nil {
 		return nil, nil, err
@@ -577,52 +618,52 @@ func (s *ProjectsService) CreateProjectForUser(user int, opt *CreateProjectForUs
 //
 // GitLab API docs: https://docs.gitlab.com/ce/api/projects.html#edit-project
 type EditProjectOptions struct {
-	Name                                      *string             `url:"name,omitempty" json:"name,omitempty"`
-	Path                                      *string             `url:"path,omitempty" json:"path,omitempty"`
-	DefaultBranch                             *string             `url:"default_branch,omitempty" json:"default_branch,omitempty"`
-	Description                               *string             `url:"description,omitempty" json:"description,omitempty"`
-	IssuesAccessLevel                         *AccessControlValue `url:"issues_access_level,omitempty" json:"issues_access_level,omitempty"`
-	RepositoryAccessLevel                     *AccessControlValue `url:"repository_access_level,omitempty" json:"repository_access_level,omitempty"`
-	MergeRequestsAccessLevel                  *AccessControlValue `url:"merge_requests_access_level,omitempty" json:"merge_requests_access_level,omitempty"`
-	ForkingAccessLevel                        *AccessControlValue `url:"forking_access_level,omitempty" json:"forking_access_level,omitempty"`
-	BuildsAccessLevel                         *AccessControlValue `url:"builds_access_level,omitempty" json:"builds_access_level,omitempty"`
-	WikiAccessLevel                           *AccessControlValue `url:"wiki_access_level,omitempty" json:"wiki_access_level,omitempty"`
-	SnippetsAccessLevel                       *AccessControlValue `url:"snippets_access_level,omitempty" json:"snippets_access_level,omitempty"`
-	PagesAccessLevel                          *AccessControlValue `url:"pages_access_level,omitempty" json:"pages_access_level,omitempty"`
-	EmailsDisabled                            *bool               `url:"emails_disabled,omitempty" json:"emails_disabled,omitempty"`
-	ResolveOutdatedDiffDiscussions            *bool               `url:"resolve_outdated_diff_discussions,omitempty" json:"resolve_outdated_diff_discussions,omitempty"`
-	ContainerRegistryEnabled                  *bool               `url:"container_registry_enabled,omitempty" json:"container_registry_enabled,omitempty"`
-	SharedRunnersEnabled                      *bool               `url:"shared_runners_enabled,omitempty" json:"shared_runners_enabled,omitempty"`
-	Visibility                                *VisibilityValue    `url:"visibility,omitempty" json:"visibility,omitempty"`
-	ImportURL                                 *string             `url:"import_url,omitempty" json:"import_url,omitempty"`
-	PublicBuilds                              *bool               `url:"public_builds,omitempty" json:"public_builds,omitempty"`
-	AllowMergeOnSkippedPipeline               *bool               `url:"allow_merge_on_skipped_pipeline,omitempty" json:"allow_merge_on_skipped_pipeline,omitempty"`
-	OnlyAllowMergeIfPipelineSucceeds          *bool               `url:"only_allow_merge_if_pipeline_succeeds,omitempty" json:"only_allow_merge_if_pipeline_succeeds,omitempty"`
-	OnlyAllowMergeIfAllDiscussionsAreResolved *bool               `url:"only_allow_merge_if_all_discussions_are_resolved,omitempty" json:"only_allow_merge_if_all_discussions_are_resolved,omitempty"`
-	MergeMethod                               *MergeMethodValue   `url:"merge_method,omitempty" json:"merge_method,omitempty"`
-	RemoveSourceBranchAfterMerge              *bool               `url:"remove_source_branch_after_merge,omitempty" json:"remove_source_branch_after_merge,omitempty"`
-	LFSEnabled                                *bool               `url:"lfs_enabled,omitempty" json:"lfs_enabled,omitempty"`
-	RequestAccessEnabled                      *bool               `url:"request_access_enabled,omitempty" json:"request_access_enabled,omitempty"`
-	TagList                                   *[]string           `url:"tag_list,omitempty" json:"tag_list,omitempty"`
-	BuildGitStrategy                          *string             `url:"build_git_strategy,omitempty" json:"build_git_strategy,omitempty"`
-	BuildTimeout                              *int                `url:"build_timeout,omitempty" json:"build_timeout,omitempty"`
-	AutoCancelPendingPipelines                *string             `url:"auto_cancel_pending_pipelines,omitempty" json:"auto_cancel_pending_pipelines,omitempty"`
-	BuildCoverageRegex                        *string             `url:"build_coverage_regex,omitempty" json:"build_coverage_regex,omitempty"`
-	CIConfigPath                              *string             `url:"ci_config_path,omitempty" json:"ci_config_path,omitempty"`
-	CIForwardDeploymentEnabled                *bool               `url:"ci_forward_deployment_enabled,omitempty" json:"ci_forward_deployment_enabled,omitempty"`
-	CIDefaultGitDepth                         *int                `url:"ci_default_git_depth,omitempty" json:"ci_default_git_depth,omitempty"`
-	AutoDevopsEnabled                         *bool               `url:"auto_devops_enabled,omitempty" json:"auto_devops_enabled,omitempty"`
-	AutoDevopsDeployStrategy                  *string             `url:"auto_devops_deploy_strategy,omitempty" json:"auto_devops_deploy_strategy,omitempty"`
-	ApprovalsBeforeMerge                      *int                `url:"approvals_before_merge,omitempty" json:"approvals_before_merge,omitempty"`
-	ExternalAuthorizationClassificationLabel  *string             `url:"external_authorization_classification_label,omitempty" json:"external_authorization_classification_label,omitempty"`
-	Mirror                                    *bool               `url:"mirror,omitempty" json:"mirror,omitempty"`
-	MirrorUserID                              *int                `url:"mirror_user_id,omitempty" json:"mirror_user_id,omitempty"`
-	MirrorTriggerBuilds                       *bool               `url:"mirror_trigger_builds,omitempty" json:"mirror_trigger_builds,omitempty"`
-	OnlyMirrorProtectedBranches               *bool               `url:"only_mirror_protected_branches,omitempty" json:"only_mirror_protected_branches,omitempty"`
-	MirrorOverwritesDivergedBranches          *bool               `url:"mirror_overwrites_diverged_branches,omitempty" json:"mirror_overwrites_diverged_branches,omitempty"`
-	PackagesEnabled                           *bool               `url:"packages_enabled,omitempty" json:"packages_enabled,omitempty"`
-	ServiceDeskEnabled                        *bool               `url:"service_desk_enabled,omitempty" json:"service_desk_enabled,omitempty"`
-	AutocloseReferencedIssues                 *bool               `url:"autoclose_referenced_issues,omitempty" json:"autoclose_referenced_issues,omitempty"`
+	Name                                      *string                              `url:"name,omitempty" json:"name,omitempty"`
+	Path                                      *string                              `url:"path,omitempty" json:"path,omitempty"`
+	DefaultBranch                             *string                              `url:"default_branch,omitempty" json:"default_branch,omitempty"`
+	Description                               *string                              `url:"description,omitempty" json:"description,omitempty"`
+	IssuesAccessLevel                         *AccessControlValue                  `url:"issues_access_level,omitempty" json:"issues_access_level,omitempty"`
+	RepositoryAccessLevel                     *AccessControlValue                  `url:"repository_access_level,omitempty" json:"repository_access_level,omitempty"`
+	MergeRequestsAccessLevel                  *AccessControlValue                  `url:"merge_requests_access_level,omitempty" json:"merge_requests_access_level,omitempty"`
+	ForkingAccessLevel                        *AccessControlValue                  `url:"forking_access_level,omitempty" json:"forking_access_level,omitempty"`
+	BuildsAccessLevel                         *AccessControlValue                  `url:"builds_access_level,omitempty" json:"builds_access_level,omitempty"`
+	WikiAccessLevel                           *AccessControlValue                  `url:"wiki_access_level,omitempty" json:"wiki_access_level,omitempty"`
+	SnippetsAccessLevel                       *AccessControlValue                  `url:"snippets_access_level,omitempty" json:"snippets_access_level,omitempty"`
+	PagesAccessLevel                          *AccessControlValue                  `url:"pages_access_level,omitempty" json:"pages_access_level,omitempty"`
+	EmailsDisabled                            *bool                                `url:"emails_disabled,omitempty" json:"emails_disabled,omitempty"`
+	ResolveOutdatedDiffDiscussions            *bool                                `url:"resolve_outdated_diff_discussions,omitempty" json:"resolve_outdated_diff_discussions,omitempty"`
+	ContainerExpirationPolicyAttributes       *ContainerExpirationPolicyAttributes `url:"container_expiration_policy_attributes,omitempty" json:"container_expiration_policy_attributes,omitempty"`
+	ContainerRegistryEnabled                  *bool                                `url:"container_registry_enabled,omitempty" json:"container_registry_enabled,omitempty"`
+	SharedRunnersEnabled                      *bool                                `url:"shared_runners_enabled,omitempty" json:"shared_runners_enabled,omitempty"`
+	Visibility                                *VisibilityValue                     `url:"visibility,omitempty" json:"visibility,omitempty"`
+	ImportURL                                 *string                              `url:"import_url,omitempty" json:"import_url,omitempty"`
+	PublicBuilds                              *bool                                `url:"public_builds,omitempty" json:"public_builds,omitempty"`
+	OnlyAllowMergeIfPipelineSucceeds          *bool                                `url:"only_allow_merge_if_pipeline_succeeds,omitempty" json:"only_allow_merge_if_pipeline_succeeds,omitempty"`
+	OnlyAllowMergeIfAllDiscussionsAreResolved *bool                                `url:"only_allow_merge_if_all_discussions_are_resolved,omitempty" json:"only_allow_merge_if_all_discussions_are_resolved,omitempty"`
+	MergeMethod                               *MergeMethodValue                    `url:"merge_method,omitempty" json:"merge_method,omitempty"`
+	RemoveSourceBranchAfterMerge              *bool                                `url:"remove_source_branch_after_merge,omitempty" json:"remove_source_branch_after_merge,omitempty"`
+	LFSEnabled                                *bool                                `url:"lfs_enabled,omitempty" json:"lfs_enabled,omitempty"`
+	RequestAccessEnabled                      *bool                                `url:"request_access_enabled,omitempty" json:"request_access_enabled,omitempty"`
+	TagList                                   *[]string                            `url:"tag_list,omitempty" json:"tag_list,omitempty"`
+	BuildGitStrategy                          *string                              `url:"build_git_strategy,omitempty" json:"build_git_strategy,omitempty"`
+	BuildTimeout                              *int                                 `url:"build_timeout,omitempty" json:"build_timeout,omitempty"`
+	AutoCancelPendingPipelines                *string                              `url:"auto_cancel_pending_pipelines,omitempty" json:"auto_cancel_pending_pipelines,omitempty"`
+	BuildCoverageRegex                        *string                              `url:"build_coverage_regex,omitempty" json:"build_coverage_regex,omitempty"`
+	CIConfigPath                              *string                              `url:"ci_config_path,omitempty" json:"ci_config_path,omitempty"`
+	CIForwardDeploymentEnabled                *bool                                `url:"ci_forward_deployment_enabled,omitempty" json:"ci_forward_deployment_enabled,omitempty"`
+	CIDefaultGitDepth                         *int                                 `url:"ci_default_git_depth,omitempty" json:"ci_default_git_depth,omitempty"`
+	AutoDevopsEnabled                         *bool                                `url:"auto_devops_enabled,omitempty" json:"auto_devops_enabled,omitempty"`
+	AutoDevopsDeployStrategy                  *string                              `url:"auto_devops_deploy_strategy,omitempty" json:"auto_devops_deploy_strategy,omitempty"`
+	ApprovalsBeforeMerge                      *int                                 `url:"approvals_before_merge,omitempty" json:"approvals_before_merge,omitempty"`
+	ExternalAuthorizationClassificationLabel  *string                              `url:"external_authorization_classification_label,omitempty" json:"external_authorization_classification_label,omitempty"`
+	Mirror                                    *bool                                `url:"mirror,omitempty" json:"mirror,omitempty"`
+	MirrorUserID                              *int                                 `url:"mirror_user_id,omitempty" json:"mirror_user_id,omitempty"`
+	MirrorTriggerBuilds                       *bool                                `url:"mirror_trigger_builds,omitempty" json:"mirror_trigger_builds,omitempty"`
+	OnlyMirrorProtectedBranches               *bool                                `url:"only_mirror_protected_branches,omitempty" json:"only_mirror_protected_branches,omitempty"`
+	MirrorOverwritesDivergedBranches          *bool                                `url:"mirror_overwrites_diverged_branches,omitempty" json:"mirror_overwrites_diverged_branches,omitempty"`
+	PackagesEnabled                           *bool                                `url:"packages_enabled,omitempty" json:"packages_enabled,omitempty"`
+	ServiceDeskEnabled                        *bool                                `url:"service_desk_enabled,omitempty" json:"service_desk_enabled,omitempty"`
+	AutocloseReferencedIssues                 *bool                                `url:"autoclose_referenced_issues,omitempty" json:"autoclose_referenced_issues,omitempty"`
 
 	// Deprecated members
 	IssuesEnabled        *bool `url:"issues_enabled,omitempty" json:"issues_enabled,omitempty"`
@@ -636,6 +677,13 @@ type EditProjectOptions struct {
 //
 // GitLab API docs: https://docs.gitlab.com/ce/api/projects.html#edit-project
 func (s *ProjectsService) EditProject(pid interface{}, opt *EditProjectOptions, options ...RequestOptionFunc) (*Project, *Response, error) {
+	if opt.ContainerExpirationPolicyAttributes != nil {
+		// This is needed to satisfy the API. Should be deleted
+		// when NameRegex is removed (it's now deprecated).
+		opt.ContainerExpirationPolicyAttributes.NameRegex =
+			opt.ContainerExpirationPolicyAttributes.NameRegexDelete
+	}
+
 	project, err := parseID(pid)
 	if err != nil {
 		return nil, nil, err
diff --git a/protected_branches.go b/protected_branches.go
index 8fccb91..8c1fcff 100644
--- a/protected_branches.go
+++ b/protected_branches.go
@@ -1,5 +1,5 @@
 //
-// Copyright 2021, Sander van Harmelen, Michael Lihs
+// Copyright 2017, Sander van Harmelen, Michael Lihs
 //
 // Licensed under the Apache License, Version 2.0 (the "License");
 // you may not use this file except in compliance with the License.
diff --git a/protected_tags.go b/protected_tags.go
index 6fc70c0..10957af 100644
--- a/protected_tags.go
+++ b/protected_tags.go
@@ -1,19 +1,3 @@
-//
-// Copyright 2021, Sander van Harmelen
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//     http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-//
-
 package gitlab
 
 import (
diff --git a/registry.go b/registry.go
index 6876c3e..8694cf9 100644
--- a/registry.go
+++ b/registry.go
@@ -1,19 +1,3 @@
-//
-// Copyright 2021, Sander van Harmelen
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//     http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-//
-
 package gitlab
 
 import (
diff --git a/releaselinks.go b/releaselinks.go
index 02dfa4a..04daaa8 100644
--- a/releaselinks.go
+++ b/releaselinks.go
@@ -1,19 +1,3 @@
-//
-// Copyright 2021, Sander van Harmelen
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//     http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-//
-
 package gitlab
 
 import (
diff --git a/releases.go b/releases.go
index 769758a..0891d39 100644
--- a/releases.go
+++ b/releases.go
@@ -1,19 +1,3 @@
-//
-// Copyright 2021, Sander van Harmelen
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//     http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-//
-
 package gitlab
 
 import (
diff --git a/repositories.go b/repositories.go
index b500c1b..1c37d11 100644
--- a/repositories.go
+++ b/repositories.go
@@ -1,5 +1,5 @@
 //
-// Copyright 2021, Sander van Harmelen
+// Copyright 2017, Sander van Harmelen
 //
 // Licensed under the Apache License, Version 2.0 (the "License");
 // you may not use this file except in compliance with the License.
diff --git a/repository_files.go b/repository_files.go
index ac08c12..fc0422c 100644
--- a/repository_files.go
+++ b/repository_files.go
@@ -1,5 +1,5 @@
 //
-// Copyright 2021, Sander van Harmelen
+// Copyright 2017, Sander van Harmelen
 //
 // Licensed under the Apache License, Version 2.0 (the "License");
 // you may not use this file except in compliance with the License.
diff --git a/request_options.go b/request_options.go
index b43dd39..9485aed 100644
--- a/request_options.go
+++ b/request_options.go
@@ -1,19 +1,3 @@
-//
-// Copyright 2021, Sander van Harmelen
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//     http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-//
-
 package gitlab
 
 import (
diff --git a/resource_label_events.go b/resource_label_events.go
index e3f6f1c..8d290b7 100644
--- a/resource_label_events.go
+++ b/resource_label_events.go
@@ -1,5 +1,5 @@
 //
-// Copyright 2021, Sander van Harmelen
+// Copyright 2017, Sander van Harmelen
 //
 // Licensed under the Apache License, Version 2.0 (the "License");
 // you may not use this file except in compliance with the License.
diff --git a/runners.go b/runners.go
index 6623b82..ee587d6 100644
--- a/runners.go
+++ b/runners.go
@@ -1,5 +1,5 @@
 //
-// Copyright 2021, Sander van Harmelen
+// Copyright 2017, Sander van Harmelen
 //
 // Licensed under the Apache License, Version 2.0 (the "License");
 // you may not use this file except in compliance with the License.
diff --git a/search.go b/search.go
index 10e4f9b..7ea1bf0 100644
--- a/search.go
+++ b/search.go
@@ -1,5 +1,5 @@
 //
-// Copyright 2021, Sander van Harmelen
+// Copyright 2018, Sander van Harmelen
 //
 // Licensed under the Apache License, Version 2.0 (the "License");
 // you may not use this file except in compliance with the License.
diff --git a/services.go b/services.go
index 41d51db..a7b5f75 100644
--- a/services.go
+++ b/services.go
@@ -1,5 +1,5 @@
 //
-// Copyright 2021, Sander van Harmelen
+// Copyright 2017, Sander van Harmelen
 //
 // Licensed under the Apache License, Version 2.0 (the "License");
 // you may not use this file except in compliance with the License.
diff --git a/settings.go b/settings.go
index adf052a..8811c8c 100644
--- a/settings.go
+++ b/settings.go
@@ -1,5 +1,5 @@
 //
-// Copyright 2021, Sander van Harmelen
+// Copyright 2017, Sander van Harmelen
 //
 // Licensed under the Apache License, Version 2.0 (the "License");
 // you may not use this file except in compliance with the License.
diff --git a/sidekiq_metrics.go b/sidekiq_metrics.go
index 1f0448b..45c205d 100644
--- a/sidekiq_metrics.go
+++ b/sidekiq_metrics.go
@@ -1,5 +1,5 @@
 //
-// Copyright 2021, Sander van Harmelen
+// Copyright 2018, Sander van Harmelen
 //
 // Licensed under the Apache License, Version 2.0 (the "License");
 // you may not use this file except in compliance with the License.
diff --git a/snippets.go b/snippets.go
index 4dfb565..a8025de 100644
--- a/snippets.go
+++ b/snippets.go
@@ -1,5 +1,5 @@
 //
-// Copyright 2021, Sander van Harmelen
+// Copyright 2017, Sander van Harmelen
 //
 // Licensed under the Apache License, Version 2.0 (the "License");
 // you may not use this file except in compliance with the License.
diff --git a/strings.go b/strings.go
index af2133e..aeefb6b 100644
--- a/strings.go
+++ b/strings.go
@@ -1,5 +1,5 @@
 //
-// Copyright 2021, Sander van Harmelen
+// Copyright 2017, Sander van Harmelen
 //
 // Licensed under the Apache License, Version 2.0 (the "License");
 // you may not use this file except in compliance with the License.
diff --git a/system_hooks.go b/system_hooks.go
index 2924e51..041264e 100644
--- a/system_hooks.go
+++ b/system_hooks.go
@@ -1,5 +1,5 @@
 //
-// Copyright 2021, Sander van Harmelen
+// Copyright 2017, Sander van Harmelen
 //
 // Licensed under the Apache License, Version 2.0 (the "License");
 // you may not use this file except in compliance with the License.
diff --git a/tags.go b/tags.go
index 625d522..32fdeb4 100644
--- a/tags.go
+++ b/tags.go
@@ -1,5 +1,5 @@
 //
-// Copyright 2021, Sander van Harmelen
+// Copyright 2017, Sander van Harmelen
 //
 // Licensed under the Apache License, Version 2.0 (the "License");
 // you may not use this file except in compliance with the License.
diff --git a/time_stats.go b/time_stats.go
index 0edd78b..dd1f550 100644
--- a/time_stats.go
+++ b/time_stats.go
@@ -1,19 +1,3 @@
-//
-// Copyright 2021, Sander van Harmelen
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//     http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-//
-
 package gitlab
 
 import (
diff --git a/todos.go b/todos.go
index 5d946af..dc8ebb0 100644
--- a/todos.go
+++ b/todos.go
@@ -1,25 +1,7 @@
-//
-// Copyright 2021, Sander van Harmelen
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//     http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-//
-
 package gitlab
 
-import (
-	"fmt"
-	"time"
-)
+import "time"
+import "fmt"
 
 // TodosService handles communication with the todos related methods of
 // the Gitlab API.
diff --git a/types.go b/types.go
index ab1e2ac..2a7de69 100644
--- a/types.go
+++ b/types.go
@@ -1,19 +1,3 @@
-//
-// Copyright 2021, Sander van Harmelen
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//     http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-//
-
 package gitlab
 
 import (
diff --git a/users.go b/users.go
index 9cb6dc0..3b8dc1b 100644
--- a/users.go
+++ b/users.go
@@ -1,5 +1,5 @@
 //
-// Copyright 2021, Sander van Harmelen
+// Copyright 2017, Sander van Harmelen
 //
 // Licensed under the Apache License, Version 2.0 (the "License");
 // you may not use this file except in compliance with the License.
diff --git a/validate.go b/validate.go
index 20c8057..17ffb15 100644
--- a/validate.go
+++ b/validate.go
@@ -1,19 +1,3 @@
-//
-// Copyright 2021, Sander van Harmelen
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//     http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-//
-
 package gitlab
 
 import "fmt"
diff --git a/version.go b/version.go
index 6c6bb45..f1a3a7f 100644
--- a/version.go
+++ b/version.go
@@ -1,5 +1,5 @@
 //
-// Copyright 2021, Andrea Funto'
+// Copyright 2017, Andrea Funto'
 //
 // Licensed under the Apache License, Version 2.0 (the "License");
 // you may not use this file except in compliance with the License.
diff --git a/wikis.go b/wikis.go
index 9b6bd38..ffabef8 100644
--- a/wikis.go
+++ b/wikis.go
@@ -1,5 +1,4 @@
-//
-// Copyright 2021, Stany MARCEL
+// Copyright 2017, Stany MARCEL
 //
 // Licensed under the Apache License, Version 2.0 (the "License");
 // you may not use this file except in compliance with the License.


Test patch:
diff --git a/access_requests_test.go b/access_requests_test.go
index 2cefb81..4d2d6ba 100644
--- a/access_requests_test.go
+++ b/access_requests_test.go
@@ -1,19 +1,3 @@
-//
-// Copyright 2021, Sander van Harmelen
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//     http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-//
-
 package gitlab
 
 import (
diff --git a/applications_test.go b/applications_test.go
index ea539f3..f3ace63 100644
--- a/applications_test.go
+++ b/applications_test.go
@@ -1,19 +1,3 @@
-//
-// Copyright 2021, Sander van Harmelen
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//     http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-//
-
 package gitlab
 
 import (
diff --git a/branches_test.go b/branches_test.go
index 33e9275..d35b664 100644
--- a/branches_test.go
+++ b/branches_test.go
@@ -1,19 +1,3 @@
-//
-// Copyright 2021, Sander van Harmelen
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//     http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-//
-
 package gitlab
 
 import (
diff --git a/broadcast_messages_test.go b/broadcast_messages_test.go
index 127e3fd..7923263 100644
--- a/broadcast_messages_test.go
+++ b/broadcast_messages_test.go
@@ -1,19 +1,3 @@
-//
-// Copyright 2021, Sander van Harmelen
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//     http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-//
-
 package gitlab
 
 import (
diff --git a/commits_test.go b/commits_test.go
index f972561..8d50fc4 100644
--- a/commits_test.go
+++ b/commits_test.go
@@ -1,19 +1,3 @@
-//
-// Copyright 2021, Sander van Harmelen
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//     http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-//
-
 package gitlab
 
 import (
diff --git a/custom_attributes_test.go b/custom_attributes_test.go
index 9845699..f1fa08e 100644
--- a/custom_attributes_test.go
+++ b/custom_attributes_test.go
@@ -1,19 +1,3 @@
-//
-// Copyright 2021, Sander van Harmelen
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//     http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-//
-
 package gitlab
 
 import (
diff --git a/deploy_tokens_test.go b/deploy_tokens_test.go
index 4822d3e..28b3430 100644
--- a/deploy_tokens_test.go
+++ b/deploy_tokens_test.go
@@ -1,19 +1,3 @@
-//
-// Copyright 2021, Sander van Harmelen
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//     http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-//
-
 package gitlab
 
 import (
diff --git a/environments_test.go b/environments_test.go
index aeea059..e6be457 100644
--- a/environments_test.go
+++ b/environments_test.go
@@ -1,19 +1,3 @@
-//
-// Copyright 2021, Sander van Harmelen
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//     http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-//
-
 package gitlab
 
 import (
diff --git a/epics_test.go b/epics_test.go
index e0a89ea..34ba9b4 100644
--- a/epics_test.go
+++ b/epics_test.go
@@ -1,19 +1,3 @@
-//
-// Copyright 2021, Sander van Harmelen
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//     http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-//
-
 package gitlab
 
 import (
diff --git a/event_parsing_systemhook_test.go b/event_parsing_systemhook_test.go
index 39cdb68..8ec874e 100644
--- a/event_parsing_systemhook_test.go
+++ b/event_parsing_systemhook_test.go
@@ -1,19 +1,3 @@
-//
-// Copyright 2021, Sander van Harmelen
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//     http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-//
-
 package gitlab
 
 import (
diff --git a/event_parsing_webhook_test.go b/event_parsing_webhook_test.go
index d87d000..8e0af2f 100644
--- a/event_parsing_webhook_test.go
+++ b/event_parsing_webhook_test.go
@@ -1,19 +1,3 @@
-//
-// Copyright 2021, Sander van Harmelen
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//     http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-//
-
 package gitlab
 
 import (
diff --git a/event_webhook_types_test.go b/event_webhook_types_test.go
index 374a3e5..3c2b3e9 100644
--- a/event_webhook_types_test.go
+++ b/event_webhook_types_test.go
@@ -1,19 +1,3 @@
-//
-// Copyright 2021, Sander van Harmelen
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//     http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-//
-
 package gitlab
 
 import (
diff --git a/examples/pipelinestestreport.go b/examples/pipelinestestreport.go
index a97a908..c948a8a 100644
--- a/examples/pipelinestestreport.go
+++ b/examples/pipelinestestreport.go
@@ -1,19 +1,3 @@
-//
-// Copyright 2021, Sander van Harmelen
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//     http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-//
-
 package main
 
 import (
diff --git a/feature_flags_test.go b/feature_flags_test.go
index 3b56d24..fb52b3d 100644
--- a/feature_flags_test.go
+++ b/feature_flags_test.go
@@ -1,19 +1,3 @@
-//
-// Copyright 2021, Sander van Harmelen
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//     http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-//
-
 package gitlab
 
 import (
diff --git a/fixtures_test.go b/fixtures_test.go
index 4528d98..ba87507 100644
--- a/fixtures_test.go
+++ b/fixtures_test.go
@@ -1,19 +1,3 @@
-//
-// Copyright 2021, Sander van Harmelen
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//     http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-//
-
 package gitlab
 
 const (
diff --git a/gitlab_test.go b/gitlab_test.go
index 81b883a..9acc2cc 100644
--- a/gitlab_test.go
+++ b/gitlab_test.go
@@ -1,19 +1,3 @@
-//
-// Copyright 2021, Sander van Harmelen
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//     http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-//
-
 package gitlab
 
 import (
diff --git a/group_hooks_test.go b/group_hooks_test.go
index b07b889..839b4cf 100644
--- a/group_hooks_test.go
+++ b/group_hooks_test.go
@@ -1,5 +1,5 @@
 //
-// Copyright 2021, Eric Stevens
+// Copyright 2020, Eric Stevens
 //
 // Licensed under the Apache License, Version 2.0 (the "License");
 // you may not use this file except in compliance with the License.
diff --git a/group_labels_test.go b/group_labels_test.go
index e939d4b..9a9bca8 100644
--- a/group_labels_test.go
+++ b/group_labels_test.go
@@ -1,19 +1,3 @@
-//
-// Copyright 2021, Sander van Harmelen
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//     http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-//
-
 package gitlab
 
 import (
diff --git a/group_variables_test.go b/group_variables_test.go
index 473d1f0..27958f8 100644
--- a/group_variables_test.go
+++ b/group_variables_test.go
@@ -1,19 +1,3 @@
-//
-// Copyright 2021, Sander van Harmelen
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//     http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-//
-
 package gitlab
 
 import (
diff --git a/groups_badges_test.go b/groups_badges_test.go
index c35b75c..51a3a02 100644
--- a/groups_badges_test.go
+++ b/groups_badges_test.go
@@ -1,19 +1,3 @@
-//
-// Copyright 2021, Sander van Harmelen
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//     http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-//
-
 package gitlab
 
 import (
diff --git a/groups_test.go b/groups_test.go
index b8e1ed6..204125c 100644
--- a/groups_test.go
+++ b/groups_test.go
@@ -291,7 +291,7 @@ func TestRestoreGroup(t *testing.T) {
 			fmt.Fprint(w, `{"id": 1, "name": "g"}`)
 		})
 
-	group, _, err := client.Groups.RestoreGroup(1)
+	group,_, err := client.Groups.RestoreGroup(1)
 	if err != nil {
 		t.Errorf("Groups.RestoreGroup returned error: %v", err)
 	}
diff --git a/issues_statistics_test.go b/issues_statistics_test.go
index fa1e905..d44061e 100644
--- a/issues_statistics_test.go
+++ b/issues_statistics_test.go
@@ -1,19 +1,3 @@
-//
-// Copyright 2021, Sander van Harmelen
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//     http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-//
-
 package gitlab
 
 import (
diff --git a/issues_test.go b/issues_test.go
index 354e987..e0bbbe3 100644
--- a/issues_test.go
+++ b/issues_test.go
@@ -1,19 +1,3 @@
-//
-// Copyright 2021, Sander van Harmelen
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//     http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-//
-
 package gitlab
 
 import (
diff --git a/jobs_test.go b/jobs_test.go
index 9bd619b..daaac18 100644
--- a/jobs_test.go
+++ b/jobs_test.go
@@ -1,19 +1,3 @@
-//
-// Copyright 2021, Sander van Harmelen
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//     http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-//
-
 package gitlab
 
 import (
diff --git a/keys_test.go b/keys_test.go
index 814ecdd..bfeee7b 100644
--- a/keys_test.go
+++ b/keys_test.go
@@ -1,19 +1,3 @@
-//
-// Copyright 2021, Sander van Harmelen
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//     http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-//
-
 package gitlab
 
 import (
diff --git a/labels_test.go b/labels_test.go
index 1b7cb09..5eae95c 100644
--- a/labels_test.go
+++ b/labels_test.go
@@ -1,19 +1,3 @@
-//
-// Copyright 2021, Sander van Harmelen
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//     http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-//
-
 package gitlab
 
 import (
diff --git a/merge_request_approvals_test.go b/merge_request_approvals_test.go
index 0b8c76a..9d149a5 100644
--- a/merge_request_approvals_test.go
+++ b/merge_request_approvals_test.go
@@ -1,19 +1,3 @@
-//
-// Copyright 2021, Sander van Harmelen
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//     http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-//
-
 package gitlab
 
 import (
diff --git a/merge_requests_test.go b/merge_requests_test.go
index e5df632..a3822ad 100644
--- a/merge_requests_test.go
+++ b/merge_requests_test.go
@@ -1,19 +1,3 @@
-//
-// Copyright 2021, Sander van Harmelen
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//     http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-//
-
 package gitlab
 
 import (
diff --git a/notes_test.go b/notes_test.go
index 1ae1fff..4d32440 100644
--- a/notes_test.go
+++ b/notes_test.go
@@ -1,19 +1,3 @@
-//
-// Copyright 2021, Sander van Harmelen
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//     http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-//
-
 package gitlab
 
 import (
diff --git a/pipeline_schedules_test.go b/pipeline_schedules_test.go
index f5856a5..2f2b6a5 100644
--- a/pipeline_schedules_test.go
+++ b/pipeline_schedules_test.go
@@ -1,19 +1,3 @@
-//
-// Copyright 2021, Sander van Harmelen
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//     http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-//
-
 package gitlab
 
 import (
diff --git a/pipeline_triggers_test.go b/pipeline_triggers_test.go
index 4e664a9..f4233c8 100644
--- a/pipeline_triggers_test.go
+++ b/pipeline_triggers_test.go
@@ -1,19 +1,3 @@
-//
-// Copyright 2021, Sander van Harmelen
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//     http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-//
-
 package gitlab
 
 import (
diff --git a/pipelines_test.go b/pipelines_test.go
index 70d9d31..b249a63 100644
--- a/pipelines_test.go
+++ b/pipelines_test.go
@@ -1,19 +1,3 @@
-//
-// Copyright 2021, Sander van Harmelen
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//     http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-//
-
 package gitlab
 
 import (
diff --git a/project_clusters_test.go b/project_clusters_test.go
index 9251710..8253de8 100644
--- a/project_clusters_test.go
+++ b/project_clusters_test.go
@@ -1,19 +1,3 @@
-//
-// Copyright 2021, Sander van Harmelen
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//     http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-//
-
 package gitlab
 
 import (
diff --git a/projects_test.go b/projects_test.go
index 46df850..b33043b 100644
--- a/projects_test.go
+++ b/projects_test.go
@@ -1,19 +1,3 @@
-//
-// Copyright 2021, Sander van Harmelen
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//     http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-//
-
 package gitlab
 
 import (
@@ -24,6 +8,7 @@ import (
 	"reflect"
 	"strings"
 	"testing"
+	"time"
 )
 
 func TestListProjects(t *testing.T) {
@@ -206,9 +191,32 @@ func TestGetProjectByID(t *testing.T) {
 
 	mux.HandleFunc("/api/v4/projects/1", func(w http.ResponseWriter, r *http.Request) {
 		testMethod(t, r, "GET")
-		fmt.Fprint(w, `{"id":1, "packages_enabled": false}`)
+		fmt.Fprint(w, `{
+			"id": 1,
+			"container_registry_enabled": true,
+			"container_expiration_policy": {
+			  "cadence": "7d",
+			  "enabled": false,
+			  "keep_n": null,
+			  "older_than": null,
+			  "name_regex_delete": null,
+			  "name_regex_keep": null,
+			  "next_run_at": "2020-01-07T21:42:58.658Z"
+			},
+			"packages_enabled": false
+		  }`)
 	})
-	want := &Project{ID: 1, PackagesEnabled: false}
+
+	wantTimestamp := time.Date(2020, 01, 07, 21, 42, 58, 658000000, time.UTC)
+	want := &Project{
+		ID:                       1,
+		ContainerRegistryEnabled: true,
+		ContainerExpirationPolicy: &ContainerExpirationPolicy{
+			Cadence:   "7d",
+			NextRunAt: &wantTimestamp,
+		},
+		PackagesEnabled: false,
+	}
 
 	project, _, err := client.Projects.GetProject(1, nil)
 	if err != nil {
diff --git a/protected_branches_test.go b/protected_branches_test.go
index c95ad39..8520d93 100644
--- a/protected_branches_test.go
+++ b/protected_branches_test.go
@@ -1,19 +1,3 @@
-//
-// Copyright 2021, Sander van Harmelen
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//     http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-//
-
 package gitlab
 
 import (
diff --git a/protected_tags_test.go b/protected_tags_test.go
index b2f2f11..61cd3c5 100644
--- a/protected_tags_test.go
+++ b/protected_tags_test.go
@@ -1,19 +1,3 @@
-//
-// Copyright 2021, Sander van Harmelen
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//     http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-//
-
 package gitlab
 
 import (
diff --git a/releaselinks_test.go b/releaselinks_test.go
index 9eb0111..4a3e4f2 100644
--- a/releaselinks_test.go
+++ b/releaselinks_test.go
@@ -1,19 +1,3 @@
-//
-// Copyright 2021, Sander van Harmelen
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//     http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-//
-
 package gitlab
 
 import (
diff --git a/releases_test.go b/releases_test.go
index 2ce38b8..69a2636 100644
--- a/releases_test.go
+++ b/releases_test.go
@@ -1,19 +1,3 @@
-//
-// Copyright 2021, Sander van Harmelen
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//     http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-//
-
 package gitlab
 
 import (
diff --git a/runners_test.go b/runners_test.go
index a72d611..e3f1d9a 100644
--- a/runners_test.go
+++ b/runners_test.go
@@ -1,5 +1,5 @@
 //
-// Copyright 2021, Sander van Harmelen
+// Copyright 2017, Sander van Harmelen
 //
 // Licensed under the Apache License, Version 2.0 (the "License");
 // you may not use this file except in compliance with the License.
diff --git a/search_test.go b/search_test.go
index f62a8fd..c8d67ff 100644
--- a/search_test.go
+++ b/search_test.go
@@ -1,19 +1,3 @@
-//
-// Copyright 2021, Sander van Harmelen
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//     http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-//
-
 package gitlab
 
 import (
diff --git a/services_test.go b/services_test.go
index 3df1d93..c23a990 100644
--- a/services_test.go
+++ b/services_test.go
@@ -1,19 +1,3 @@
-//
-// Copyright 2021, Sander van Harmelen
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//     http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-//
-
 package gitlab
 
 import (
diff --git a/settings_test.go b/settings_test.go
index 35018fc..b97d515 100644
--- a/settings_test.go
+++ b/settings_test.go
@@ -1,19 +1,3 @@
-//
-// Copyright 2021, Sander van Harmelen
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//     http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-//
-
 package gitlab
 
 import (
diff --git a/tags_test.go b/tags_test.go
index 77137b5..2f509dc 100644
--- a/tags_test.go
+++ b/tags_test.go
@@ -1,19 +1,3 @@
-//
-// Copyright 2021, Sander van Harmelen
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//     http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-//
-
 package gitlab
 
 import (
diff --git a/todos_test.go b/todos_test.go
index 9a8f5d7..1792b99 100644
--- a/todos_test.go
+++ b/todos_test.go
@@ -1,19 +1,3 @@
-//
-// Copyright 2021, Sander van Harmelen
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//     http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-//
-
 package gitlab
 
 import (
diff --git a/types_test.go b/types_test.go
index 69de3a0..6e14e7c 100644
--- a/types_test.go
+++ b/types_test.go
@@ -1,19 +1,3 @@
-//
-// Copyright 2021, Sander van Harmelen
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//     http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-//
-
 package gitlab
 
 import (
diff --git a/users_test.go b/users_test.go
index 2e14547..63863a6 100644
--- a/users_test.go
+++ b/users_test.go
@@ -1,19 +1,3 @@
-//
-// Copyright 2021, Sander van Harmelen
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//     http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-//
-
 package gitlab
 
 import (
diff --git a/validate_test.go b/validate_test.go
index b3cf95e..4c0ba00 100644
--- a/validate_test.go
+++ b/validate_test.go
@@ -1,19 +1,3 @@
-//
-// Copyright 2021, Sander van Harmelen
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//     http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-//
-
 package gitlab
 
 import (
diff --git a/version_test.go b/version_test.go
index 93d6c84..f9a46df 100644
--- a/version_test.go
+++ b/version_test.go
@@ -1,19 +1,3 @@
-//
-// Copyright 2021, Sander van Harmelen
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//     http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-//
-
 package gitlab
 
 import (