> ## Documentation Index
> Fetch the complete documentation index at: https://docs.didit.me/llms.txt
> Use this file to discover all available pages before exploring further.

# API de risco de telefone: operadora e sinais de fraude

> Pontue o risco de um telefone sem enviar OTP. Operadora, tipo de linha, portabilidade e sinais de fraude numa chamada da Didit.

Use `POST /v3/phone/risk/` quando precisar de informação sobre o telefone antes, em vez de, ou fora de um fluxo OTP.

Não envia nenhum código ao utilizador. Cria uma sessão de API, enriquece o número, aplica as suas regras de risco de telefone e devolve, numa única resposta síncrona, o mesmo bloco de telefone normalizado usado pela Verificação de telefone.

Quando o pedido é guardado, a Didit também pode usar o número de telefone ao qual foi atribuída uma pontuação como prova agregada em **Networks**. Os grafos de rede podem mostrar informação de risco elevado sobre o telefone, portabilidade e contexto do tipo de linha em sinais telefónicos partilhados, mas não revelam o número de telefone em bruto a outras organizações.

## Interpretar a resposta

* `status` é a decisão final para esta sessão de API. Normalmente é `Approved`; a avaliação de risco pode resultar em `In Review` ou `Declined`.
* `phone.full_number` é o número E.164 normalizado. `phone.phone_number_prefix` e `phone.phone_number` separam-no no prefixo internacional e no número nacional.
* `phone.is_disposable` e `phone.is_virtual` são os sinais estáveis de sim/não para a lógica da aplicação. A consulta à operadora acrescenta `carrier.name` e `carrier.type` (`mobile`, `voip` e semelhantes).
* `phone.phone_intelligence.score` usa uma escala de risco de 0 a 100, em que um valor mais alto significa um risco maior. `phone_type_risk` (`Low`, `Medium`, `High`) e `phone_trust_index` (o inverso da pontuação) são vistas derivadas.
* `phone.phone_intelligence` e `phone.enrichment` são aliases de compatibilidade com o mesmo objeto normalizado. As novas integrações podem ler `phone.enrichment`.
* `phone.matches` lista outras sessões da sua aplicação em que o mesmo número foi usado por um utilizador diferente. Use-o para a deteção de contas duplicadas.
* `request_id` é o ID da sessão de API. Guarde-o juntamente com `vendor_data` se precisar de correlacionar o resultado com webhooks posteriores ou com a atividade na consola.

> [!WARNING]
>
> `phone.phone_intelligence` e `phone.enrichment` são campos não garantidos. Uma consulta concluída pode omitir ambos quando não é devolvida nenhuma informação útil para esse número, país ou plano. Construa as regras primeiro sobre os campos normalizados estáveis e trate a informação em falta como "desconhecida", e não como "segura".

## Complemento de pegada social

Defina `enable_social` como `true` para acrescentar um bloco `phone_social` à resposta, em `phone`: as plataformas online onde este número de telefone está registado, agrupadas por categoria, com os totais resumidos e quaisquer detalhes de perfil devolvidos pelos nossos parceiros de dados.

* `phone.phone_social.profiles_registered` e `phone.phone_social.profiles_checked` são os números principais: as plataformas em que o número de telefone está confirmado como registado, do total de plataformas avaliadas.
* `phone.phone_social.registered_platforms` e `phone.phone_social.not_registered_platforms` listam cada plataforma com a sua `category` e `scope` (`global`, ou `local` para plataformas específicas de uma região).
* `phone.phone_social.categories` apresenta a contagem de registos e a proporção por categoria, e `phone.phone_social.profiles` contém os detalhes de perfil por plataforma quando uma plataforma os disponibiliza (nome, URL da fotografia, texto "sobre", estado de privacidade, indicador de conta empresarial).
* Os índices de resumo (`digital_footprint_diversity`, `digital_sophistication_index`, `engagement_depth_index`, `subscription_affordability_index`) são índices compostos numa escala de 0 a 10. Qualquer contagem pode ser `null` quando a verificação não devolveu dados para essa contagem.

`profiles_registered: 0` é uma resposta real, não uma falha: as plataformas foram verificadas e o número de telefone não foi encontrado em nenhuma delas, o que é um sinal comum de identidade sintética. Este endpoint não atua sozinho com base nisto; use `phone_no_social_presence_action` num fluxo para o transformar num veredicto Review ou Decline.

