Changelog
Recent changes to the Contabeleza API. Source: public/openapi.yaml.
Service Commit Index
| Service | Commit | Date |
|---|---|---|
| api-docs-contabeleza | 05ec82c | 2026-07-20 |
| core-contabeleza | e605c1e | 2026-07-20 |
| accounting | 9bdfcd7 | 2026-07-20 |
| access | f495585 | 2026-07-20 |
> Future endpoint updates should diff against these commits to generate changelogs automatically.
---
2026-07-28
- Changed emission validation endpoints now return
emission-validationsJSON:API resource instead of flatValidationStatusobject. Affected endpoints: POST /fiscal-entities/{id}/invoices-emission/validateGET /fiscal-entities/{id}/invoices-emission/validatePOST /fiscal-entities/{id}/validate-emissionGET /fiscal-entities/{id}/validation-status- Added new
emission-validationsresource type with relationshipinvoice(HasOne) and attributes:status,author,author_type,authentication_type,attempted_at,completed_at,canceled_at,invoice_status,error,municipal_data,is_valid - Added
canceled_at— timestamp set when the validation invoice is queued for cancellation - Added
authentication_type— which auth method was used (pass_only,token,user_and_pass, orcertificate) - Added
authorandauthor_type— who requested the validation, captured from the request context - Removed
certificate_expiredfield from the validation status response
2026-07-22
- Added
internal ★group — ~71 accounting service endpoints (fiscal entities, MEI, revenue, pass-govs, pass-invoices, certificates, invoices, search, callbacks, diagnosis) - Added 6 internal model schemas —
SellerFiscalEntity,FiscalEntityRequest,FiscalEntityMei,FiscalEntityMeiCnd,FiscalEntityMeiDasn,FiscalEntityMeiCcmei - Added tech guide
/guides/tech/internal-endpoints— admin-only routes, direct accounting service, proxy vs direct, JSON:API types, deprecated/broken routes - Improved endpoints page — red ★ badge on internal group header, red dot on endpoint rows, red-tinted left border on group block
- Improved models page — collapsed
★ Internalsection in sidebar, red warning bar + red left border on internal model cards - Fixed 2 broken routes excluded (no handler):
PUT /fiscal-entities/{id}/certificate,POST /fiscal-entities/{id}/mei/cnpj
2026-07-20
- Added
GET /AI_INDEX.md— compact API reference for AI agents (~272 lines) - Improved
GET /accounts/{id}— added Account response schema and example - Improved
GET /external-app-tokens/{tokenId}— added ExternalAppToken response schema and example - Improved
GET /accounts/{id}/professional-contracts/{contractId}— added ProfessionalContract response schema and example - Improved
GET /accounts/{id}/professional-invoices/{invoiceId}— added ProfessionalInvoice response schema and example - Fixed
POST /accounts/{id}/invoices/{invoiceId}/emitandPOST /accounts/{id}/invoices/{invoiceId}/cancel— mapped response toInvoicemodel (wasProfessionalInvoice) - Fixed
businesses > invoicestag →businesses > professional invoices - Fixed
accounts > invoicesdescriptions — removed "personal invoice" terminology - Fixed
generateJsonApiExample()type values — now uses real JSON:API types from schema (not derived placeholders) - Fixed accordion close-others behavior — only one expansion open at a time
- Fixed migration parser — handles bare
ALTER COLUMNin multi-column statements - Fixed models page type display — suppresses
| nullwhen field has required badge
2026-07-13 (2)
- Added ~58 endpoints across core-contabeleza and access:
- CRUD
/businesses,/businesses/{id} - CRUD
/business-categories,/business-categories/{id} - CRUD
/week-schedules/{id} - CRUD
/professional-categories,/professional-categories/{id} - CRUD
/professional-services,/professional-services/{id} - CRUD
/business-requests,/business-requests/{id} - CRUD
/representatives,/representatives/{id} GET /professional-contracts,GET /professional-contracts/{id}GET /professional-invoices,GET /professional-invoices/{id},PATCH /professional-invoices/{id}GET /constants- CRUD
/accounts,/accounts/{id} GET /accounts/{id}/professional-contracts,GET /accounts/{id}/professional-contracts/{contractId}GET /accounts/{id}/professional-invoices,GET /accounts/{id}/professional-invoices/{invoiceId}- Deprecated 6 endpoints with
Obsoletotag: PATCH /professional-contracts/{id}/statusPATCH /professional-contracts/{id}/in-approvalPATCH /professional-contracts/{id}/cancellation-requestDELETE /professional-contracts/{id}GET /businesses/{id}/settings/statusPATCH /businesses/{id}/settings/status- Tagged
GET /constants,GET /professionals/{id}/is-owned-by-account,GET /professional-fiscal-entitieswithPrivado - Tagged
POST /accounts/{id}/impersonate,POST /accounts/{id}/fiscal-entity/mei/cnpjwithAdmin
2026-07-13
- Added
has_pass_gov,has_pass_invoices,has_certificatebooleans toGETresponses of/professional-fiscal-entities,/business-fiscal-entities,/account-fiscal-entities
2026-07-10 (4)
- Removed
/fiscal-entities/{id}/*(all direct accounting service paths) - Added proxy endpoints:
/businesses/{id}/fiscal-entity/*(certificate, PassGov, PassInvoices, invoices-emission)/professionals/{id}/fiscal-entity/*(certificate, PassGov, PassInvoices, invoices-emission)/accounts/{id}/fiscal-entity/*(CRUD, certificate, PassGov, PassInvoices, MEI sub-resources)/accounts/{id}/invoices/*(create, list, get, emit, cancel)GET /municipal-details,GET /professionals-fiscal-details- Added
GET /accounts/{id}/professional-invoicesandGET /accounts/{id}/professional-contracts(account-level lists) - Added
GET|PATCH|POST /accounts/{id}/professional-invoices/{invoiceId}/*(account-scoped writes: cancel, emit, reemit) - Removed
/fiscal-entity/authentication(split into pass-gov and pass-invoices)
2026-07-10 (3)
- Renamed
/businesses/{id}/professionals-revenue→/professional-fiscal-entities/revenue - Added
GET /businesses/{id}/revenue,GET /professionals/{id}/fiscal-entity/revenue
2026-07-23
- Added
missing_authtoemission_statusenum — represents provider account exists but no credentials sent yet - Changed
POST /fiscal-entities/{id}/invoices-emission— now checks for existing credentials and sends them to eNotas; setsmissing_authif none exist,missing_validationif credentials were sent - Changed
POST /fiscal-entities/{id}/pass-invoices— now sends credentials to eNotas when a provider account already exists (FLOW B); stores locally only when no provider exists (FLOW A) - Changed
POST /fiscal-entities/{id}/certificate— no longer creates a provider account if none exists; only sends to eNotas when provider exists; stored locally otherwise
2026-07-10 (2)
- Changed
status_pass_govs,status_pass_invoices,status_certificateresponse values — addednone(no record) vsinactive(record exists but inactive) distinction
2026-07-10
- Changed
status_pass_govs,status_pass_invoices,status_certificate— expanded values:valid,invalid,none,not-validated,processing-validation;status_certificateaddsexpired - Added
emission_validation_statusesfield to fiscal entity GET responses - Changed
POST /fiscal-entities/{id}/invoices-emission— no longer sends certificate or pass_invoices; only creates eNotas company - Changed
POST /fiscal-entities/{id}/invoices-emission/validate— now the explicit path to reachactiveemission_status - Removed
missing_authfromemission_statusenum - Changed
validated_atandvalidation_history— now UI audit trail only; canonical state isemission_validation_statuses
2026-07-09
- Changed
status_pass_govs,status_pass_invoices,status_certificatevalues —nonevsinactivedistinction added
2026-07-09
- Added
PATCH /fiscal-entities/{id}/pass-invoices/validateandPATCH /fiscal-entities/{id}/certificate/validate - Changed pass-invoices and certificate create/update — automatic validation on non-empty credentials; clearing resets to
none - Removed automatic emission validation on pass-invoices/certificate create/update
- Deprecated
PUT /fiscal-entities/{id}/certificate,POST /fiscal-entities/{id}/validate-emission,GET /fiscal-entities/{id}/validation-status
2026-07-08
- Changed
POST /fiscal-entities/{id}/certificate/validate— rejects expired certs immediately - Changed
GET /fiscal-entities/{id}— auto-updatesemission_statustomissing_validationif certificate expired - Changed emission status enum — removed
missing_auth; values nowmissing_setup,missing_validation,active,inactive - Changed
has_pass_gov,has_pass_invoice,has_certificatebooleans →status_pass_govs,status_pass_invoices,status_certificatestrings
2026-07-07
- Added
PATCH /fiscal-entities/{id}/pass-invoices/validateandPATCH /fiscal-entities/{id}/certificate/validate
2026-07-06 (2)
- Added
last-updated-atattribute toGET /fiscal-entity-revenue-resumesresponses
2026-06-16
- Changed
PATCH /fiscal-entities/{id}/pass-govandPATCH /fiscal-entities/{id}/pass-invoices— clear/inactivate on empty password - Changed
POST /fiscal-entities/{id}/pass-govandPOST /fiscal-entities/{id}/pass-invoices— reject empty password with400 PasswordRequired
2026-06-15
- Added
data.pdf_urlsupport toPOST /business-requestsforterminate_contracttype - Added
termination_pdf_urltoPATCH /business-requests/{id}/update-status(body-based and n8n variants) - Added
termination_pdf_urltoPATCH /professional-contracts/{id}/update-status - Added
termination_pdf_urltoProfessionalContractGET responses
2026-04-30
- Added Test Battery runner at
/tests/* - Added
/tests/runand/tests/run/:runIdendpoints
2026-04-29
- Added 43 endpoints across api gateway, business-contabeleza, accounting, access services
- Added session/auth surface, invoice lifecycle, fiscal entity management, MEI sub-resources, account management, external-app-tokens, representatives, partners, n8n webhook
2026-04-01
- Initial release: 28 paths, 9 models from HAR capture