# Listar los CFEs emitidos de una sucursal

`GET /v1/companies/{companyRut}/sentCfes/{branchOffice}`

**CFEs emitidos y su estado para una sucursal.**

**Acceso:** restringida. Requiere sesión, y sólo opera sobre el RUT de tu propia empresa: pedir otro RUT responde `403 FORBIDDEN`.

Ver [Filtrado](/filtrado-y-webhooks) para filtrar los resultados.

## OpenAPI

```json
{
  "openapi": "3.0.3",
  "info": {
    "title": "pymo Gateway API",
    "version": "1.0.0",
    "description": "API del gateway de facturación electrónica (CFE) de pymo. Los métodos y las rutas salen del código del servicio, así que la referencia refleja lo que la API hace hoy."
  },
  "servers": [
    {
      "url": "https://gatewaytest.pymo.uy",
      "description": "Homologación: emite contra la ePrueba de DGI. Es donde se integra."
    },
    {
      "url": "https://gateway.pymo.uy",
      "description": "Producción: los comprobantes son fiscales y no se pueden borrar."
    }
  ],
  "security": [
    {
      "sessionCookie": []
    }
  ],
  "paths": {
    "/v1/companies/{companyRut}/sentCfes/{branchOffice}": {
      "get": {
        "operationId": "get_v1_companies_companyRut_sentCfes_branchOffice",
        "summary": "Listar los CFEs emitidos de una sucursal",
        "description": "**CFEs emitidos y su estado para una sucursal.**\n\n**Acceso:** restringida. Requiere sesión, y sólo opera sobre el RUT de tu propia empresa: pedir otro RUT responde `403 FORBIDDEN`.\n\nVer [Filtrado](/filtrado-y-webhooks) para filtrar los resultados.",
        "tags": [
          "4 Estado"
        ],
        "parameters": [
          {
            "$ref": "#/components/parameters/CompanyRut"
          },
          {
            "$ref": "#/components/parameters/BranchOffice"
          },
          {
            "name": "cfeStatus",
            "in": "query",
            "required": true,
            "schema": {
              "type": "string"
            },
            "description": "Estado principal del CFE [\"CREATED\" | \"SENT\" | \"PROCESSED_ACCEPTED\" | \"PROCESSED_REJECTED\" | \"PROCESSED_RELIQUIDATED (sólo CFC)\" | \"FORMAT_REJECTED\" | \"REPORTED_DAILY_REPORT\" | \"BAD_CUSTOM_SERIE_NUMBER (sólo CFC)\"]."
          }
        ],
        "responses": {
          "200": {
            "description": "Éxito",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/RespuestaEstadoCfes"
                },
                "examples": {
                  "Exito": {
                    "value": {
                      "payload": {
                        "branchOfficeSentCfes": [
                          {
                            "sentXmlHash": "LtUDp87kR4Ypa33uugczq/EkFpM=",
                            "actualCfeStatus": "PROCESSED_ACCEPTED",
                            "cfeHistory": [
                              {
                                "_id": "5a43d0fdd5f9dc275cfc5afa",
                                "createdAt": "2017-12-27T16:57:33.143Z",
                                "cfeStatus": "SCHEDULED"
                              },
                              {
                                "_id": "5a43d118d5f9dc275cfc5afe",
                                "createdAt": "2017-12-27T16:58:00.964Z",
                                "cfeStatus": "SENT"
                              },
                              {
                                "_id": "5a43d11ed5f9dc275cfc5b01",
                                "createdAt": "2017-12-27T16:58:06.433Z",
                                "cfeStatus": "PROCESSED_ACCEPTED"
                              }
                            ],
                            "createdAt": "2017-12-27T16:57:33.142Z",
                            "_id": "5a43d0fdd5f9dc275cfc5af9",
                            "cfe": {
                              "eTck": {
                                "CAEData": {
                                  "FecVenc": "2019-08-23",
                                  "HNro": 1000,
                                  "DNro": 1,
                                  "CAE_ID": 123123123
                                },
                                "Detalle": {
                                  "Item": [
                                    {
                                      "MontoItem": "420",
                                      "PrecioUnitario": "35",
                                      "UniMed": "kg",
                                      "Cantidad": "12",
                                      "NomItem": "Papas",
                                      "IndFact": "1",
                                      "NroLinDet": "1"
                                    }
                                  ]
                                },
                                "Encabezado": {
                                  "Totales": {
                                    "MntPagar": "420",
                                    "CantLinDet": "1",
                                    "MntTotal": "420",
                                    "MntIVATasaBasica": "0",
                                    "MntIVATasaMin": "0",
                                    "IVATasaBasica": "22",
                                    "IVATasaMin": "10",
                                    "MntNetoIVATasaBasica": "0",
                                    "MntNetoIvaTasaMin": "0",
                                    "MntNoGrv": "420",
                                    "TpoMoneda": "UYU"
                                  },
                                  "Receptor": {
                                    "DeptoRecep": "Montevideo",
                                    "CiudadRecep": "Montevideo",
                                    "DirRecep": "18 de Julio 2016",
                                    "RznSocRecep": "Juan Perez",
                                    "DocRecep": "13353214",
                                    "CodPaisRecep": "UY",
                                    "TipoDocRecep": "3"
                                  },
                                  "Emisor": {
                                    "Departamento": "Mozambique",
                                    "Ciudad": "Cerro Largo",
                                    "DomFiscal": "Company address",
                                    "CdgDGISucur": "1",
                                    "RznSoc": "CompanySocialPurpose",
                                    "RUCEmisor": 219999990008
                                  },
                                  "IdDoc": {
                                    "FmaPago": "1",
                                    "FchEmis": "2013-05-11",
                                    "Nro": 8,
                                    "Serie": "A",
                                    "TipoCFE": "101"
                                  }
                                },
                                "TmstFirma": "2017-12-27T13:57:59-03:00"
                              }
                            },
                            "serie": "A",
                            "nro": "8",
                            "cfeType": "101",
                            "MntPagar": "420",
                            "branchOffice": "1",
                            "inCfesData": "5a43d0fdd5f9dc275cfc5af6",
                            "company": "5a3d849be1fb0d35e5c0d691",
                            "__v": 2
                          }
                        ]
                      },
                      "message": {
                        "code": "DGI_CFES_RECEIVE_SUCCESS",
                        "value": "Cfes recibidos correctamente."
                      },
                      "status": "SUCCESS"
                    }
                  }
                }
              }
            }
          },
          "401": {
            "description": "Sesión no iniciada o vencida (`UNAUTHORIZED`)",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/RespuestaError"
                },
                "examples": {
                  "No_autorizado": {
                    "value": {
                      "payload": {},
                      "message": {
                        "code": "UNAUTHORIZED",
                        "value": "Debe iniciar sesión."
                      },
                      "status": "FAIL"
                    }
                  }
                }
              }
            }
          },
          "403": {
            "description": "La sesión existe pero no alcanza este recurso (`FORBIDDEN`)",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/RespuestaError"
                },
                "examples": {
                  "Prohibido": {
                    "value": {
                      "payload": {},
                      "message": {
                        "code": "FORBIDDEN",
                        "value": "No tiene permisos para realizar esta acción."
                      },
                      "status": "FAIL"
                    }
                  }
                }
              }
            }
          }
        },
        "x-acceso": "restringida-por-rut"
      }
    }
  },
  "components": {
    "schemas": {
      "CfeEnviado": {
        "type": "object",
        "description": "Un comprobante emitido, con su estado y su historial. Es lo que devuelve la consulta de estado.",
        "required": [
          "_id",
          "actualCfeStatus",
          "cfeHistory"
        ],
        "properties": {
          "_id": {
            "type": "string"
          },
          "actualCfeStatus": {
            "$ref": "#/components/schemas/EstadoCfe"
          },
          "cfeHistory": {
            "type": "array",
            "description": "Cada transición con su fecha, en orden. El motivo de un rechazo de DGI viaja acá, en `data.digestAck`, y no en el nivel de arriba.",
            "items": {
              "type": "object",
              "properties": {
                "_id": {
                  "type": "string",
                  "description": "Id de la transición. No es el id del comprobante."
                },
                "cfeStatus": {
                  "$ref": "#/components/schemas/EstadoCfe"
                },
                "createdAt": {
                  "type": "string",
                  "format": "date-time"
                },
                "data": {
                  "type": "object",
                  "description": "Datos de la transición. En un rechazo trae `digestAck` con el texto de DGI."
                }
              }
            }
          },
          "clientEmissionId": {
            "type": "string"
          },
          "sentXmlHash": {
            "type": "string"
          },
          "createdAt": {
            "type": "string",
            "format": "date-time"
          },
          "cfe": {
            "type": "object",
            "description": "El comprobante en formato DGI, con la clave del tipo (`eTck`, `eFact`, …) en el primer nivel."
          },
          "__v": {
            "type": "integer"
          },
          "deleted": {
            "type": "boolean"
          },
          "updatedAt": {
            "type": "string",
            "format": "date-time"
          },
          "url": {
            "type": "string"
          },
          "id": {
            "type": "string",
            "description": "Alias de `_id`."
          },
          "company": {
            "type": "string"
          },
          "branchOffice": {
            "type": "string",
            "description": "Número de sucursal. Es un string en el modelo, no un entero."
          },
          "cfeType": {
            "type": "string"
          },
          "serie": {
            "type": "string"
          },
          "nro": {
            "oneOf": [
              {
                "type": "integer"
              },
              {
                "type": "string"
              }
            ],
            "description": "Número del comprobante. El modelo lo declara numérico y las capturas más viejas lo traen como string, así que un cliente debería aceptar ambos."
          },
          "cae": {
            "type": "object",
            "description": "El CAE con el que se firmó."
          },
          "qrData": {
            "type": "string"
          },
          "MntPagar": {
            "type": "string"
          },
          "cfeDate": {
            "type": "string",
            "format": "date-time"
          },
          "TmstFirma": {
            "type": "string"
          },
          "bulkCfesManager": {
            "type": "string",
            "nullable": true
          },
          "emailsToNotify": {
            "type": "array",
            "items": {
              "type": "string"
            }
          },
          "phonesToNotify": {
            "type": "array",
            "items": {
              "type": "string"
            }
          },
          "inCfesData": {
            "type": "string",
            "description": "Referencia a los datos crudos que mandaste en la emisión, tal como llegaron. Está en todos los comprobantes emitidos, no sólo en algunos, y no tiene relación con recepción."
          }
        }
      },
      "EstadoCfe": {
        "type": "string",
        "description": "Estado de un comprobante emitido. Los ocho primeros son transitorios: pueden cambiar solos y hay que seguir consultando. Los demás son finales.",
        "enum": [
          "CREATED",
          "CREATED_WITHOUT_CAE_NRO",
          "BULK_CREATED_WITHOUT_CAE_NRO",
          "SCHEDULED",
          "SCHEDULED_CONNECTION_ERR",
          "SCHEDULED_WITHOUT_CAE_NRO",
          "BULK_SCHEDULED_WITHOUT_CAE_NRO",
          "SENT",
          "PROCESSED_ACCEPTED",
          "PROCESSED_REJECTED",
          "PROCESSED_RELIQUIDATED",
          "FORMAT_REJECTED",
          "SOBRE_DUPLICATED",
          "DUPLICATED_AT_DGI",
          "BAD_CUSTOM_SERIE_NUMBER",
          "DELETED_MISSING_CAE",
          "REPORTED_DAILY_REPORT",
          "CFE_UNKNOWN_ERROR",
          "FAKE_CFES_HOMOLOGATION"
        ]
      },
      "RespuestaEstadoCfes": {
        "allOf": [
          {
            "$ref": "#/components/schemas/Respuesta"
          }
        ],
        "description": "Comprobantes emitidos por la sucursal, con su estado. Se filtra con `updatedAt[gte]` para traer sólo lo que cambió.",
        "properties": {
          "payload": {
            "type": "object",
            "required": [
              "branchOfficeSentCfes"
            ],
            "properties": {
              "branchOfficeSentCfes": {
                "type": "array",
                "items": {
                  "$ref": "#/components/schemas/CfeEnviado"
                }
              }
            }
          }
        }
      },
      "Respuesta": {
        "type": "object",
        "required": [
          "payload",
          "status"
        ],
        "description": "Envoltorio común a todas las respuestas. **`status` no se deduce del código HTTP**: hay al menos nueve lugares en el gateway que responden `HTTP 200` con `status: \"FAIL\"` (por ejemplo `CFE_NOT_FOUND` y `DGI_COMPANY_NOT_READY_YET`). Un cliente tiene que leer `status`, no el código.",
        "properties": {
          "payload": {
            "description": "Los datos de la respuesta. `{}` cuando el endpoint no devuelve nada.",
            "oneOf": [
              {
                "type": "object"
              },
              {
                "type": "array",
                "items": {}
              }
            ]
          },
          "message": {
            "allOf": [
              {
                "$ref": "#/components/schemas/Mensaje"
              }
            ],
            "description": "Presente cuando la operación tiene algo que decir. Las lecturas simples responden sólo `payload` y `status`."
          },
          "status": {
            "$ref": "#/components/schemas/Estado"
          }
        }
      },
      "RespuestaError": {
        "allOf": [
          {
            "$ref": "#/components/schemas/Respuesta"
          }
        ],
        "description": "El mismo envoltorio, con `status: \"FAIL\"` y `payload` normalmente vacío."
      },
      "Mensaje": {
        "type": "object",
        "required": [
          "code",
          "value"
        ],
        "description": "Código estable y su texto en español. **El código es el contrato, el texto no**: `value` sale de una tabla de traducciones y puede reescribirse sin aviso, así que un cliente ramifica por `code`.",
        "properties": {
          "code": {
            "type": "string",
            "example": "DGI_CFES_RECEIVE_SUCCESS"
          },
          "value": {
            "type": "string",
            "example": "Cfes recibidos correctamente."
          }
        }
      },
      "Estado": {
        "type": "string",
        "enum": [
          "SUCCESS",
          "FAIL"
        ],
        "description": "De las 82 claves de mensaje del gateway, 29 son `SUCCESS` y 53 `FAIL`. Es lo que hay que mirar para saber si la llamada funcionó."
      }
    },
    "securitySchemes": {
      "sessionCookie": {
        "type": "apiKey",
        "in": "cookie",
        "name": "connect.sid",
        "description": "Sesión por cookie de `POST /v1/login`, válida 1 hora. Ver [Autenticación](/autenticacion)."
      }
    },
    "parameters": {
      "BranchOffice": {
        "name": "branchOffice",
        "in": "path",
        "required": true,
        "schema": {
          "type": "string",
          "example": "1",
          "default": "1"
        },
        "example": "1"
      },
      "CompanyRut": {
        "name": "companyRut",
        "in": "path",
        "required": true,
        "schema": {
          "type": "string",
          "example": "219999990008",
          "default": "219999990008"
        },
        "example": "219999990008"
      }
    }
  }
}
```
