openapi: 3.0.0
info:
  title: Guardian Express Sandbox
  description: "<p>Guardian Express. Fraud Score estima la probabilidad de fraude de originación en el momento de otorgamiento del crédito, representada en un puntaje de 0 a 1, donde un valor más alto indica un mayor riesgo de fraude. El formato express da apertura a que pueda ser consumido sin necesidad de un Rerporte de Crédito.<br/><br><img src='https://developer.circulodecredito.com.mx/sites/default/files/2020-10/circulo_de_credito-apihub.png' height='40' width='220'/></p><br/>"
  version: 1.0.0
  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/v1/guardian-express/sandbox'
paths:
  /datos-generales:
    options:
      summary: ''
      description: ''
      tags:
        - 'Datos Generales'
      responses:
        '200':
          description: 'OK'
        '403':
          description: 'FORBIDDEN'
    post:
      summary: Datos Generales
      description: ''
      tags: 
        - 'Datos Generales'
      operationId: 'datos-generales'
      parameters:

        - name: x-api-key
          in: header
          description: ConsumerKey obtenido desde el portal de desarrolladores
          required: true
          style: simple
          schema:
            type: string

      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/RequestDatosGenerales'
        required: true
      responses:
        200:
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ResponseGuardianDG'
        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: 'datos-generales'
components:
  schemas:
    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:
          type: array
          items:
            $ref: '#/components/schemas/Error'
    RequestDatosGenerales:
      type: object
      properties:
        folioOtorgante:
          oneOf:
            - type: string
            - type: integer
          maxLength: 25
          example: 1736967881
          pattern: '^[0-9\s]+$'
        persona:
          required:
            - primerNombre
            - apellidoPaterno
            - apellidoMaterno
            - fechaNacimiento
          type: object
          properties:
            primerNombre:
              type: string
              description: 'Primer nombre de la persona'
              minLength: 1
              maxLength: 25
              pattern: '^[A-Za-z\s]+$'
              example: "JUAN"
            segundoNombre:
              description: 'Segundo nombre de la persona, si tiene'
              pattern: '^[A-Za-z\s]+$'
              example: null
            apellidoPaterno:
              type: string
              description: 'Apellido paterno de la persona'
              minLength: 1
              maxLength: 25
              pattern: '^[A-Za-z\s]+$'
              example: "PRUEBA"
            apellidoMaterno:
              type: string
              description: 'Apellido materno de la persona'
              minLength: 1
              maxLength: 25
              pattern: '^[A-Za-z\s]+$'
              example: "CUATRO"
            apellidoAdicional:
              description: 'Apellido adicional de la persona, si tuviere'
              pattern: '^[A-Za-z\s]+$'
              example: null
            fechaNacimiento:
              type: string
              description: 'Fecha de nacimiento de la persona, en el formato especificado (por defecto dd-MM-yyyy)'
              minLength: 1
              maxLength: 25
              format: 'yyyy-MM-dd-'
              example: "1980-01-04"
            RFC:
              type: string
              description: 'RFC con homoclave de la persona'
              maxLength: 13
              pattern: (^[A-Za-z0-9]+)$
              example: "PUCJ800104"
            domicilio:
              required:
                - cp
              type: object
              properties:
                direccion:
                  type: string
                  pattern: (^[\sA-Za-z0-9,.]+)$
                  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.'
                  minLength: 0
                  maxLength: 80
                  example: 'INSURGENTE SUR 1007'
                colonia:
                  type: string
                  pattern: (^[\sA-Za-z0-9]+)$
                  description: 'Reportar la colonia a la cual pertenece la dirección contenida en el elemento dirección.'
                  minLength: 0
                  maxLength: 65
                  example: 'INSURGENTES'
                delegacionMunicipio:
                  type: string
                  pattern: (^[\sA-Za-z0-9]+)$
                  description: 'Reportar la delegación o municipio a la cual pertenece la dirección contenida en el elemento Dirección.'
                  minLength: 0
                  maxLength: 65
                  example: 'BENITO JUAREZ'
                ciudad:
                  type: string
                  pattern: (^[\sA-Za-z0-9]+)$
                  description: 'Reportar la ciudad a la cual pertenece la dirección contenida en el elemento Dirección.'
                  minLength: 0
                  maxLength: 65
                  example: 'MEXICO'
                estado:
                  $ref: '#/components/schemas/CatalogoEstados'
                cp:
                  type: string
                  pattern: (^[\s0-9]+)$
                  description: 'El código postal reportado debeestar compuesto por 5 dígitos. Para que el código postal sea válido deberá corresponder al estado reportado.'
                  minLength: 5
                  maxLength: 5
                  example: '11230'
    ResponseGuardianDG:
      type: object
      properties:
        score:
          type: string
          example: "0.8"
        razones: 
          type: array
          items:
            type: string
          example: ["CDC22","CDC01","CDC23"]
        folioConsulta:
          type: string
          example: "389966042"
    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>BC</td><td>BAJA CALIFORNIA NORTE</td></tr><tr><td>BCS</td><td>BAJA CALIFORNIA SUR</td></tr><tr><td>CAMP</td><td>CAMPECHE</td></tr><tr><td>CDMX</td><td>CIUDAD DE MÉXICO</td></tr><tr><td>CHIS</td><td>CHIAPAS</td></tr><tr><td>CHIH</td><td>CHIHUAHUA</td></tr><tr><td>COAH</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>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>MEX</td><td>MÉXICO</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>QROO</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>TAMP</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>"
      minLength: 2
      maxLength: 4
      pattern: (^[A-Za-z]+)$
      example: DF
      enum:
        - AGS
        - BC
        - BCS
        - CAMP
        - COAH
        - COL
        - CHIS
        - CHIH
        - DF
        - CDMX
        - DGO
        - GTO
        - GRO
        - HGO
        - JAL
        - MEX
        - MICH
        - MOR
        - NAY
        - NL
        - OAX
        - PUE
        - QRO
        - QROO
        - SLP
        - SIN
        - SON
        - TAB
        - TAMP
        - TLAX
        - VER
        - YUC
        - ZAC