# Moloni API - Catalogo Completo de Endpoints

> Fonte oficial: https://www.moloni.pt/dev/endpoints/
> Base URL: `https://api.moloni.pt/v2/`
> Todos os endpoints usam POST com `access_token` na query string.
> Trailing slash obrigatorio em todos os endpoints.

## Account & Profile

### My Profile (myProfile/)
| Metodo | Endpoint | Descricao |
|--------|----------|-----------|
| signup | `myProfile/signup/` | Registar nova conta |
| recoverpassword | `myProfile/recoverpassword/` | Recuperar password |
| updateMe | `myProfile/updateMe/` | Actualizar perfil |
| getMe | `myProfile/getMe/` | Obter dados do perfil |

## Company

### Company (companies/)
| Metodo | Endpoint | Descricao |
|--------|----------|-----------|
| freeSlug | `companies/freeSlug/` | Verificar slug disponivel |
| getAll | `companies/getAll/` | Listar empresas |
| getOne | `companies/getOne/` | Detalhe de empresa |

### Subscription (subscription/)
| Metodo | Endpoint | Descricao |
|--------|----------|-----------|
| getOne | `subscription/getOne/` | Dados da subscricao |

### Users (users/)
| Metodo | Endpoint | Descricao |
|--------|----------|-----------|
| getAll | `users/getAll/` | Listar utilizadores |

## Entities

### Customers (customers/)
| Metodo | Endpoint | Descricao |
|--------|----------|-----------|
| getAll | `customers/getAll/` | Listar clientes (qty, offset) |
| getOne | `customers/getOne/` | Detalhe de cliente |
| getBySearch | `customers/getBySearch/` | Pesquisar por texto |
| getByVat | `customers/getByVat/` | Pesquisar por NIF |
| getByNumber | `customers/getByNumber/` | Pesquisar por numero |
| getByEmail | `customers/getByEmail/` | Pesquisar por email |
| getByName | `customers/getByName/` | Pesquisar por nome |
| getNextNumber | `customers/getNextNumber/` | Proximo numero |
| getLastNumber | `customers/getLastNumber/` | Ultimo numero |
| getModifiedSince | `customers/getModifiedSince/` | Alterados desde data |
| count | `customers/count/` | Total de clientes |
| countBySearch | `customers/countBySearch/` | Contar por pesquisa |
| countByVat | `customers/countByVat/` | Contar por NIF |
| countByNumber | `customers/countByNumber/` | Contar por numero |
| countByEmail | `customers/countByEmail/` | Contar por email |
| countByName | `customers/countByName/` | Contar por nome |
| countModifiedSince | `customers/countModifiedSince/` | Contar alterados |
| insert | `customers/insert/` | Criar cliente |
| update | `customers/update/` | Actualizar cliente |
| delete | `customers/delete/` | Eliminar cliente |

### Customer Alternate Addresses (customerAlternateAddresses/)
| Metodo | Endpoint | Descricao |
|--------|----------|-----------|
| getAll | `customerAlternateAddresses/getAll/` | Listar moradas |
| insert | `customerAlternateAddresses/insert/` | Criar morada |
| update | `customerAlternateAddresses/update/` | Actualizar morada |
| delete | `customerAlternateAddresses/delete/` | Eliminar morada |

### Suppliers (suppliers/)
| Metodo | Endpoint | Descricao |
|--------|----------|-----------|
| count | `suppliers/count/` | Total fornecedores |
| getAll | `suppliers/getAll/` | Listar fornecedores |
| getOne | `suppliers/getOne/` | Detalhe fornecedor |
| countBySearch | `suppliers/countBySearch/` | Contar por pesquisa |
| getBySearch | `suppliers/getBySearch/` | Pesquisar por texto |
| countByVat | `suppliers/countByVat/` | Contar por NIF |
| getByVat | `suppliers/getByVat/` | Pesquisar por NIF |
| countByNumber | `suppliers/countByNumber/` | Contar por numero |
| getByNumber | `suppliers/getByNumber/` | Pesquisar por numero |
| countByName | `suppliers/countByName/` | Contar por nome |
| getByName | `suppliers/getByName/` | Pesquisar por nome |
| insert | `suppliers/insert/` | Criar fornecedor |
| update | `suppliers/update/` | Actualizar fornecedor |
| delete | `suppliers/delete/` | Eliminar fornecedor |

