pimcore/skills/pimcore-studio-backend-openapi-docs
- community
Checking that the SKILL.md file is still in the repository.
Pimcore Studio OpenAPI documentation — translation keys for API docs, Prefix and Tags config classes, PermissionConstants, and mandatory translation string creation for new controllers
Install
npx vskill@latest install pimcore/skills/pimcore-studio-backend-openapi-docsSKILL.md
Architecture Context
The StudioBackendBundle uses a layered architecture: Controllers (HTTP only) -> Services (business logic) -> Hydrators (DTO creation). Events provide extension points. All APIs are OpenAPI-documented.
All OpenAPI description, summary, and tag values use translation keys resolved from translations/studio_api_docs.en.yaml in the bundle. Every new controller MUST have corresponding translation strings.
OpenAPI Config Classes
Namespace: OpenApi\Config\
Prefix Class
A final class (not an enum) with @internal and a single typed string constant:
Tags Enum
A backed string enum with @internal and a #[Tag] OpenAPI attribute placed before the PHPDoc block:
- The
#[Tag]attribute self-references (Tags::DataImporter->value) in itsnameparameter. - Tag description uses a translation key:
bundle_tag_{bundle_name}_description.
Permission Constants
Namespace: Utils\Constants\
A final class with @internal and typed string constants:
Two-tier permission model:
- Gate-level (
PLUGIN_DATA_IMPORTER_CONFIG): used in controller#[IsGranted(...)]-- broad "can access the data importer at all" check. - Entity-level (
_PERMISSION_READ,_PERMISSION_UPDATE,_PERMISSION_DELETE): used in serviceloadConfigurationWithPermission()calls -- fine-grained per-configuration checks.
Translation Keys for OpenAPI Documentation
All OpenAPI description, summary, and tag values use translation keys resolved from translations/studio_api_docs.en.yaml in the bundle.
Key Naming Convention
Keys follow the pattern: bundle_{bundle_name}_{domain}_{action}_{suffix}
| Suffix | Usage | |
|---|---|---|
_summary | #[Get] / #[Post] / #[Put] / #[Delete] summary parameter | |
_description | #[Get] / #[Post] etc. description parameter | |
_success_description | #[SuccessResponse] description parameter |
Examples:
Tag descriptions use: bundle_tag_{bundle_name}_description.
Mandatory Translation String Creation
When adding a new controller, you MUST also add the corresponding translation strings to `translations/studio_api_docs.en.yaml`. Every operationId, description, summary, and #[SuccessResponse] description value used in OpenAPI attributes is a translation key that must have a matching entry in the YAML file. Forgetting to add these results in raw translation keys being displayed in the OpenAPI documentation instead of human-readable text.
Checklist for each new controller:
{operationId}_description-- describes what the endpoint does (use YAML|for multi-line){operationId}_summary-- short one-line summary{success_response_key}-- the key used in#[SuccessResponse(description: '...')]
Example for a new TreeController:
Security
- Security scanPassed, 95 of 100Pattern checks on the skill's files.
- Model reviewPassed
Quality evaluation
- Task evaluationNot runNo evaluation yet. Run one in Skill Studio.
Source
- SKILL.md in the repositoryCheckingskills/pimcore-studio-backend-openapi-docs/SKILL.md
Popularity
- Repository stars
- 7
- 7-day trend score
- 10
Stars and forks are for the whole GitHub repository, not this skill alone. Refreshed 21 May 2026, 5 months ago.
Works with
Any agent vskill installs to: 56 targets in all. These 39 have a page on this site.
- Claude Code
- Cursor
- GitHub Copilot
- Windsurf
- Codex
- Gemini CLI
- Cline
- Amp
- Roo Code
- Goose
- Continue
- Kilo Code
- Junie
- Trae
- OpenHands
- Qwen Code
- AI Agent
- Tabnine Chat
- Sourcegraph Cody
- Amazon Q
- Firebase Genkit
- Sweep
- Devin
- Phind
- Mentat
- Claude Desktop
- Aider
- GPT Pilot
- Plandex
- bolt.new
- v0
- Replit Agent
- Anse
- TypingMind
- BetterChatGPT
- LibreChat
- Warp AI
- Pieces
- Fig AI
Embed badge
[](https://verified-skill.com/skills/pimcore/skills/pimcore-studio-backend-openapi-docs)