{
  "info": {
    "name": "Whitelabel API",
    "description": "Colecao pronta para testar login, send, templates, webhook e settings.",
    "schema": "https://schema.getpostman.com/json/collection/v2.1.0/collection.json"
  },
  "variable": [
    {
      "key": "baseUrl",
      "value": "https://api-gateway.apiwhitelabel.com"
    },
    {
      "key": "token",
      "value": "SEU_TOKEN"
    },
    {
      "key": "campaignId",
      "value": "cmp_123"
    },
    {
      "key": "templateId",
      "value": "tpl_123"
    },
    {
      "key": "webhookSecret",
      "value": "whsec_123"
    }
  ],
  "item": [
    {
      "name": "login",
      "request": {
        "method": "POST",
        "header": [
          {
            "key": "Content-Type",
            "value": "application/json"
          }
        ],
        "body": {
          "mode": "raw",
          "raw": "{\n  \"email\": \"dev@suaempresa.com\",\n  \"password\": \"SUA_SENHA\"\n}"
        },
        "url": {
          "raw": "{{baseUrl}}/v1/auth/login",
          "host": [
            "{{baseUrl}}"
          ],
          "path": [
            "v1",
            "auth",
            "login"
          ]
        }
      },
      "response": [
        {
          "name": "response 200",
          "status": "OK",
          "code": 200,
          "_postman_previewlanguage": "json",
          "header": [],
          "cookie": [],
          "body": "{\n  \"token\": \"eyJhbGciOiJIUzI1NiIsInR5cCI...\",\n  \"token_type\": \"Bearer\",\n  \"expires_in\": 86400,\n  \"account\": \"acc_123\"\n}"
        },
        {
          "name": "error 401",
          "status": "Unauthorized",
          "code": 401,
          "_postman_previewlanguage": "json",
          "header": [],
          "cookie": [],
          "body": "{\n  \"error\": {\n    \"code\": \"invalid_credentials\",\n    \"message\": \"E-mail ou senha inválidos.\"\n  },\n  \"request\": \"req_3fa120bb\"\n}"
        }
      ]
    },
    {
      "name": "api standards",
      "description": "Referências de autenticação, rate limit e formato de erro.",
      "item": [
        {
          "name": "auth header sample",
          "request": {
            "method": "GET",
            "header": [
              {
                "key": "Authorization",
                "value": "Bearer {{token}}"
              }
            ],
            "url": {
              "raw": "{{baseUrl}}/v1/settings",
              "host": [
                "{{baseUrl}}"
              ],
              "path": [
                "v1",
                "settings"
              ]
            }
          },
          "response": [
            {
              "name": "error 401 token inválido",
              "status": "Unauthorized",
              "code": 401,
              "_postman_previewlanguage": "json",
              "header": [],
              "cookie": [],
              "body": "{\n  \"error\": {\n    \"code\": \"invalid_token\",\n    \"message\": \"Token inválido ou expirado.\"\n  },\n  \"request\": \"req_0f77d9ab\"\n}"
            }
          ]
        },
        {
          "name": "rate limit sample (429)",
          "request": {
            "method": "POST",
            "header": [
              {
                "key": "Authorization",
                "value": "Bearer {{token}}"
              },
              {
                "key": "Content-Type",
                "value": "application/json"
              }
            ],
            "body": {
              "mode": "raw",
              "raw": "{\n  \"to\": \"5511999999999\",\n  \"message\": \"Teste de limite\"\n}"
            },
            "url": {
              "raw": "{{baseUrl}}/v1/messages/send",
              "host": [
                "{{baseUrl}}"
              ],
              "path": [
                "v1",
                "messages",
                "send"
              ]
            }
          },
          "response": [
            {
              "name": "error 429",
              "status": "Too Many Requests",
              "code": 429,
              "_postman_previewlanguage": "json",
              "header": [
                {
                  "key": "X-RateLimit-Limit",
                  "value": "120"
                },
                {
                  "key": "X-RateLimit-Remaining",
                  "value": "0"
                },
                {
                  "key": "X-RateLimit-Reset",
                  "value": "1715301040"
                }
              ],
              "cookie": [],
              "body": "{\n  \"error\": {\n    \"code\": \"rate_limited\",\n    \"message\": \"Muitas requisições, tente novamente.\"\n  },\n  \"request\": \"req_f77a1b8c\"\n}"
            }
          ]
        }
      ]
    },
    {
      "name": "sends",
      "item": [
        {
          "name": "send with campaign",
          "request": {
            "method": "POST",
            "header": [
              {
                "key": "Authorization",
                "value": "Bearer {{token}}"
              },
              {
                "key": "Content-Type",
                "value": "application/json"
              }
            ],
            "body": {
              "mode": "raw",
              "raw": "{\n  \"to\": \"5511999999999\",\n  \"message\": \"Ola! Seu pedido foi confirmado.\",\n  \"campaign\": \"{{campaignId}}\"\n}"
            },
            "url": {
              "raw": "{{baseUrl}}/v1/messages/send",
              "host": [
                "{{baseUrl}}"
              ],
              "path": [
                "v1",
                "messages",
                "send"
              ]
            }
          },
          "response": [
            {
              "name": "response 202",
              "status": "Accepted",
              "code": 202,
              "_postman_previewlanguage": "json",
              "header": [],
              "cookie": [],
              "body": "{\n  \"message\": \"msg_89231\",\n  \"status\": \"queued\",\n  \"to\": \"5511999999999\",\n  \"campaign\": \"{{campaignId}}\",\n  \"request\": \"req_d1aa93bc\"\n}"
            }
          ]
        },
        {
          "name": "sms simple",
          "request": {
            "method": "POST",
            "header": [
              {
                "key": "Authorization",
                "value": "Bearer {{token}}"
              },
              {
                "key": "Content-Type",
                "value": "application/json"
              }
            ],
            "body": {
              "mode": "raw",
              "raw": "{\n  \"to\": \"5511999999999\",\n  \"message\": \"Ola! Seu pedido foi confirmado.\"\n}"
            },
            "url": {
              "raw": "{{baseUrl}}/v1/messages/send",
              "host": [
                "{{baseUrl}}"
              ],
              "path": [
                "v1",
                "messages",
                "send"
              ]
            }
          },
          "response": [
            {
              "name": "response 202",
              "status": "Accepted",
              "code": 202,
              "_postman_previewlanguage": "json",
              "header": [],
              "cookie": [],
              "body": "{\n  \"message\": \"msg_90311\",\n  \"status\": \"queued\",\n  \"to\": \"5511999999999\",\n  \"request\": \"req_2ab04fa9\"\n}"
            },
            {
              "name": "error 422",
              "status": "Unprocessable Entity",
              "code": 422,
              "_postman_previewlanguage": "json",
              "header": [],
              "cookie": [],
              "body": "{\n  \"error\": {\n    \"code\": \"validation_error\",\n    \"message\": \"Campo to inválido\",\n    \"details\": [\n      { \"field\": \"to\", \"issue\": \"must be E.164\" }\n    ]\n  },\n  \"request\": \"req_8ab31dc4\"\n}"
            }
          ]
        }
      ]
    },
    {
      "name": "campaigns",
      "description": "Criação e gestão de campanhas. Campos principais do payload: name, description, webhook, delay, template.",
      "item": [
        {
          "name": "create",
          "request": {
            "method": "POST",
            "header": [
              {
                "key": "Authorization",
                "value": "Bearer {{token}}"
              },
              {
                "key": "Content-Type",
                "value": "application/json"
              }
            ],
            "body": {
              "mode": "raw",
              "raw": "{\n  \"name\": \"campanha_boas_vindas\",\n  \"description\": \"Fluxo inicial para novos contatos\",\n  \"webhook\": \"https://suaempresa.com/webhook/campaign-events\",\n  \"delay\": 60,\n  \"template\": \"tpl_boas_vindas\"\n}"
            },
            "url": {
              "raw": "{{baseUrl}}/v1/campaigns",
              "host": [
                "{{baseUrl}}"
              ],
              "path": [
                "v1",
                "campaigns"
              ]
            }
          },
          "response": [
            {
              "name": "response 201",
              "status": "Created",
              "code": 201,
              "_postman_previewlanguage": "json",
              "header": [],
              "cookie": [],
              "body": "{\n  \"campaign\": \"{{campaignId}}\",\n  \"name\": \"campanha_boas_vindas\",\n  \"status\": \"scheduled\",\n  \"created_at\": \"2026-05-09T03:11:22Z\",\n  \"request\": \"req_4ec08f1a\"\n}"
            }
          ]
        },
        {
          "name": "update",
          "request": {
            "method": "PATCH",
            "header": [
              {
                "key": "Authorization",
                "value": "Bearer {{token}}"
              },
              {
                "key": "Content-Type",
                "value": "application/json"
              }
            ],
            "body": {
              "mode": "raw",
              "raw": "{\n  \"description\": \"Campanha atualizada para clientes premium\",\n  \"delay\": 90,\n  \"template\": \"{{templateId}}\"\n}"
            },
            "url": {
              "raw": "{{baseUrl}}/v1/campaigns/{{campaignId}}",
              "host": [
                "{{baseUrl}}"
              ],
              "path": [
                "v1",
                "campaigns",
                "{{campaignId}}"
              ]
            }
          }
        },
        {
          "name": "delete",
          "request": {
            "method": "DELETE",
            "header": [
              {
                "key": "Authorization",
                "value": "Bearer {{token}}"
              }
            ],
            "url": {
              "raw": "{{baseUrl}}/v1/campaigns/{{campaignId}}",
              "host": [
                "{{baseUrl}}"
              ],
              "path": [
                "v1",
                "campaigns",
                "{{campaignId}}"
              ]
            }
          }
        }
      ]
    },
    {
      "name": "contacts",
      "description": "Gestão de contatos da campanha (manual e importação).",
      "item": [
        {
          "name": "create one",
          "request": {
            "method": "POST",
            "header": [
              {
                "key": "Authorization",
                "value": "Bearer {{token}}"
              },
              {
                "key": "Content-Type",
                "value": "application/json"
              }
            ],
            "body": {
              "mode": "raw",
              "raw": "{\n  \"phone\": \"5511999999999\",\n  \"name\": \"Maria Souza\",\n  \"email\": \"maria@suaempresa.com\"\n}"
            },
            "url": {
              "raw": "{{baseUrl}}/v1/campaigns/{{campaignId}}/contacts",
              "host": [
                "{{baseUrl}}"
              ],
              "path": [
                "v1",
                "campaigns",
                "{{campaignId}}",
                "contacts"
              ]
            }
          },
          "response": [
            {
              "name": "response 201",
              "status": "Created",
              "code": 201,
              "_postman_previewlanguage": "json",
              "header": [],
              "cookie": [],
              "body": "{\n  \"contact\": \"ctt_5532\",\n  \"campaign\": \"{{campaignId}}\",\n  \"phone\": \"5511999999999\",\n  \"name\": \"Maria Souza\",\n  \"request\": \"req_0bce198f\"\n}"
            }
          ]
        },
        {
          "name": "upload contacts (csv/xlsx)",
          "request": {
            "method": "POST",
            "header": [
              {
                "key": "Authorization",
                "value": "Bearer {{token}}"
              }
            ],
            "body": {
              "mode": "formdata",
              "formdata": [
                {
                  "key": "file",
                  "type": "file",
                  "src": ""
                },
                {
                  "key": "file_format",
                  "value": "csv",
                  "type": "text"
                },
                {
                  "key": "phone_column",
                  "value": "phone",
                  "type": "text"
                },
                {
                  "key": "name_column",
                  "value": "name",
                  "type": "text"
                },
                {
                  "key": "email_column",
                  "value": "email",
                  "type": "text"
                },
                {
                  "key": "document_column",
                  "value": "document",
                  "type": "text"
                },
                {
                  "key": "tags_column",
                  "value": "tags",
                  "type": "text"
                },
                {
                  "key": "delimiter",
                  "value": ",",
                  "type": "text"
                },
                {
                  "key": "has_header",
                  "value": "true",
                  "type": "text"
                }
              ]
            },
            "url": {
              "raw": "{{baseUrl}}/v1/campaigns/{{campaignId}}/contacts/import",
              "host": [
                "{{baseUrl}}"
              ],
              "path": [
                "v1",
                "campaigns",
                "{{campaignId}}",
                "contacts",
                "import"
              ]
            }
          },
          "response": [
            {
              "name": "response 202",
              "status": "Accepted",
              "code": 202,
              "_postman_previewlanguage": "json",
              "header": [],
              "cookie": [],
              "body": "{\n  \"job\": \"job_imp_9012\",\n  \"status\": \"processing\",\n  \"campaign\": \"{{campaignId}}\",\n  \"received_file\": \"contatos.csv\",\n  \"request\": \"req_6d311be2\"\n}"
            }
          ]
        }
      ]
    },
    {
      "name": "templates",
      "item": [
        {
          "name": "get",
          "request": {
            "method": "GET",
            "header": [
              {
                "key": "Authorization",
                "value": "Bearer {{token}}"
              }
            ],
            "url": {
              "raw": "{{baseUrl}}/v1/templates?page=1&per_page=20",
              "host": [
                "{{baseUrl}}"
              ],
              "path": [
                "v1",
                "templates"
              ],
              "query": [
                {
                  "key": "page",
                  "value": "1"
                },
                {
                  "key": "per_page",
                  "value": "20"
                }
              ]
            }
          },
          "response": [
            {
              "name": "response 200",
              "status": "OK",
              "code": 200,
              "_postman_previewlanguage": "json",
              "header": [],
              "cookie": [],
              "body": "{\n  \"data\": [\n    {\n      \"template\": \"{{templateId}}\",\n      \"name\": \"boas_vindas\",\n      \"content\": \"Olá {{nome}}\"\n    }\n  ],\n  \"page\": 1,\n  \"per_page\": 20,\n  \"total\": 1,\n  \"request\": \"req_aa12fd73\"\n}"
            }
          ]
        },
        {
          "name": "create",
          "request": {
            "method": "POST",
            "header": [
              {
                "key": "Authorization",
                "value": "Bearer {{token}}"
              },
              {
                "key": "Content-Type",
                "value": "application/json"
              }
            ],
            "body": {
              "mode": "raw",
              "raw": "{\n  \"name\": \"boas_vindas\",\n  \"content\": \"Ola {{nome}}, bem-vindo!\"\n}"
            },
            "url": {
              "raw": "{{baseUrl}}/v1/templates",
              "host": [
                "{{baseUrl}}"
              ],
              "path": [
                "v1",
                "templates"
              ]
            }
          }
        },
        {
          "name": "update",
          "request": {
            "method": "PATCH",
            "header": [
              {
                "key": "Authorization",
                "value": "Bearer {{token}}"
              },
              {
                "key": "Content-Type",
                "value": "application/json"
              }
            ],
            "body": {
              "mode": "raw",
              "raw": "{\n  \"content\": \"Novo conteudo do template\"\n}"
            },
            "url": {
              "raw": "{{baseUrl}}/v1/templates/{{templateId}}",
              "host": [
                "{{baseUrl}}"
              ],
              "path": [
                "v1",
                "templates",
                "{{templateId}}"
              ]
            }
          }
        },
        {
          "name": "delete",
          "request": {
            "method": "DELETE",
            "header": [
              {
                "key": "Authorization",
                "value": "Bearer {{token}}"
              }
            ],
            "url": {
              "raw": "{{baseUrl}}/v1/templates/{{templateId}}",
              "host": [
                "{{baseUrl}}"
              ],
              "path": [
                "v1",
                "templates",
                "{{templateId}}"
              ]
            }
          }
        }
      ]
    },
    {
      "name": "webhook",
      "request": {
        "method": "POST",
        "header": [
          {
            "key": "Authorization",
            "value": "Bearer {{token}}"
          },
          {
            "key": "Content-Type",
            "value": "application/json"
          }
        ],
        "body": {
          "mode": "raw",
          "raw": "{\n  \"url\": \"https://suaempresa.com/webhook/viasms\",\n  \"events\": [\"message.delivered\", \"message.failed\", \"message.replied\"]\n}"
        },
        "url": {
          "raw": "{{baseUrl}}/v1/webhooks",
          "host": [
            "{{baseUrl}}"
          ],
          "path": [
            "v1",
            "webhooks"
          ]
        }
      },
      "response": [
        {
          "name": "response 201",
          "status": "Created",
          "code": 201,
          "_postman_previewlanguage": "json",
          "header": [],
          "cookie": [],
          "body": "{\n  \"webhook\": \"whk_991\",\n  \"url\": \"https://suaempresa.com/webhook/viasms\",\n  \"secret_hint\": \"{{webhookSecret}}\",\n  \"request\": \"req_7df1a18b\"\n}"
        },
        {
          "name": "example de callback",
          "originalRequest": {
            "method": "POST",
            "header": [],
            "url": {
              "raw": "{{baseUrl}}/v1/webhooks"
            }
          },
          "status": "OK",
          "code": 200,
          "_postman_previewlanguage": "json",
          "header": [],
          "cookie": [],
          "body": "{\n  \"event\": \"message.delivered\",\n  \"message\": \"msg_89231\",\n  \"to\": \"5511999999999\",\n  \"status\": \"delivered\",\n  \"delivered_at\": \"2026-05-09T02:58:40Z\"\n}"
        },
        {
          "name": "error 401 invalid signature",
          "status": "Unauthorized",
          "code": 401,
          "_postman_previewlanguage": "json",
          "header": [],
          "cookie": [],
          "body": "{\n  \"error\": {\n    \"code\": \"invalid_signature\",\n    \"message\": \"Assinatura do webhook inválida.\"\n  },\n  \"request\": \"req_131a79cc\"\n}"
        }
      ]
    },
    {
      "name": "settings",
      "item": [
        {
          "name": "get",
          "request": {
            "method": "GET",
            "header": [
              {
                "key": "Authorization",
                "value": "Bearer {{token}}"
              }
            ],
            "url": {
              "raw": "{{baseUrl}}/v1/settings",
              "host": [
                "{{baseUrl}}"
              ],
              "path": [
                "v1",
                "settings"
              ]
            }
          },
          "response": [
            {
              "name": "response 200",
              "status": "OK",
              "code": 200,
              "_postman_previewlanguage": "json",
              "header": [],
              "cookie": [],
              "body": "{\n  \"account\": \"acc_123\",\n  \"timezone\": \"America/Sao_Paulo\",\n  \"default_sender\": \"Whitelabel\",\n  \"two_factor_enabled\": true,\n  \"request\": \"req_12ca02f2\"\n}"
            }
          ]
        }
      ]
    }
  ]
}