Modelos de respuesta en fiscalapi

En esta sección se detallan los modelos de respuesta de FiscalAPI. Se describen los modelos base, que constituyen la estructura común heredada por todos los objetos (como producto, factura y persona), así como los modelos específicos que gestionan tanto las respuestas exitosas como los errores.


Tabla de Contenido

  1. Modelos Base
    1.1 AuditableDto
    1.2 BaseDto
    1.3 CatalogDto
  2. Modelos de Respuesta
    2.1 ApiResponse<T>
    2.2 ValidationFailure
    2.3 PagedList<T>

1. Modelos Base

Los modelos base son estructuras estándar utilizadas como cimientos para construir respuestas coherentes en la API. Estos modelos siguen un patrón de herencia que permite reutilizar propiedades comunes:

Jerarquía de modelos base

  • AuditableDto: Modelo fundamental que proporciona campos de auditoría para rastrear la creación y actualización de registros.

  • BaseDto: Hereda AuditableDto agregando un identificador único. Constituye el modelo base para la mayoría de las respuestas en la API.

  • CatalogDto: Hereda BaseDto incorporando el campo description. Se utiliza específicamente para representar catálogos del SAT.

Estos modelos base conforman la arquitectura fundamental para todas las respuestas de fiscalapi.

1.1 AuditableDto

Proporciona campos de auditoría para rastrear la creación y actualización de registros.

Properties

  • Name
    createdAt
    Type
    DateTime?
    Description

    Fecha y hora en que se creó el registro.

  • Name
    updatedAt
    Type
    DateTime?
    Description

    Fecha y hora de la última actualización del registro.

Ejemplo:

{
  "createdAt": "2024-02-20T10:30:00",
  "updatedAt": "2024-02-20T15:45:00"
}

1.2 BaseDto

Hereda AuditableDto y agrega un identificador único, siendo el modelo base para la mayoría de las entidades.

Properties

  • Name
    id
    Type
    string?
    Description

    Identificador único del registro.

  • Name
    Heredados
    Type
    object?

    Incluye todas las propiedades definidas en AuditableDto.

Ejemplo:

{
  "id": "abc123xyz",
  "createdAt": "2024-02-20T10:30:00",
  "updatedAt": "2024-02-20T15:45:00"
}

1.3 CatalogDto

Hereda BaseDto y agrega un campo de descripción. Representa una propiead que es un catálogo del SAT, como el catálogo de unidades de medida, metodos de pago, regimen fiscal, etc.

Properties

  • Name
    description
    Type
    string?
    Description

    Descripción del elemento del catálogo.

  • Name
    Heredados
    Type
    object?

    Incluye todas las propiedades definidas en BaseDto.

Ejemplo:

{
  "id": "cat123",
  "description": "Elemento de catálogo de ejemplo",
  "createdAt": "2024-02-20T10:30:00",
  "updatedAt": "2024-02-20T15:45:00"
}

2. Modelos de Respuesta

Estos modelos definen la estructura estandarizada que utiliza FiscalAPI para comunicar resultados de operaciones, incluyendo tanto respuestas exitosas como errores.

2.1 ApiResponse<T>

Modelo estándar de respuesta en fiscalapi, encapsula la carga útil (paylad response), el estado de la operación y metadatos adicionales. El tipo genérico T representa el tipo de datos que se espera en la carga útil de la respuesta.

Properties

  • Name
    data
    Type
    T??
    Description

    Carga útil de la respuesta. Puede ser cualquier objeto, lista, valor primitivo o null si no hay datos.

    Por ejemplo, en una solicitud de consulta de factura, este campo contendría la factura solicitada, o si se solicita un listado de facturas, contendría la lista de facturas o null si no hay facturas.

  • Name
    succeeded
    Type
    bool?
    Description

    Indica si la solicitud fue exitosa (true) o fallida (false).

  • Name
    message
    Type
    string??
    Description

    Mensaje de contexto adicional, útil para información al usuario o propósitos de logging.

  • Name
    details
    Type
    string??
    Description

    Detalles adicionales, usados comúnmente para describir errores o validaciones fallidas.

  • Name
    httpStatusCode
    Type
    HttpStatusCode?
    Description

    Código de estado HTTP retornado. Se ignora en la serialización JSON para respuestas externas.

  • Name
    traceIdentifier
    Type
    string??
    Description

    Identificador único para rastrear la solicitud en entornos distribuidos o simplemente para soporte técnico.