### Salesmen (salesmen/)
| Metodo | Endpoint | Descricao |
|--------|----------|-----------|
| count | `salesmen/count/` | Total vendedores |
| getAll | `salesmen/getAll/` | Listar vendedores |
| getOne | `salesmen/getOne/` | Detalhe vendedor |
| countBySearch/getBySearch | Pesquisar por texto |
| countByVat/getByVat | Pesquisar por NIF |
| countByNumber/getByNumber | Pesquisar por numero |
| countByName/getByName | Pesquisar por nome |
| countByEmail/getByEmail | Pesquisar por email |
| insert | `salesmen/insert/` | Criar vendedor |
| update | `salesmen/update/` | Actualizar vendedor |
| delete | `salesmen/delete/` | Eliminar vendedor |

## Products

### Products (products/)
| Metodo | Endpoint | Descricao |
|--------|----------|-----------|
| count | `products/count/` | Total produtos |
| getAll | `products/getAll/` | Listar produtos |
| getOne | `products/getOne/` | Detalhe produto |
| countBySearch/getBySearch | Pesquisar por texto |
| countByName/getByName | Pesquisar por nome |
| countByReference/getByReference | Pesquisar por referencia |
| countByEAN/getByEAN | Pesquisar por codigo barras |
| countModifiedSince/getModifiedSince | Alterados desde data |
| getLastCostPrice | `products/getLastCostPrice/` | Ultimo preco de custo |
| getNextReference | `products/getNextReference/` | Proxima referencia |
| insert | `products/insert/` | Criar produto |
| update | `products/update/` | Actualizar produto |
| delete | `products/delete/` | Eliminar produto |

### Product Categories (productCategories/)
| Metodo | Endpoint | Descricao |
|--------|----------|-----------|
| getOne | `productCategories/getOne/` | Detalhe categoria |
| getAll | `productCategories/getAll/` | Listar categorias |
| insert | `productCategories/insert/` | Criar categoria |
| update | `productCategories/update/` | Actualizar categoria |
| delete | `productCategories/delete/` | Eliminar categoria |

### Product Stocks (productStocks/)
| Metodo | Endpoint | Descricao |
|--------|----------|-----------|
| getAll | `productStocks/getAll/` | Listar stocks |
| insert | `productStocks/insert/` | Criar stock |
| update | `productStocks/update/` | Actualizar stock |
| delete | `productStocks/delete/` | Eliminar stock |
| moveToWarehouse | `productStocks/moveToWarehouse/` | Mover entre armazens |

### Price Classes (priceClasses/)
| Metodo | Endpoint | Descricao |
|--------|----------|-----------|
| getAll | `priceClasses/getAll/` | Listar classes preco |
| insert | `priceClasses/insert/` | Criar classe preco |
| update | `priceClasses/update/` | Actualizar classe preco |
| delete | `priceClasses/delete/` | Eliminar classe preco |

## Documents

> **ATENCAO Case-Sensitivity!** Endpoints com multiplas palavras usam camelCase.

### Facturas (invoices/) - lowercase OK
| Metodo | Endpoint | Descricao |
|--------|----------|-----------|
| count | `invoices/count/` | Total facturas |
| getAll | `invoices/getAll/` | Listar facturas |
| getOne | `invoices/getOne/` | Detalhe factura |
| insert | `invoices/insert/` | Criar factura |
| update | `invoices/update/` | Actualizar factura |
| delete | `invoices/delete/` | Eliminar factura |
| generateMbReference | `invoices/generateMbReference/` | Gerar ref MB |

