{
  "info": {
    "name": "Apollo Admin API",
    "schema": "https://schema.getpostman.com/json/collection/v2.1.0/collection.json"
  },
  "variable": [
    {"key": "baseUrl", "value": "https://admin-api.local.io"},
    {"key": "bearerToken", "value": ""},
    {"key": "refreshToken", "value": ""},
    {"key": "orgId", "value": "acme-corp"},
    {"key": "userId", "value": "123"},
    {"key": "serviceId", "value": "google"},
    {"key": "editionId", "value": "brandbuilder"},
    {"key": "oneTimeUserToken", "value": ""},
    {"key": "oneTimeLoginToken", "value": ""},
    {"key": "apiToken", "value": ""},
    {"key": "apiTokenId", "value": ""}
  ],
  "item": [
    {
      "name": "Auth Login",
      "request": {
        "method": "POST",
        "header": [
          {"key": "Content-Type", "value": "application/json"}
        ],
        "url": "{{baseUrl}}/auth/login",
        "body": {
          "mode": "raw",
          "raw": "{\n  \"email\": \"admin@example.com\",\n  \"password\": \"secret\"\n}"
        }
      },
      "event": [
        {
          "listen": "test",
          "script": {
            "type": "text/javascript",
            "exec": [
              "const json = pm.response.json();",
              "if (json && json.access_token) {",
              "  pm.collectionVariables.set('bearerToken', json.access_token);",
              "}",
              "if (json && json.refresh_token) {",
              "  pm.collectionVariables.set('refreshToken', json.refresh_token);",
              "}"
            ]
          }
        }
      ]
    },
    {
      "name": "Auth Refresh",
      "request": {
        "method": "POST",
        "header": [
          {"key": "Content-Type", "value": "application/json"}
        ],
        "url": "{{baseUrl}}/auth/refresh",
        "body": {
          "mode": "raw",
          "raw": "{\n  \"grant_type\": \"refresh_token\",\n  \"refresh_token\": \"{{refreshToken}}\"\n}"
        }
      },
      "event": [
        {
          "listen": "test",
          "script": {
            "type": "text/javascript",
            "exec": [
              "const json = pm.response.json();",
              "if (json && json.access_token) {",
              "  pm.collectionVariables.set('bearerToken', json.access_token);",
              "}",
              "if (json && json.refresh_token) {",
              "  pm.collectionVariables.set('refreshToken', json.refresh_token);",
              "}"
            ]
          }
        }
      ]
    },
    {
      "name": "API Token Create",
      "request": {
        "method": "POST",
        "header": [
          {"key": "Authorization", "value": "Bearer {{bearerToken}}"},
          {"key": "Content-Type", "value": "application/json"}
        ],
        "url": "{{baseUrl}}/v1/api-token/create",
        "body": {
          "mode": "raw",
          "raw": "{\n  \"name\": \"Nightly Cron\",\n  \"expires_in_days\": 90\n}"
        }
      },
      "event": [
        {
          "listen": "test",
          "script": {
            "type": "text/javascript",
            "exec": [
              "const json = pm.response.json();",
              "if (json && json.token) { pm.collectionVariables.set('apiToken', json.token); }",
              "if (json && json.id) { pm.collectionVariables.set('apiTokenId', String(json.id)); }"
            ]
          }
        }
      ]
    },
    {
      "name": "API Token List",
      "request": {
        "method": "GET",
        "header": [
          {"key": "Authorization", "value": "Bearer {{bearerToken}}"}
        ],
        "url": "{{baseUrl}}/v1/api-token"
      }
    },
    {
      "name": "API Token Revoke",
      "request": {
        "method": "DELETE",
        "header": [
          {"key": "Authorization", "value": "Bearer {{bearerToken}}"}
        ],
        "url": "{{baseUrl}}/v1/api-token/revoke?id={{apiTokenId}}"
      }
    },
    {
      "name": "Stats (API Token)",
      "request": {
        "method": "GET",
        "header": [
          {"key": "X-Api-Token", "value": "{{apiToken}}"}
        ],
        "url": "{{baseUrl}}/v1/stats"
      }
    },
    {
      "name": "One-Time Login Generate",
      "request": {
        "method": "GET",
        "header": [
          {"key": "Authorization", "value": "Bearer {{bearerToken}}"}
        ],
        "url": "{{baseUrl}}/auth/one-time-login/{{userId}}"
      },
      "event": [
        {
          "listen": "test",
          "script": {
            "type": "text/javascript",
            "exec": [
              "const json = pm.response.json();",
              "if (json && json.userToken) {",
              "  pm.collectionVariables.set('oneTimeUserToken', json.userToken);",
              "}",
              "if (json && json.token) {",
              "  pm.collectionVariables.set('oneTimeLoginToken', json.token);",
              "}"
            ]
          }
        }
      ]
    },
    {
      "name": "One-Time Login Consume",
      "request": {
        "method": "GET",
        "header": [],
        "url": "{{baseUrl}}/auth/one-time-login/{{oneTimeUserToken}}/{{oneTimeLoginToken}}?d=7"
      }
    },
    {
      "name": "List Editions",
      "request": {
        "method": "GET",
        "header": [
          {"key": "Authorization", "value": "Bearer {{bearerToken}}"}
        ],
        "url": "{{baseUrl}}/api/editions?with_active_subscriptions=true"
      }
    },
    {
      "name": "List Subscriptions By Edition",
      "request": {
        "method": "GET",
        "header": [
          {"key": "Authorization", "value": "Bearer {{bearerToken}}"}
        ],
        "url": "{{baseUrl}}/api/editions/{{editionId}}/subscriptions?signup_form=true"
      }
    },
    {
      "name": "List Subscriptions",
      "request": {
        "method": "GET",
        "header": [
          {"key": "Authorization", "value": "Bearer {{bearerToken}}"}
        ],
        "url": "{{baseUrl}}/api/subscriptions"
      }
    },
    {
      "name": "Get Stats",
      "request": {
        "method": "GET",
        "header": [
          {"key": "Authorization", "value": "Bearer {{bearerToken}}"}
        ],
        "url": "{{baseUrl}}/v1/stats"
      }
    },
    {
      "name": "Get Me",
      "request": {
        "method": "GET",
        "header": [
          {"key": "Authorization", "value": "Bearer {{bearerToken}}"}
        ],
        "url": "{{baseUrl}}/v1/me"
      }
    },
    {
      "name": "List Accounts",
      "request": {
        "method": "GET",
        "header": [
          {"key": "Authorization", "value": "Bearer {{bearerToken}}"}
        ],
        "url": "{{baseUrl}}/v1/account"
      }
    },
    {
      "name": "Export Accounts CSV",
      "request": {
        "method": "GET",
        "header": [
          {"key": "Authorization", "value": "Bearer {{bearerToken}}"}
        ],
        "url": "{{baseUrl}}/v1/account/export"
      }
    },
    {
      "name": "Get Account",
      "request": {
        "method": "GET",
        "header": [
          {"key": "Authorization", "value": "Bearer {{bearerToken}}"}
        ],
        "url": "{{baseUrl}}/v1/account/{{orgId}}"
      }
    },
    {
      "name": "Create Account",
      "request": {
        "method": "POST",
        "header": [
          {"key": "Authorization", "value": "Bearer {{bearerToken}}"},
          {"key": "Content-Type", "value": "application/json"}
        ],
        "url": "{{baseUrl}}/v1/account",
        "body": {
          "mode": "raw",
          "raw": "{\n  \"owner_email\": \"owner@example.com\",\n  \"owner_password\": \"S3cret!\",\n  \"owner_fname\": \"Ava\",\n  \"owner_lname\": \"Nguyen\",\n  \"company\": \"Acme Corp\",\n  \"subscription_id\": \"pro\",\n  \"ui_version\": 3\n}"
        }
      }
    },
    {
      "name": "Create Account User",
      "request": {
        "method": "POST",
        "header": [
          {"key": "Authorization", "value": "Bearer {{bearerToken}}"},
          {"key": "Content-Type", "value": "application/json"}
        ],
        "url": "{{baseUrl}}/v1/account/{{orgId}}/users",
        "body": {
          "mode": "raw",
          "raw": "{\n  \"pri_email\": \"user@example.com\",\n  \"password\": \"S3cret!\",\n  \"fname\": \"Ava\",\n  \"lname\": \"Nguyen\",\n  \"roles\": [\"user\"]\n}"
        }
      }
    },
    {
      "name": "Update Account User",
      "request": {
        "method": "PATCH",
        "header": [
          {"key": "Authorization", "value": "Bearer {{bearerToken}}"},
          {"key": "Content-Type", "value": "application/json"}
        ],
        "url": "{{baseUrl}}/v1/account/{{orgId}}/users/{{userId}}",
        "body": {
          "mode": "raw",
          "raw": "{\n  \"name\": \"Nguyen, Ava\",\n  \"roles\": [\"user\", \"manager\"],\n  \"active\": 1\n}"
        }
      }
    },
    {
      "name": "Update Account",
      "request": {
        "method": "PATCH",
        "header": [
          {"key": "Authorization", "value": "Bearer {{bearerToken}}"},
          {"key": "Content-Type", "value": "application/json"}
        ],
        "url": "{{baseUrl}}/v1/account/{{orgId}}",
        "body": {
          "mode": "raw",
          "raw": "{\n  \"active\": 1,\n  \"test\": 0\n}"
        }
      }
    },
    {
      "name": "List Booking Link Templates",
      "request": {
        "method": "GET",
        "header": [
          {"key": "Authorization", "value": "Bearer {{bearerToken}}"}
        ],
        "url": "{{baseUrl}}/v1/account/{{orgId}}/booking-link-templates"
      }
    },
    {
      "name": "Create Booking Links",
      "request": {
        "method": "POST",
        "header": [
          {"key": "Authorization", "value": "Bearer {{bearerToken}}"},
          {"key": "Content-Type", "value": "application/json"}
        ],
        "url": "{{baseUrl}}/v1/account/{{orgId}}/booking-links",
        "body": {
          "mode": "raw",
          "raw": "{\n  \"template_id\": 123,\n  \"user_ids\": [456, 789]\n}"
        }
      }
    },
    {
      "name": "List Users",
      "request": {
        "method": "GET",
        "header": [
          {"key": "Authorization", "value": "Bearer {{bearerToken}}"}
        ],
        "url": "{{baseUrl}}/v1/user"
      }
    },
    {
      "name": "User Service Connections",
      "request": {
        "method": "GET",
        "header": [
          {"key": "Authorization", "value": "Bearer {{bearerToken}}"}
        ],
        "url": "{{baseUrl}}/v1/user/{{userId}}/service-connections"
      }
    },
    {
      "name": "User Service History",
      "request": {
        "method": "GET",
        "header": [
          {"key": "Authorization", "value": "Bearer {{bearerToken}}"}
        ],
        "url": "{{baseUrl}}/v1/user/{{userId}}/service-history/{{serviceId}}"
      }
    },
    {
      "name": "User Appointments",
      "request": {
        "method": "GET",
        "header": [
          {"key": "Authorization", "value": "Bearer {{bearerToken}}"}
        ],
        "url": "{{baseUrl}}/v1/user/{{userId}}/appointments"
      }
    },
    {
      "name": "Get User",
      "request": {
        "method": "GET",
        "header": [
          {"key": "Authorization", "value": "Bearer {{bearerToken}}"}
        ],
        "url": "{{baseUrl}}/v1/user/{{userId}}"
      }
    },
    {
      "name": "Export Users CSV",
      "request": {
        "method": "GET",
        "header": [
          {"key": "Authorization", "value": "Bearer {{bearerToken}}"}
        ],
        "url": "{{baseUrl}}/v1/user/export"
      }
    },
    {
      "name": "Agency Service Connections",
      "request": {
        "method": "GET",
        "header": [
          {"key": "Authorization", "value": "Bearer {{bearerToken}}"}
        ],
        "url": "{{baseUrl}}/v1/agency/service-connections"
      }
    },
    {
      "name": "List Appointments",
      "request": {
        "method": "GET",
        "header": [
          {"key": "Authorization", "value": "Bearer {{bearerToken}}"}
        ],
        "url": "{{baseUrl}}/v1/appointments"
      }
    }
  ]
}
