Read this company's live complaint book identifier
Returns the opaque identifier your consumers post to, and the intake path built from it. Requires complaints:manage rather than a read scope because the identifier IS the write capability for the public door: handing it to a credential is handing out the ability to publish a form against this book. A company that has never minted one answers 404 COMPLAINT_BOOK_NOT_MINTED, which is not an error state — it is the answer before you POST to this same path.
Returns the opaque identifier your consumers post to, and the intake path built from it. Requires complaints:manage rather than a read scope because the identifier IS the write capability for the public door: handing it to a credential is handing out the ability to publish a form against this book. A company that has never minted one answers 404 COMPLAINT_BOOK_NOT_MINTED, which is not an error state — it is the answer before you POST to this same path.
Authorization
bearerAuth Tenant-bound, scoped and expiring Apifact credential. Migrated legacy credentials are accepted only on deprecated v1 writes and tenant-scoped v2 read, poll and download routes. Each operation names the single scope it requires in x-required-scope; the scope array of the security requirement itself is empty because OpenAPI 3.0 requires it to be for a non-oauth2 scheme.
In: header
Response Body
application/json
application/json
application/json
application/json
curl -X GET "https://example.com/api/v2/complaint-books" \ -H "Authorization: Bearer apf_v2_tu_credencial"{ "schemaVersion": "2.0", "requestId": "d385ab22-0f51-4b97-9ecd-b8ff3fd4fcb6", "bookId": "710266f4-0087-48f9-97e1-4b13ac48f353", "createdAt": "2019-08-24T14:15:22Z", "intakeUrl": "string"}Durably request document submission POST POST
Creates an idempotent operation and outbox event. Factura, boleta and the restricted 07 and 08 note profiles are admitted only when their independent tenant capabilities are enabled: the capabilities are evaluated when the request arrives, and a request that does not meet them is REFUSED with 409 TENANT_CAPABILITY_DISABLED naming the exact capability column, never accepted and held. A 202 therefore means the submission is queued for the private SUNAT Workflow and will reach a terminal state; it never means the request is waiting for a capability to be turned on. A note profile is pinned per type and not per reason, so a 07 that voids its factura and a 07 that credits part of it are dispatched on identical terms. Successful admission does not imply SUNAT acceptance. An accepted or observed submission of any of these document types produces signed XML, submission ZIP, CDR, QR PNG and the A4 and ticket representations; a note prints its own series-number and amounts and names the document it modifies with its catalog 09/10 reason.
Mint this company's complaint book, or return the one it already has POST POST
Idempotent WITHOUT an Idempotency-Key, and that is a property of the schema rather than a convention: one ACTIVE book per company is a partial unique index, so a repeat returns the same book instead of minting a second. It is deliberately NOT a rotation — rotating retires an identifier the client may already have published, and a verb that could do that as a side effect is how somebody breaks a working form by calling it twice. Use POST /api/v2/complaint-books/rotation for that, where you have to name what you are replacing.