mirror of
https://github.com/Part-DB/Part-DB-server.git
synced 2026-03-01 04:49:36 +00:00
Improved API docs for label endpoint
This commit is contained in:
parent
cfbe2f77b3
commit
1e28817280
2 changed files with 12 additions and 33 deletions
|
|
@ -1387,7 +1387,6 @@ use Symfony\Component\Config\Loader\ParamConfigurator as Param;
|
||||||
* bubble?: bool|Param, // Default: true
|
* bubble?: bool|Param, // Default: true
|
||||||
* interactive_only?: bool|Param, // Default: false
|
* interactive_only?: bool|Param, // Default: false
|
||||||
* app_name?: scalar|Param|null, // Default: null
|
* app_name?: scalar|Param|null, // Default: null
|
||||||
* fill_extra_context?: bool|Param, // Default: false
|
|
||||||
* include_stacktraces?: bool|Param, // Default: false
|
* include_stacktraces?: bool|Param, // Default: false
|
||||||
* process_psr_3_messages?: array{
|
* process_psr_3_messages?: array{
|
||||||
* enabled?: bool|Param|null, // Default: null
|
* enabled?: bool|Param|null, // Default: null
|
||||||
|
|
@ -1407,7 +1406,6 @@ use Symfony\Component\Config\Loader\ParamConfigurator as Param;
|
||||||
* activation_strategy?: scalar|Param|null, // Default: null
|
* activation_strategy?: scalar|Param|null, // Default: null
|
||||||
* stop_buffering?: bool|Param, // Default: true
|
* stop_buffering?: bool|Param, // Default: true
|
||||||
* passthru_level?: scalar|Param|null, // Default: null
|
* passthru_level?: scalar|Param|null, // Default: null
|
||||||
* excluded_404s?: list<scalar|Param|null>,
|
|
||||||
* excluded_http_codes?: list<array{ // Default: []
|
* excluded_http_codes?: list<array{ // Default: []
|
||||||
* code?: scalar|Param|null,
|
* code?: scalar|Param|null,
|
||||||
* urls?: list<scalar|Param|null>,
|
* urls?: list<scalar|Param|null>,
|
||||||
|
|
@ -1421,9 +1419,6 @@ use Symfony\Component\Config\Loader\ParamConfigurator as Param;
|
||||||
* url?: scalar|Param|null,
|
* url?: scalar|Param|null,
|
||||||
* exchange?: scalar|Param|null,
|
* exchange?: scalar|Param|null,
|
||||||
* exchange_name?: scalar|Param|null, // Default: "log"
|
* exchange_name?: scalar|Param|null, // Default: "log"
|
||||||
* room?: scalar|Param|null,
|
|
||||||
* message_format?: scalar|Param|null, // Default: "text"
|
|
||||||
* api_version?: scalar|Param|null, // Default: null
|
|
||||||
* channel?: scalar|Param|null, // Default: null
|
* channel?: scalar|Param|null, // Default: null
|
||||||
* bot_name?: scalar|Param|null, // Default: "Monolog"
|
* bot_name?: scalar|Param|null, // Default: "Monolog"
|
||||||
* use_attachment?: scalar|Param|null, // Default: true
|
* use_attachment?: scalar|Param|null, // Default: true
|
||||||
|
|
@ -1432,9 +1427,6 @@ use Symfony\Component\Config\Loader\ParamConfigurator as Param;
|
||||||
* icon_emoji?: scalar|Param|null, // Default: null
|
* icon_emoji?: scalar|Param|null, // Default: null
|
||||||
* webhook_url?: scalar|Param|null,
|
* webhook_url?: scalar|Param|null,
|
||||||
* exclude_fields?: list<scalar|Param|null>,
|
* exclude_fields?: list<scalar|Param|null>,
|
||||||
* team?: scalar|Param|null,
|
|
||||||
* notify?: scalar|Param|null, // Default: false
|
|
||||||
* nickname?: scalar|Param|null, // Default: "Monolog"
|
|
||||||
* token?: scalar|Param|null,
|
* token?: scalar|Param|null,
|
||||||
* region?: scalar|Param|null,
|
* region?: scalar|Param|null,
|
||||||
* source?: scalar|Param|null,
|
* source?: scalar|Param|null,
|
||||||
|
|
@ -1452,12 +1444,6 @@ use Symfony\Component\Config\Loader\ParamConfigurator as Param;
|
||||||
* store?: scalar|Param|null, // Default: null
|
* store?: scalar|Param|null, // Default: null
|
||||||
* connection_timeout?: scalar|Param|null,
|
* connection_timeout?: scalar|Param|null,
|
||||||
* persistent?: bool|Param,
|
* persistent?: bool|Param,
|
||||||
* dsn?: scalar|Param|null,
|
|
||||||
* hub_id?: scalar|Param|null, // Default: null
|
|
||||||
* client_id?: scalar|Param|null, // Default: null
|
|
||||||
* auto_log_stacks?: scalar|Param|null, // Default: false
|
|
||||||
* release?: scalar|Param|null, // Default: null
|
|
||||||
* environment?: scalar|Param|null, // Default: null
|
|
||||||
* message_type?: scalar|Param|null, // Default: 0
|
* message_type?: scalar|Param|null, // Default: 0
|
||||||
* parse_mode?: scalar|Param|null, // Default: null
|
* parse_mode?: scalar|Param|null, // Default: null
|
||||||
* disable_webpage_preview?: bool|Param|null, // Default: null
|
* disable_webpage_preview?: bool|Param|null, // Default: null
|
||||||
|
|
@ -1467,7 +1453,6 @@ use Symfony\Component\Config\Loader\ParamConfigurator as Param;
|
||||||
* topic?: int|Param, // Default: null
|
* topic?: int|Param, // Default: null
|
||||||
* factor?: int|Param, // Default: 1
|
* factor?: int|Param, // Default: 1
|
||||||
* tags?: list<scalar|Param|null>,
|
* tags?: list<scalar|Param|null>,
|
||||||
* console_formater_options?: mixed, // Deprecated: "monolog.handlers..console_formater_options.console_formater_options" is deprecated, use "monolog.handlers..console_formater_options.console_formatter_options" instead.
|
|
||||||
* console_formatter_options?: mixed, // Default: []
|
* console_formatter_options?: mixed, // Default: []
|
||||||
* formatter?: scalar|Param|null,
|
* formatter?: scalar|Param|null,
|
||||||
* nested?: bool|Param, // Default: false
|
* nested?: bool|Param, // Default: false
|
||||||
|
|
@ -1478,15 +1463,6 @@ use Symfony\Component\Config\Loader\ParamConfigurator as Param;
|
||||||
* chunk_size?: scalar|Param|null, // Default: 1420
|
* chunk_size?: scalar|Param|null, // Default: 1420
|
||||||
* encoder?: "json"|"compressed_json"|Param,
|
* encoder?: "json"|"compressed_json"|Param,
|
||||||
* },
|
* },
|
||||||
* mongo?: string|array{
|
|
||||||
* id?: scalar|Param|null,
|
|
||||||
* host?: scalar|Param|null,
|
|
||||||
* port?: scalar|Param|null, // Default: 27017
|
|
||||||
* user?: scalar|Param|null,
|
|
||||||
* pass?: scalar|Param|null,
|
|
||||||
* database?: scalar|Param|null, // Default: "monolog"
|
|
||||||
* collection?: scalar|Param|null, // Default: "logs"
|
|
||||||
* },
|
|
||||||
* mongodb?: string|array{
|
* mongodb?: string|array{
|
||||||
* id?: scalar|Param|null, // ID of a MongoDB\Client service
|
* id?: scalar|Param|null, // ID of a MongoDB\Client service
|
||||||
* uri?: scalar|Param|null,
|
* uri?: scalar|Param|null,
|
||||||
|
|
@ -1529,7 +1505,6 @@ use Symfony\Component\Config\Loader\ParamConfigurator as Param;
|
||||||
* id: scalar|Param|null,
|
* id: scalar|Param|null,
|
||||||
* method?: scalar|Param|null, // Default: null
|
* method?: scalar|Param|null, // Default: null
|
||||||
* },
|
* },
|
||||||
* lazy?: bool|Param, // Default: true
|
|
||||||
* verbosity_levels?: array{
|
* verbosity_levels?: array{
|
||||||
* VERBOSITY_QUIET?: scalar|Param|null, // Default: "ERROR"
|
* VERBOSITY_QUIET?: scalar|Param|null, // Default: "ERROR"
|
||||||
* VERBOSITY_NORMAL?: scalar|Param|null, // Default: "WARNING"
|
* VERBOSITY_NORMAL?: scalar|Param|null, // Default: "WARNING"
|
||||||
|
|
|
||||||
|
|
@ -23,12 +23,15 @@ declare(strict_types=1);
|
||||||
|
|
||||||
namespace App\ApiResource;
|
namespace App\ApiResource;
|
||||||
|
|
||||||
|
use ApiPlatform\Metadata\ApiProperty;
|
||||||
use ApiPlatform\Metadata\ApiResource;
|
use ApiPlatform\Metadata\ApiResource;
|
||||||
use ApiPlatform\Metadata\Post;
|
use ApiPlatform\Metadata\Post;
|
||||||
use ApiPlatform\OpenApi\Model\Operation;
|
use ApiPlatform\OpenApi\Model\Operation;
|
||||||
use ApiPlatform\OpenApi\Model\RequestBody;
|
use ApiPlatform\OpenApi\Model\RequestBody;
|
||||||
|
use ApiPlatform\OpenApi\Model\Response;
|
||||||
use App\Entity\LabelSystem\LabelSupportedElement;
|
use App\Entity\LabelSystem\LabelSupportedElement;
|
||||||
use App\State\LabelGenerationProcessor;
|
use App\State\LabelGenerationProcessor;
|
||||||
|
use App\Validator\Constraints\Misc\ValidRange;
|
||||||
use Symfony\Component\Validator\Constraints as Assert;
|
use Symfony\Component\Validator\Constraints as Assert;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|
@ -40,7 +43,12 @@ use Symfony\Component\Validator\Constraints as Assert;
|
||||||
description: 'Generate PDF labels for parts, part lots, or storage locations using label profiles.',
|
description: 'Generate PDF labels for parts, part lots, or storage locations using label profiles.',
|
||||||
operations: [
|
operations: [
|
||||||
new Post(
|
new Post(
|
||||||
|
inputFormats: ['json' => ['application/json']],
|
||||||
|
outputFormats: [],
|
||||||
openapi: new Operation(
|
openapi: new Operation(
|
||||||
|
responses: [
|
||||||
|
"200" => new Response(description: "PDF file containing the generated labels"),
|
||||||
|
],
|
||||||
summary: 'Generate PDF labels',
|
summary: 'Generate PDF labels',
|
||||||
description: 'Generate PDF labels for one or more elements using a label profile. Returns a PDF file.',
|
description: 'Generate PDF labels for one or more elements using a label profile. Returns a PDF file.',
|
||||||
requestBody: new RequestBody(
|
requestBody: new RequestBody(
|
||||||
|
|
@ -48,8 +56,6 @@ use Symfony\Component\Validator\Constraints as Assert;
|
||||||
required: true,
|
required: true,
|
||||||
),
|
),
|
||||||
),
|
),
|
||||||
inputFormats: ['json' => ['application/json']],
|
|
||||||
outputFormats: [],
|
|
||||||
)
|
)
|
||||||
],
|
],
|
||||||
processor: LabelGenerationProcessor::class,
|
processor: LabelGenerationProcessor::class,
|
||||||
|
|
@ -61,17 +67,15 @@ class LabelGenerationRequest
|
||||||
*/
|
*/
|
||||||
#[Assert\NotBlank(message: 'Profile ID is required')]
|
#[Assert\NotBlank(message: 'Profile ID is required')]
|
||||||
#[Assert\Positive(message: 'Profile ID must be a positive integer')]
|
#[Assert\Positive(message: 'Profile ID must be a positive integer')]
|
||||||
public int $profileId = 1;
|
public int $profileId = 0;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @var string Comma-separated list of element IDs or ranges (e.g., "1,2,5-10,15")
|
* @var string Comma-separated list of element IDs or ranges (e.g., "1,2,5-10,15")
|
||||||
*/
|
*/
|
||||||
#[Assert\NotBlank(message: 'Element IDs are required')]
|
#[Assert\NotBlank(message: 'Element IDs are required')]
|
||||||
#[Assert\Regex(
|
#[ValidRange()]
|
||||||
pattern: '/^[\d,\-\s]+$/',
|
#[ApiProperty(example: "1,2,5-10,15")]
|
||||||
message: 'Element IDs must be a comma-separated list of numbers or ranges (e.g., "1,2,5-10")'
|
public string $elementIds = '';
|
||||||
)]
|
|
||||||
public string $elementIds = '1,2,5-10';
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @var LabelSupportedElement|null Optional: Override the element type. If not provided, uses profile's default.
|
* @var LabelSupportedElement|null Optional: Override the element type. If not provided, uses profile's default.
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue