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