2 Roles
Manuel Aranda Rosales edited this page 2024-06-20 10:35:03 +02:00

Documentation / Documentación - API ogCore

Select Language / Seleccionar Idioma


English

Table of Contents

  1. Introduction
  2. Configuration
  3. Resource Definition
  4. API Operations
  5. Entity Properties
  6. User Group Input DTO

Introduction

This documentation describes the configuration of API Platform in a Symfony project. It details the resources, operations, and entity properties exposed through the API.

Configuration

API configuration is done in Symfony configuration files, usually in config/packages/api_platform.yaml file.

resources:
    App\Entity\UserGroup:
        security: 'is_granted("ROLE_SUPER_ADMIN")'
        processor: App\State\Processor\UserGroupProcessor
        input: App\Dto\Input\UserGroupInput
        output: App\Dto\Output\UserGroupOutput
        normalization_context:
            groups: ['default', 'user-group:read']
        denormalization_context:
            groups: ['user-group:write']
        operations:
            ApiPlatform\Metadata\GetCollection:
                provider: App\State\Provider\UserGroupProvider
                filters:
                    - 'api_platform.filter.user_group.order'
                    - 'api_platform.filter.user_group.search'
                    - 'api_platform.filter.user_group.boolean'
            ApiPlatform\Metadata\Get:
                provider: App\State\Provider\UserGroupProvider
            ApiPlatform\Metadata\Put:
                provider: App\State\Provider\UserGroupProvider
            ApiPlatform\Metadata\Patch:
                provider: App\State\Provider\UserGroupProvider
            ApiPlatform\Metadata\Post: ~
            ApiPlatform\Metadata\Delete: ~

properties:
    App\Entity\UserGroup:
        id:
            identifier: false
        uuid:
            identifier: true

Resource Definition

App\Entity\UserGroup

  • Security: Only users with the role ROLE_SUPER_ADMIN can access.
  • Processor: App\State\Processor\UserGroupProcessor
  • Input: App\Dto\Input\UserGroupInput
  • Output: App\Dto\Output\UserGroupOutput
  • Normalization Context: ['default', 'user-group:read']
  • Denormalization Context: ['user-group:write']

API Operations

User Group Operations

Get User Group Collection (GetCollection)
  • Provider: App\State\Provider\UserGroupProvider
  • Filters:
    • Order user groups: api_platform.filter.user_group.order
    • Search user groups: api_platform.filter.user_group.search
    • Boolean filter: api_platform.filter.user_group.boolean
Get User Group (Get)
  • Provider: App\State\Provider\UserGroupProvider
Update User Group (Put)
  • Provider: App\State\Provider\UserGroupProvider
Partially Update User Group (Patch)
  • Provider: App\State\Provider\UserGroupProvider
Create User Group (Post)
  • Default Operation: ~
Delete User Group (Delete)
  • Default Operation: ~

Entity Properties

App\Entity\User

  • id:

    • Identifier: false
  • uuid:

    • Identifier: true

App\Entity\UserGroup

  • id:

    • Identifier: false
  • uuid:

    • Identifier: true

User Group Input DTO

Fields Required in User Group Endpoint Input

  1. name

    • Type: string
    • Validation: Not blank
    • Groups: user-group:write
  2. permissions

    • Type: array
    • Validation: Custom UserGroupsValidPermission constraint
    • Groups: user-group:write
  3. enabled

    • Type: boolean
    • Validation: Not null
    • Groups: user-group:write
    • Default: false

Español

Índice

  1. Introducción
  2. Configuración
  3. Definición de Recursos
  4. Operaciones de API
  5. Propiedades de la Entidad
  6. DTO de Entrada de Grupo de Usuarios

Introducción

Esta documentación describe la configuración de API Platform en un proyecto Symfony. Se detallan los recursos, operaciones y propiedades de las entidades expuestas a través de la API.

Configuración

La configuración de la API se realiza en los archivos de configuración de Symfony, generalmente en config/packages/api_platform.yaml.

resources:
    App\Entity\UserGroup:
        security: 'is_granted("ROLE_SUPER_ADMIN")'
        processor: App\State\Processor\UserGroupProcessor
        input: App\Dto\Input\UserGroupInput
        output: App\Dto\Output\UserGroupOutput
        normalization_context:
            groups: ['default', 'user-group:read']
        denormalization_context:
            groups: ['user-group:write']
        operations:
            ApiPlatform\Metadata\GetCollection:
                provider: App\State\Provider\UserGroupProvider
                filters:
                    - 'api_platform.filter.user_group.order'
                    - 'api_platform.filter.user_group.search'
                    - 'api_platform.filter.user_group.boolean'
            ApiPlatform\Metadata\Get:
                provider: App\State\Provider\UserGroupProvider
            ApiPlatform\Metadata\Put:
                provider: App\State\Provider\UserGroupProvider
            ApiPlatform\Metadata\Patch:
                provider: App\State\Provider\UserGroupProvider
            ApiPlatform\Metadata\Post: ~
            ApiPlatform\Metadata\Delete: ~

properties:
    App\Entity\UserGroup:
        id:
            identifier: false
        uuid:
            identifier: true

Definición de Recursos

Operaciones de Grupo de Usuarios

Obtener Colección de Grupos de Usuarios (GetCollection)
  • Provider: App\State\Provider\UserGroupProvider
  • Filtros:
    • Ordenar grupos de usuarios: api_platform.filter.user_group.order
    • Buscar grupos de usuarios: api_platform.filter.user_group.search
    • Filtro booleano: api_platform.filter.user_group.boolean
Obtener Grupo de Usuarios (Get)
  • Provider: App\State\Provider\UserGroupProvider
Actualizar Grupo de Usuarios (Put)
  • Provider: App\State\Provider\UserGroupProvider
Actualización Parcial de Grupo de Usuarios (Patch)
  • Provider: App\State\Provider\UserGroupProvider
Crear Grupo de Usuarios (Post)
  • Operación Predeterminada: ~
Eliminar Grupo de Usuarios (Delete)
  • Operación Predeterminada: ~

Propiedades de la Entidad

App\Entity\User

  • id:

    • Identificador: false
  • uuid:

    • Identificador: true

App\Entity\UserGroup

  • id:

    • Identificador: false
  • uuid:

    • Identificador: true

DTO de Entrada de Grupo de Usuarios

Campos Requeridos en la Entrada del Endpoint de Grupo de Usuarios

  1. name

    • Tipo: string
    • Validación: No nulo
    • Groups: user-group:write
  2. permissions

    • Tipo: array
    • Validación: Restricción personalizada UserGroupsValidPermission
    • Groups: user-group:write
  3. enabled

    • Tipo: booleano
    • Validación: No nulo
    • Groups: user-group:write
    • Predeterminado: false