1414
1515namespace Gitlab \Api ;
1616
17+ use Symfony \Component \OptionsResolver \Options ;
18+
1719class Deployments extends AbstractApi
1820{
1921 /**
2022 * @param array $parameters {
2123 *
22- * @var string $order_by Return deployments ordered by id, iid, created_at, updated_at,
24+ * @var string $order_by Return deployments ordered by id, iid, created_at, updated_at, finished_at,
2325 * or ref fields (default is id)
2426 * @var string $sort Return deployments sorted in asc or desc order (default is desc)
2527 * @var string $status Return deployments filtered by status of deployment allowed
@@ -31,17 +33,51 @@ class Deployments extends AbstractApi
3133 public function all (int |string $ project_id , array $ parameters = []): mixed
3234 {
3335 $ resolver = $ this ->createOptionsResolver ();
36+
37+ $ datetimeNormalizer = function (Options $ resolver , \DateTimeInterface $ value ): string {
38+ $ utc = (new \DateTimeImmutable ($ value ->format (\DateTimeImmutable::RFC3339_EXTENDED )))->setTimezone (new \DateTimeZone ('UTC ' ));
39+
40+ return $ utc ->format ('Y-m-d\TH:i:s.v\Z ' );
41+ };
42+
3443 $ resolver ->setDefined ('order_by ' )
3544 ->setAllowedTypes ('order_by ' , 'string ' )
36- ->setAllowedValues ('order_by ' , ['id ' , 'iid ' , 'created_at ' , 'updated_at ' , 'ref ' ]);
45+ ->setAllowedValues ('order_by ' , ['id ' , 'iid ' , 'created_at ' , 'updated_at ' , 'finished_at ' , 'ref ' ])
46+ ;
47+
3748 $ resolver ->setDefined ('sort ' )
3849 ->setAllowedTypes ('sort ' , 'string ' )
39- ->setAllowedValues ('sort ' , ['desc ' , 'asc ' ]);
50+ ->setAllowedValues ('sort ' , ['asc ' , 'desc ' ])
51+ ;
52+
53+ $ resolver ->setDefined ('updated_after ' )
54+ ->setAllowedTypes ('updated_after ' , \DateTimeInterface::class)
55+ ->setNormalizer ('updated_after ' , $ datetimeNormalizer )
56+ ;
57+
58+ $ resolver ->setDefined ('updated_before ' )
59+ ->setAllowedTypes ('updated_before ' , \DateTimeInterface::class)
60+ ->setNormalizer ('updated_before ' , $ datetimeNormalizer )
61+ ;
62+
63+ $ resolver ->setDefined ('finished_after ' )
64+ ->setAllowedTypes ('finished_after ' , \DateTimeInterface::class)
65+ ->setNormalizer ('finished_after ' , $ datetimeNormalizer )
66+ ;
67+
68+ $ resolver ->setDefined ('finished_before ' )
69+ ->setAllowedTypes ('finished_before ' , \DateTimeInterface::class)
70+ ->setNormalizer ('finished_before ' , $ datetimeNormalizer )
71+ ;
72+
73+ $ resolver ->setDefined ('environment ' )
74+ ->setAllowedTypes ('environment ' , 'string ' )
75+ ;
76+
4077 $ resolver ->setDefined ('status ' )
4178 ->setAllowedTypes ('status ' , 'string ' )
42- ->setAllowedValues ('status ' , ['created ' , 'running ' , 'success ' , 'failed ' , 'canceled ' , 'blocked ' ]);
43- $ resolver ->setDefined ('environment ' )
44- ->setAllowedTypes ('environment ' , 'string ' );
79+ ->setAllowedValues ('status ' , ['created ' , 'running ' , 'success ' , 'failed ' , 'canceled ' , 'blocked ' ])
80+ ;
4581
4682 return $ this ->get ($ this ->getProjectPath ($ project_id , 'deployments ' ), $ resolver ->resolve ($ parameters ));
4783 }
0 commit comments