Skills DirectorySkills Directory
SkillsLearnSecurityCategoriesDocsCommunityBlog
Sign InSubmit Skill
Skills Directory

Security-tested agent skills for Claude, coding agents, and AI workflows.

Directory

  • Browse Skills
  • All Skills A–Z
  • Claude Skills
  • Claude Code Skills
  • Agent Skills
  • Categories
  • Authors
  • Submit a Skill

Learn

  • Learn Hub
  • Install Claude Skills
  • Write SKILL.md
  • Skills vs MCP
  • Directories Compared

Security

  • Security
  • Methodology
  • Secure Claude Skills
  • Security Badges

Company

  • About
  • Community
  • Blog
  • API Docs
  • Advertise

2026 Skills Directory. All rights reserved.

ProTermsPrivacyRefunds
Back to skills

Prestashop Api Module

ASecurity

Skill para crear y extender APIs en PrestaShop 8 (WebService legacy) y PrestaShop 9 (API Platform + WebService).

4 stars
0 votes
0 copies
0 views
Added 9/28/2026
developmentphpapi

Works with

cliapi

Security Analysis

A100/100

Scanned 9/28/2026

Install to Claude Code

$npx -y skills add ecomyseo/prestashop_skills --skill prestashop-api-module --agent claude-code

Installs into .claude/skills of the current project.

Are you the author of Prestashop Api Module?

Add the live security badge to your README — it updates automatically with every re-scan.

