{
    "info": {
        "_postman_id": "mlc-v1-collection-001",
        "name": "MyLiveChat /v1 API",
        "description": "Curated Postman collection for the MyLiveChat /v1 surface. Drop this in Postman, set the {{token}} collection variable to your bearer token, and start exploring. Block 268.\n\nSee https://www.mylivechat.com/v1/docs.aspx for the full reference.",
        "schema": "https://schema.getpostman.com/json/collection/v2.1.0/collection.json"
    },
    "auth": {
        "type": "bearer",
        "bearer": [
            { "key": "token", "value": "{{token}}", "type": "string" }
        ]
    },
    "variable": [
        { "key": "base", "value": "https://www.mylivechat.com/v1/api.ashx", "description": "API base URL." },
        { "key": "token", "value": "mlc_REPLACE_ME", "description": "Bearer token from /dashboard/config_api_tokens.ascx." }
    ],
    "item": [
        {
            "name": "Read",
            "item": [
                {
                    "name": "whoami (token introspection)",
                    "request": { "method": "GET", "url": "{{base}}?resource=whoami", "description": "Validates the token; returns scopes + capabilities (csv_exporters + deployed schemas)." }
                },
                {
                    "name": "health (operational + adoption signals)",
                    "request": { "method": "GET", "url": "{{base}}?resource=health" }
                },
                {
                    "name": "heartbeat (unauth liveness)",
                    "request": { "method": "GET", "url": "{{base}}?resource=heartbeat" }
                },
                {
                    "name": "tickets (filterable)",
                    "request": { "method": "GET", "url": "{{base}}?resource=tickets&status=open&limit=25" }
                },
                {
                    "name": "ticket detail (?include=links)",
                    "request": { "method": "GET", "url": "{{base}}?resource=ticket&id=42&include=links,activity" }
                },
                {
                    "name": "customer rollup",
                    "request": { "method": "GET", "url": "{{base}}?resource=customer&email=alice@example.com" }
                },
                {
                    "name": "customer_identities (top-engaged)",
                    "request": { "method": "GET", "url": "{{base}}?resource=customer_identities&order_by=tickets&limit=25" }
                },
                {
                    "name": "ai_usage (today + MTD + 7d feature breakdown)",
                    "request": { "method": "GET", "url": "{{base}}?resource=ai_usage" }
                },
                {
                    "name": "ai_usage (30-day feature breakdown)",
                    "request": { "method": "GET", "url": "{{base}}?resource=ai_usage&days=30" }
                },
                {
                    "name": "ai_usage with per-day trend",
                    "request": { "method": "GET", "url": "{{base}}?resource=ai_usage&days=14&include=trend" }
                },
                {
                    "name": "ai_limits (per-tenant cap state)",
                    "request": { "method": "GET", "url": "{{base}}?resource=ai_limits" }
                },
                {
                    "name": "self_test (composite post-deploy gate)",
                    "request": { "method": "GET", "url": "{{base}}?resource=self_test" }
                },
                {
                    "name": "ai_usage_self_test (write+read round-trip)",
                    "request": { "method": "GET", "url": "{{base}}?resource=ai_usage_self_test" }
                },
                {
                    "name": "channel_self_test (read-only schema verify)",
                    "request": { "method": "GET", "url": "{{base}}?resource=channel_self_test" }
                },
                {
                    "name": "ai_limits PATCH (set monthly budget + action)",
                    "request": {
                        "method": "PATCH",
                        "header": [{ "key": "Content-Type", "value": "application/json" }],
                        "body": { "mode": "raw", "raw": "{ \"monthly_budget_usd\": 500.00, \"action\": \"soft\" }" },
                        "url": "{{base}}?resource=ai_limits"
                    }
                },
                {
                    "name": "ai_limits PATCH (clear budget cap)",
                    "request": {
                        "method": "PATCH",
                        "header": [{ "key": "Content-Type", "value": "application/json" }],
                        "body": { "mode": "raw", "raw": "{ \"monthly_budget_usd\": null }" },
                        "url": "{{base}}?resource=ai_limits"
                    }
                },
                {
                    "name": "ai_usage CSV (by feature)",
                    "request": { "method": "GET", "url": "{{base}}?resource=ai_usage&days=30&format=csv" }
                },
                {
                    "name": "csat summary + filters",
                    "request": { "method": "GET", "url": "{{base}}?resource=csat&days=30&score_max=2&include=trend" }
                },
                {
                    "name": "weekly_report (HTML)",
                    "request": { "method": "GET", "url": "{{base}}?resource=weekly_report&format=html" }
                },
                {
                    "name": "migrate_status (cutover progress)",
                    "request": { "method": "GET", "url": "{{base}}?resource=migrate_status" }
                },
                {
                    "name": "business_calendar (week + holidays + now)",
                    "request": { "method": "GET", "url": "{{base}}?resource=business_calendar" }
                },
                {
                    "name": "feature_flags",
                    "request": { "method": "GET", "url": "{{base}}?resource=feature_flags" }
                },
                {
                    "name": "agents (rotation roster + skills)",
                    "request": { "method": "GET", "url": "{{base}}?resource=agents" }
                },
                {
                    "name": "audit_log (last 7d)",
                    "request": { "method": "GET", "url": "{{base}}?resource=audit_log&days=7&limit=200" }
                }
            ]
        },
        {
            "name": "Write — Tickets",
            "item": [
                {
                    "name": "Create ticket",
                    "request": {
                        "method": "POST",
                        "header": [{ "key": "Content-Type", "value": "application/json" }],
                        "body": { "mode": "raw", "raw": "{\n  \"subject\": \"Cannot log in\",\n  \"channel\": \"email\",\n  \"priority\": \"normal\",\n  \"requester_name\": \"Alice Example\",\n  \"requester_email\": \"alice@example.com\",\n  \"initial_comment\": \"Reset link from yesterday didn't work.\",\n  \"required_skills\": [\"billing\", \"english\"]\n}" },
                        "url": "{{base}}?resource=tickets"
                    }
                },
                {
                    "name": "Reply to ticket",
                    "request": {
                        "method": "POST",
                        "header": [{ "key": "Content-Type", "value": "application/json" }],
                        "body": { "mode": "raw", "raw": "{\n  \"ticket_id\": 42,\n  \"body_markdown\": \"Sent a fresh password-reset link. Let me know if it works.\",\n  \"is_internal\": false\n}" },
                        "url": "{{base}}?resource=ticket_reply"
                    }
                },
                {
                    "name": "Patch ticket (resolve)",
                    "request": {
                        "method": "PATCH",
                        "header": [{ "key": "Content-Type", "value": "application/json" }],
                        "body": { "mode": "raw", "raw": "{ \"id\": 42, \"status\": \"resolved\" }" },
                        "url": "{{base}}?resource=ticket"
                    }
                },
                {
                    "name": "Bulk action (resolve many)",
                    "request": {
                        "method": "POST",
                        "header": [{ "key": "Content-Type", "value": "application/json" }],
                        "body": { "mode": "raw", "raw": "{ \"ticket_ids\": [4711, 4712, 4733], \"action\": \"resolve\" }" },
                        "url": "{{base}}?resource=tickets_bulk"
                    }
                }
            ]
        },
        {
            "name": "Write — Migration",
            "item": [
                {
                    "name": "tickets_import (dry-run)",
                    "request": {
                        "method": "POST",
                        "header": [{ "key": "Content-Type", "value": "text/csv" }],
                        "body": { "mode": "raw", "raw": "Subject,Status,Priority,Requester email,Description\nLogin issue,open,normal,alice@example.com,Cannot log in" },
                        "url": "{{base}}?resource=tickets_import&dry_run=1"
                    }
                },
                {
                    "name": "kb_import (dry-run)",
                    "request": {
                        "method": "POST",
                        "header": [{ "key": "Content-Type", "value": "text/csv" }],
                        "body": { "mode": "raw", "raw": "Title,Body,Section\nHow to reset your password,Open the login page and click 'Forgot password'.,Account" },
                        "url": "{{base}}?resource=kb_import&dry_run=1"
                    }
                },
                {
                    "name": "macros_import (dry-run)",
                    "request": {
                        "method": "POST",
                        "header": [{ "key": "Content-Type", "value": "text/csv" }],
                        "body": { "mode": "raw", "raw": "Title,Body\nWelcome,Hi there — thanks for reaching out!" },
                        "url": "{{base}}?resource=macros_import&dry_run=1"
                    }
                },
                {
                    "name": "apply_ticket_tags_bulk",
                    "request": {
                        "method": "POST",
                        "header": [{ "key": "Content-Type", "value": "text/csv" }],
                        "body": { "mode": "raw", "raw": "ticket_id,tag\n4711,billing\n4711,refund\n4712,priority-customer" },
                        "url": "{{base}}?resource=apply_ticket_tags_bulk"
                    }
                }
            ]
        },
        {
            "name": "Write — Channels",
            "item": [
                {
                    "name": "Bind WhatsApp handle (by email)",
                    "request": {
                        "method": "POST",
                        "header": [{ "key": "Content-Type", "value": "application/json" }],
                        "body": { "mode": "raw", "raw": "{ \"email\": \"alice@example.com\", \"channel\": \"whatsapp\", \"external_user_id\": \"wa+15551234567\", \"display_handle\": \"Alice (WhatsApp)\" }" },
                        "url": "{{base}}?resource=bind_channel"
                    }
                },
                {
                    "name": "Bind Messenger handle (by identity_id)",
                    "request": {
                        "method": "POST",
                        "header": [{ "key": "Content-Type", "value": "application/json" }],
                        "body": { "mode": "raw", "raw": "{ \"identity_id\": 4231, \"channel\": \"messenger\", \"external_user_id\": \"PSID-9876543210\" }" },
                        "url": "{{base}}?resource=bind_channel"
                    }
                },
                {
                    "name": "Unbind WhatsApp handle (DELETE)",
                    "request": {
                        "method": "DELETE",
                        "url": "{{base}}?resource=bind_channel&channel=whatsapp&external_user_id=wa+15551234567"
                    }
                },
                {
                    "name": "Bulk-bind channel handles (CSV)",
                    "request": {
                        "method": "POST",
                        "header": [{ "key": "Content-Type", "value": "text/csv" }],
                        "body": { "mode": "raw", "raw": "channel,external_user_id,email,display_handle\nwhatsapp,wa+15551234567,alice@example.com,Alice\nmessenger,PSID-9876543210,alice@example.com,\nsms,+15551234567,,\n" },
                        "url": "{{base}}?resource=bind_channels_bulk"
                    }
                },
                {
                    "name": "Bulk-bind dry-run (CSV preview)",
                    "request": {
                        "method": "POST",
                        "header": [{ "key": "Content-Type", "value": "text/csv" }],
                        "body": { "mode": "raw", "raw": "channel,external_user_id,email,display_handle\nwhatsapp,wa+15551234567,alice@example.com,Alice\n" },
                        "url": "{{base}}?resource=bind_channels_bulk&dry_run=1"
                    }
                }
            ]
        },
        {
            "name": "Write — Portal",
            "item": [
                {
                    "name": "Issue portal token",
                    "request": {
                        "method": "POST",
                        "header": [{ "key": "Content-Type", "value": "application/json" }],
                        "body": { "mode": "raw", "raw": "{ \"requester_email\": \"alice@example.com\", \"expiry_days\": 30 }" },
                        "url": "{{base}}?resource=portal_token"
                    }
                },
                {
                    "name": "Revoke portal token",
                    "request": { "method": "DELETE", "url": "{{base}}?resource=portal_token&id=42" }
                },
                {
                    "name": "List portal tokens (audit)",
                    "request": { "method": "GET", "url": "{{base}}?resource=portal_tokens&limit=50" }
                }
            ]
        },
        {
            "name": "Write — Calendar",
            "item": [
                {
                    "name": "PATCH weekly hours",
                    "request": {
                        "method": "PATCH",
                        "header": [{ "key": "Content-Type", "value": "application/json" }],
                        "body": { "mode": "raw", "raw": "{\n  \"week\": [\n    { \"day_of_week\": 1, \"open_minute\": 540, \"close_minute\": 1020 },\n    { \"day_of_week\": 2, \"open_minute\": 540, \"close_minute\": 1020 },\n    { \"day_of_week\": 3, \"open_minute\": 540, \"close_minute\": 1020 },\n    { \"day_of_week\": 4, \"open_minute\": 540, \"close_minute\": 1020 },\n    { \"day_of_week\": 5, \"open_minute\": 540, \"close_minute\": 1020 }\n  ]\n}" },
                        "url": "{{base}}?resource=business_calendar"
                    }
                },
                {
                    "name": "Add holiday (preset bundle)",
                    "request": { "method": "POST", "url": "{{base}}?resource=business_calendar_holiday&preset=us_federal&year=2026" }
                }
            ]
        },
        {
            "name": "CSV exports (sample subset)",
            "item": [
                {
                    "name": "tickets CSV",
                    "request": { "method": "GET", "url": "{{base}}?resource=tickets&format=csv&limit=200" }
                },
                {
                    "name": "feature_flags CSV (config-as-code)",
                    "request": { "method": "GET", "url": "{{base}}?resource=feature_flags&format=csv" }
                },
                {
                    "name": "business_calendar CSV",
                    "request": { "method": "GET", "url": "{{base}}?resource=business_calendar&format=csv" }
                },
                {
                    "name": "sla_policy CSV",
                    "request": { "method": "GET", "url": "{{base}}?resource=sla_policy&format=csv" }
                },
                {
                    "name": "customer_identities CSV (top-engaged)",
                    "request": { "method": "GET", "url": "{{base}}?resource=customer_identities&order_by=tickets&format=csv" }
                }
            ]
        }
    ]
}