O bloco está ausente quando `enable_social` não está definido, e também quando a verificação social não pôde ser concluída, caso em que não é faturada.

## Ambiente sandbox

As chaves do sandbox validam o pedido e devolvem dados aprovados e determinísticos. Não enviam nenhum OTP, não consomem créditos, não criam uma sessão e não contribuem para Networks. Com `enable_social` definido, devolvem também um bloco `phone_social` determinístico.

## Faturação

As chamadas à Phone Risk API custam \$0.04 ao preço de lista, menos do que a Verificação de telefone completa, porque não é enviado nenhum OTP. Um pedido em produção é faturável assim que a consulta é iniciada, mesmo quando alguns campos não garantidos não estão disponíveis.

O complemento de pegada social é faturado à parte: uma unidade `phone_social` por pedido, para além do preço da Phone Risk API, sempre que a verificação é concluída. A verificação de créditos feita antes da consulta cobre ambos.


## OpenAPI

````yaml pt/openapi-25.json POST /v3/phone/risk/
openapi: 3.0.0
info:
  version: 3.0.0
  title: Didit Verification API
  description: API de Verificação de identidade. Autentique-se com o cabeçalho x-api-key.
servers:
  - url: https://verification.didit.me
security: []
tags: []
paths:
  /v3/phone/risk/:
    post:
      tags:
        - Standalone APIs
      summary: Calcular a pontuação de risco de um número de telefone
      description: >-
        Resolva um número de telefone e obtenha a operadora, o tipo de linha, a
        portabilidade, a deteção de números descartáveis, a correspondência
        entre sessões e sinais de inteligência de risco normalizados sem enviar
        um OTP. O endpoint cria uma sessão de API e devolve o seu id como
        `request_id`.


        **Decisão.** O `status` de nível superior reflete `phone.status`.
        Normalmente é `Approved`; a avaliação de risco pode produzir `In Review`
        ou `Declined`.


        **Aliases de compatibilidade.** As respostas em ambiente de produção
        expõem o objeto de inteligência normalizado tanto como
        `phone.phone_intelligence` como `phone.enrichment`. Os valores são
        idênticos. Novas integrações podem ler `phone.enrichment`. Ambas as
        chaves estão ausentes quando não foram devolvidos dados de inteligência
        utilizáveis.


        **Faturação.** As chamadas em ambiente de produção utilizam os preços da
        Phone Risk API. O pedido é faturável assim que a consulta tem início,
        mesmo que alguns campos de melhor esforço não estejam disponíveis.


        **Sandbox.** As chaves de sandbox validam o pedido e devolvem dados
        determinísticos aprovados sem enviar um OTP, consumir créditos, criar
        uma sessão ou contribuir para o Networks.


        **Autenticação.** Envie a chave de API da sua aplicação em `x-api-key`.
        Credenciais ausentes ou inválidas devolvem `403` - esta API nunca
        devolve `401`.


        **Limite de pedidos.** Orçamento de escrita partilhado de 300 pedidos
        por minuto por chave de API em endpoints POST/PATCH/DELETE (a criação de
        transações e a ingestão de eventos têm um orçamento separado de 600).


        **Pegada social.** Defina `enable_social` como `true` para adicionar um
        bloco `phone_social`: as plataformas online onde este número está
        registado, com contagens por categoria e quaisquer detalhes de perfil
        disponíveis. `profiles_registered: 0` significa que as plataformas foram
        verificadas e o número não foi encontrado em nenhuma delas - uma
        resposta válida e faturável. O bloco está ausente quando o add-on não
        foi solicitado ou a verificação não pôde ser concluída, não sendo
        faturado nesse caso. A faturação acrescenta uma unidade `phone_social`
        por pedido ao preço próprio deste endpoint.
      operationId: post_v3phone_risk
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/PhoneRiskRequest'
            examples:
              Minimal:
                summary: Calcular a pontuação de um número com valores predefinidos
                value:
                  phone_number: '+14155552671'
              Full context:
                summary: Pontuação com sinais, sugestão de país e IDs de correlação
                value:
                  phone_number: '+14155552671'
                  country_code: US
                  signals:
                    ip: 192.0.2.1
                    device_id: 8F0B8FDD-C2CB-4387-B20A-56E9B2E5A0D2
                    device_platform: ios
                    device_model: iPhone17,2
                    os_version: 18.0.1
                    app_version: 1.2.34
                    user_agent: >-
                      Mozilla/5.0 (iPhone; CPU iPhone OS 18_0_1 like Mac OS X)
                      AppleWebKit/605.1.15 (KHTML, like Gecko) Version/18.0
                      Mobile/15E148 Safari/604.1
                  vendor_data: lead-123
                  metadata:
                    source: signup_prescreen
      responses:
        '200':
          description: >-
            A avaliação de risco foi concluída. Inspecione `status` para
            verificar a decisão; o código HTTP é sempre `200` para pesquisas
            concluídas.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/PhoneRiskResponse'
              examples:
                Clean mobile number:
                  summary: >-
                    Número de telemóvel limpo com cobertura de dados de
                    inteligência
                  value:
                    request_id: 4fd09d2e-9bc9-4c4e-9c46-7f625ac0ab62
                    status: Approved
                    phone:
                      status: Approved
                      phone_number_prefix: '+1'
                      phone_number: '4155552671'
                      full_number: '+14155552671'
                      country_code: US
                      country_name: United States
                      carrier:
                        name: Example Mobile
                        type: mobile
                      is_disposable: false
                      is_virtual: false
                      verification_method: null
                      verification_attempts: 0
                      verified_at: null
                      warnings: []
                      lifecycle: []
                      matches: []
                      phone_intelligence:
                        score: 3
                        phone_type_risk: Low
                        phone_trust_index: 97
                        network_stability_index: 95
                        is_disposable: false
                        is_ported: false
                        is_recently_ported: false
                        carrier_type: mobile
                        reason_codes: []
                      enrichment:
                        score: 3
                        phone_type_risk: Low
                        phone_trust_index: 97
                        network_stability_index: 95
                        is_disposable: false
                        is_ported: false
                        is_recently_ported: false
                        carrier_type: mobile
                        reason_codes: []
                    vendor_data: lead-123
                    metadata:
                      source: signup_prescreen
                    created_at: '2026-09-01T10:30:00.123456+00:00'
                Number in review:
                  summary: Número descartável ou virtual sinalizado para revisão
                  value:
                    request_id: 8c22e1f0-4b3d-4a3a-9d1e-2f6b7c8d9e0f
                    status: In Review
                    phone:
                      status: In Review
                      phone_number_prefix: '+44'
                      phone_number: '7700900123'
                      full_number: '+447700900123'
                      country_code: GB
                      country_name: United Kingdom
                      carrier:
                        name: Example VoIP
                        type: voip
                      is_disposable: true
                      is_virtual: true
                      verification_method: null
                      verification_attempts: 0
                      verified_at: null
                      warnings: []
                      lifecycle: []
                      matches: []
                      phone_intelligence:
                        score: 72
                        phone_type_risk: High
                        phone_trust_index: 28
                        network_stability_index: 40
                        is_disposable: true
                        is_ported: true
                        is_recently_ported: true
                        carrier_type: voip
                        reason_codes:
                          - code: IR-5AC67A32
                            direction: risk
                            message: Phone type identified as non-mobile
                            impact_level: medium
                      enrichment:
                        score: 72
                        phone_type_risk: High
                        phone_trust_index: 28
                        network_stability_index: 40
                        is_disposable: true
                        is_ported: true
                        is_recently_ported: true
                        carrier_type: voip
                        reason_codes:
                          - code: IR-5AC67A32
                            direction: risk
                            message: Phone type identified as non-mobile
                            impact_level: medium
                    vendor_data: lead-124
                    metadata: null
                    created_at: '2026-09-01T10:30:00.123456+00:00'
        '400':
          $ref: '#/components/responses/PhoneRiskValidationError'
        '403':
          $ref: '#/components/responses/RiskPermissionDenied'
        '429':
          $ref: '#/components/responses/RateLimitedWrite'
      security:
        - ApiKeyAuth: []
      x-codeSamples:
        - lang: curl
          label: curl
          source: |-
            curl -X POST https://verification.didit.me/v3/phone/risk/ \
              -H 'x-api-key: YOUR_API_KEY' \
              -H 'Content-Type: application/json' \
              -d '{
                "phone_number": "+14155552671",
                "country_code": "US",
                "vendor_data": "lead-123",
                "metadata": {"source": "signup_prescreen"}
              }'
        - lang: python
          label: Python
          source: |-
            from didit import Didit

            # Reads DIDIT_API_KEY.
            client = Didit()

            result = client.phone.assess_risk(
                phone_number="+14155552671",
            )
            print(result)
        - lang: javascript
          label: Node.js
          source: |-
            import Didit from "@didit-protocol/sdk-node";

            // Reads DIDIT_API_KEY.
            const didit = new Didit();

            const result = await didit.phone.assessRisk({
              phone_number: "+14155552671",
            });
            console.log(result);
        - lang: go
          label: Go
          source: "ctx := context.Background()\n// Reads DIDIT_API_KEY.\nclient := didit.NewClient()\n\nresult, err := client.Phone.AssessRisk(ctx, didit.PhoneRiskRequest{\n\tPhoneNumber: \"+14155552671\",\n})\nif err != nil {\n\tlog.Fatal(err)\n}\nfmt.Printf(\"%+v\\n\", result)"
        - lang: java
          label: Java
          source: |-
            import me.didit.Didit;
            import me.didit.types.PhoneRiskRequest;

            // Reads DIDIT_API_KEY.
            Didit client = new Didit();

            var result = client.phone().assessRisk(PhoneRiskRequest.builder()
                    .phoneNumber("+14155552671")
                    .build());
            System.out.println(result);
        - lang: php
          label: PHP
          source: |-
            <?php

            require 'vendor/autoload.php';

            use Didit\DiditClient;

            // Reads DIDIT_API_KEY.
            $didit = new DiditClient();

            $result = $didit->phone->assessRisk([
                'phone_number' => '+14155552671',
            ]);
            print_r($result->toArray());
        - lang: ruby
          label: Ruby
          source: |-
            require "didit"

            # Reads DIDIT_API_KEY.
            didit = Didit::Client.new

            result = didit.phone.assess_risk(phone_number: "+14155552671")
            puts result.to_h
        - lang: csharp
          label: .NET
          source: |-
            using System;
            using System.Text.Json;
            using Didit;

            // Reads DIDIT_API_KEY.
            using var client = new DiditClient();

            var result = await client.Phone.AssessRiskAsync(new PhoneRiskRequest
            {
                PhoneNumber = "+14155552671",
            });
            Console.WriteLine(JsonSerializer.Serialize(result));
