Merge pull request #4571 from SierraJC/fix/api--projects-apps-fixes

Fix: API - Projects & Applications endpoints issues
This commit is contained in:
Andras Bacsai
2024-12-18 11:06:22 +01:00
committed by GitHub
4 changed files with 208 additions and 44 deletions

View File

@@ -189,8 +189,17 @@ class ApplicationsController extends Controller
), ),
responses: [ responses: [
new OA\Response( new OA\Response(
response: 200, response: 201,
description: 'Application created successfully.', description: 'Application created successfully.',
content: new OA\MediaType(
mediaType: 'application/json',
schema: new OA\Schema(
type: 'object',
properties: [
'uuid' => ['type' => 'string'],
]
)
)
), ),
new OA\Response( new OA\Response(
response: 401, response: 401,
@@ -296,8 +305,17 @@ class ApplicationsController extends Controller
), ),
responses: [ responses: [
new OA\Response( new OA\Response(
response: 200, response: 201,
description: 'Application created successfully.', description: 'Application created successfully.',
content: new OA\MediaType(
mediaType: 'application/json',
schema: new OA\Schema(
type: 'object',
properties: [
'uuid' => ['type' => 'string'],
]
)
)
), ),
new OA\Response( new OA\Response(
response: 401, response: 401,
@@ -403,8 +421,17 @@ class ApplicationsController extends Controller
), ),
responses: [ responses: [
new OA\Response( new OA\Response(
response: 200, response: 201,
description: 'Application created successfully.', description: 'Application created successfully.',
content: new OA\MediaType(
mediaType: 'application/json',
schema: new OA\Schema(
type: 'object',
properties: [
'uuid' => ['type' => 'string'],
]
)
)
), ),
new OA\Response( new OA\Response(
response: 401, response: 401,
@@ -494,8 +521,17 @@ class ApplicationsController extends Controller
), ),
responses: [ responses: [
new OA\Response( new OA\Response(
response: 200, response: 201,
description: 'Application created successfully.', description: 'Application created successfully.',
content: new OA\MediaType(
mediaType: 'application/json',
schema: new OA\Schema(
type: 'object',
properties: [
'uuid' => ['type' => 'string'],
]
)
)
), ),
new OA\Response( new OA\Response(
response: 401, response: 401,
@@ -582,8 +618,17 @@ class ApplicationsController extends Controller
), ),
responses: [ responses: [
new OA\Response( new OA\Response(
response: 200, response: 201,
description: 'Application created successfully.', description: 'Application created successfully.',
content: new OA\MediaType(
mediaType: 'application/json',
schema: new OA\Schema(
type: 'object',
properties: [
'uuid' => ['type' => 'string'],
]
)
)
), ),
new OA\Response( new OA\Response(
response: 401, response: 401,
@@ -636,8 +681,17 @@ class ApplicationsController extends Controller
), ),
responses: [ responses: [
new OA\Response( new OA\Response(
response: 200, response: 201,
description: 'Application created successfully.', description: 'Application created successfully.',
content: new OA\MediaType(
mediaType: 'application/json',
schema: new OA\Schema(
type: 'object',
properties: [
'uuid' => ['type' => 'string'],
]
)
)
), ),
new OA\Response( new OA\Response(
response: 401, response: 401,
@@ -833,7 +887,7 @@ class ApplicationsController extends Controller
return response()->json(serializeApiResponse([ return response()->json(serializeApiResponse([
'uuid' => data_get($application, 'uuid'), 'uuid' => data_get($application, 'uuid'),
'domains' => data_get($application, 'domains'), 'domains' => data_get($application, 'domains'),
])); ]))->setStatusCode(201);
} elseif ($type === 'private-gh-app') { } elseif ($type === 'private-gh-app') {
$validationRules = [ $validationRules = [
'git_repository' => 'string|required', 'git_repository' => 'string|required',
@@ -904,12 +958,12 @@ class ApplicationsController extends Controller
$application->environment_id = $environment->id; $application->environment_id = $environment->id;
$application->source_type = $githubApp->getMorphClass(); $application->source_type = $githubApp->getMorphClass();
$application->source_id = $githubApp->id; $application->source_id = $githubApp->id;
$application->save();
$application->refresh();
if (isset($useBuildServer)) { if (isset($useBuildServer)) {
$application->settings->is_build_server_enabled = $useBuildServer; $application->settings->is_build_server_enabled = $useBuildServer;
$application->settings->save(); $application->settings->save();
} }
$application->save();
$application->refresh();
if (! $application->settings->is_container_label_readonly_enabled) { if (! $application->settings->is_container_label_readonly_enabled) {
$application->custom_labels = str(implode('|coolify|', generateLabelsApplication($application)))->replace('|coolify|', "\n"); $application->custom_labels = str(implode('|coolify|', generateLabelsApplication($application)))->replace('|coolify|', "\n");
$application->save(); $application->save();
@@ -934,7 +988,7 @@ class ApplicationsController extends Controller
return response()->json(serializeApiResponse([ return response()->json(serializeApiResponse([
'uuid' => data_get($application, 'uuid'), 'uuid' => data_get($application, 'uuid'),
'domains' => data_get($application, 'domains'), 'domains' => data_get($application, 'domains'),
])); ]))->setStatusCode(201);
} elseif ($type === 'private-deploy-key') { } elseif ($type === 'private-deploy-key') {
$validationRules = [ $validationRules = [
@@ -1001,12 +1055,12 @@ class ApplicationsController extends Controller
$application->destination_id = $destination->id; $application->destination_id = $destination->id;
$application->destination_type = $destination->getMorphClass(); $application->destination_type = $destination->getMorphClass();
$application->environment_id = $environment->id; $application->environment_id = $environment->id;
$application->save();
$application->refresh();
if (isset($useBuildServer)) { if (isset($useBuildServer)) {
$application->settings->is_build_server_enabled = $useBuildServer; $application->settings->is_build_server_enabled = $useBuildServer;
$application->settings->save(); $application->settings->save();
} }
$application->save();
$application->refresh();
if (! $application->settings->is_container_label_readonly_enabled) { if (! $application->settings->is_container_label_readonly_enabled) {
$application->custom_labels = str(implode('|coolify|', generateLabelsApplication($application)))->replace('|coolify|', "\n"); $application->custom_labels = str(implode('|coolify|', generateLabelsApplication($application)))->replace('|coolify|', "\n");
$application->save(); $application->save();
@@ -1031,7 +1085,7 @@ class ApplicationsController extends Controller
return response()->json(serializeApiResponse([ return response()->json(serializeApiResponse([
'uuid' => data_get($application, 'uuid'), 'uuid' => data_get($application, 'uuid'),
'domains' => data_get($application, 'domains'), 'domains' => data_get($application, 'domains'),
])); ]))->setStatusCode(201);
} elseif ($type === 'dockerfile') { } elseif ($type === 'dockerfile') {
$validationRules = [ $validationRules = [
'dockerfile' => 'string|required', 'dockerfile' => 'string|required',
@@ -1087,15 +1141,16 @@ class ApplicationsController extends Controller
$application->destination_id = $destination->id; $application->destination_id = $destination->id;
$application->destination_type = $destination->getMorphClass(); $application->destination_type = $destination->getMorphClass();
$application->environment_id = $environment->id; $application->environment_id = $environment->id;
if (isset($useBuildServer)) {
$application->settings->is_build_server_enabled = $useBuildServer;
$application->settings->save();
}
$application->git_repository = 'coollabsio/coolify'; $application->git_repository = 'coollabsio/coolify';
$application->git_branch = 'main'; $application->git_branch = 'main';
$application->save(); $application->save();
$application->refresh(); $application->refresh();
if (isset($useBuildServer)) {
$application->settings->is_build_server_enabled = $useBuildServer;
$application->settings->save();
}
if (! $application->settings->is_container_label_readonly_enabled) { if (! $application->settings->is_container_label_readonly_enabled) {
$application->custom_labels = str(implode('|coolify|', generateLabelsApplication($application)))->replace('|coolify|', "\n"); $application->custom_labels = str(implode('|coolify|', generateLabelsApplication($application)))->replace('|coolify|', "\n");
$application->save(); $application->save();
@@ -1116,7 +1171,7 @@ class ApplicationsController extends Controller
return response()->json(serializeApiResponse([ return response()->json(serializeApiResponse([
'uuid' => data_get($application, 'uuid'), 'uuid' => data_get($application, 'uuid'),
'domains' => data_get($application, 'domains'), 'domains' => data_get($application, 'domains'),
])); ]))->setStatusCode(201);
} elseif ($type === 'dockerimage') { } elseif ($type === 'dockerimage') {
$validationRules = [ $validationRules = [
'docker_registry_image_name' => 'string|required', 'docker_registry_image_name' => 'string|required',
@@ -1151,15 +1206,15 @@ class ApplicationsController extends Controller
$application->destination_id = $destination->id; $application->destination_id = $destination->id;
$application->destination_type = $destination->getMorphClass(); $application->destination_type = $destination->getMorphClass();
$application->environment_id = $environment->id; $application->environment_id = $environment->id;
if (isset($useBuildServer)) {
$application->settings->is_build_server_enabled = $useBuildServer;
$application->settings->save();
}
$application->git_repository = 'coollabsio/coolify'; $application->git_repository = 'coollabsio/coolify';
$application->git_branch = 'main'; $application->git_branch = 'main';
$application->save(); $application->save();
$application->refresh(); $application->refresh();
if (isset($useBuildServer)) {
$application->settings->is_build_server_enabled = $useBuildServer;
$application->settings->save();
}
if (! $application->settings->is_container_label_readonly_enabled) { if (! $application->settings->is_container_label_readonly_enabled) {
$application->custom_labels = str(implode('|coolify|', generateLabelsApplication($application)))->replace('|coolify|', "\n"); $application->custom_labels = str(implode('|coolify|', generateLabelsApplication($application)))->replace('|coolify|', "\n");
$application->save(); $application->save();
@@ -1180,7 +1235,7 @@ class ApplicationsController extends Controller
return response()->json(serializeApiResponse([ return response()->json(serializeApiResponse([
'uuid' => data_get($application, 'uuid'), 'uuid' => data_get($application, 'uuid'),
'domains' => data_get($application, 'domains'), 'domains' => data_get($application, 'domains'),
])); ]))->setStatusCode(201);
} elseif ($type === 'dockercompose') { } elseif ($type === 'dockercompose') {
$allowedFields = ['project_uuid', 'environment_name', 'environment_uuid', 'server_uuid', 'destination_uuid', 'type', 'name', 'description', 'instant_deploy', 'docker_compose_raw']; $allowedFields = ['project_uuid', 'environment_name', 'environment_uuid', 'server_uuid', 'destination_uuid', 'type', 'name', 'description', 'instant_deploy', 'docker_compose_raw'];
@@ -1262,7 +1317,7 @@ class ApplicationsController extends Controller
return response()->json(serializeApiResponse([ return response()->json(serializeApiResponse([
'uuid' => data_get($service, 'uuid'), 'uuid' => data_get($service, 'uuid'),
'domains' => data_get($service, 'domains'), 'domains' => data_get($service, 'domains'),
])); ]))->setStatusCode(201);
} }
return response()->json(['message' => 'Invalid type.'], 400); return response()->json(['message' => 'Invalid type.'], 400);

View File

@@ -90,11 +90,12 @@ class ProjectController extends Controller
if (is_null($teamId)) { if (is_null($teamId)) {
return invalidTokenResponse(); return invalidTokenResponse();
} }
$project = Project::whereTeamId($teamId)->whereUuid(request()->uuid)->first()->load(['environments']); $project = Project::whereTeamId($teamId)->whereUuid(request()->uuid)->first();
if (! $project) { if (! $project) {
return response()->json(['message' => 'Project not found.'], 404); return response()->json(['message' => 'Project not found.'], 404);
} }
$project->load(['environments']);
return response()->json( return response()->json(
serializeApiResponse($project), serializeApiResponse($project),
); );

View File

@@ -347,8 +347,20 @@
} }
}, },
"responses": { "responses": {
"200": { "201": {
"description": "Application created successfully." "description": "Application created successfully.",
"content": {
"application\/json": {
"schema": {
"properties": {
"uuid": {
"type": "string"
}
},
"type": "object"
}
}
}
}, },
"401": { "401": {
"$ref": "#\/components\/responses\/401" "$ref": "#\/components\/responses\/401"
@@ -669,8 +681,20 @@
} }
}, },
"responses": { "responses": {
"200": { "201": {
"description": "Application created successfully." "description": "Application created successfully.",
"content": {
"application\/json": {
"schema": {
"properties": {
"uuid": {
"type": "string"
}
},
"type": "object"
}
}
}
}, },
"401": { "401": {
"$ref": "#\/components\/responses\/401" "$ref": "#\/components\/responses\/401"
@@ -991,8 +1015,20 @@
} }
}, },
"responses": { "responses": {
"200": { "201": {
"description": "Application created successfully." "description": "Application created successfully.",
"content": {
"application\/json": {
"schema": {
"properties": {
"uuid": {
"type": "string"
}
},
"type": "object"
}
}
}
}, },
"401": { "401": {
"$ref": "#\/components\/responses\/401" "$ref": "#\/components\/responses\/401"
@@ -1242,8 +1278,20 @@
} }
}, },
"responses": { "responses": {
"200": { "201": {
"description": "Application created successfully." "description": "Application created successfully.",
"content": {
"application\/json": {
"schema": {
"properties": {
"uuid": {
"type": "string"
}
},
"type": "object"
}
}
}
}, },
"401": { "401": {
"$ref": "#\/components\/responses\/401" "$ref": "#\/components\/responses\/401"
@@ -1476,8 +1524,20 @@
} }
}, },
"responses": { "responses": {
"200": { "201": {
"description": "Application created successfully." "description": "Application created successfully.",
"content": {
"application\/json": {
"schema": {
"properties": {
"uuid": {
"type": "string"
}
},
"type": "object"
}
}
}
}, },
"401": { "401": {
"$ref": "#\/components\/responses\/401" "$ref": "#\/components\/responses\/401"
@@ -1563,8 +1623,20 @@
} }
}, },
"responses": { "responses": {
"200": { "201": {
"description": "Application created successfully." "description": "Application created successfully.",
"content": {
"application\/json": {
"schema": {
"properties": {
"uuid": {
"type": "string"
}
},
"type": "object"
}
}
}
}, },
"401": { "401": {
"$ref": "#\/components\/responses\/401" "$ref": "#\/components\/responses\/401"

View File

@@ -250,8 +250,14 @@ paths:
description: 'Use build server.' description: 'Use build server.'
type: object type: object
responses: responses:
'200': '201':
description: 'Application created successfully.' description: 'Application created successfully.'
content:
application/json:
schema:
properties:
uuid: { type: string }
type: object
'401': '401':
$ref: '#/components/responses/401' $ref: '#/components/responses/401'
'400': '400':
@@ -483,8 +489,14 @@ paths:
description: 'Use build server.' description: 'Use build server.'
type: object type: object
responses: responses:
'200': '201':
description: 'Application created successfully.' description: 'Application created successfully.'
content:
application/json:
schema:
properties:
uuid: { type: string }
type: object
'401': '401':
$ref: '#/components/responses/401' $ref: '#/components/responses/401'
'400': '400':
@@ -716,8 +728,14 @@ paths:
description: 'Use build server.' description: 'Use build server.'
type: object type: object
responses: responses:
'200': '201':
description: 'Application created successfully.' description: 'Application created successfully.'
content:
application/json:
schema:
properties:
uuid: { type: string }
type: object
'401': '401':
$ref: '#/components/responses/401' $ref: '#/components/responses/401'
'400': '400':
@@ -896,8 +914,14 @@ paths:
description: 'Use build server.' description: 'Use build server.'
type: object type: object
responses: responses:
'200': '201':
description: 'Application created successfully.' description: 'Application created successfully.'
content:
application/json:
schema:
properties:
uuid: { type: string }
type: object
'401': '401':
$ref: '#/components/responses/401' $ref: '#/components/responses/401'
'400': '400':
@@ -1067,8 +1091,14 @@ paths:
description: 'Use build server.' description: 'Use build server.'
type: object type: object
responses: responses:
'200': '201':
description: 'Application created successfully.' description: 'Application created successfully.'
content:
application/json:
schema:
properties:
uuid: { type: string }
type: object
'401': '401':
$ref: '#/components/responses/401' $ref: '#/components/responses/401'
'400': '400':
@@ -1129,8 +1159,14 @@ paths:
description: 'Use build server.' description: 'Use build server.'
type: object type: object
responses: responses:
'200': '201':
description: 'Application created successfully.' description: 'Application created successfully.'
content:
application/json:
schema:
properties:
uuid: { type: string }
type: object
'401': '401':
$ref: '#/components/responses/401' $ref: '#/components/responses/401'
'400': '400':