### Recibos (receipts/) - lowercase OK
| Metodo | Endpoint | Descricao |
|--------|----------|-----------|
| count | `receipts/count/` | Total recibos |
| getAll | `receipts/getAll/` | Listar recibos |
| getOne | `receipts/getOne/` | Detalhe recibo |
| insert | `receipts/insert/` | Criar recibo |
| update | `receipts/update/` | Actualizar recibo |
| delete | `receipts/delete/` | Eliminar recibo |

### Notas de Credito (creditNotes/) - CAMELCASE!
| Metodo | Endpoint | Descricao |
|--------|----------|-----------|
| count | `creditNotes/count/` | Total notas credito |
| getAll | `creditNotes/getAll/` | Listar notas credito |
| getOne | `creditNotes/getOne/` | Detalhe nota credito |
| insert | `creditNotes/insert/` | Criar nota credito |
| update | `creditNotes/update/` | Actualizar nota credito |
| delete | `creditNotes/delete/` | Eliminar nota credito |

### Notas de Debito (debitNotes/) - CAMELCASE!
| Metodo | Endpoint | Descricao |
|--------|----------|-----------|
| count | `debitNotes/count/` | Total notas debito |
| getAll | `debitNotes/getAll/` | Listar notas debito |
| getOne | `debitNotes/getOne/` | Detalhe nota debito |
| insert | `debitNotes/insert/` | Criar nota debito |
| update | `debitNotes/update/` | Actualizar nota debito |
| delete | `debitNotes/delete/` | Eliminar nota debito |

### Facturas Simplificadas (simplifiedInvoices/) - CAMELCASE!
| Metodo | Endpoint | Descricao |
|--------|----------|-----------|
| count | `simplifiedInvoices/count/` | Total |
| getAll | `simplifiedInvoices/getAll/` | Listar |
| getOne | `simplifiedInvoices/getOne/` | Detalhe |
| insert | `simplifiedInvoices/insert/` | Criar |
| update | `simplifiedInvoices/update/` | Actualizar |
| delete | `simplifiedInvoices/delete/` | Eliminar |
| generateMbReference | `simplifiedInvoices/generateMbReference/` | Gerar ref MB |

### Facturas-Recibo (invoiceReceipts/) - CAMELCASE!
| Metodo | Endpoint | Descricao |
|--------|----------|-----------|
| count | `invoiceReceipts/count/` | Total |
| getAll | `invoiceReceipts/getAll/` | Listar |
| getOne | `invoiceReceipts/getOne/` | Detalhe |
| insert | `invoiceReceipts/insert/` | Criar |
| update | `invoiceReceipts/update/` | Actualizar |
| delete | `invoiceReceipts/delete/` | Eliminar |
| generateMbReference | `invoiceReceipts/generateMbReference/` | Gerar ref MB |

### Guias de Transporte (billsOfLading/) - CAMELCASE!
| Metodo | Endpoint | Descricao |
|--------|----------|-----------|
| count/getAll/getOne/insert/update/delete | Operacoes standard |
| setTransportCode | `billsOfLading/setTransportCode/` | Definir codigo transporte AT |

### Guias de Remessa (deliveryNotes/) - CAMELCASE!
| Metodo | Endpoint | Descricao |
|--------|----------|-----------|
| count/getAll/getOne/insert/update/delete | Operacoes standard |
| setTransportCode | `deliveryNotes/setTransportCode/` | Codigo transporte AT |

### Facturas de Activos Proprios (ownAssetsInvoices/) - CAMELCASE!
Standard: count/getAll/getOne/insert/update/delete

### Facturas Pro Forma (proFormaInvoices/) - CAMELCASE!
Standard: count/getAll/getOne/insert/update/delete

