openapi: 3.0.0
info:
  description: "<p>La API de FICO® Score determina la probabilidad de incumplimiento de un acreditado en los próximos doce meses. A mayor puntaje de score, menor es el riesgo.<br/><br><img src='https://developer.circulodecredito.com.mx/sites/default/files/2024-01/Logo-Swaggers.png' height='70' width='270'/></p><br/>"
  version: 1.0.0
  title: FICO® Score
  termsOfService: https://developer.circulodecredito.com.mx/terms-use
  contact:
    email: api@circulodecredito.com.mx
  license:
    name: 'Derechos reservados Circulo de Crédito 2020'
    url: 'http://www.circulodecredito.com.mx'
servers:
  - url: 'https://services.circulodecredito.com.mx/v2/ficoscore'
paths:
  '/' :
    post:
      summary: ''
      description: ''
      tags: 
        - 'Score Datos Generales'
      operationId: '/'
      parameters:
        - name: x-signature
          in: header
          description: Firma generada con la llave privada
          required: true
          style: simple
          schema:
            type: string
        - name: x-api-key
          in: header
          description: ConsumerKey obtenido desde el portal de desarrolladores
          required: true
          style: simple
          schema:
            type: string
        - name: username
          in: header
          description: Usuario de Círculo de Crédito
          required: true
          style: simple
          schema:
            type: string
        - name: password
          in: header
          description: Contraseña de Círculo de Crédito
          required: true
          style: simple
          schema:
            type: string
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/RequestScoreDG'
        required: true
      responses:
        200:
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ResponseScore'
        204:
          description: NO CONTENT
          content: {}
        400:
          description: BAD REQUEST
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Errores'
              example:
                errores:
                - codigo: "400"
                  mensaje: El campo [nombre_campo] es requerido
                - codigo: "400"
                  mensaje: El código postal no corresponde al estado.
                - codigo: "400.4"
                  mensaje: Petición incorrecta el x-signature es requerido.
        401:
          description: Unauthorized
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Errores'
              example:
                errores:
                - codigo: "401.1"
                  mensaje: Acceso no autorizado, x-api-key no válida.
                - codigo: "401.2"
                  mensaje: Acceso no autorizado.
                - codigo: "401.3"
                  mensaje: Acceso no autorizado, no tiene el producto asociado.
                - codigo: "401.4"
                  mensaje: Acceso no autorizado, no tiene acceso al recurso.
        403:
          description: FORBIDDEN
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Errores'
              example:
                errores:
                  - codigo: "403"
                    mensaje: Acceso denegado
                  - codigo: "403.1"
                    mensaje: No se pudo autenticar, x-signature no es válida.
                  - codigo: "403.2"
                    mensaje: No se pudo autenticar.
        404:
          description: NOT FOUND
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Errores'
              example:
                errores:
                - codigo: "404.1"
                  mensaje: No se encontró a la persona.
        405:
          description: METHOD NOT ALLOWED
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Errores'
              example:
                  errores:
                  - codigo: "405.1"
                    mensaje: Método no permitido.
        415:
          description: UNSUPPORTED MEDIA TYPE.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Errores'
              example:
                errores:
                - codigo: "415.1"
                  mensaje: Medios no admitidos
        429:
          description: TOO MANY REQUESTS
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Errores'
              example:
                errores:
                - codigo: "429.1"
                  mensaje: Se han enviado demasiadas solicitudes. Se debe esperar antes de realizar una nueva solicitud.
        500:
          description: INTERNAL SERVER ERROR
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Errores'
              example:
                errores:
                - codigo: "500"
                  mensaje: Ocurrio un error al procesar tu solicitud.
                - codigo: "500.1"
                  mensaje: Ocurrio un problema, inténtelo nuevamente más tarde.
        503:
          description: SERVICE UNAVAILABLE
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Errores'
              example:
                errores:
                  - codigo: "503.1"
                    mensaje: Servicio no disponible.
      deprecated: false
      x-codegen-request-body-name: ScoreDG
  '/folio':
    post:
      summary: ''
      description: ''
      tags: 
        - 'ScoreFolio'
      operationId: '/folio'
      parameters:
        - name: x-signature
          in: header
          description: Firma generada con la llave privada
          required: true
          style: simple
          schema:
            type: string
        - name: x-api-key
          in: header
          description: ConsumerKey obtenido desde el portal de desarrolladores
          required: true
          style: simple
          schema:
            type: string
        - name: username
          in: header
          description: Usuario de Círculo de Crédito
          required: true
          style: simple
          schema:
            type: string
        - name: password
          in: header
          description: Contraseña de Círculo de Crédito
          required: true
          style: simple
          schema:
            type: string
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/RequestScoreFolio'
        required: true
      responses:
        200:
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ResponseScore'
        204:
          description: NO CONTENT
          content: {}
        400:
          description: BAD REQUEST
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Errores'
              example:
                errores:
                - codigo: "400"
                  mensaje: El campo [nombre_campo] es requerido
                - codigo: "400"
                  mensaje: El código postal no corresponde al estado.
                - codigo: "400.4"
                  mensaje: Petición incorrecta el x-signature es requerido.
        401:
          description: Unauthorized
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Errores'
              example:
                errores:
                - codigo: "401.1"
                  mensaje: Acceso no autorizado, x-api-key no válida.
                - codigo: "401.2"
                  mensaje: Acceso no autorizado.
                - codigo: "401.3"
                  mensaje: Acceso no autorizado, no tiene el producto asociado.
                - codigo: "401.4"
                  mensaje: Acceso no autorizado, no tiene acceso al recurso.
        403:
          description: FORBIDDEN
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Errores'
              example:
                errores:
                  - codigo: "403"
                    mensaje: Acceso denegado
                  - codigo: "403.1"
                    mensaje: No se pudo autenticar, x-signature no es válida.
                  - codigo: "403.2"
                    mensaje: No se pudo autenticar.
        404:
          description: NOT FOUND
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Errores'
              example:
                errores:
                - codigo: "404.1"
                  mensaje: No se encontró el Folio.
        405:
          description: METHOD NOT ALLOWED
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Errores'
              example:
                  errores:
                  - codigo: "405.1"
                    mensaje: Método no permitido.
        415:
          description: UNSUPPORTED MEDIA TYPE.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Errores'
              example:
                errores:
                - codigo: "415.1"
                  mensaje: Medios no admitidos
        429:
          description: TOO MANY REQUESTS
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Errores'
              example:
                errores:
                - codigo: "429.1"
                  mensaje: Se han enviado demasiadas solicitudes. Se debe esperar antes de realizar una nueva solicitud.
        500:
          description: INTERNAL SERVER ERROR
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Errores'
              example:
                errores:
                - codigo: "500"
                  mensaje: Ocurrio un error al procesar tu solicitud.
                - codigo: "500.1"
                  mensaje: Ocurrio un problema, inténtelo nuevamente más tarde.
        503:
          description: SERVICE UNAVAILABLE
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Errores'
              example:
                errores:
                  - codigo: "503.1"
                    mensaje: Servicio no disponible.
      deprecated: false
      x-codegen-request-body-name: ScoreFolio
