Fac-360
Companies

Accept the proposal and generate the registry, which has no inverse

ADMIN and above. This COMMITS: it accepts the SUNAT proposal and generates the registry for a real taxpayer real period, and no route on this platform can withdraw one. SUNAT publishes no rehearsal environment for SIRE, so the first exercise of this route is on a real period. A console offering it must show what is about to happen and ask. Answers 202 and hands the period to the durable cycle. A period already REGISTERED is refused with 409, and one fenced as AMBIGUOUS is refused with 409 and never retried: it cannot be established whether SUNAT applied the last act, and generating twice is not recoverable.

POST
/console/v1/companies/{companyId}/sire/periods/{book}/{period}/generation

ADMIN and above. This COMMITS: it accepts the SUNAT proposal and generates the registry for a real taxpayer real period, and no route on this platform can withdraw one.

SUNAT publishes no rehearsal environment for SIRE, so the first exercise of this route is on a real period. A console offering it must show what is about to happen and ask.

Answers 202 and hands the period to the durable cycle. A period already REGISTERED is refused with 409, and one fenced as AMBIGUOUS is refused with 409 and never retried: it cannot be established whether SUNAT applied the last act, and generating twice is not recoverable.

Authorization

consoleSession
__Host-apf_console<token>

Set by POST /console/v1/sessions. HttpOnly, Secure, SameSite=Strict, Path=/, __Host- prefixed. It is never readable by JavaScript and there is no header alternative: accepting both carriers would let an attacker choose the weaker one.

In: cookie

Path Parameters

companyId*string
Formatuuid
book*string

Value in

  • "rvie"
  • "rce"
period*string
Match^[0-9]{4}(0[1-9]|1[0-2])$

Response Body

application/json

application/json

application/json

application/json

application/json

application/json

application/json

application/json

application/json

application/json

application/json

curl -X POST "https://example.com/console/v1/companies/497f6eca-6276-4993-bfeb-53cbbbba6f08/sire/periods/rvie/string/generation" \  -H "Authorization: Bearer apf_v2_tu_credencial"
{  "schemaVersion": "console.1",  "requestId": "d385ab22-0f51-4b97-9ecd-b8ff3fd4fcb6",  "book": "rvie",  "period": "string",  "status": "RUNNING",  "statusPath": "string"}

Download what SUNAT proposes, and stop POST POST

ADMIN and above. This LOOKS: it asks SUNAT for the proposal and does not accept it. It is a separate route from generation, and not the same route with a flag, for the reason the machine surface gives at length: the difference between looking and committing cannot live in a JSON field, because the day somebody leaves that field set a period is closed and there is no inverse operation. Answers 202 and hands the period to the durable cycle; poll the period listing for the outcome. A period fenced as AMBIGUOUS is refused with 409 and never retried automatically.

The complaints filed against this company, and the book's own identifier GET GET

ADMIN and above, and the floor is higher than it looks for a read: this returns the personal data of THIRD PARTIES — consumers who are not this platform's users and never chose to be in it. It is the same floor the machine surface's complaints:read scope carries, so a person's role and a credential's scope cannot disagree about who may see a consumer's address. It runs on DB_RUNTIME and not on the console connection. apifact_console holds SELECT on exactly two tables and no DML anywhere, so it cannot read complaints.* and must not learn to; what it can do is prove which company this session is entitled to, which is exactly what auth.bind_console_company is for. The book's own identifier comes back with the list, because the person reading this screen is usually the person who has to put it on the company's website. requiresTurnstile says whether that form is expected to send a humanity token. A refusal is 403 CONSOLE_ROLE_INSUFFICIENT and never 401: the session is alive and only the role is short, and a 401 would send somebody to a login screen that cannot fix it.