Ir para o conteúdo

Lista de Contactos — Segmento

Um segmento é um filtro de contactos guardado numa lista de contactos. As campanhas podem ser limitadas a um ou mais segmentos (o parâmetro segments[] de Campanha), e os contactos de um segmento podem ser listados com GET /contact_list/<list>/contacts?segment=<segment>.

Endpoints

Método URL
GET /contact_list/<list>/segment/<segment>
POST /contact_list/<list>/segment
PUT /contact_list/<list>/segment/<segment>
DELETE /contact_list/<list>/segment/<segment>

Todos os verbos requerem acesso de escrita à lista.


GET /contact_list/<list>/segment/<segment>

Parâmetro Tipo Descrição
page int Página de contactos do segmento a devolver. Por defeito 1.
pagesize int Contactos por página. Por defeito 10.

Devolve: O segmento, uma página dos contactos que lhe correspondem (contacts), o número de contactos encontrados (contactCount) e o número de páginas (contactPageCount).

Exemplo:

curl -u "username:api_key" -H "Accept: application/json" \
  https://app.duo.pt/contact_list/{list_id}/segment/{segment_id}

Resposta:

{
  "success": true,
  "data": {
    "page": 1,
    "pagesize": 10,
    "contact_list": {
      "id": 1,
      "owner": 1,
      "name": "Example...",
      "default_email_out": null,
      "unsubscribe_message": "Click the button below to unsubscribe from the list.",
      "email_out_custom_fields": null,
      "double_optin": false,
      "optout_allowed": true,
      "optout_category": null,
      "optin_email": null,
      "optin_sms": null,
      "shared_with_children": false,
      "read_shared_with_children": false,
      "segments": null
    },
    "segment": {
      "id": 7,
      "list": 1,
      "name": "Subscribed at example.com",
      "filter": {
        "operator": "AND",
        "arguments": [
          {"operator": "ENDSWITH", "leftArg": "email", "rightArg": "@example.com"},
          {"operator": "==", "leftArg": "subscription_state", "rightArg": "SUBSCRIBED"}
        ]
      }
    },
    "contacts": [
      {
        "contact_id": 17137542,
        "subscription_status": "SUBSCRIBED",
        "bouncing": false,
        "telephone": "351910000001",
        "email": "contact@example.com"
      }
    ],
    "contactCount": 1,
    "contactPageCount": 1,
    "contact_count": {
      "subscribed": { "count": 1 }
    }
  }
}

contact_count.subscribed.count é o número total de contactos que correspondem ao segmento, seja qual for o seu estado de subscrição.


POST /contact_list/<list>/segment

Parâmetro Tipo Descrição
name string Nome do segmento
filter string JSON Obrigatório. O filtro de contactos, com a mesma sintaxe do parâmetro filter de Contactos.

Aviso

O filtro não é validado quando o segmento é gravado. Um filtro que não seja JSON válido, ou que use um leftArg ou operador desconhecido, só falha quando o segmento é usado. Teste primeiro o filtro com GET /contact_list/<list>/contacts.

Devolve: A lista de contactos e o novo segmento.

Exemplo:

curl -u "username:api_key" -H "Accept: application/json" \
  -d "name=Subscribed+at+example.com" \
  --data-urlencode 'filter={"operator":"AND","arguments":[{"operator":"ENDSWITH","leftArg":"email","rightArg":"@example.com"},{"operator":"==","leftArg":"subscription_state","rightArg":"SUBSCRIBED"}]}' \
  https://app.duo.pt/contact_list/{list_id}/segment

Resposta:

{
  "success": true,
  "data": {
    "contact_list": { "id": 1, "owner": 1, "name": "Example..." },
    "segment": {
      "id": 7,
      "list": 1,
      "name": "Subscribed at example.com",
      "filter": {
        "operator": "AND",
        "arguments": [
          {"operator": "ENDSWITH", "leftArg": "email", "rightArg": "@example.com"},
          {"operator": "==", "leftArg": "subscription_state", "rightArg": "SUBSCRIBED"}
        ]
      }
    },
    "success": true
  }
}

PUT /contact_list/<list>/segment/<segment>

Mesmo payload que o POST.

Envie a alteração como POST com x-verb=PUT (ver Encapsulamento de Verbos HTTP).

Devolve: A lista de contactos e o segmento editado.

Exemplo:

curl -u "username:api_key" -H "Accept: application/json" \
  -d "x-verb=PUT&name=Bouncing+contacts" \
  --data-urlencode 'filter={"operator":"==","leftArg":"bounce_state","rightArg":"true"}' \
  https://app.duo.pt/contact_list/{list_id}/segment/{segment_id}

Resposta:

{
  "success": true,
  "data": {
    "contact_list": { "id": 1, "owner": 1, "name": "Example..." },
    "segment": {
      "id": 7,
      "list": 1,
      "name": "Bouncing contacts",
      "filter": {"operator": "==", "leftArg": "bounce_state", "rightArg": "true"}
    },
    "success": true
  }
}

DELETE /contact_list/<list>/segment/<segment>

Payload: Sem payload.

Devolve: O segmento eliminado (em segment e em result).

Exemplo:

curl -u "username:api_key" -H "Accept: application/json" -X DELETE \
  https://app.duo.pt/contact_list/{list_id}/segment/{segment_id}

Resposta:

{
  "success": true,
  "data": {
    "contact_list": { "id": 1, "owner": 1, "name": "Example..." },
    "segment": {
      "id": 7,
      "list": 1,
      "name": "Bouncing contacts",
      "filter": {"operator": "==", "leftArg": "bounce_state", "rightArg": "true"}
    },
    "result": {
      "id": 7,
      "list": 1,
      "name": "Bouncing contacts",
      "filter": {"operator": "==", "leftArg": "bounce_state", "rightArg": "true"}
    }
  }
}