### Notas de Devolucao (devolutionNotes/) - CAMELCASE!
Standard: count/getAll/getOne/insert/update/delete

### Encomendas (purchaseOrders/) - CAMELCASE!
Standard: count/getAll/getOne/insert/update/delete

### Notas de Consignacao (consignmentNotes/) - CAMELCASE!
Standard: count/getAll/getOne/insert/update/delete

### Notas de Retorno (returnNotes/) - CAMELCASE!
Standard: count/getAll/getOne/insert/update/delete

### Guias de Movimentacao (movementOfGoods/) - CAMELCASE!
Standard: count/getAll/getOne/insert/update/delete

### Guias de Transporte (transportGuide/) - CAMELCASE!
Standard + setTransportCode

### Orcamentos (budget/) - lowercase OK
Standard: count/getAll/getOne/insert/update/delete

### Documentos Internos (internalDocuments/) - CAMELCASE!
Standard: count/getAll/getOne/insert/update/delete

## Settings

### Contas Bancarias (bankAccounts/) - CAMELCASE!
Standard: getAll/insert/update/delete

### Codigos CAE (caeCodes/) - CAMELCASE!
Standard: getAll/insert/update/delete

### Metodos de Pagamento (paymentMethods/) - CAMELCASE!
Standard: getAll/insert/update/delete

### Prazos de Vencimento (maturityDates/) - CAMELCASE!
Standard + countModifiedSince/getModifiedSince

### Metodos de Entrega (deliveryMethods/) - CAMELCASE!
Standard: getAll/insert/update/delete

### Veiculos (vehicles/) - lowercase OK
Standard + getBySearch

### Deducoes (deductions/) - lowercase OK
Standard: getAll/insert/update/delete

### Impostos (taxes/) - lowercase OK
Standard: getAll/insert/update/delete

### Unidades de Medida (measurementUnits/) - CAMELCASE!
Standard: getAll/insert/update/delete

### Templates de Identificacao (identificationTemplates/) - CAMELCASE!
Standard: getAll/insert/update/delete

### Series Documentais (documentSets/) - CAMELCASE!
| Metodo | Endpoint | Descricao |
|--------|----------|-----------|
| getAll | `documentSets/getAll/` | Listar series |
| insert | `documentSets/insert/` | Criar serie |
| update | `documentSets/update/` | Actualizar serie |
| delete | `documentSets/delete/` | Eliminar serie |
| countModifiedSince | `documentSets/countModifiedSince/` | Contar alterados |
| getModifiedSince | `documentSets/getModifiedSince/` | Listar alterados |
| atInsertCode | `documentSets/atInsertCode/` | Inserir codigo AT |
| atInsertCodeBulk | `documentSets/atInsertCodeBulk/` | Inserir codigos AT bulk |

### Armazens (warehouses/) - lowercase OK
Standard + countModifiedSince

### Propriedades de Produtos (productProperties/) - CAMELCASE!
Standard + countModifiedSince/getModifiedSince

## Global Data

### Countries (countries/)
`countries/getAll/` - Lista de paises (Portugal country_id: 1)

### Fiscal Zones (fiscalZones/) - CAMELCASE!
`fiscalZones/getAll/` - Zonas fiscais

### Languages (languages/)
`languages/getAll/`, `languages/getOne/`

### Currencies (currencies/)
`currencies/getAll/`, `currencies/getOne/` (EUR = id 1)

### Document Models (documentModels/) - CAMELCASE!
`documentModels/getAll/` - Modelos de documento

### Tax Exemptions (taxExemptions/) - CAMELCASE!
`taxExemptions/getAll/` - Lista de isencoes de imposto

### Currency Exchange (currencyExchange/) - CAMELCASE!
`currencyExchange/getAll/`, `currencyExchange/getOne/` - Taxas de cambio

### Multibanco Gateways (multibancoGateways/) - CAMELCASE!
`multibancoGateways/getAll/` - Gateways MB disponiveis
