# Detalle (/docs/developers/api-reference/platform-catalogs/detail)

## Descripcion general [#descripcion-general]

Este endpoint devuelve el detalle de un catálogo de plataforma, incluido su **valor efectivo** (el que aplica hoy) y el **valor base de la plataforma** (para comparar). El identificador en la URL es el `catalog_key` del catálogo. El valor efectivo se resuelve con la precedencia razón social → organización → adopción anticipada de la razón social → plataforma: si tu organización tiene un override activo, se refleja aquí; de lo contrario, se utiliza el valor de la plataforma.

## Endpoint [#endpoint]

`GET https://app.integranom.com/api/v1/platform-catalogs/{catalog_key}`

**Path param:** `catalog_key` — string, la clave del catálogo (por ejemplo `uma`, `isr_tariff`, `imss_worker_ramos`).

## Consulta un catálogo [#consulta-un-catálogo]

***

Devuelve el detalle del catálogo indicado en `catalog_key`. El campo `source` puede ser `"rs"` (override por razón social), `"org"` (override de la organización) o `"platform"` (valor base de la plataforma).

El `effective_payload` es el valor que aplica hoy con la precedencia RS → organización → plataforma, mientras que `platform_payload` es el valor de la plataforma que aplica hoy, útil para comparar. La forma de ambos depende del `shape` del catálogo (`scalar`, `range_table` o `keyed_table`).

**cURL**

```bash
curl -X GET "https://app.integranom.com/api/v1/platform-catalogs/uma" \
-H "Authorization: Bearer TU_API_KEY" \
-H "Content-Type: application/json"
```

**Respuesta**

```json
{
"key": "uma",
"name": "UMA",
"description": "Unidad de Medida y Actualización (diaria, mensual, anual).",
"shape": "scalar",
"unit": "MXN",
"group_key": "parametros_generales",
"group_label": "Parámetros generales",
"frequency_scoped": false,
"frequency": null,
"is_federal": false,
"regulatory": "legal",
"lookup_mode": null,
"input_var": null,
"legal_entity_number": null,
"source": "platform",
"is_stale": false,
"pending_approval": false,
"effective_payload": { "...": "estructura según el shape del catálogo" },
"platform_payload": { "...": "el valor sugerido por la plataforma" }
}
```

## Lectura con frequency y alcance por razón social [#lectura-con-frequency-y-alcance-por-razón-social]

***

Para un catálogo frequency-scoped, indica la `frequency` que quieras consultar. Con `legal_entity_number` acotas la lectura a una razón social específica: si esa razón social tiene un override, el `source` regresa como `"rs"` y `effective_payload` refleja su valor. Si esa razón social adelantó una versión publicada de la plataforma y ya llegó la fecha que eligió, `effective_payload` trae esa versión y el `source` sigue siendo `"platform"`.

## Query params [#query-params]

| Parametro             | Tipo    | Requerido | Default       | Descripcion                                                                                                                |
| --------------------- | ------- | --------- | ------------- | -------------------------------------------------------------------------------------------------------------------------- |
| `frequency`           | string  | No        | `semimonthly` | Solo aplica a catálogos `frequency_scoped` (como `isr_tariff`). Si se omite en uno frequency-scoped, se usa `semimonthly`. |
| `legal_entity_number` | integer | No        | -             | Lectura con alcance por razón social. Debe existir en tu organización.                                                     |

**cURL**

```bash
curl -X GET "https://app.integranom.com/api/v1/platform-catalogs/isr_tariff?frequency=monthly&legal_entity_number=1" \
-H "Authorization: Bearer TU_API_KEY" \
-H "Content-Type: application/json"
```

**Respuesta**

```json
{
"key": "isr_tariff",
"name": "Tarifa ISR",
"description": "Tarifa del ISR por periodicidad (Art. 96 LISR).",
"shape": "range_table",
"unit": "MXN",
"group_key": "isr",
"group_label": "ISR e impuesto sobre nómina",
"frequency_scoped": true,
"frequency": "monthly",
"is_federal": true,
"regulatory": "legal",
"lookup_mode": null,
"input_var": null,
"legal_entity_number": 1,
"source": "rs",
"is_stale": true,
"pending_approval": false,
"effective_payload": { "...": "estructura según el shape del catálogo" },
"platform_payload": { "...": "el valor sugerido por la plataforma" }
}
```

## Catálogo isn\_by\_state [#catálogo-isn_by_state]

***

En `isn_by_state` (`keyed_table`) la clave de cada entrada es el código de la entidad federativa. En `effective_payload` y `platform_payload` cada valor es siempre una **cadena decimal** con la tasa base del estado: la tasa plana, o la del primer rango cuando el estado cobra una tarifa progresiva. Los estados que tienen una definición publicada la traen además en dos campos aparte, `isn_definitions` (la que aplica hoy) y `platform_isn_definitions` (la de la plataforma).