components:
  schemas:
    PhoneRiskRequest:
      type: object
      required:
        - phone_number
      properties:
        phone_number:
          type: string
          maxLength: 20
          description: >-
            Número de telefone ao qual atribuir pontuação. É validado e
            normalizado para E.164.
          example: '+14155552671'
        country_code:
          type: string
          maxLength: 3
          description: >-
            Sugestão opcional de país ISO 3166-1 alpha-2 ou alpha-3 para
            cobertura de inteligência.
          example: US
        signals:
          $ref: '#/components/schemas/RiskSignals'
        vendor_data:
          type: string
          description: >-
            A sua referência estável para este pedido. Armazenada na sessão da
            API e refletida na resposta.
        metadata:
          type: object
          nullable: true
          additionalProperties: true
          description: >-
            Os seus metadados JSON não sensíveis. Armazenados na sessão da API e
            devolvidos na resposta.
        enable_social:
          type: boolean
          default: false
          description: >-
            Quando for true, consulta também a pegada social do número: as
            plataformas de mensagens, redes sociais, de comércio eletrónico e
            profissionais nas quais está registado. Faturado como uma unidade
            `phone_social` por pedido, além do preço do próprio endpoint.
          example: true
    PhoneRiskResponse:
      type: object
      required:
        - request_id
        - status
        - created_at
      properties:
        request_id:
          type: string
          format: uuid
          description: >-
            ID da sessão de API criada para este pedido. Guarde-o com
            `vendor_data` se precisar de correlacionar o resultado com webhooks
            posteriores ou atividade na consola.
        status:
          type: string
          enum:
            - Approved
            - In Review
            - Declined
          description: >-
            Decisão final para esta sessão de API. Normalmente `Approved`; a
            avaliação de risco pode produzir `In Review` ou `Declined`.
        vendor_data:
          type: string
          nullable: true
          description: Eco do `vendor_data` que enviou, `null` se não tiver enviado nenhum.
        metadata:
          type: object
          nullable: true
          additionalProperties: true
          description: >-
            Eco do objeto `metadata` que enviou, `null` se não tiver enviado
            nenhum.
        created_at:
          type: string
          format: date-time
          description: Carimbo de data/hora desta resposta.
        phone:
          type: object
          description: >-
            Relatório de telefone normalizado, o mesmo bloco utilizado pelas
            respostas da Verificação de telefone.
          required:
            - status
          properties:
            status:
              type: string
              enum:
                - Approved
                - In Review
                - Declined
              description: >-
                Decisão para este número de telefone. Reflete o `status` de
                nível superior.
            phone_number_prefix:
              type: string
              description: 'Indicativo telefónico do país com `+` inicial (ex.: `+1`).'
              example: '+1'
            phone_number:
              type: string
              description: Número nacional sem o indicativo do país.
              example: '4155552671'
            full_number:
              type: string
              description: Número completo no formato E.164.
              example: '+14155552671'
            country_code:
              type: string
              nullable: true
              description: País ISO 3166-1 alfa-2 do número.
              example: US
            country_name:
              type: string
              description: Nome completo do país derivado de `country_code`.
              example: United States
            carrier:
              type: object
              nullable: true
              description: >-
                Rede atual que serve o número. `null` quando a consulta não
                conseguiu determinar uma operadora.
              properties:
                name:
                  type: string
                  description: >-
                    Nome da operadora. Cadeia vazia quando a pesquisa não a
                    conseguiu identificar.
                type:
                  type: string
                  description: >-
                    Tipo de linha comunicado pela consulta: `mobile`,
                    `fixed_line`, `voip`, `isp`, `vpn`, `toll_free`,
                    `premium_rate` ou semelhante.
            is_disposable:
              type: boolean
              description: >-
                `true` quando o número pertence a um serviço de números
                temporários ou descartáveis.
            is_virtual:
              type: boolean
              description: >-
                `true` quando o tipo de linha é virtual (`voip`, `isp` ou
                `vpn`).
            verification_method:
              type: string
              nullable: true
              description: >-
                Canal OTP da verificação subjacente. `null` para consultas de
                risco, que nunca enviam um código.
            verification_attempts:
              type: integer
              description: Envios de OTP para este número. `0` para pesquisas de risco.
            verified_at:
              type: string
              format: date-time
              nullable: true
              description: >-
                Quando o número foi verificado pela última vez por um OTP.
                `null` para consultas de risco.
            warnings:
              type: array
              description: >-
                Avisos de risco registados para este pedido. Array vazio quando
                não existirem.
              items:
                $ref: '#/components/schemas/RiskWarning'
            lifecycle:
              type: array
              description: >-
                Registo de auditoria cronológico do pedido. Array vazio para
                consultas de risco sem eventos de envio.
              items:
                $ref: '#/components/schemas/RiskLifecycleEvent'
            matches:
              type: array
              description: >-
                Outras sessões da sua aplicação onde o mesmo número de telefone
                foi utilizado por um utilizador diferente (`vendor_data`
                diferente). Até 5 entradas. Array vazio quando não existirem
                correspondências.
              items:
                $ref: '#/components/schemas/PhoneMatchItem'
            phone_intelligence:
              $ref: '#/components/schemas/PhoneIntelligence'
            enrichment:
              $ref: '#/components/schemas/PhoneIntelligence'
            phone_social:
              $ref: '#/components/schemas/PhoneSocialFootprint'
    RiskSignals:
      type: object
      description: >-
        Contexto opcional de dispositivo e rede observado pela sua aplicação.
        Todos os campos são opcionais. Passá-los alimenta a deteção de
        correspondências entre sessões em Redes.
      properties:
        ip:
          type: string
          format: ip
          description: Endereço IPv4 ou IPv6 observado para o utilizador final.
          example: 192.0.2.1
        device_id:
          type: string
          maxLength: 255
          description: >-
            Identificador de dispositivo estável recolhido pela sua aplicação
            (Android `ANDROID_ID`, iOS `identifierForVendor`).
        device_platform:
          type: string
          enum:
            - android
            - ios
            - ipados
            - tvos
            - web
          description: Plataforma do dispositivo do utilizador final.
        device_model:
          type: string
          maxLength: 255
          description: Modelo do dispositivo comunicado pela sua aplicação.
        os_version:
          type: string
          maxLength: 64
          description: Versão do sistema operativo.
        app_version:
          type: string
          maxLength: 64
          description: Versão da sua aplicação.
        user_agent:
          type: string
          maxLength: 512
          description: Agente do utilizador do navegador ou da aplicação.
    RiskWarning:
      type: object
      required:
        - feature
        - risk
        - log_type
        - short_description
        - long_description
      properties:
        feature:
          type: string
          description: Funcionalidade que gerou o aviso.
        risk:
          type: string
          description: >-
            Código de risco legível por máquina. Podem ser adicionados novos
            valores ao longo do tempo.
        additional_data:
          type: object
          nullable: true
          additionalProperties: true
          description: Contexto específico do risco, ou `null`.
        log_type:
          type: string
          enum:
            - error
            - warning
            - information
          description: Gravidade utilizada pelas regras de decisão.
        short_description:
          type: string
          description: Resumo de uma linha legível por humanos.
        long_description:
          type: string
          description: Explicação legível.
    RiskLifecycleEvent:
      type: object
      required:
        - type
        - timestamp
        - details
        - fee
      properties:
        type:
          type: string
          description: >-
            Tipo de evento legível por máquina. Podem ser adicionados novos
            valores ao longo do tempo.
        timestamp:
          type: string
          format: date-time
          description: Quando o evento aconteceu.
        details:
          type: object
          nullable: true
          additionalProperties: true
          description: Payload específico do evento, ou `null`.
        fee:
          type: number
          description: Montante em USD faturado por este evento.
    PhoneMatchItem:
      type: object
      description: >-
        Outra sessão da sua aplicação que utilizou o mesmo número de telefone
        com um `vendor_data` diferente.
      properties:
        session_id:
          type: string
          format: uuid
          description: >-
            ID de sessão da outra verificação que utilizou este número de
            telefone.
        session_number:
          type: integer
          description: Número sequencial legível da sessão.
        vendor_data:
          type: string
          nullable: true
          description: '`vendor_data` dessa sessão.'
        verification_date:
          type: string
          description: Quando essa sessão foi criada (`YYYY-MM-DDTHH:MM:SSZ`).
        phone_number:
          type: string
          description: O número de telefone correspondido.
        status:
          type: string
          description: >-
            Estado dessa sessão (por exemplo, `Approved`, `Declined`, `In
            Progress`).
        is_blocklisted:
          type: boolean
          description: Se o número de telefone está na lista de bloqueio da sua aplicação.
        api_service:
          type: string
          nullable: true
          description: >-
            Para sessões do tipo API, a API autónoma que a criou; `null` para
            sessões de verificação normais.
        source:
          type: string
          description: >-
            Onde a correspondência foi encontrada. Habitualmente `session`; uma
            ocorrência na lista de bloqueio através de uma entrada de lista da
            organização utiliza `list_entry`.
    PhoneIntelligence:
      type: object
      description: >-
        Bloco de inteligência de telefone normalizado. Presente apenas quando o
        suplemento de inteligência foi executado para esta consulta; quando
        presente, também é exposto sob o alias `enrichment` com valores
        idênticos.
      properties:
        score:
          type: number
          nullable: true
          description: Pontuação de risco normalizada de 0-100. Mais alto é mais arriscado.
        phone_type_risk:
          type: string
          nullable: true
          description: '`Low`, `Medium` ou `High`, derivado da pontuação.'
        phone_trust_index:
          type: number
          nullable: true
          description: >-
            Inverso da pontuação, para painéis que preferem que quanto maior,
            melhor.
        network_stability_index:
          type: number
          nullable: true
          description: Estabilidade da rede associada à linha.
        is_disposable:
          type: boolean
          nullable: true
          description: '`true` quando o número parece descartável ou virtual.'
        is_ported:
          type: boolean
          nullable: true
          description: '`true` quando o número mudou de operadora.'
        is_recently_ported:
          type: boolean
          nullable: true
          description: '`true` quando a portabilidade ocorreu recentemente.'
        carrier_type:
          type: string
          nullable: true
          description: >-
            Classificação da linha comunicada pela consulta (por exemplo,
            `mobile`).
        reason_codes:
          type: array
          items:
            type: object
            properties:
              code:
                type: string
                description: >-
                  Identificador Didit estável do sinal, por exemplo
                  `IR-5AC67A32`. Opaco: agrupe e filtre por ele, não tente
                  analisá-lo.
              value:
                nullable: true
                description: >-
                  Para um sinalizador de risco (por exemplo, `voip`, `leaked`,
                  `disposable`, `spam_trap`), o respetivo valor: um booleano, um
                  nível ou uma data. Nulo para um código de motivo com
                  pontuação.
              direction:
                type: string
                enum:
                  - risk
                  - trust
                description: Se o sinal aumentou o risco ou adicionou confiança.
              message:
                type: string
                description: Explicação legível do sinal, em inglês.
              impact_level:
                type: string
                nullable: true
                description: >-
                  Com que intensidade o sinal influenciou a pontuação, por
                  exemplo `low`, `medium` ou `high`.
          description: >-
            Sinais que explicam a pontuação, cada um com um código Didit
            estável, uma direção, uma mensagem e um nível de impacto. Podem
            surgir novos códigos ao longo do tempo, pelo que não deve rejeitar
            códigos desconhecidos.
    PhoneSocialFootprint:
      type: object
      nullable: true
      description: >-
        Presença social (social footprint) do número de telefone: as plataformas
        online em que está registado. Presente apenas quando `enable_social` foi
        definido e a verificação foi concluída. Cada contagem pode ser nula
        quando não foram devolvidos dados para ela. `profiles_registered: 0`
        significa que as plataformas foram verificadas e o número de telefone
        não foi encontrado em nenhuma delas - uma resposta válida, faturável e
        um sinal comum de identidade sintética.
      properties:
        profiles_registered:
          type: integer
          nullable: true
          description: >-
            Plataformas onde o número de telefone está confirmado como
            registado.
          example: 5
        profiles_checked:
          type: integer
          nullable: true
          description: Plataformas avaliadas quanto ao registo.
          example: 14
        names_found:
          type: integer
          nullable: true
          description: Plataformas que devolveram um nome associado.
          example: 0
        photos_found:
          type: integer
          nullable: true
          description: Plataformas que devolveram uma fotografia de perfil.
          example: 0
        communication_breadth:
          type: integer
          nullable: true
          description: Plataformas de comunicação com presença detetada.
          example: 2
        digital_footprint_diversity:
          type: integer
          nullable: true
          description: Categorias de plataforma distintas com presença detetada.
          example: 5
        digital_sophistication_index:
          type: integer
          nullable: true
          description: Indicador composto de maturidade digital, 0-10.
          example: 5
        engagement_depth_index:
          type: integer
          nullable: true
          description: Indicador do nível de detalhe do perfil, 0-10.
          example: 3
        subscription_affordability_index:
          type: integer
          nullable: true
          description: Distribuição da plataforma gratuita vs paga, 0-10.
          example: 2
        free_platforms:
          type: integer
          nullable: true
          description: Registos em plataformas gratuitas.
          example: 4
        full_paid_platforms:
          type: integer
          nullable: true
          description: Registos em plataformas totalmente pagas.
          example: 0
        partial_paid_platforms:
          type: integer
          nullable: true
          description: Registos em plataformas freemium.
          example: 1
        whatsapp_profile_completeness:
          type: string
          nullable: true
          enum:
            - Basic
            - Partial
            - Complete
            - Not Present
            - null
          description: >-
            Grau de preenchimento do perfil do WhatsApp. Apenas para telefone;
            nulo para e-mail.
          example: Partial
        registered_platforms:
          type: array
          description: Plataformas onde o registo está confirmado.
          items:
            $ref: '#/components/schemas/SocialFootprintPlatform'
        not_registered_platforms:
          type: array
          description: Plataformas verificadas com resultado negativo.
          items:
            $ref: '#/components/schemas/SocialFootprintPlatform'
        categories:
          type: object
          description: Contagem e proporção de registos por categoria de plataforma.
          additionalProperties:
            $ref: '#/components/schemas/SocialFootprintCategorySummary'
        profiles:
          type: object
          description: >-
            Detalhes de perfil por plataforma, indexados por plataforma, quando
            a plataforma os disponibiliza.
          additionalProperties:
            $ref: '#/components/schemas/SocialFootprintProfile'
    SocialFootprintPlatform:
      type: object
      properties:
        platform:
          type: string
          description: Identificador da plataforma.
          example: whatsapp
        category:
          type: string
          description: >-
            Categoria da plataforma, por exemplo, MESSAGING, SOCIAL_MEDIA,
            ECOMMERCE, PROFESSIONAL, EMAIL_PROVIDER.
          example: MESSAGING
        scope:
          type: string
          enum:
            - global
            - local
          description: >-
            `global` para plataformas mundiais, `local` para plataformas
            específicas de uma região.
          example: global
    SocialFootprintCategorySummary:
      type: object
      properties:
        registered:
          type: integer
          nullable: true
          description: Plataformas nesta categoria onde o registo está confirmado.
          example: 2
        ratio:
          type: number
          format: float
          nullable: true
          description: >-
            Percentagem de plataformas verificadas da categoria com registo,
            0.0-1.0.
          example: 0.6667
    SocialFootprintProfile:
      type: object
      properties:
        name:
          type: string
          nullable: true
          description: Nome do perfil, quando a plataforma o disponibiliza.
        photo:
          type: string
          nullable: true
          description: URL da fotografia de perfil, quando a plataforma o disponibiliza.
        about:
          type: string
          nullable: true
          description: >-
            Texto de biografia/apresentação do perfil, quando a plataforma o
            disponibiliza.
        privacy_status:
          type: string
          nullable: true
          enum:
            - PUBLIC
            - PRIVATE
            - null
          description: Visibilidade do perfil, quando a plataforma a disponibiliza.
        business_account:
          type: boolean
          nullable: true
          description: >-
            Se o perfil é uma conta empresarial, quando a plataforma o
            disponibiliza.
  responses:
    PhoneRiskValidationError:
      description: A validação do pedido falhou.
      content:
        application/json:
          examples:
            Missing phone number:
              summary: Número de telefone em falta
              value:
                phone_number:
                  - This field is required.
            Invalid phone number:
              summary: Número de telefone inválido
              value:
                phone_number:
                  - Invalid phone number provided.
            Invalid signal IP:
              summary: IP de sinal inválido
              value:
                signals:
                  ip:
                    - Enter a valid IPv4 or IPv6 address.
    RiskPermissionDenied:
      description: >-
        A chave de API está em falta ou é inválida, ou a organização não pode
        cobrir a consulta em tempo real. Esta API nunca devolve `401`.
      content:
        application/json:
          examples:
            Missing or invalid API key:
              summary: Sem cabeçalho `x-api-key`, ou a chave é inválida ou foi revogada
              value:
                detail: You do not have permission to perform this action.
            Not enough credits:
              summary: O saldo da organização não cobre o preço da consulta
              value:
                error: You don't have enough credits to perform this request.
    RateLimitedWrite:
      description: >-
        O limite de escrita partilhado de 300 pedidos por minuto por chave de
        API foi excedido. Respeite o `Retry-After` antes de tentar novamente.
      content:
        application/json:
          schema:
            type: object
            required:
              - detail
            properties:
              detail:
                type: string
          example:
            detail: >-
              Write request rate limit exceeded. You can make up to 300 requests
              per minute.
  securitySchemes:
    ApiKeyAuth:
      type: apiKey
      in: header
      name: x-api-key
      description: >-
        A chave de API da sua aplicação, a partir de Programadores -> Chaves de
        API na Business Console. A chave principal tem acesso total. Uma chave
        nomeada pode ter o âmbito definido: nenhum, leitura ou escrita por
        recurso, limitada a alguns fluxos ou a sessões aprovadas, a uma lista de
        endereços IP e a uma data de validade. 401 significa que a chave está
        incorreta, revogada ou expirada; 403 significa que nenhuma chave foi
        enviada, que a chave não tem acesso a este recurso ou ação, ou que o
        pedido veio de um endereço fora da sua lista de IP; 404 numa rota de
        sessão significa que a sessão está fora dos fluxos ou estados da chave.
        Uma chave sem acesso a multimédia recebe URLs de imagens, vídeos e PDFs
        como nulos, e uma chave sem permissão de escrita em sessões recebe
        ligações de sessão e tokens como nulos. Consulte
        https://docs.didit.me/console/api-keys.

````

This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.