Skip to content

Commit 4b8e5ca

Browse files
CLI-1540: Added Multiple endpoints in Codebases and Sites. (#507)
* CLI-1540: Added Multiple endpoints in Codebases and Sites. * CLI-1540: Changed Annotions in Codebases and Sites. * CLI-1540: Added assertion in codebasestest and sitestest. * CLI-1540: Added assertion in codebasestest and sitestest. * CLI-1540: Added SiteInstance Endpoints. * CLI-1540: Added SiteInstance Endpoints. * CLI-1540: Added SiteInstanceTests. * CLI-1540: Added CodebaseEnvironments endpoints. * CLI-1540: Added CodebaseEnvironments endpoints. * CLI-1540: Added for mutation testing. * CLI-1540: Added for mutation testing.
1 parent 62dee2c commit 4b8e5ca

49 files changed

Lines changed: 3606 additions & 0 deletions

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.
Lines changed: 135 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,135 @@
1+
<?php
2+
3+
namespace AcquiaCloudApi\Endpoints;
4+
5+
use AcquiaCloudApi\Response\CodebaseEnvironmentResponse;
6+
use AcquiaCloudApi\Response\CodebaseEnvironmentsResponse;
7+
use AcquiaCloudApi\Response\OperationResponse;
8+
9+
/**
10+
* Class CodebaseEnvironments
11+
*
12+
* @package AcquiaCloudApi\CloudApi
13+
*/
14+
class CodebaseEnvironments extends CloudApiBase
15+
{
16+
/**
17+
* Returns a list of environments for a codebase.
18+
*/
19+
public function getAll(string $codebaseId): CodebaseEnvironmentsResponse
20+
{
21+
return new CodebaseEnvironmentsResponse(
22+
$this->client->request(
23+
'get',
24+
"/api/codebases/$codebaseId/environments"
25+
)
26+
);
27+
}
28+
29+
/**
30+
* Returns information about a specific environment for a codebase.
31+
*/
32+
public function get(string $codebaseId, string $environmentId): CodebaseEnvironmentResponse
33+
{
34+
return new CodebaseEnvironmentResponse(
35+
$this->client->request(
36+
'get',
37+
"/api/codebases/$codebaseId/environments/$environmentId"
38+
)
39+
);
40+
}
41+
42+
/**
43+
* Returns information about a specific environment by ID.
44+
*/
45+
public function getById(string $environmentId): CodebaseEnvironmentResponse
46+
{
47+
return new CodebaseEnvironmentResponse(
48+
$this->client->request(
49+
'get',
50+
"/api/environments/$environmentId"
51+
)
52+
);
53+
}
54+
55+
/**
56+
* Updates the properties for an environment.
57+
*
58+
* @param array<string, mixed> $properties
59+
*/
60+
public function update(string $environmentId, array $properties): OperationResponse
61+
{
62+
$options = [
63+
'json' => [
64+
'properties' => $properties
65+
],
66+
];
67+
68+
return new OperationResponse(
69+
$this->client->request(
70+
'put',
71+
"/api/environments/$environmentId",
72+
$options
73+
)
74+
);
75+
}
76+
77+
/**
78+
* Associates an environment with a private network.
79+
*/
80+
public function associatePrivateNetwork(string $environmentId, string $privateNetworkId): OperationResponse
81+
{
82+
$options = [
83+
'json' => [
84+
'private_network_id' => $privateNetworkId
85+
],
86+
];
87+
88+
return new OperationResponse(
89+
$this->client->request(
90+
'put',
91+
"/api/environments/$environmentId/private-network",
92+
$options
93+
)
94+
);
95+
}
96+
97+
/**
98+
* Disassociates an environment from a private network.
99+
*/
100+
public function disassociatePrivateNetwork(string $environmentId): OperationResponse
101+
{
102+
return new OperationResponse(
103+
$this->client->request(
104+
'delete',
105+
"/api/environments/$environmentId/private-network"
106+
)
107+
);
108+
}
109+
110+
/**
111+
* Gets environments associated with a private network.
112+
*/
113+
public function getByPrivateNetwork(string $privateNetworkId): CodebaseEnvironmentsResponse
114+
{
115+
return new CodebaseEnvironmentsResponse(
116+
$this->client->request(
117+
'get',
118+
"/api/private-networks/$privateNetworkId/environments"
119+
)
120+
);
121+
}
122+
123+
/**
124+
* Gets environments associated with a site.
125+
*/
126+
public function getBySite(string $siteId): CodebaseEnvironmentsResponse
127+
{
128+
return new CodebaseEnvironmentsResponse(
129+
$this->client->request(
130+
'get',
131+
"/api/sites/$siteId/environments"
132+
)
133+
);
134+
}
135+
}

src/Endpoints/Codebases.php

Lines changed: 163 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,13 @@
44

55
use AcquiaCloudApi\Response\CodebasesResponse;
66
use AcquiaCloudApi\Response\CodebaseResponse;
7+
use AcquiaCloudApi\Response\ApplicationsResponse;
8+
use AcquiaCloudApi\Response\ReferencesResponse;
9+
use AcquiaCloudApi\Response\ReferenceResponse;
10+
use AcquiaCloudApi\Response\BulkCodeSwitchResponse;
11+
use AcquiaCloudApi\Response\CodebaseEnvironmentsResponse;
12+
use AcquiaCloudApi\Response\SitesResponse;
13+
use AcquiaCloudApi\Response\OperationResponse;
714

815
class Codebases extends CloudApiBase
916
{
@@ -34,4 +41,160 @@ public function get(string $codebaseUuid): CodebaseResponse
3441
)
3542
);
3643
}
44+
45+
/**
46+
* Shows all codebases for a subscription.
47+
*
48+
* @param string $subscriptionUuid The subscription UUID.
49+
*/
50+
public function getBySubscription(string $subscriptionUuid): CodebasesResponse
51+
{
52+
return new CodebasesResponse(
53+
$this->client->request(
54+
'get',
55+
"/subscriptions/$subscriptionUuid/codebases"
56+
)
57+
);
58+
}
59+
60+
/**
61+
* Shows all applications associated with a codebase.
62+
*
63+
* @param string $codebaseUuid The codebase UUID.
64+
*/
65+
public function getApplications(string $codebaseUuid): ApplicationsResponse
66+
{
67+
return new ApplicationsResponse(
68+
$this->client->request(
69+
'get',
70+
"/codebases/$codebaseUuid/applications"
71+
)
72+
);
73+
}
74+
75+
/**
76+
* Shows all git references for a codebase.
77+
*
78+
* @param string $codebaseUuid The codebase UUID.
79+
*/
80+
public function getReferences(string $codebaseUuid): ReferencesResponse
81+
{
82+
return new ReferencesResponse(
83+
$this->client->request(
84+
'get',
85+
"/codebases/$codebaseUuid/references"
86+
)
87+
);
88+
}
89+
90+
/**
91+
* Shows information about a specific git reference.
92+
*
93+
* @param string $codebaseUuid The codebase UUID.
94+
* @param string $referenceName The reference name (branch or tag).
95+
*/
96+
public function getReference(string $codebaseUuid, string $referenceName): ReferenceResponse
97+
{
98+
return new ReferenceResponse(
99+
$this->client->request(
100+
'get',
101+
"/codebases/$codebaseUuid/references/$referenceName"
102+
)
103+
);
104+
}
105+
106+
/**
107+
* Shows all sites associated with a codebase.
108+
*
109+
* @param string $codebaseUuid The codebase UUID.
110+
*/
111+
public function getSites(string $codebaseUuid): SitesResponse
112+
{
113+
return new SitesResponse(
114+
$this->client->request(
115+
'get',
116+
"/codebases/$codebaseUuid/sites"
117+
)
118+
);
119+
}
120+
/**
121+
* Shows all environments associated with a codebase.
122+
*
123+
* @param string $codebaseUuid The codebase UUID.
124+
*/
125+
public function getEnvironments(string $codebaseUuid): CodebaseEnvironmentsResponse
126+
{
127+
return new CodebaseEnvironmentsResponse(
128+
$this->client->request(
129+
'get',
130+
"/codebases/$codebaseUuid/environments"
131+
)
132+
);
133+
}
134+
135+
/**
136+
* Retrieves a list of bulk code switches performed on a codebase.
137+
*
138+
* @param string $codebaseUuid The codebase UUID.
139+
* @param array<string, mixed> $options Query parameters (limit, offset).
140+
*/
141+
public function getBulkCodeSwitches(string $codebaseUuid, array $options = []): BulkCodeSwitchResponse
142+
{
143+
$path = "/codebases/$codebaseUuid/bulk-code-switch";
144+
return new BulkCodeSwitchResponse(
145+
$this->client->request('get', $path, $options)
146+
);
147+
}
148+
149+
/**
150+
* Shows information about a specific bulk code switch.
151+
*
152+
* @param string $codebaseUuid The codebase UUID.
153+
* @param string $bulkCodeSwitchId The bulk code switch ID.
154+
*/
155+
public function getBulkCodeSwitch(string $codebaseUuid, string $bulkCodeSwitchId): BulkCodeSwitchResponse
156+
{
157+
return new BulkCodeSwitchResponse(
158+
$this->client->request(
159+
'get',
160+
"/codebases/$codebaseUuid/bulk-code-switch/$bulkCodeSwitchId"
161+
)
162+
);
163+
}
164+
165+
/**
166+
* Starts a new bulk code switch for a codebase.
167+
*
168+
* @param string $codebaseUuid The codebase UUID.
169+
* @param string $reference The reference to switch to (branch name or tag).
170+
* @param array<int, array<string, mixed>> $targets Array of targets with environment_id and optional cloud_actions.
171+
* @param array<string, mixed> $cloudActions Optional global cloud actions to perform.
172+
*/
173+
public function createBulkCodeSwitch(
174+
string $codebaseUuid,
175+
string $reference,
176+
array $targets,
177+
array $cloudActions = []
178+
): OperationResponse {
179+
$data = [
180+
'reference' => $reference,
181+
'targets' => $targets,
182+
];
183+
184+
if (!empty($cloudActions)) {
185+
$data['cloud_actions'] = $cloudActions;
186+
}
187+
188+
$options = [
189+
'json' => $data,
190+
];
191+
192+
return new OperationResponse(
193+
$this->client->request(
194+
'post',
195+
"/codebases/$codebaseUuid/bulk-code-switch",
196+
$options
197+
)
198+
);
199+
}
37200
}

0 commit comments

Comments
 (0)