Cada definición es un objeto con **exactamente uno** de `rate` (cadena decimal, tasa plana) o `brackets` (tarifa progresiva), más los campos opcionales `taxSurchargeRate` (fracción del impuesto que se suma como sobretasa), `baseSurchargeRate` (fracción de la nómina que se suma como sobretasa) y `exemptMonthlyAmount` (monto mensual de la nómina que no se grava). Todos son cadenas decimales.

Cada elemento de `brackets` trae `lowerLimit`, `upperLimit` (`null` en el último), `fixedFee` y `marginalRate`. Los rangos van en orden ascendente, contiguos y sin traslape, y solo el último puede quedar abierto. En la tarifa progresiva, los límites son del total mensual de la nómina del estado.

```json
{
  "effective_payload": { "SIN": "0.024", "CAM": "0.03", "QUE": "0.03", "JAL": "0.03" },
  "isn_definitions": {
    "SIN": {
      "brackets": [
        { "lowerLimit": "0.01", "upperLimit": "500000.00", "fixedFee": "0.00", "marginalRate": "0.024" },
        { "lowerLimit": "500000.01", "upperLimit": "700000.00", "fixedFee": "12000.00", "marginalRate": "0.026" },
        { "lowerLimit": "700000.01", "upperLimit": "900000.00", "fixedFee": "17200.00", "marginalRate": "0.028" },
        { "lowerLimit": "900000.01", "upperLimit": null, "fixedFee": "22800.00", "marginalRate": "0.030" }
      ]
    },
    "CAM": { "rate": "0.03", "taxSurchargeRate": "0.33" },
    "QUE": { "rate": "0.03", "exemptMonthlyAmount": "76617.76" }
  }
}
```

## Campos de la respuesta [#campos-de-la-respuesta]

| Campo                       | Tipo                                             | Notas                                                                                                                                                                                                                                                                               |
| --------------------------- | ------------------------------------------------ | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `key`                       | string                                           | Clave del catálogo.                                                                                                                                                                                                                                                                 |
| `name`                      | string                                           | Nombre legible.                                                                                                                                                                                                                                                                     |
| `description`               | string                                           | Descripción del catálogo.                                                                                                                                                                                                                                                           |
| `shape`                     | `"scalar"` \| `"range_table"` \| `"keyed_table"` | Forma del valor. Determina la estructura de `effective_payload` y `platform_payload`.                                                                                                                                                                                               |
| `unit`                      | string                                           | Unidad del valor (por ejemplo `MXN`).                                                                                                                                                                                                                                               |
| `group_key` / `group_label` | string                                           | Grupo del catálogo (clave y etiqueta).                                                                                                                                                                                                                                              |
| `frequency_scoped`          | boolean                                          | `true` si el catálogo depende de una periodicidad.                                                                                                                                                                                                                                  |
| `frequency`                 | string \| null                                   | Periodicidad resuelta para esta lectura; `null` si el catálogo no es frequency-scoped.                                                                                                                                                                                              |
| `is_federal`                | boolean                                          | `true` si es tabla federal.                                                                                                                                                                                                                                                         |
| `regulatory`                | `"legal"` \| `"platform_default"`                | Naturaleza regulatoria del catálogo.                                                                                                                                                                                                                                                |
| `legal_entity_number`       | integer \| null                                  | Razón social del alcance de la lectura; `null` si es a nivel organización o plataforma.                                                                                                                                                                                             |
| `source`                    | `"rs"` \| `"org"` \| `"platform"`                | Origen del valor efectivo, según la precedencia RS → organización → plataforma.                                                                                                                                                                                                     |
| `is_stale`                  | boolean                                          | `true` cuando la plataforma publicó una versión más reciente que la última revisión de tu override — señal de que tu valor autoadministrado quedó rezagado respecto al de la plataforma.                                                                                            |
| `pending_approval`          | boolean                                          | `true` cuando existe un override federal que aún espera la aprobación de un segundo administrador. Mientras tanto el resolver lo ignora, por lo que `source` se reporta como `"platform"` aunque este campo sea `true`. (Los overrides creados por la API nunca quedan pendientes.) |
| `effective_payload`         | object                                           | Valor que aplica hoy. Su forma depende del `shape` del catálogo.                                                                                                                                                                                                                    |
| `platform_payload`          | object                                           | Valor base de la plataforma, para comparar. Su forma depende del `shape` del catálogo.                                                                                                                                                                                              |
| `isn_definitions`           | object                                           | Solo en `isn_by_state`: las definiciones con tarifa, sobretasa o monto exento que aplican hoy, por estado.                                                                                                                                                                          |
| `platform_isn_definitions`  | object                                           | Solo en `isn_by_state`: las definiciones de la plataforma, por estado.                                                                                                                                                                                                              |

## Errores [#errores]

| Status | Causa                                                                                      |
| ------ | ------------------------------------------------------------------------------------------ |
| `400`  | `frequency` inválida, o `legal_entity_number` inválido / que no existe en tu organización. |
| `401`  | API key ausente o inválida.                                                                |
| `404`  | El catálogo con ese `catalog_key` no existe.                                               |