['The name field is required.'], 'api_url' => ['The api url field is required.', 'The api url format is invalid.'], ] ), ] )), new OA\Response( response: 429, description: 'Rate limit exceeded.', headers: [ new OA\Header( header: 'Retry-After', description: 'Number of seconds to wait before retrying.', schema: new OA\Schema(type: 'integer', example: 60) ), ], content: new OA\JsonContent( type: 'object', properties: [ new OA\Property(property: 'message', type: 'string', example: 'Rate limit exceeded. Please try again later.'), ] )), new OA\Response( response: 502, description: 'The cloud provider API rejected the request.', content: new OA\JsonContent( type: 'object', properties: [ new OA\Property(property: 'message', type: 'string', example: 'Failed to create Hetzner server. The Hetzner API token does not have permission for this request. Use a token with read and write access.'), new OA\Property(property: 'provider_status', type: 'integer', description: 'The HTTP status from the cloud provider API.', example: 403), new OA\Property(property: 'provider_error_code', type: 'string', nullable: true, description: 'The error code from the cloud provider API, if it has one.', example: 'forbidden'), ] )), ], )] class OpenApi { // This class is used to generate OpenAPI documentation // for the Coolify API. It is not a controller and does // not contain any routes. It is used to define the // OpenAPI metadata and security scheme for the API. }