Skip to content

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 ​

ParameterType
fields{ id: number; eventType: string; entityType: string; entityId: number; taxPayerId: number; timestamp: Date; data?: EventPayload; raw?: EventPayload; }
fields.idnumber
fields.eventTypestring
fields.entityTypestring
fields.entityIdnumber
fields.taxPayerIdnumber
fields.timestampDate
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 ​

ParameterType
clientClient

Returns ​

Promise<Document>


fromPayload() ​

ts
static fromPayload(payload): WebhookEvent;

Construye el evento desde el cuerpo ya parseado.

Parameters ​

ParameterType
payloadEventPayload

Returns ​

WebhookEvent