# Obtener una lista de perfiles de teléfono en la nube

Endpoint: POST /api/cloudphone/page
Version: 1.0.0

## Request fields (application/json):

  - `bindIp` (boolean)
    Si la IP está vinculada: verdadero = vinculada, falso = no lo está
    Example: false

  - `keyword` (string)
    Palabras clave para filtrar: información del proxy, nombre del grupo, nombre de la etiqueta, nombre del entorno
    Example: CP-424

  - `pageNo` (integer)
    Página actual
    Example: 1

  - `pageSize` (integer)
    Elementos por página
    Example: 100

  - `sort` (array)
    Campos de ordenación dinámicos. Actualmente, solo se admite "envName" para teléfonos en la nube.
    Example: [{"sortDirection":"asc","sortField":"envName"}]

  - `sort.sortDirection` (string, required)
    Dirección de ordenación
    Enum: "asc", "desc"

  - `sort.sortField` (string, required)
    Campo para ordenar (actualmente solo se admite "envName")
    Example: envName

## Response 200 fields (application/json):

  - `code` (integer, required)
    Código de resultado devuelto 0: Normal. Los demás códigos son excepciones.

  - `msg` (string, required)
    mensaje de error

  - `data` (object, required)

  - `data.current` (integer, required)

  - `data.dataList` (array, required)

  - `data.dataList.abnormalStatus` (integer)
    Estado anormal: 0-Sin anomalías 1-No activado 2-Fuera de contrato 3-Sobrevendido 4-Desactivado

  - `data.dataList.adbInfo` (object)
    ADB info is only available when the phone is powered on (envStatus >= 4); it cannot be queried when powered off or booting

  - `data.dataList.adbInfo.adbIp` (string, required)
    adb ip

  - `data.dataList.adbInfo.adbPassword` (string, required)
    contraseña de conexión adb

  - `data.dataList.adbInfo.adbPort` (string, required)
    puerto adb

  - `data.dataList.adbInfo.command` (string | null)
    ADB SSH tunnel connection command

  - `data.dataList.adbInfo.expireTime` (string | null)
    ADB connection expiration time

  - `data.dataList.adbInfo.remark` (string, required)
    Información sobre observaciones de fallos

  - `data.dataList.adbInfo.success` (integer, required)
    Obtención exitosa 1=Sí 0=No

  - `data.dataList.billingType` (integer)
    Facturación: 0-Gratis 1-Suscripción flexible 2-Mensual

  - `data.dataList.createDate` (string)
    Creation time

  - `data.dataList.createMember` (integer)
    Creator member ID

  - `data.dataList.createMemberName` (string)
    Creator member name

  - `data.dataList.enableAdb` (boolean)
    Whether to enable ADB

  - `data.dataList.envName` (string)
    Nombre del teléfono en la nube

  - `data.dataList.envRemark` (string)
    Comentarios sobre el perfil

  - `data.dataList.envStatus` (integer)
    Estado del perfil: 0-Nuevo 1-Error al crear 2-Detenido 3-Iniciando 4-Iniciando 5-Reinicio en curso

  - `data.dataList.expireTime` (integer)
    tiempo de expiración

  - `data.dataList.groupId` (integer)
    Group ID

  - `data.dataList.groupName` (string | null)
    Nombre del grupo. Null cuando el teléfono en la nube no pertenece a ningún grupo

  - `data.dataList.id` (integer)
    Cloud phone ID

  - `data.dataList.androidId` (string)
    cloud phone android id

  - `data.dataList.gaid` (string)
    gaid del teléfono en la nube

  - `data.dataList.lastConnectDate` (string)
    Last connection time

  - `data.dataList.lastConnectMemberId` (integer)
    Last connected member ID

  - `data.dataList.lastConnectMemberName` (string)
    Last connected member name

  - `data.dataList.lastStartDate` (string)
    Last boot time

  - `data.dataList.lastStartMemberId` (integer)
    Last boot member ID

  - `data.dataList.lastStartMemberName` (string)
    Last boot member name

  - `data.dataList.proxy` (object)

  - `data.dataList.proxy.country` (string, required)
    Country

  - `data.dataList.proxy.countryCode` (string, required)
    Country code

  - `data.dataList.proxy.createDate` (string, required)
    Creation time

  - `data.dataList.proxy.delFlag` (integer, required)
    1 - eliminado 2 - no eliminado

  - `data.dataList.proxy.expiryTime` (integer, required)
    Expiration time

  - `data.dataList.proxy.exportIp` (string, required)
    Outgoing IP address

  - `data.dataList.proxy.groupId` (integer, required)
    Group ID

  - `data.dataList.proxy.id` (integer, required)
    ID

  - `data.dataList.proxy.providerCode` (string, required)
    Provider code

  - `data.dataList.proxy.proxyAreaCode` (string, required)
    Proxy location area code

  - `data.dataList.proxy.proxyCatagoryType` (integer, required)
    Tipo de proxy: 0: grupo de sitios 1: plataforma en la nube 2: IP propia 3: VPS 4: máquina virtual

  - `data.dataList.proxy.proxyCheckStatus` (integer, required)
    Estado de detección: 0: detección pendiente 1: detección exitosa 2: fallo de detección 3: error desconocido

  - `data.dataList.proxy.proxyInfo` (string, required)
    Proxy details string

  - `data.dataList.proxy.proxyIp` (string, required)
    Proxy server IP address

  - `data.dataList.proxy.proxyName` (string, required)
    Proxy configuration name

  - `data.dataList.proxy.proxyPort` (integer, required)
    Proxy server port

  - `data.dataList.proxy.proxyRegionCode` (string, required)
    Proxy location region code

  - `data.dataList.proxy.proxyStatus` (integer, required)
    0-Normal 1-Asignación pendiente 2-Actualización 3-Caducado

  - `data.dataList.proxy.proxySub` (object, required)

  - `data.dataList.proxy.proxySub.activeRecordId` (integer, required)
    Active subscription record ID

  - `data.dataList.proxy.proxySub.businessId` (string, required)
    Proxy service business ID

  - `data.dataList.proxy.proxySub.createMember` (integer, required)
    Creator member ID

  - `data.dataList.proxy.proxySub.endTime` (integer, required)
    End time

  - `data.dataList.proxy.proxySub.id` (integer, required)
    Subscription ID

  - `data.dataList.proxy.proxySub.nextBillingTime` (integer, required)
    Next billing/payment time

  - `data.dataList.proxy.proxySub.startTime` (integer, required)
    Start time of validity

  - `data.dataList.proxy.proxySub.subPayMethod` (string, required)
    Subscription payment method

  - `data.dataList.proxy.proxySub.subStatus` (integer, required)
    Estado de la suscripción: 0-Pendiente 1-Suscrito 2-Cancelado

  - `data.dataList.proxy.proxySub.subType` (integer, required)
    Tipo de suscripción: 1 agente, 2 paquetes

  - `data.dataList.proxy.proxySub.teamId` (integer, required)
    Team ID

  - `data.dataList.proxy.proxyType` (integer, required)
    Tipo de proxy: 0-http 1-https 2-socks5 4-Oxylabs 5-Proxys.io 6-GeoSurf 9-Oxylabsauto 10-Trogan 11-Shadowsocks 12-vmess

  - `data.dataList.proxy.proxyTypeCode` (string, required)
    Proxy protocol type code

  - `data.dataList.proxy.regionKey` (string, required)
    Cloud platform region key

  - `data.dataList.proxy.releaseTime` (string, required)
    Tiempo de liberación: tiempo de eliminación si se elimina, tiempo de expiración si expira.

  - `data.dataList.proxy.uniqueId` (integer, required)
    Display sort sequence ID

  - `data.dataList.proxyStatus` (integer)
    Estado del proxy: 0-No detectado 1-Detectando 2-Detección fallida 3-Detección exitosa

  - `data.dataList.supportAdb` (boolean)
    Whether ADB is supported: 0 = no, 1 = yes

  - `data.dataList.tagInfos` (array)
    Detalles de las etiquetas. Array vacío cuando no hay etiquetas asignadas

  - `data.dataList.tagInfos.id` (string, required)
    ID de la etiqueta

  - `data.dataList.tagInfos.tagName` (string, required)
    Nombre de la etiqueta

  - `data.dataList.updateDate` (string)
    Update time

  - `data.dataList.updateMember` (integer)
    Updater member ID

  - `data.pages` (integer, required)

  - `data.total` (integer, required)

  - `requestId` (string, required)
    ID de solicitud de operación

