openapi: 3.0.1
info:
  title: Servicios web de Facturapy.me
  description: ...
  version: 0.0.2
  contact:
    name: BlackXel SpA
    url: https://facturapy.me
    email: melissa.alvarez@blackxel.com
paths:
  /rut:
    get:
      summary: Permite obtener el Rut del contribuyente
      responses:
        "200":
          description: OK
          headers:
            x-ratelimit-limit:
                $ref: '#/components/headers/x-ratelimit-limit'
            x-ratelimit-remaining:
                $ref: '#/components/headers/x-ratelimit-remaining'
          content:
            application/json:
              schema:
                type: object
                properties:
                  ok:
                    type: boolean
                  rut:
                    type: string
                    description: El rut de la empresa.
  /dte:
    post:
      summary: Permite emitir un Documento Tributario Electrónico
      requestBody:
        content:
          application/json:
            schema:
              type: object
              required:
                - id
                - tipo_dte
                - receptor
              properties:
                id:
                  type: integer
                  description: id interno de seguimiento
                condicion_pago:
                  type: integer
                  description: |-
                    Indica en qué forma se pagará.


                      1: Contado


                      2: Crédito
                  example: 2
                tipo_dte:
                  type: integer
                  description: |-
                    Tipo de DTE. Indica si el documento es:

                    33 Factura

                    34 Factura exenta

                    39 Boleta

                    41 Boleta exenta

                    43 Liquidación factura

                    46 Factura de compra

                    52 Guía de despacho

                    56 Nota de débito

                    61 Nota de crédito

                    110 Factura de exportación

                    111 Nota de débito de exportación

                    112 Nota de crédito de exportación
                  example: 33
                fecha_emision:
                  type: string
                  format: date
                  description: Fecha de emisión contable del documento. Formato YYYY-MM-DD
                  example: "2014-09-01"
                fecha_vencimiento:
                  type: string
                  format: date
                  description: Fecha de vencimiento del documento. Formato YYYY-MM-DD
                  example: "2014-09-01"
                tipo_traslado:
                  type: integer
                  description: |-
                    Sólo para Guías de despacho. Indica si el traslado de mercadería es por Venta (valor 1) o por otros motivos que no corresponden a venta. (valores mayores a 1).


                      1: Operación constituye venta

                      2: Ventas por efectuar

                      3: Consignaciones

                      4: Entrega gratuita

                      5: Traslados internos

                      6: Otros traslados no venta

                      7: Guía de devolución

                      8: Traslado para exportación. (No venta)

                      9: Venta para exportación
                  example: 1
                observacion:
                  type: string
                  description: Observación adicional al documento
                  maxLength: 200
                receptor:
                  type: object
                  properties:
                    rut:
                      type: string
                      description: Corresponde al RUT del cliente. Con guión y dígito verificador
                      example: 96930480-5
                    razon_social:
                      type: string
                      description: Nombre o razón social del cliente
                      example: LILIANA DEL PILAR FLORES CASTRO
                    giro:
                      type: string
                      description: Glosa impresa indicando giro del cliente
                      example: ALMACENES PEQUENOS (VENTA DE ALIMENTOS)
                    direccion:
                      type: string
                      description: Dirección Legal del cliente (registrada en el SII)
                      example: 18 DE OCTUBRE 901
                    comuna:
                      type: string
                      description: Análogo a Dirección Receptor.
                      example: paillaco
                detalle:
                  type: array
                  description: |-
                    Corresponde a la información de un ítem. Debe ir al menos una línea de detalle. El máximo de ítems es de 60 y en un documento se puede
                    incluir sólo la cantidad de ítems que se pueda imprimir en una hoja, respetando la normativa de impresión del SII. (Aproximadamente 23 ítems en Formato PDF)
                  items:
                    type: object
                    properties:
                      nombre:
                        type: string
                        description: Nombre del producto o servicio
                        example: Empanadas
                      precio_unitario:
                        type: number
                        description: Precio Unitario del Ítem
                        example: 5800
                      cantidad:
                        type: number
                        description: Cantidad del ítem
                        example: 10
                    required:
                      - nombre
                      - precio_unitario
                      - cantidad
                  minItems: 1
                  maxItems: 60
                referencias:
                  type: array
                  description: |-
                     En esta zona se deben detallar los documentos de referencia, por ejemplo se debe identificar la Guía de Despacho que se está facturando o la Factura que se está modificando con una Nota de crédito o de débito. Maximo 40 referencias
                  items:
                    type: object
                    properties:
                      tipo_dte:
                        type: string
                        description: |-
                          Indica si el documento de referencia es:

                            30: factura

                            32: factura de venta bienes y servicios no afectos o exentos de IVA

                            35: Boleta

                            38: Boleta exenta

                            45: factura de compra

                            55: nota de débito

                            60: nota de crédito

                            103: Liquidación

                            40: Liquidación Factura

                            43: Liquidación-Factura Electrónica

                            33: Factura Electrónica

                            34: Factura No Afecta o Exenta Electrónica

                            39: Boleta Electrónica

                            41: Boleta Exenta Electrónica

                            46: Factura de Compra Electrónica.

                            56: Nota de Débito Electrónica

                            61: Nota de Crédito Electrónica

                            50 Guía de Despacho.

                            52:Guía de Despacho Electrónica

                            110: Factura de Exportación Electrónica

                            111: Nota de Débito de Exportación Electrónica

                            112: Nota de Crédito de Exportación Electrónica

                            801 Orden de Compra

                            802 Nota de pedido

                            803 Contrato

                            804 Resolución

                            805 Proceso ChileCompra

                            806 Ficha ChileCompra

                            807 DUS

                            808 B/L (Conocimiento de embarque)

                            809 AWB (Air Will Bill)

                            810 MIC/DTA

                            811 Carta de Porte

                            812 Resolución del SNA donde califica Servicios de Exportación

                            813 Pasaporte

                            814 Certificado de Depósito Bolsa Prod. Chile.

                            815 Vale de Prenda Bolsa Prod. Chile

                            820 Código de Inscripción en el Registro de Acuerdos con Plazo de Pago Excepcional

                            De acuerdo con la Descripción Si se requiere referenciar un documento tributario se debe utilizar un valor Numérico que debe estar en el rango indicado en la descripción.

                            Si es alfabético no hay validación y el contribuyente puede usarlo para referenciar documentos no tributarios y distintos de los especificados.
                        maxLength: 3
                        example: 33
                      global:
                        type: boolean
                        example: false
                      folio:
                        type: string
                        description: |-
                          Identificación del documento de referencia.

                          Folio de documento que referencia.
                          Debe ser cero sólo si el documento tiene encendido el
                          Indicador de referencia global.

                          Puede ser alfanumérico si se trata de un documento no tributario (rango del 800).
                        example: "104"
                      fecha:
                        type: string
                        format: date
                        description: Fecha de emisión del documento de referencia. Formato YYYY-MM-DD
                        example: "2014-09-01"
                      glosa:
                        type: string
                        description: Explicitar razón. Ejemplo una Nota de Crédito que hacer referencia a una factura, indica "descuento por pronto pago" o "error en precio" etc
                        maxLength: 90
                      codigo:
                        type: number
                        description: |-
                          1: Anula Documento de Referencia

                          2: Corrige Texto Documento de Referencia

                          3: Corrige montos

                          Código utilizado para los siguientes casos:

                          a) Nota de Crédito que elimina documento de referencia en forma completa (Factura de venta, Nota de débito, o Factura de compra.

                          b) Nota de crédito que corrige un texto del documento de referencia

                          c) Nota de Débito que elimina una Nota de Crédito en la referencia en
                          forma completa

                          d) Notas de crédito o débito que corrigen montos de otro documento

                          CASOS a) b) y c) DEBEN TENER UN ÚNICO DOCUMENTO DE REFERENCIA.
                    required:
                      - tipo_dte
                      - folio
                      - fecha
                  minItems: 0
                  maxItems: 40
        description: Datos del documento que se desea emitir
      responses:
        "200":
          description: OK
          headers:
            x-ratelimit-limit:
                $ref: '#/components/headers/x-ratelimit-limit'
            x-ratelimit-remaining:
                $ref: '#/components/headers/x-ratelimit-remaining'
          content:
            application/json:
              schema:
                type: object
                properties:
                  ok:
                    type: boolean
  "/dte/{id}":
    get:
      summary: Permite obtener el estado de un Documento
      parameters:
        - name: id
          in: path
          required: true
          description: ID numérico del documento
          schema:
            type: integer
      responses:
        "200":
          description: OK
          headers:
            x-ratelimit-limit:
                $ref: '#/components/headers/x-ratelimit-limit'
            x-ratelimit-remaining:
                $ref: '#/components/headers/x-ratelimit-remaining'
          content:
            application/json:
              schema:
                type: object
                properties:
                  ok:
                    type: boolean
                  folio:
                    type: integer
                    description: Folio del documento autorizado por el SII
                  tipo_dte:
                    type: integer
                    description: Tipo de DTE
                  pdf:
                    type: string
                    description: Ruta de acceso a la representación gráfica del documento en formato PDF.
                  xml:
                    type: string
                    description: Ruta de acceso a la representación del documento en formato XML.
  "/dte/pdf/{tipo_dte}/{folio}":
    get:
      summary: Permite obtener la representación gráfica del documento en formato PDF
      parameters:
       - name: tipo_dte
         required: true
         description: Tipo de documento tributario electrónico
         in : path
         schema:
           type: integer
       - name: folio
         in : path
         required: true
         description:  Folio del documento
         schema:
           type: integer
      responses:
        "200":
          description: Archivo en formato PDF
          headers:
            x-ratelimit-limit:
                $ref: '#/components/headers/x-ratelimit-limit'
            x-ratelimit-remaining:
                $ref: '#/components/headers/x-ratelimit-remaining'
          content:
            application/pdf:
              schema:
                type: string
                format: binary
  "/dte/xml/{tipo_dte}/{folio}":
    get:
      summary: Permite obtener la representación del documento en formato XML
      parameters:
       - name: tipo_dte
         required: true
         in : path
         schema:
           type: integer
       - name: folio
         in : path
         required: true
         schema:
           type: integer
      responses:
        "200":
          description: Archivo en formato XML
          headers:
            x-ratelimit-limit:
                $ref: '#/components/headers/x-ratelimit-limit'
            x-ratelimit-remaining:
                $ref: '#/components/headers/x-ratelimit-remaining'
          content:
            application/xml:
              schema:
                type: string
                format: binary
  "/dte/xml":
    post:
      summary: Permite generar un DTE a partir de un XML
      requestBody:
        content:
          application/json:
            schema:
              type: object
              properties:
                xml:
                  type: string
                  description: Archivo en formato XML
      responses:
        "202":
          description: OK
          headers:
            x-ratelimit-limit:
                $ref: '#/components/headers/x-ratelimit-limit'
            x-ratelimit-remaining:
                $ref: '#/components/headers/x-ratelimit-remaining'
          content:
            application/json:
              schema:
                type: object
                properties:
                  ok:
                    type: boolean
        "419":
          description: Error Documento ya enviado
          headers:
            x-ratelimit-limit:
                $ref: '#/components/headers/x-ratelimit-limit'
            x-ratelimit-remaining:
                $ref: '#/components/headers/x-ratelimit-remaining'
          content:
            application/json:
              schema:
                type: object
                properties:
                  ok:
                    type: boolean
                    default: false
                  error:
                    type: string
        "409":
          description: Error validando Documento
          headers:
            x-ratelimit-limit:
                $ref: '#/components/headers/x-ratelimit-limit'
            x-ratelimit-remaining:
                $ref: '#/components/headers/x-ratelimit-remaining'
          content:
            application/json:
              schema:
                type: object
                properties:
                  ok:
                    type: boolean
                    default: false
                  error:
                    type: string
  /certificado:
    get:
      summary: Permite obtener datos del certificado vigente del contribuyente
      responses:
        "200":
          description: OK
          headers:
            x-ratelimit-limit:
                $ref: '#/components/headers/x-ratelimit-limit'
            x-ratelimit-remaining:
                $ref: '#/components/headers/x-ratelimit-remaining'
          content:
            application/json:
              schema:
                type: object
                properties:
                  ok:
                    type: boolean
                  valido_desde:
                    type: string
                    format: date-time
                    description: Fecha de inicio de validez del certificado. Formato YYYY-MM-DD hh:mm:ss
                    example: "2014-09-01 13:13:00"
                  valido_hasta:
                    type: string
                    format: date-time
                    description: Fecha de vencimiento del certificado. Formato YYYY-MM-DD hh:mm:ss
                    example: "2014-09-01 13:13:00"
                  nombre:
                    type: string
                    description: El nombree del contribuyente dueño del certificado digital
        "404":
          description: No Hay Certificado Vigente!
          headers:
            x-ratelimit-limit:
                $ref: '#/components/headers/x-ratelimit-limit'
            x-ratelimit-remaining:
                $ref: '#/components/headers/x-ratelimit-remaining'
          content:
            application/json:
              schema:
                type: object
                properties:
                  ok:
                    type: boolean
                    default: false
                  error:
                    type: string
    post:
      summary: Permite subir el certificado digital del contribuyente en formato PFX
      requestBody:
        content:
          application/json:
            schema:
              type: object
              required:
                - certificado
                - clave
              properties:
                certificado:
                  type: string
                  description: Certificado digital en formato PFX.
                clave:
                  type: string
                  description: password del certificado digital
      responses:
        "200":
          description: OK
          headers:
            x-ratelimit-limit:
                $ref: '#/components/headers/x-ratelimit-limit'
            x-ratelimit-remaining:
                $ref: '#/components/headers/x-ratelimit-remaining'
          content:
            application/json:
              schema:
                type: object
                properties:
                  ok:
                    type: boolean
        "409":
          description: Error en certificado o en el password del certificado
          headers:
            x-ratelimit-limit:
                $ref: '#/components/headers/x-ratelimit-limit'
            x-ratelimit-remaining:
                $ref: '#/components/headers/x-ratelimit-remaining'
          content:
            application/json:
              schema:
                type: object
                properties:
                  ok:
                    type: boolean
                    default: false
                  error:
                    type: string

servers:
  - url: https://demo.facturapy.me/api/v1
components:
  securitySchemes:
    ApiKey:
      type: apiKey
      name: Authorization
      in: header
      description: La API key está disponible en el perfil del usuario
  headers:
    x-ratelimit-limit:
      description: Cantidad de peticiones permitidas por minuto (60 por defecto)
      schema:
        type: integer
      example: 60
    x-ratelimit-remaining:
      description: Número de peticiones que quedan en la ventana de tiempo
      schema:
        type: integer
      example: 59
security:
  - ApiKey: []