Security grade badge for Prestashop Api Module
[![Security: A — Skills Directory](https://www.skillsdirectory.com/api/skills/ecomyseo-prestashop-api-module/badge)](https://www.skillsdirectory.com/skills/ecomyseo-prestashop-api-module)

More formats (shields.io, HTML) on the badges page.

Files
SKILL.md
---
name: prestashop-api-module
description: Skill para crear y extender APIs en PrestaShop 8 (WebService legacy) y PrestaShop 9 (API Platform + WebService).
---

# PrestaShop API Module Skill

Este skill cubre los DOS sistemas de API disponibles segun la version de PrestaShop.

> **IMPORTANTE**: PS 8 y PS 9 usan sistemas de API completamente diferentes. No confundirlos.

## Matriz de Compatibilidad

| Sistema | PS 8 | PS 9 |
|---------|------|------|
| **WebService Legacy** (XML) | Unico disponible | Disponible (deprecated) |
| **API Platform** (REST/JSON) | NO existe | Nuevo sistema principal |

---

## 1. WebService Legacy (PS 8 + PS 9)

El sistema clasico basado en XML y ObjectModel. Funciona en ambas versiones.

### Hook de Registro
```php
public function install()
{
    return parent::install() && $this->registerHook('addWebserviceResources');
}
```

### Exponer un Recurso
```php
public function hookAddWebserviceResources($params)
{
    return [
        'my_module_articles' => [
            'description' => 'Access to module articles',
            'class' => 'MyArticle', // Debe extender ObjectModel
            'forbidden_method' => [], // Opcional: ['DELETE', 'PUT']
        ],
    ];
}
```

### ObjectModel Requerido
```php
class MyArticle extends ObjectModel
{
    public $title;

    public static $definition = [
        'table' => 'my_article',
        'primary' => 'id_my_article',
        'fields' => [
            'title' => [
                'type' => self::TYPE_STRING,
                'validate' => 'isGenericName',
                'size' => 255,
                'webservice' => true,
            ],
        ],
    ];
}
```

### Uso del WebService
1. Ir a **Parametros Avanzados > Webservice**.
2. Crear o editar una API Key.
3. El recurso `my_module_articles` aparecera en la lista de permisos.
4. Autenticacion via HTTP Basic Auth con la API Key como usuario.

```
GET https://mitienda.com/api/my_module_articles
Authorization: Basic BASE64(API_KEY:)
```

---

## 2. API Platform (SOLO PS 9)

PrestaShop 9 introduce un sistema nuevo basado en **API Platform** y **Symfony 6.4** con autenticacion **OAuth2**.

> **NO confundir** con el WebService legacy. Son sistemas independientes con rutas, autenticacion y formatos diferentes.

### Definir un API Resource
Crear configuracion en `src/Resources/api_platform/`:

```yaml
# src/Resources/api_platform/my_entity.yml
resources:
    MyModule\ApiPlatform\Resource\MyEntity:
        shortName: 'MyEntity'
        description: 'Operations for my custom entity'
        operations:
            ApiPlatform\Metadata\Get:
                provider: MyModule\ApiPlatform\State\MyEntityProvider
            ApiPlatform\Metadata\GetCollection:
                provider: MyModule\ApiPlatform\State\MyEntityCollectionProvider
            ApiPlatform\Metadata\Post:
                processor: MyModule\ApiPlatform\State\MyEntityProcessor
        normalizationContext:
            groups: ['my_entity:read']
        denormalizationContext:
            groups: ['my_entity:write']
```

### State Provider (lectura)
```php
declare(strict_types=1);

namespace MyModule\ApiPlatform\State;

use ApiPlatform\Metadata\Operation;
use ApiPlatform\State\ProviderInterface;

final class MyEntityProvider implements ProviderInterface
{
    public function __construct(
        private readonly \Db $db
    ) {
    }

    public function provide(Operation $operation, array $uriVariables = [], array $context = []): object|array|null
    {
        // Logica para obtener datos
        $id = (int) ($uriVariables['id'] ?? 0);
        // ...
    }
}
```

### State Processor (escritura)
```php
declare(strict_types=1);

namespace MyModule\ApiPlatform\State;

use ApiPlatform\Metadata\Operation;
use ApiPlatform\State\ProcessorInterface;

final class MyEntityProcessor implements ProcessorInterface
{
    public function process(mixed $data, Operation $operation, array $uriVariables = [], array $context = []): mixed
    {
        // Logica para guardar datos
        return $data;
    }
}
```

### Autenticacion OAuth2 (PS 9)
PS 9 usa OAuth2 con scopes. **NO** usa la pagina de WebService ni X-API-Key.

1. Configurar cliente OAuth2 en el admin de PS 9 (**Parametros Avanzados > Authorization Server**).
2. Obtener un token:
```
POST /admin-api/access_token
Content-Type: application/x-www-form-urlencoded

client_id=MY_CLIENT_ID&client_secret=MY_SECRET&grant_type=client_credentials&scope=my_scope
```
3. Usar el token:
```
GET /api/my-entities
Authorization: Bearer <access_token>
```

### Documentacion Interactiva
Disponible en `/api/docs` (Swagger UI) en instalaciones PS 9.

---

## 3. Reglas y Buenas Practicas

- **Strict Types**: Usar `declare(strict_types=1);` en todas las clases API.
- **Validadores**: Usar validadores reales de PrestaShop (`isGenericName`, `isCleanHtml`, etc.). NO existe `isString`.
- **Prefijos**: Usar nombre del modulo como prefijo en recursos para evitar colisiones.
- **Rendimiento**: El WebService XML puede ser lento con datasets grandes. En PS 9, preferir API Platform.
- **Campos multilenguaje**: En WebService, marcar con `'lang' => true` en la definicion del ObjectModel.

Attribution

ecomyseoecomyseo
View sourceMore from ecomyseo →
SSkills DirectorySkills Directory

Ship a skill? Prove it's safe.

Free 120-pattern security scan, letter grade, and an embeddable README badge.

Submit a skill

Is this your skill, or is something wrong with this listing? Request removal or report an issue. Author removals are honored within 72 hours.

Comments (0)

No comments yet. Be the first to comment!

SSkills DirectorySkills Directory

Ship a skill? Prove it's safe.

Free 120-pattern security scan, letter grade, and an embeddable README badge.

Submit a skill

Related Skills

Browser Extension Developer

Use this skill when developing or maintaining browser extension code in the `browser/` directory, including Chrome/Firefox/Edge compatibility, content scripts, background scripts, or i18n updates.

284972 votes

Seo Optimizer

SEO optimization with keyword analysis, readability assessment, technical validation, content quality. Use for search rankings, blog posts, content audits, or encountering keyword density, readability scores, meta tags, schema markup errors.

2222 votes

Google Official Seo Guide

Official Google SEO guide covering search optimization, best practices, Search Console, crawling, indexing, and improving website search visibility based on official Google documentation

1862 votes

Tanstack Start

Build a full-stack TanStack Start app on Cloudflare Workers from scratch — SSR, file-based routing, server functions, D1+Drizzle, better-auth, Tailwind v4+shadcn/ui. Use whenever the user mentions TanStack Start, asks to scaffold a full-stack Cloudflare app with SSR, wants an SSR dashboard, or asks for a React 19 + Cloudflare Workers app with file-based routing and server functions — even if they don't name TanStack Start specifically. No template repo — Claude generates every file fresh per ...

10311 votes

Pentest

PTES-aligned adversarial security audit for backend, frontend, and mobile applications. Produces a CVSS-scored Hacker Report with verified PoCs and phased remediation.

5491 votes
View all in development →