# products.hub_list

Listar produtos com ofertas. Produtos da conta com ofertas, status da oferta principal, vendas, faturamento e série de vendas dos últimos 30 dias. Filtros: `search` (nome ou descrição), `types`, `categories`, `statuses` (da oferta principal), `includeActive` e `includeArchived` (padrão: os dois). Ordem em `sort`; página `page`/`perPage` (10, até 50).

- Endpoint: `POST https://app.atomiks.com.br/api/v1/products.hub_list` (corpo JSON)
- Quem pode chamar: membro da conta
- Escopo da chave: `crm:read`
- Grava dados: não
- Pela chave de API: sim
- Ferramenta MCP: `products_hub_list`
- Ficha em JSON: `https://app.atomiks.com.br/api/v1/openapi.json` (operationId `products.hub_list`)

## Entrada

| Campo | Tipo | Obrigatório | Nota |
|---|---|---|---|
| `search` | string | não |  |
| `types` | "course" \| "community" \| "ebook" \| "mentorship" \| "event" \| "software" \| "physical" \| "other"[] | não |  |
| `categories` | string[] | não |  |
| `statuses` | "incomplete" \| "ready_to_submit" \| "approved" \| "archived"[] | não |  |
| `includeActive` | boolean | não |  |
| `includeArchived` | boolean | não |  |
| `sort` | "newest" \| "oldest" \| "nameAsc" \| "nameDesc" \| "salesDesc" \| "revenueDesc" | não |  |
| `page` | integer | não |  |
| `perPage` | integer | não |  |

<details><summary>JSON Schema</summary>

```json
{
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "type": "object",
  "properties": {
    "search": {
      "type": "string",
      "maxLength": 100
    },
    "types": {
      "type": "array",
      "items": {
        "type": "string",
        "enum": [
          "course",
          "community",
          "ebook",
          "mentorship",
          "event",
          "software",
          "physical",
          "other"
        ]
      }
    },
    "categories": {
      "type": "array",
      "items": {
        "type": "string",
        "maxLength": 80
      }
    },
    "statuses": {
      "type": "array",
      "items": {
        "type": "string",
        "enum": [
          "incomplete",
          "ready_to_submit",
          "approved",
          "archived"
        ]
      }
    },
    "includeActive": {
      "type": "boolean"
    },
    "includeArchived": {
      "type": "boolean"
    },
    "sort": {
      "type": "string",
      "enum": [
        "newest",
        "oldest",
        "nameAsc",
        "nameDesc",
        "salesDesc",
        "revenueDesc"
      ]
    },
    "page": {
      "type": "integer",
      "minimum": 1,
      "maximum": 9007199254740991
    },
    "perPage": {
      "type": "integer",
      "minimum": 1,
      "maximum": 50
    }
  }
}
```

</details>

## Exemplo

```bash
curl -X POST https://app.atomiks.com.br/api/v1/products.hub_list \
  -H "Authorization: Bearer $ATOMIKS_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"sort":"newest","page":1,"perPage":10}'
```

CLI:

```bash
node cli/atomiks.mjs products.hub_list --json '{"sort":"newest","page":1,"perPage":10}'
```

MCP: ferramenta `products_hub_list` com a mesma entrada.

## Saída

Sucesso: `{"data": ...}` com o formato abaixo.

```json
{
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "type": "object",
  "properties": {
    "items": {
      "type": "array",
      "items": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string"
          },
          "name": {
            "type": "string"
          },
          "description": {
            "type": [
              "string",
              "null"
            ]
          },
          "type": {
            "type": "string",
            "enum": [
              "course",
              "community",
              "ebook",
              "mentorship",
              "event",
              "software",
              "physical",
              "other"
            ]
          },
          "kind": {
            "type": "string",
            "enum": [
              "physical",
              "digital",
              "service"
            ]
          },
          "category": {
            "type": [
              "string",
              "null"
            ]
          },
          "checkoutType": {
            "type": "string",
            "enum": [
              "internal",
              "external"
            ]
          },
          "priceCents": {
            "type": "number"
          },
          "imageUrl": {
            "type": [
              "string",
              "null"
            ]
          },
          "archived": {
            "type": "boolean"
          },
          "createdAt": {
            "type": "string"
          },
          "supportEmail": {
            "type": [
              "string",
              "null"
            ]
          },
          "supportPhone": {
            "type": [
              "string",
              "null"
            ]
          },
          "softDescriptor": {
            "type": [
              "string",
              "null"
            ]
          },
          "refundDays": {
            "type": [
              "number",
              "null"
            ]
          },
          "stockQuantity": {
            "type": [
              "number",
              "null"
            ]
          },
          "status": {
            "type": "string",
            "enum": [
              "incomplete",
              "ready_to_submit",
              "approved",
              "archived"
            ]
          },
          "offers": {
            "type": "array",
            "items": {
              "type": "object",
              "properties": {
                "id": {
                  "type": "string"
                },
                "productId": {
                  "type": "string"
                },
                "name": {
                  "type": "string"
                },
                "isMain": {
                  "type": "boolean"
                },
                "status": {
                  "type": "string",
                  "enum": [
                    "incomplete",
                    "ready_to_submit",
                    "approved",
                    "archived"
                  ]
                },
                "priceCents": {
                  "type": "number"
                },
                "newPriceCents": {
                  "type": [
                    "number",
                    "null"
                  ]
                },
                "recurrence": {
                  "anyOf": [
                    {
                      "type": "object",
                      "properties": {
                        "frequency": {
                          "type": "string",
                          "enum": [
                            "monthly",
                            "quarterly",
                            "semi-annually",
                            "yearly"
                          ]
                        },
                        "intervalMonths": {
                          "type": "integer",
                          "minimum": 1,
                          "maximum": 12
                        },
                        "trialDays": {
                          "type": "integer",
                          "minimum": 0,
                          "maximum": 180
                        }
                      },
                      "required": [
                        "frequency",
                        "intervalMonths",
                        "trialDays"
                      ],
                      "additionalProperties": false
                    },
                    {
                      "type": "null"
                    }
                  ]
                },
                "incompleteReason": {
                  "type": "array",
                  "items": {
                    "type": "string"
                  }
                },
                "hasCoupon": {
                  "type": "boolean"
                },
                "archived": {
                  "type": "boolean"
                }
              },
              "required": [
                "id",
                "productId",
                "name",
                "isMain",
                "status",
                "priceCents",
                "newPriceCents",
                "recurrence",
                "incompleteReason",
                "hasCoupon",
                "archived"
              ],
              "additionalProperties": false
            }
          },
          "salesCount": {
            "type": "number"
          },
          "revenueCents": {
            "type": "number"
          },
          "series": {
            "type": "array",
            "items": {
              "type": "number"
            }
          }
        },
        "required": [
          "id",
          "name",
          "description",
          "type",
          "kind",
          "category",
          "checkoutType",
          "priceCents",
          "imageUrl",
          "archived",
          "createdAt",
          "supportEmail",
          "supportPhone",
          "softDescriptor",
          "refundDays",
          "stockQuantity",
          "status",
          "offers",
          "salesCount",
          "revenueCents",
          "series"
        ],
        "additionalProperties": false
      }
    },
    "total": {
      "type": "number"
    },
    "pages": {
      "type": "number"
    }
  },
  "required": [
    "items",
    "total",
    "pages"
  ],
  "additionalProperties": false
}
```

## Erros

`{"error": {"code", "message", "requestId"}}`. Códigos: `invalid_input` (400), `unauthorized` (401), `forbidden` / `account_pending` / `scope_missing` (403), `not_found` (404), `limit_reached` (409), `internal` (500).