components:
  schemas:
    CatalogoEstados:
      type: string
      description: "Estado en que se ubica el domicilio <table><thead><tr><th>Clave</th><th>Estado</th></tr></thead><tbody><tr><td>AGS</td><td>AGUASCALIENTES</td></tr><tr><td>BCN</td><td>BAJA CALIFORNIA NORTE</td></tr><tr><td>BCS</td><td>BAJA CALIFORNIA SUR</td></tr><tr><td>CAM</td><td>CAMPECHE</td></tr><tr><td>CHS</td><td>CHIAPAS</td></tr><tr><td>CHI</td><td>CHIHUAHUA</td></tr><tr><td>COA</td><td>COHAHUILA</td></tr><tr><td>COL</td><td>COLIMA</td></tr><tr><td>DF</td><td>DISTRITO FEDERAL</td></tr><tr><td>DGO</td><td>DURANGO</td></tr><tr><td>EM</td><td>ESTADO DE MEXICO</td></tr><tr><td>GTO</td><td>GUANAJUATO</td></tr><tr><td>GRO</td><td>GUERRERO</td></tr><tr><td>HGO</td><td>HIDALGO</td></tr><tr><td>JAL</td><td>JALISCO</td></tr><tr><td>MICH</td><td>MICHOCÁN</td></tr><tr><td>MOR</td><td>MORELOS</td></tr><tr><td>NAY</td><td>NAYARIT</td></tr><tr><td>NL</td><td>NUEVO LEÓN</td></tr><tr><td>OAX</td><td>OAXACA</td></tr><tr><td>PUE</td><td>PUEBLA</td></tr><tr><td>QRO</td><td>QUERÉTARO</td></tr><tr><td>QR</td><td>QUINTANA ROO</td></tr><tr><td>SLP</td><td>SAN LUIS POTOSÍ</td></tr><tr><td>SIN</td><td>SINALOA</td></tr><tr><td>SON</td><td>SONORA</td></tr><tr><td>TAB</td><td>TABASCO</td></tr><tr><td>TAM</td><td>TAMAULIPAS</td></tr><tr><td>TLAX</td><td>TLAXCALA</td></tr><tr><td>VER</td><td>VERACRUZ</td></tr><tr><td>YUC</td><td>YUCATÁN</td></tr><tr><td>ZAC</td><td>ZACATECAS</td></tr></tbody></table>"
      example: "DF"
      enum:
        - "AGS"
        - "BCN"
        - "BCS"
        - "CAMP"
        - "COAH"
        - "COL"
        - "CHIS"
        - "CHIH"
        - "DF"
        - "DGO"
        - "GTO"
        - "GRO"
        - "HGO"
        - "JAL"
        - "MEX"
        - "MICH"
        - "MOR"
        - "NAY"
        - "NL"
        - "OAX"
        - "PUE"
        - "QRO"
        - "QROO"
        - "SLP"
        - "SIN"
        - "SON"
        - "TAB"
        - "TAMP"
        - "TLAX"
        - "VER"
        - "YUC"
        - "ZAC"
        - "CDMX"
    CatalogoTipoAsentamiento:
      type: 'string'
      description: '<table><thead><tr><th>Clave</th><th>Tipo de Asentamiento</th></tr></thead><tbody><tr><td>0</td><td>PENDIENTE POR ACTUALIZAR</td></tr><tr><td>1</td><td>AEROPUERTO</td></tr><tr><td>2</td><td>BARRIO</td></tr><tr><td>3</td><td>BASE NAVAL</td></tr><tr><td>4</td><td>CAMPAMENTO</td></tr><tr><td>5</td><td>CENTRO</td></tr><tr><td>6</td><td>CENTRO URBANO</td></tr><tr><td>7</td><td>COLONIA</td></tr><tr><td>8</td><td>CONDOMINIO</td></tr><tr><td>9</td><td>CONGREGACION</td></tr><tr><td>10</td><td>CONJUNTO HABITACIONAL</td></tr><tr><td>11</td><td>CONJUNTO HABITACIONAL RESIDENCIAL</td></tr><tr><td>12</td><td>CONJUNTO HABITACIONAL URBANO</td></tr><tr><td>13</td><td>CONJUNTO POPULAR</td></tr><tr><td>14</td><td>CONJUNTO RESIDENCIAL</td></tr><tr><td>15</td><td>CONJUNTO URBANO</td></tr><tr><td>16</td><td>CONJUNTO URBANO POPULAR</td></tr><tr><td>17</td><td>EJIDO</td></tr><tr><td>18</td><td>ESCUELA</td></tr><tr><td>19</td><td>ESTACION DE RADIO</td></tr><tr><td>20</td><td>EX-HACIENDA</td></tr><tr><td>21</td><td>EX-RANCHO</td></tr><tr><td>22</td><td>FABRICA</td></tr><tr><td>23</td><td>FINCA</td></tr><tr><td>24</td><td>FRACCIONAMIENTO</td></tr><tr><td>25</td><td>FRACCIONAMIENTO INDUSTRIAL</td></tr><tr><td>26</td><td>FRACCIONAMIENTO RESIDENCIAL</td></tr><tr><td>27</td><td>GRANJA</td></tr><tr><td>28</td><td>HACIENDA</td></tr><tr><td>29</td><td>INGENIO</td></tr><tr><td>30</td><td>JUNTA AUXILIA</td></tr><tr><td>31</td><td>MODULO HABIT</td></tr><tr><td>32</td><td>PARQUE</td></tr><tr><td>33</td><td>PARQUE INDUS</td></tr><tr><td>34</td><td>CUADRILLA</td></tr><tr><td>35</td><td>POBLADO COM</td></tr><tr><td>36</td><td>PUEBLO</td></tr><tr><td>37</td><td>RANCHO O RAN</td></tr><tr><td>38</td><td>RESIDENCIAL</td></tr><tr><td>39</td><td>VILLA</td></tr><tr><td>40</td><td>UNIDAD HABIT</td></tr><tr><td>41</td><td>ZONA FEDERAL</td></tr><tr><td>42</td><td>ZONA HABITAC</td></tr><tr><td>43</td><td>ZONA INDUSTR</td></tr><tr><td>44</td><td>ZONA RESIDEN</td></tr><tr><td>45</td><td>ZONA URBANA</td></tr><tr><td>46</td><td>ZONA URBANA</td></tr><tr><td>47</td><td>CAMPO MILITA</td></tr><tr><td>48</td><td>VIVIENDA POPU</td></tr><tr><td>49</td><td>CLUB DE GOLF</td></tr><tr><td>50</td><td>COOPERATIVA</td></tr><tr><td>51</td><td>CIUDAD</td></tr><tr><td>52</td><td>OFICINA DE CO</td></tr><tr><td>53</td><td>GRAN USUARIO</td></tr><tr><td>54</td><td>ZONA COMERC</td></tr><tr><td>55</td><td>ZONA RURAL</td></tr></tbody></table>'
      example: '28'
      enum:
        - '0'
        - '1'
        - '2'
        - '3'
        - '4'
        - '5'
        - '6'
        - '7'
        - '8'
        - '9'
        - '10'
        - '11'
        - '12'
        - '13'
        - '14'
        - '15'
        - '16'
        - '17'
        - '18'
        - '19'
        - '20'
        - '21'
        - '22'
        - '23'
        - '24'
        - '25'
        - '26'
        - '27'
        - '28'
        - '29'
        - '30'
        - '31'
        - '32'
        - '33'
        - '34'
        - '35'
        - '36'
        - '37'
        - '38'
        - '39'
        - '40'
        - '41'
        - '42'
        - '43'
        - '44'
        - '45'
        - '46'
        - '47'
        - '48'
        - '49'
        - '50'
        - '51'
        - '52'
        - '53'
        - '54'
        - '55'
    CatalogoTipoDomicilio:  
      type: 'string'
      description: '<table><thead><tr><th>Clave</th><th>Descripción</th></tr></thead><tbody><tr><td>N</td><td>Negocio</td></tr><tr><td>O</td><td>Domicilio del otorgante</td></tr><tr><td>C</td><td>Casa</td></tr><tr><td>P</td><td>Apartado Postal</td></tr><tr><td>E</td><td>Empleo</td></tr></tbody></table>'
      minLength: 1
      maxLength: 1
      example: 'C'
      enum:
        - 'N'
        - 'O'
        - 'C'
        - 'P'
        - 'E'
    RequestScoreDG: 
      type: object
      description: 'Cuerpo de la petición para obtener respuesta del servicio'
      required:
        - folio
        - persona
      properties:
        folio:
          oneOf:
            - type: string
            - type: integer
          maxLength: 25
          example: 1736967881
        persona:
          type: object
          required:
            - nombres
            - apellidoPaterno
            - apellidoMaterno
            - fechaNacimiento
            - domicilio
          properties:
            nombres:
              type: string
              pattern: "[A-Za-z0-9 àèìòùÀÈÌÒÙáéíóúýÁÉÍÓÚÝâêîôûÂÊÎÔÛãñõÃÑÕäëïöüÿÄËÏÖÜŸçÇßØøÅåÆæœ]+"
              maxLength: 30
              example: "Juan"
            segundoNombre:
              type: string
              nullable: true
              pattern: "[A-Za-z0-9 àèìòùÀÈÌÒÙáéíóúýÁÉÍÓÚÝâêîôûÂÊÎÔÛãñõÃÑÕäëïöüÿÄËÏÖÜŸçÇßØøÅåÆæœ]+"
              maxLength: 30
              example: null
            apellidoPaterno:
              type: string
              maxLength: 30
              pattern: "[A-Za-z0-9 àèìòùÀÈÌÒÙáéíóúýÁÉÍÓÚÝâêîôûÂÊÎÔÛãñõÃÑÕäëïöüÿÄËÏÖÜŸçÇßØøÅåÆæœ]+"
              example: "Prueba"
            apellidoMaterno:
              type: string
              maxLength: 30
              pattern: "[A-Za-z0-9 àèìòùÀÈÌÒÙáéíóúýÁÉÍÓÚÝâêîôûÂÊÎÔÛãñõÃÑÕäëïöüÿÄËÏÖÜŸçÇßØøÅåÆæœ]+"
              example: "Cuatro"
            apellidoAdicional:
              type: string
              nullable: true
              maxLength: 30
              pattern: "[A-Za-z0-9 àèìòùÀÈÌÒÙáéíóúýÁÉÍÓÚÝâêîôûÂÊÎÔÛãñõÃÑÕäëïöüÿÄËÏÖÜŸçÇßØøÅåÆæœ]+"
              example: null
            fechaNacimiento:
              type: string
              example: '1980-01-04'
            RFC:
              type: string
              example: "PUSJ800104H2O"
            CURP:
              type: string
              nullable: true
              example: null
            nacionalidad:
              type: string
            residencia:
              type: string
              nullable: true
            estadoCivil:
              type: string
              nullable: true
            sexo:
              type: string
              nullable: true
            claveElectorIFE:
              type: string
              nullable: true
            numeroDependientes:
              type: string
              nullable: true
            fechaDefuncion:
              type: string
              nullable: true
            domicilio:
              $ref: '#/components/schemas/Domicilio'
    Domicilio:
      type: 'object'
      description: 'Datos del domicilio de la persona a consultar'
      required:
      - direccion
      - coloniaPoblacion
      - delegacionMunicipio
      - ciudad
      - estado
      - CP
      properties:
        direccion:
          type: string
          description: Reportar el nombre de la calle, número exterior, número interior. Deben considerarse avenida,cerrada, manzana, lote, edificio,departamento etc. Debe contener por lo menos dos cadenas de caracteres para que el registro sea válido, de lo contrario el registro será rechazado.
          example: "INSURGENTES SUR 1004"
          minLength: 1
        coloniaPoblacion:
          type: string
          description: Reportar la colonia a la cual pertenece la dirección contenida en el elemento dirección.
          example: "INSURGENTES"
          minLength: 1
        delegacionMunicipio:
          type: string
          description: Reportar la delegación o municipio a la cual pertenece la dirección contenida en el elemento Dirección.
          example: "BENITO JUAREZ"
          minLength: 1
        ciudad:
          type: string
          description: Reportar la ciudad a la cual pertenece la dirección contenida en el elemento Dirección.
          example: "CIUDAD DE MÉXICO"
          minLength: 1
        estado:
          $ref: '#/components/schemas/CatalogoEstados'
        CP:
          type: string
          description: El código postal reportado debe estar compuesto por 5 dígitos. Para que el código postal sea válido deberá corresponder al estado reportado.
          example: "11230"
          minLength: 5
          maxLength: 5
        fechaResidencia:
          type: string
          nullable: true
        numeroTelefono:
          type: string
          nullable: true
        tipoDomicilio:
          $ref: '#/components/schemas/CatalogoTipoDomicilio'
        tipoAsentamiento:
          $ref: '#/components/schemas/CatalogoTipoAsentamiento'
        fechaRegistroDomicilio:
          type: string
          example: '2018-12-20'
          nullable: true
          description: 'Fecha en la cual se registró el domicilio.'
        tipoAltaDomicilio:
          type: number
          example: 1
          nullable: true
          description: 'Los valores posibles: 0 = Alta de crédito 1 = Consulta expediente'
        idDomicilio:
          type: string
          nullable: true
          example: 316110890
          description: 'Identificador único del domicilio'
    Error:
        type: object
        description: error
        properties:
          codigo:
            type: string
            example: 400.1
            description: Código de error.
          mensaje:
            type: string
            example: El campo "{Campo}" es requerido.
            description: Mensaje de error.
    Errores:
      type: object
      description: Si existen errores, se listarán.
      properties:
        errores:
          items:
            $ref: '#/components/schemas/Error'
    RequestScoreFolio:
      type: object
      description: 'Cuerpo de la petición para obtener respuesta del servicio'
      required:
        - folioConsulta
        - folioOtorgante
      properties:
        folioConsulta:
          type: string
          maxLength: 50
          pattern: ^([0-9]){0,15}$
          example: "390038369"
        folioOtorgante:
          type: string
          maxLength: 50
          pattern: ^([A-Za-z0-9]){0,50}$
          example: "1234"
    ResponseScore:
      type: object
      description: Si existen información se entregara en esta estructura de datos.
      properties:
        folio:
          type: string
          maxLength: 25
          example: "123"
        folioConsulta:
          type: string
          maxLength: 50
          pattern: ^([A-Za-z0-9]){0,50}$
          example: "324567279"
        score:
          type: object
          properties:
            nombreScore:
              type: string
            valor:
              type: integer
            razones: 
              type: array
              items : 
                type: string
          example: 
              nombreScore: "FICO"
              valor: 482
              razones: ["K0","J0","E2","D8"]