Tema
WebhookEvent
Una entrega de webhook, ya verificada y parseada.
Los campos del sobre son estables. Los de data no todos: SmartDoc garantiza un subconjunto —id, status, los datos del emisor, el timbrado, el establecimiento y el punto de expedición— y agrega otros propios de cada tipo de documento que pueden cambiar sin aviso.
Por eso la recomendación es tratar el evento como un disparador y, si hace falta el detalle completo y estable, traerlo con WebhookEvent.fetch.
Constructors
Constructor
ts
new WebhookEvent(fields): WebhookEvent;Parameters
| Parameter | Type |
|---|---|
fields | { id: number; eventType: string; entityType: string; entityId: number; taxPayerId: number; timestamp: Date; data?: EventPayload; raw?: EventPayload; } |
fields.id | number |
fields.eventType | string |
fields.entityType | string |
fields.entityId | number |
fields.taxPayerId | number |
fields.timestamp | Date |
fields.data? | EventPayload |
fields.raw? | EventPayload |
Returns
WebhookEvent
Properties
id
ts
readonly id: number;Id de la entrega. Es lo que se usa para deduplicar.
eventType
ts
readonly eventType: string;entityType
ts
readonly entityType: string;entityId
ts
readonly entityId: number;taxPayerId
ts
readonly taxPayerId: number;timestamp
ts
readonly timestamp: Date;data
ts
readonly data: EventPayload;raw
ts
readonly raw: EventPayload;El cuerpo crudo, por si hace falta algo que el SDK no modela.
Accessors
status
Get Signature
ts
get status(): string;Estado del documento al momento del evento.
Returns
string
cdc
Get Signature
ts
get cdc(): string | undefined;CDC del documento. Siempre undefined en recibos, que no tienen.
Returns
string | undefined
subtype
Get Signature
ts
get subtype(): string;approved, cancelled, pending o error.
Returns
string
documentKey
Get Signature
ts
get documentKey(): [string, number];Identifica al documento sin ambigüedad: [entidad, id].
entityId no es único por sí solo. Se numera por tipo de documento, así que el recibo 20 y la nota de débito 20 conviven. Guardar solo el número y buscar por él cruza documentos distintos.
Returns
[string, number]
isError
Get Signature
ts
get isError(): boolean;Si el documento quedó en error.
El motivo está en errorCode y errorMessage.
Returns
boolean
isApproved
Get Signature
ts
get isApproved(): boolean;Si el documento quedó válido.
Para un recibo, esto es cierto con el documento en generated: no pasa por la DNIT.
Returns
boolean
isFinal
Get Signature
ts
get isFinal(): boolean;Si el documento ya no va a cambiar de estado por su cuenta.
Returns
boolean
errorCode
Get Signature
ts
get errorCode(): string | undefined;Código del error, o undefined si el documento no está en error.
Para ramificar conviene isError.
Returns
string | undefined
errorMessage
Get Signature
ts
get errorMessage(): string | undefined;Descripción del error, o undefined si el documento no está en error.
Returns
string | undefined
documentType
Get Signature
ts
get documentType():
| "electronic_invoice"
| "electronic_credit_note"
| "electronic_debit_note"
| "electronic_remission_note"
| "electronic_auto_invoice"
| "electronic_receipt"
| "electronic_disablement"
| undefined;El tipo de documento al que corresponde la entidad del evento.
Returns
| "electronic_invoice" | "electronic_credit_note" | "electronic_debit_note" | "electronic_remission_note" | "electronic_auto_invoice" | "electronic_receipt" | "electronic_disablement" | undefined
Methods
fetch()
ts
fetch(client): Promise<Document>;Trae el documento completo desde la API.
Sirve cuando hace falta un campo que no está garantizado en data.
Parameters
| Parameter | Type |
|---|---|
client | Client |
Returns
Promise<Document>
fromPayload()
ts
static fromPayload(payload): WebhookEvent;Construye el evento desde el cuerpo ya parseado.
Parameters
| Parameter | Type |
|---|---|
payload | EventPayload |
Returns
WebhookEvent
