# Listar la numeración CAE autorizada

`GET /v1/companies/{companyRut}/cfesActiveNumbers`

**Lista la numeración CAE autorizada disponible para emitir.**

**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}/cfesActiveNumbers": {
      "get": {
        "operationId": "get_v1_companies_companyRut_cfesActiveNumbers",
        "summary": "Listar la numeración CAE autorizada",
        "description": "**Lista la numeración CAE autorizada disponible para emitir.**\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": [
          "2 Configuración"
        ],
        "parameters": [
          {
            "$ref": "#/components/parameters/CompanyRut"
          }
        ],
        "responses": {
          "200": {
            "description": "Éxito",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/RespuestaCaes"
                },
                "examples": {
                  "Exito": {
                    "value": {
                      "payload": {
                        "companyCfesActiveNumbers": [
                          {
                            "_id": "5a3d84d6e1fb0d35e5c0d697",
                            "type": "5a3d84a4e1fb0d35e5c0d694",
                            "company": "5a3d849be1fb0d35e5c0d691",
                            "expireDate": "2030-01-01T00:00:00.000Z",
                            "beginDate": "2017-08-24T00:00:00.000Z",
                            "series": "A",
                            "numAuth": 123123123,
                            "__v": 0,
                            "deleted": false,
                            "active": true,
                            "rejectedNums": [],
                            "nextNum": 5,
                            "range": {
                              "first": 1,
                              "last": 1000
                            },
                            "createdAt": "2017-12-22T22:19:02.598Z",
                            "url": "/CompanyCfesActiveNumbers/5a3d84d6e1fb0d35e5c0d697",
                            "id": "5a3d84d6e1fb0d35e5c0d697"
                          }
                        ]
                      },
                      "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": {
      "Cae": {
        "type": "object",
        "description": "Un CAE: el rango de numeración que DGI autorizó para un tipo de comprobante. Es por tipo, no por empresa.",
        "required": [
          "numAuth",
          "series",
          "range",
          "expireDate",
          "active"
        ],
        "properties": {
          "_id": {
            "type": "string"
          },
          "numAuth": {
            "type": "integer",
            "description": "Número de autorización de DGI."
          },
          "series": {
            "type": "string"
          },
          "range": {
            "type": "object",
            "required": [
              "first",
              "last"
            ],
            "properties": {
              "first": {
                "type": "integer"
              },
              "last": {
                "type": "integer"
              }
            },
            "description": "Primer y último número autorizados."
          },
          "nextNum": {
            "type": "integer",
            "description": "El próximo número a usar. Se consume de a uno y de forma atómica; cuando pasa `range.last` el CAE se desactiva solo."
          },
          "beginDate": {
            "type": "string",
            "format": "date-time"
          },
          "expireDate": {
            "type": "string",
            "format": "date-time",
            "description": "Vencimiento, evaluado en hora local uruguaya."
          },
          "active": {
            "type": "boolean"
          },
          "type": {
            "type": "string",
            "description": "Identificador del tipo de CFE al que pertenece."
          },
          "rejectedNums": {
            "type": "array",
            "items": {
              "type": "integer"
            }
          },
          "__v": {
            "type": "integer"
          },
          "deleted": {
            "type": "boolean"
          },
          "createdAt": {
            "type": "string",
            "format": "date-time"
          },
          "updatedAt": {
            "type": "string",
            "format": "date-time"
          },
          "url": {
            "type": "string",
            "description": "Ruta del recurso."
          },
          "id": {
            "type": "string",
            "description": "Alias de `_id`."
          },
          "cancelAtDGIAt": {
            "type": "string",
            "format": "date-time",
            "nullable": true,
            "description": "Fecha de cancelación ante DGI."
          },
          "CAEEspecial": {
            "type": "string",
            "nullable": true
          },
          "CausalCAEEsp": {
            "type": "string",
            "nullable": true
          },
          "numbersTolerancePercentage": {
            "type": "number",
            "description": "Porcentaje de rango restante que dispara el aviso de poca numeración."
          },
          "company": {
            "type": "string",
            "description": "Id interno de la empresa dueña del CAE."
          }
        }
      },
      "RespuestaCaes": {
        "allOf": [
          {
            "$ref": "#/components/schemas/Respuesta"
          }
        ],
        "description": "Los CAE de la empresa. Hace falta uno activo y sin vencer **por cada tipo de CFE** que se quiera emitir.",
        "properties": {
          "payload": {
            "type": "object",
            "required": [
              "companyCfesActiveNumbers"
            ],
            "properties": {
              "companyCfesActiveNumbers": {
                "type": "array",
                "items": {
                  "$ref": "#/components/schemas/Cae"
                }
              }
            }
          }
        }
      },
      "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": {
      "CompanyRut": {
        "name": "companyRut",
        "in": "path",
        "required": true,
        "schema": {
          "type": "string",
          "example": "219999990008",
          "default": "219999990008"
        },
        "example": "219999990008"
      }
    }
  }
}
```