Ejemplo:

{
  "data": {
    "invoiceNumber": "FAP240304AU3-1",
    "date": "2023-11-11T14:35:18",
    "issuerTin": "FAP240304AU3",
    "total": 197.80,
    "currencyCode": "MXN",
    "status": "Vigente",
    "...": "..."
  },
  "succeeded": true,
  "message": "Operación exitosa",
  "details": "",
  "httpStatusCode": 200,
  "traceIdentifier": "ABC123XYZ"
}

2.2 ValidationFailure

Modelo que describe las fallas de validación detectadas antes de procesar la solicitud. Se utiliza en respuestas con código HTTP 400 (Bad Request) para informar al cliente sobre los errores de validación.

Properties

  • Name
    propertyName
    Type
    string?
    Description

    Nombre de la propiedad que presentó la falla.

  • Name
    errorMessage
    Type
    string?
    Description

    Mensaje técnico que describe la causa de la falla (generalmente en inglés).

  • Name
    attemptedValue
    Type
    object?
    Description

    Valor que se intentó asignar y ocasionó la falla.

  • Name
    severity
    Type
    Severity?
    Description

    Severidad del error; normalmente se establece en Error.

  • Name
    errorCode
    Type
    string?
    Description

    Código interno que identifica la causa de la falla.

Ejemplo:

{
  "data": [
    {
      "propertyName": "Password",
      "errorMessage": "The length of 'Password' must be at least 6 characters. You entered 5 characters.",
      "attemptedValue": "12345",
      "severity": 0,
      "errorCode": "MinimumLengthValidator"
    },
    {
      "propertyName": "Password",
      "errorMessage": "Password must be at least 6 characters long and contain at least one uppercase letter, one lowercase letter, one digit, and one non-alphanumeric character.",
      "attemptedValue": "12345",
      "severity": 0,
      "errorCode": "PredicateValidator"
    }
  ],
  "succeeded": false,
  "message": "Se han producido errores de validación.",
  "details": "One or more validation failures have occurred.",
  "httpStatusCode": 400,
  "traceIdentifier": "1071497CFECD493A975F14A639CF2B6B"
}

2.3 PagedList<T>

Modelo utilizado para respuestas paginadas, encapsulando tanto la lista de elementos como la información de paginación.

Properties

  • Name
    items
    Type
    T[]?
    Description

    Array de ítems solicitados en la página actual.

  • Name
    pageNumber
    Type
    int?
    Description

    Número de la página actual.

  • Name
    totalPages
    Type
    int?
    Description

    Cantidad total de páginas calculada.

  • Name
    totalCount
    Type
    int?
    Description

    Número total de elementos existentes.

  • Name
    hasPreviousPage
    Type
    bool?
    Description

    Indica si existe una página previa.

  • Name
    hasNextPage
    Type
    bool?
    Description

    Indica si existe una página siguiente.

Ejemplo:

{
  "data": {
    "items": [
      {
        "invoiceNumber": "INV001",
        "date": "2023-05-01T10:00:00",
        "issuerTin": "XAXX010101000",
        "total": 120.50
      },
      {
        "invoiceNumber": "INV002",
        "date": "2023-05-02T09:30:00",
        "issuerTin": "XEXX010101000",
        "total": 95.00
      }
    ],
    "pageNumber": 1,
    "totalPages": 3,
    "totalCount": 5,
    "hasPreviousPage": false,
    "hasNextPage": true
  },
  "succeeded": true,
  "message": "Se ha obtenido la lista de facturas",
  "details": "",
  "httpStatusCode": 200,
  "traceIdentifier": "XYZ789ABC"
}

¿Le resultó útil esta página?