{
    "variable": [
        {
            "id": "baseUrl",
            "key": "baseUrl",
            "type": "string",
            "name": "string",
            "value": "https:\/\/backend-staging.subsig.com"
        }
    ],
    "info": {
        "name": "Subsig API Documentation",
        "_postman_id": "ff5c0a0c-a518-41c9-8d34-237d8ca46f2c",
        "description": "",
        "schema": "https:\/\/schema.getpostman.com\/json\/collection\/v2.1.0\/collection.json"
    },
    "item": [
        {
            "name": "Registration",
            "description": "Create a new user account to access the application.",
            "item": [
                {
                    "name": "Create Account",
                    "request": {
                        "url": {
                            "host": "{{baseUrl}}",
                            "path": "register",
                            "query": [],
                            "raw": "{{baseUrl}}\/register"
                        },
                        "method": "POST",
                        "header": [
                            {
                                "key": "Content-Type",
                                "value": "application\/json"
                            },
                            {
                                "key": "Accept",
                                "value": "application\/json"
                            }
                        ],
                        "body": {
                            "mode": "raw",
                            "raw": "{\"name\":\"John Doe\",\"email\":\"john@example.com\",\"password\":\"SecurePass123!\",\"password_confirmation\":\"SecurePass123!\"}"
                        },
                        "description": "Register a new user account. After successful registration, the user will be automatically logged in and redirected to the dashboard.",
                        "auth": {
                            "type": "noauth"
                        }
                    },
                    "response": [
                        {
                            "header": [],
                            "code": 201,
                            "body": "",
                            "name": "Account created. User logged in and redirected."
                        },
                        {
                            "header": [],
                            "code": 422,
                            "body": "{\"message\":\"The email has already been taken.\",\"errors\":{\"email\":[\"The email has already been taken.\"]}}",
                            "name": "Validation error."
                        }
                    ]
                }
            ]
        },
        {
            "name": "Authentication",
            "description": "\nAPIs for user authentication",
            "item": [
                {
                    "name": "Create API Token",
                    "request": {
                        "url": {
                            "host": "{{baseUrl}}",
                            "path": "api\/sanctum\/token",
                            "query": [],
                            "raw": "{{baseUrl}}\/api\/sanctum\/token"
                        },
                        "method": "POST",
                        "header": [
                            {
                                "key": "Content-Type",
                                "value": "application\/json"
                            },
                            {
                                "key": "Accept",
                                "value": "application\/json"
                            }
                        ],
                        "body": {
                            "mode": "raw",
                            "raw": "{\"email\":\"john@example.com\",\"password\":\"SecurePass123!\"}"
                        },
                        "description": "Generate an API token for authenticated requests.\nRequires a verified email address.",
                        "auth": {
                            "type": "noauth"
                        }
                    },
                    "response": [
                        {
                            "header": [],
                            "code": 200,
                            "body": "{\n  \"token\": \"1|abc123...\"\n}",
                            "name": ""
                        },
                        {
                            "header": [],
                            "code": 201,
                            "body": "{\n  \"message\": \"Registration successful. Please check your email to verify your account.\",\n  \"redirect_link\": \"https:\/\/frontend.example.com\/register?email=john%40example.com\",\n  \"needsEmailVerification\": true\n}",
                            "name": "Email not verified"
                        },
                        {
                            "header": [],
                            "code": 422,
                            "body": "{\n  \"message\": \"The provided credentials are incorrect.\",\n  \"errors\": {\n    \"email\": [\"The provided credentials are incorrect.\"]\n  }\n}",
                            "name": "Invalid credentials"
                        }
                    ]
                },
                {
                    "name": "Verify Email",
                    "request": {
                        "url": {
                            "host": "{{baseUrl}}",
                            "path": "api\/email\/verify",
                            "query": [],
                            "raw": "{{baseUrl}}\/api\/email\/verify"
                        },
                        "method": "POST",
                        "header": [
                            {
                                "key": "Content-Type",
                                "value": "application\/json"
                            },
                            {
                                "key": "Accept",
                                "value": "application\/json"
                            }
                        ],
                        "body": {
                            "mode": "raw",
                            "raw": "{\"email\":\"john@example.com\",\"code\":\"1234\"}"
                        },
                        "description": "Verify user's email address using the 4-digit code sent via email.\nReturns an API token on successful verification.\nVerification link is sent via email. \/verify-email?code=1234&email=john@example.com",
                        "auth": {
                            "type": "noauth"
                        }
                    },
                    "response": [
                        {
                            "header": [],
                            "code": 200,
                            "body": "{\n  \"message\": \"Email verified successfully.\",\n  \"token\": \"1|abc123...\"\n}",
                            "name": ""
                        },
                        {
                            "header": [],
                            "code": 200,
                            "body": "{\n  \"message\": \"Email already verified.\",\n  \"token\": \"1|abc123...\"\n}",
                            "name": "Already verified"
                        },
                        {
                            "header": [],
                            "code": 422,
                            "body": "{\n  \"message\": \"Invalid verification code.\",\n  \"errors\": {\n    \"code\": [\"Invalid verification code.\"]\n  }\n}",
                            "name": "Invalid code"
                        },
                        {
                            "header": [],
                            "code": 422,
                            "body": "{\n  \"message\": \"Verification code has expired. Please request a new one.\",\n  \"errors\": {\n    \"code\": [\"Verification code has expired. Please request a new one.\"]\n  }\n}",
                            "name": "Expired code"
                        }
                    ]
                },
                {
                    "name": "Resend Verification Code",
                    "request": {
                        "url": {
                            "host": "{{baseUrl}}",
                            "path": "api\/email\/resend",
                            "query": [],
                            "raw": "{{baseUrl}}\/api\/email\/resend"
                        },
                        "method": "POST",
                        "header": [
                            {
                                "key": "Content-Type",
                                "value": "application\/json"
                            },
                            {
                                "key": "Accept",
                                "value": "application\/json"
                            }
                        ],
                        "body": {
                            "mode": "raw",
                            "raw": "{\"email\":\"john@example.com\"}"
                        },
                        "description": "Send a new 4-digit verification code to the user's email.\nCode expires in 60 minutes.",
                        "auth": {
                            "type": "noauth"
                        }
                    },
                    "response": [
                        {
                            "header": [],
                            "code": 200,
                            "body": "{\n  \"message\": \"Verification code sent.\"\n}",
                            "name": ""
                        },
                        {
                            "header": [],
                            "code": 200,
                            "body": "{\n  \"message\": \"Email already verified.\"\n}",
                            "name": "Already verified"
                        },
                        {
                            "header": [],
                            "code": 422,
                            "body": "{\n  \"message\": \"No account found with this email.\",\n  \"errors\": {\n    \"email\": [\"No account found with this email.\"]\n  }\n}",
                            "name": "User not found"
                        }
                    ]
                },
                {
                    "name": "Authenticate with Google",
                    "request": {
                        "url": {
                            "host": "{{baseUrl}}",
                            "path": "api\/auth\/google",
                            "query": [],
                            "raw": "{{baseUrl}}\/api\/auth\/google"
                        },
                        "method": "POST",
                        "header": [
                            {
                                "key": "Content-Type",
                                "value": "application\/json"
                            },
                            {
                                "key": "Accept",
                                "value": "application\/json"
                            }
                        ],
                        "body": {
                            "mode": "raw",
                            "raw": "{\"token\":\"eyJhbGciOiJSUzI1NiIs...\",\"intent\":\"login\",\"appsumo_registration_token\":\"architecto\",\"device_name\":\"n\"}"
                        },
                        "description": "Verify a Google ID token and log in or register based on intent.",
                        "auth": {
                            "type": "noauth"
                        }
                    },
                    "response": [
                        {
                            "header": [],
                            "code": 200,
                            "body": "{\n  \"token\": \"1|abc123...\",\n  \"user\": {\n    \"name\": \"John Doe\",\n    \"email\": \"john@example.com\",\n    \"avatar\": \"https:\/\/lh3.googleusercontent.com\/...\"\n  }\n}",
                            "name": ""
                        },
                        {
                            "header": [],
                            "code": 401,
                            "body": "{\n  \"message\": \"Invalid Google token.\"\n}",
                            "name": "Invalid token"
                        },
                        {
                            "header": [],
                            "code": 401,
                            "body": "{\n  \"message\": \"This account is linked to a different Google account.\"\n}",
                            "name": "Google account conflict"
                        },
                        {
                            "header": [],
                            "code": 404,
                            "body": "{\n  \"code\": \"ACCOUNT_NOT_FOUND\",\n  \"message\": \"Account not found.\",\n  \"errors\": {\n    \"email\": [\"No account exists for this Google email.\"]\n  }\n}",
                            "name": "Account not found"
                        },
                        {
                            "header": [],
                            "code": 422,
                            "body": "{\n  \"code\": \"ACCOUNT_ALREADY_EXISTS\",\n  \"message\": \"An account with this email already exists. Please log in.\",\n  \"errors\": {\n    \"email\": [\"An account with this email already exists. Please log in.\"]\n  }\n}",
                            "name": "Account already exists"
                        },
                        {
                            "header": [],
                            "code": 422,
                            "body": "{\n  \"message\": \"The token field is required.\",\n  \"errors\": {\n    \"token\": [\"The token field is required.\"]\n  }\n}",
                            "name": "Validation error"
                        }
                    ]
                },
                {
                    "name": "Authenticate with LinkedIn",
                    "request": {
                        "url": {
                            "host": "{{baseUrl}}",
                            "path": "api\/auth\/linkedin",
                            "query": [],
                            "raw": "{{baseUrl}}\/api\/auth\/linkedin"
                        },
                        "method": "POST",
                        "header": [
                            {
                                "key": "Content-Type",
                                "value": "application\/json"
                            },
                            {
                                "key": "Accept",
                                "value": "application\/json"
                            }
                        ],
                        "body": {
                            "mode": "raw",
                            "raw": "{\"token\":\"AQV...\",\"intent\":\"login\",\"appsumo_registration_token\":\"architecto\",\"device_name\":\"n\"}"
                        },
                        "description": "Verify a LinkedIn access token and log in or register based on intent.",
                        "auth": {
                            "type": "noauth"
                        }
                    },
                    "response": [
                        {
                            "header": [],
                            "code": 200,
                            "body": "{\n  \"token\": \"1|abc123...\",\n  \"user\": {\n    \"name\": \"John Doe\",\n    \"email\": \"john@example.com\",\n    \"avatar\": \"https:\/\/media.licdn.com\/...\"\n  }\n}",
                            "name": ""
                        },
                        {
                            "header": [],
                            "code": 401,
                            "body": "{\n  \"message\": \"Invalid LinkedIn token.\"\n}",
                            "name": "Invalid token"
                        },
                        {
                            "header": [],
                            "code": 401,
                            "body": "{\n  \"message\": \"This account is linked to a different LinkedIn account.\"\n}",
                            "name": "LinkedIn account conflict"
                        },
                        {
                            "header": [],
                            "code": 404,
                            "body": "{\n  \"code\": \"ACCOUNT_NOT_FOUND\",\n  \"message\": \"Account not found.\",\n  \"errors\": {\n    \"email\": [\"No account exists for this LinkedIn email.\"]\n  }\n}",
                            "name": "Account not found"
                        },
                        {
                            "header": [],
                            "code": 422,
                            "body": "{\n  \"code\": \"ACCOUNT_ALREADY_EXISTS\",\n  \"message\": \"An account with this email already exists. Please log in.\",\n  \"errors\": {\n    \"email\": [\"An account with this email already exists. Please log in.\"]\n  }\n}",
                            "name": "Account already exists"
                        },
                        {
                            "header": [],
                            "code": 422,
                            "body": "{\n  \"message\": \"The token field is required.\",\n  \"errors\": {\n    \"token\": [\"The token field is required.\"]\n  }\n}",
                            "name": "Validation error"
                        }
                    ]
                },
                {
                    "name": "Change Password",
                    "request": {
                        "url": {
                            "host": "{{baseUrl}}",
                            "path": "api\/auth\/change-password",
                            "query": [],
                            "raw": "{{baseUrl}}\/api\/auth\/change-password"
                        },
                        "method": "POST",
                        "header": [
                            {
                                "key": "Content-Type",
                                "value": "application\/json"
                            },
                            {
                                "key": "Accept",
                                "value": "application\/json"
                            }
                        ],
                        "body": {
                            "mode": "raw",
                            "raw": "{\"current_password\":\"SecurePass123!\",\"password\":\"NewSecurePass123!\"}"
                        },
                        "description": "Change password for an authenticated API user and return a fresh token."
                    },
                    "response": [
                        {
                            "header": [],
                            "code": 200,
                            "body": "{\n  \"message\": \"Password updated successfully.\",\n  \"token\": \"1|abc123...\"\n}",
                            "name": ""
                        },
                        {
                            "header": [],
                            "code": 401,
                            "body": "{\n  \"message\": \"Unauthenticated.\"\n}",
                            "name": "Unauthenticated"
                        },
                        {
                            "header": [],
                            "code": 422,
                            "body": "{\n  \"message\": \"The given data was invalid.\",\n  \"errors\": {\n    \"current_password\": [\"The provided password does not match your current password.\"]\n  }\n}",
                            "name": "Current password is incorrect"
                        }
                    ]
                },
                {
                    "name": "Set Password",
                    "request": {
                        "url": {
                            "host": "{{baseUrl}}",
                            "path": "api\/auth\/set-password",
                            "query": [],
                            "raw": "{{baseUrl}}\/api\/auth\/set-password"
                        },
                        "method": "POST",
                        "header": [
                            {
                                "key": "Content-Type",
                                "value": "application\/json"
                            },
                            {
                                "key": "Accept",
                                "value": "application\/json"
                            }
                        ],
                        "body": {
                            "mode": "raw",
                            "raw": "{\"password\":\"NewSecurePass123!\",\"password_confirmation\":\"NewSecurePass123!\"}"
                        },
                        "description": "Set a password for an authenticated user who signed up via Google or LinkedIn.\nPlaintext is never required for the previous random placeholder password."
                    },
                    "response": [
                        {
                            "header": [],
                            "code": 200,
                            "body": "{\n  \"message\": \"Password set successfully.\",\n  \"token\": \"1|abc123...\"\n}",
                            "name": ""
                        },
                        {
                            "header": [],
                            "code": 422,
                            "body": "{\n  \"message\": \"A password is already set. Use change-password instead.\",\n  \"error\": {\n    \"code\": \"password_already_set\"\n  }\n}",
                            "name": "Password already set"
                        }
                    ]
                },
                {
                    "name": "Complete Profile",
                    "request": {
                        "url": {
                            "host": "{{baseUrl}}",
                            "path": "api\/auth\/complete-profile",
                            "query": [],
                            "raw": "{{baseUrl}}\/api\/auth\/complete-profile"
                        },
                        "method": "POST",
                        "header": [
                            {
                                "key": "Content-Type",
                                "value": "application\/json"
                            },
                            {
                                "key": "Accept",
                                "value": "application\/json"
                            }
                        ],
                        "body": {
                            "mode": "raw",
                            "raw": "{\"name\":\"Jane Doe\",\"password\":\"NewSecurePass123!\",\"job_role\":\"founder_ceo\",\"company_name\":\"Acme Corporation\",\"phone\":\"+14155552671\",\"agree_to_terms\":true,\"agree_to_marketing\":false,\"password_confirmation\":\"NewSecurePass123!\"}"
                        },
                        "description": "Fill in the profile details collected on the \"About you\" step right after email-only\nregistration (see CreateNewUser::create()). Password is only required the first time --\nonce hasUsablePassword() is true, omit it and use change-password instead."
                    },
                    "response": [
                        {
                            "header": [],
                            "code": 200,
                            "body": "{\n  \"message\": \"Profile completed successfully.\",\n  \"token\": \"1|abc123...\",\n  \"user\": {}\n}",
                            "name": ""
                        },
                        {
                            "header": [],
                            "code": 422,
                            "body": "{\n  \"message\": \"A password is already set. Use change-password instead.\",\n  \"error\": {\n    \"code\": \"password_already_set\"\n  }\n}",
                            "name": "Password already set"
                        }
                    ]
                },
                {
                    "name": "Register with Invite",
                    "request": {
                        "url": {
                            "host": "{{baseUrl}}",
                            "path": "api\/invites\/accept",
                            "query": [],
                            "raw": "{{baseUrl}}\/api\/invites\/accept"
                        },
                        "method": "POST",
                        "header": [
                            {
                                "key": "Content-Type",
                                "value": "application\/json"
                            },
                            {
                                "key": "Accept",
                                "value": "application\/json"
                            }
                        ],
                        "body": {
                            "mode": "raw",
                            "raw": "{\"token\":\"eEtgjrcdtubjCu4817MfGiimvC2DQLBgaI7LpY1g5kdDMK5wJlQank7ZJ6PWurmb\",\"name\":\"John Doe\",\"email\":\"user@example.com\",\"password\":\"SecurePass123!\",\"password_confirmation\":\"SecurePass123!\"}"
                        },
                        "description": "Accept an invitation and create a new user account. The email address must match\nthe email address on the invite. After successful registration, the user will be\nadded to the organisation or project and will receive an email verification code.\n\nNote: This endpoint bypasses the business email requirement since the invitation\nitself validates the user's legitimacy.",
                        "auth": {
                            "type": "noauth"
                        }
                    },
                    "response": [
                        {
                            "header": [],
                            "code": 201,
                            "body": "{\n  \"message\": \"Registration successful. Please check your email to verify your account.\"\n}",
                            "name": ""
                        },
                        {
                            "header": [],
                            "code": 404,
                            "body": "{\n  \"message\": \"Invite not found.\",\n  \"errors\": {\n    \"token\": [\"The invite token is invalid or does not exist.\"]\n  }\n}",
                            "name": "Token not found"
                        },
                        {
                            "header": [],
                            "code": 410,
                            "body": "{\n  \"message\": \"Invite has expired.\",\n  \"errors\": {\n    \"token\": [\"This invite has expired. Please request a new invitation.\"]\n  }\n}",
                            "name": "Invite expired"
                        },
                        {
                            "header": [],
                            "code": 410,
                            "body": "{\n  \"message\": \"Invite has already been accepted.\",\n  \"errors\": {\n    \"token\": [\"This invite has already been accepted.\"]\n  }\n}",
                            "name": "Invite already accepted"
                        },
                        {
                            "header": [],
                            "code": 422,
                            "body": "{\n  \"message\": \"The email address does not match the invitation.\",\n  \"errors\": {\n    \"email\": [\"The email address must match the email on the invitation.\"]\n  }\n}",
                            "name": "Email mismatch"
                        },
                        {
                            "header": [],
                            "code": 422,
                            "body": "{\n  \"message\": \"The name field is required.\",\n  \"errors\": {\n    \"name\": [\"The name field is required.\"]\n  }\n}",
                            "name": "Validation error"
                        },
                        {
                            "header": [],
                            "code": 422,
                            "body": "{\n  \"message\": \"The email has already been taken.\",\n  \"errors\": {\n    \"email\": [\"The email has already been taken.\"]\n  }\n}",
                            "name": "Email already registered"
                        }
                    ]
                },
                {
                    "name": "Get Current User",
                    "request": {
                        "url": {
                            "host": "{{baseUrl}}",
                            "path": "api\/user",
                            "query": [],
                            "raw": "{{baseUrl}}\/api\/user"
                        },
                        "method": "GET",
                        "header": [
                            {
                                "key": "Content-Type",
                                "value": "application\/json"
                            },
                            {
                                "key": "Accept",
                                "value": "application\/json"
                            }
                        ],
                        "body": null,
                        "description": "Get the authenticated user's details including organisation and subscription information."
                    },
                    "response": [
                        {
                            "header": [],
                            "code": 200,
                            "body": "{\n  \"name\": \"John Doe\",\n  \"email\": \"john@example.com\",\n  \"email_verified_at\": \"2025-12-04T12:00:00.000000Z\",\n  \"created_at\": \"2025-12-04T10:00:00.000000Z\",\n  \"organisation\": {\n    \"uuid\": \"550e8400-e29b-41d4-a716-446655440000\",\n    \"name\": \"Acme Inc\",\n    \"website\": \"https:\/\/acme.com\",\n    \"product_logo\": \"https:\/\/example.com\/logo.png\"\n  },\n  \"role\": \"organisation_owner\",\n  \"subscription\": {\n    \"id\": 1,\n    \"stripe_price_id\": \"price_1234567890\",\n    \"name\": \"Pro Plan\",\n    \"status\": \"active\",\n    \"expiration_date\": \"2025-12-31T23:59:59.000000Z\",\n    \"trial_end_date\": \"2025-12-11T23:59:59.000000Z\"\n  }\n}",
                            "name": ""
                        },
                        {
                            "header": [],
                            "code": 401,
                            "body": "{\n  \"message\": \"Unauthenticated.\"\n}",
                            "name": "Unauthenticated"
                        }
                    ]
                },
                {
                    "name": "Update Profile",
                    "request": {
                        "url": {
                            "host": "{{baseUrl}}",
                            "path": "api\/user",
                            "query": [],
                            "raw": "{{baseUrl}}\/api\/user"
                        },
                        "method": "PATCH",
                        "header": [
                            {
                                "key": "Content-Type",
                                "value": "application\/json"
                            },
                            {
                                "key": "Accept",
                                "value": "application\/json"
                            }
                        ],
                        "body": {
                            "mode": "raw",
                            "raw": "{\"first_name\":\"Jane\",\"last_name\":\"Doe\",\"phone\":\"+1 555 123 4567\",\"job_role\":\"Marketing\",\"company_name\":\"Acme Inc\"}"
                        },
                        "description": "Update the authenticated user's own profile fields. `name` is kept in sync as\n\"{first_name} {last_name}\" for every other place in the app that still reads it."
                    },
                    "response": []
                },
                {
                    "name": "Delete Account",
                    "request": {
                        "url": {
                            "host": "{{baseUrl}}",
                            "path": "api\/user",
                            "query": [],
                            "raw": "{{baseUrl}}\/api\/user"
                        },
                        "method": "DELETE",
                        "header": [
                            {
                                "key": "Content-Type",
                                "value": "application\/json"
                            },
                            {
                                "key": "Accept",
                                "value": "application\/json"
                            }
                        ],
                        "body": null,
                        "description": "Permanently delete the authenticated user's own account. Any organisation this user is\nthe sole member of is deleted along with it (see UserDeletionService); shared organisations\nare left intact for the remaining members."
                    },
                    "response": []
                },
                {
                    "name": "Log In",
                    "request": {
                        "url": {
                            "host": "{{baseUrl}}",
                            "path": "login",
                            "query": [],
                            "raw": "{{baseUrl}}\/login"
                        },
                        "method": "POST",
                        "header": [
                            {
                                "key": "Content-Type",
                                "value": "application\/json"
                            },
                            {
                                "key": "Accept",
                                "value": "application\/json"
                            }
                        ],
                        "body": {
                            "mode": "raw",
                            "raw": "{\"email\":\"john@example.com\",\"password\":\"SecurePass123!\",\"remember\":true}"
                        },
                        "description": "Authenticate with your email and password to start a session. On success, you receive a token for subsequent requests.",
                        "auth": {
                            "type": "noauth"
                        }
                    },
                    "response": [
                        {
                            "header": [],
                            "code": 200,
                            "body": "",
                            "name": "Login successful. Session started."
                        },
                        {
                            "header": [],
                            "code": 422,
                            "body": "{\"message\":\"These credentials do not match our records.\",\"errors\":{\"email\":[\"These credentials do not match our records.\"]}}",
                            "name": "Invalid credentials."
                        }
                    ]
                },
                {
                    "name": "Log Out",
                    "request": {
                        "url": {
                            "host": "{{baseUrl}}",
                            "path": "logout",
                            "query": [],
                            "raw": "{{baseUrl}}\/logout"
                        },
                        "method": "POST",
                        "header": [
                            {
                                "key": "Content-Type",
                                "value": "application\/json"
                            },
                            {
                                "key": "Accept",
                                "value": "application\/json"
                            }
                        ],
                        "body": null,
                        "description": "End your current session. You will need to log in again to access protected resources."
                    },
                    "response": [
                        {
                            "header": [],
                            "code": 200,
                            "body": "",
                            "name": "Logged out successfully."
                        },
                        {
                            "header": [],
                            "code": 401,
                            "body": "{\"message\":\"Unauthenticated.\"}",
                            "name": "Not logged in."
                        }
                    ]
                }
            ]
        },
        {
            "name": "Password Reset",
            "description": "Recover access to your account if you forgot your password.",
            "item": [
                {
                    "name": "Request Password Reset",
                    "request": {
                        "url": {
                            "host": "{{baseUrl}}",
                            "path": "forgot-password",
                            "query": [],
                            "raw": "{{baseUrl}}\/forgot-password"
                        },
                        "method": "POST",
                        "header": [
                            {
                                "key": "Content-Type",
                                "value": "application\/json"
                            },
                            {
                                "key": "Accept",
                                "value": "application\/json"
                            }
                        ],
                        "body": {
                            "mode": "raw",
                            "raw": "{\"email\":\"john@example.com\"}"
                        },
                        "description": "Send a password reset link to your email. The link expires after 60 minutes. Same response for security even if email not found.",
                        "auth": {
                            "type": "noauth"
                        }
                    },
                    "response": [
                        {
                            "header": [],
                            "code": 200,
                            "body": "{\"status\":\"We have emailed your password reset link.\"}",
                            "name": "Reset link sent."
                        }
                    ]
                },
                {
                    "name": "Reset Password",
                    "request": {
                        "url": {
                            "host": "{{baseUrl}}",
                            "path": "reset-password",
                            "query": [],
                            "raw": "{{baseUrl}}\/reset-password"
                        },
                        "method": "POST",
                        "header": [
                            {
                                "key": "Content-Type",
                                "value": "application\/json"
                            },
                            {
                                "key": "Accept",
                                "value": "application\/json"
                            }
                        ],
                        "body": {
                            "mode": "raw",
                            "raw": "{\"token\":\"a1b2c3d4e5f6g7h8i9j0\",\"email\":\"john@example.com\",\"password\":\"NewSecurePass123!\",\"password_confirmation\":\"NewSecurePass123!\"}"
                        },
                        "description": "Set a new password using the token from your email. Token is valid for 60 minutes.",
                        "auth": {
                            "type": "noauth"
                        }
                    },
                    "response": [
                        {
                            "header": [],
                            "code": 200,
                            "body": "{\"status\":\"Your password has been reset.\"}",
                            "name": "Password reset successful."
                        },
                        {
                            "header": [],
                            "code": 422,
                            "body": "{\"message\":\"This password reset token is invalid.\",\"errors\":{\"email\":[\"This password reset token is invalid.\"]}}",
                            "name": "Invalid or expired token."
                        }
                    ]
                }
            ]
        },
        {
            "name": "AI Traffic",
            "description": "\nThe AI Traffics dashboard's GA4-sourced overview -- see GoogleAnalyticsTrafficReportService\nfor which fields are real (GA4 rollups) vs placeholders pending the bot-crawler pipeline.",
            "item": [
                {
                    "name": "Traffic Overview",
                    "request": {
                        "url": {
                            "host": "{{baseUrl}}",
                            "path": "api\/organisations\/:organisation_uuid\/ai-visibility\/traffic",
                            "query": [],
                            "raw": "{{baseUrl}}\/api\/organisations\/:organisation_uuid\/ai-visibility\/traffic",
                            "variable": [
                                {
                                    "id": "organisation_uuid",
                                    "key": "organisation_uuid",
                                    "value": "6ff8f7f6-1eb3-3525-be4a-3932c805afed",
                                    "description": "The organisation UUID."
                                }
                            ]
                        },
                        "method": "POST",
                        "header": [
                            {
                                "key": "Content-Type",
                                "value": "application\/json"
                            },
                            {
                                "key": "Accept",
                                "value": "application\/json"
                            }
                        ],
                        "body": {
                            "mode": "raw",
                            "raw": "{\"date_from\":\"architecto\",\"date_to\":\"architecto\",\"granularity\":\"architecto\"}"
                        },
                        "description": ""
                    },
                    "response": []
                },
                {
                    "name": "Traffic Pages",
                    "request": {
                        "url": {
                            "host": "{{baseUrl}}",
                            "path": "api\/organisations\/:organisation_uuid\/ai-visibility\/traffic\/pages",
                            "query": [],
                            "raw": "{{baseUrl}}\/api\/organisations\/:organisation_uuid\/ai-visibility\/traffic\/pages",
                            "variable": [
                                {
                                    "id": "organisation_uuid",
                                    "key": "organisation_uuid",
                                    "value": "6ff8f7f6-1eb3-3525-be4a-3932c805afed",
                                    "description": "The organisation UUID."
                                }
                            ]
                        },
                        "method": "POST",
                        "header": [
                            {
                                "key": "Content-Type",
                                "value": "application\/json"
                            },
                            {
                                "key": "Accept",
                                "value": "application\/json"
                            }
                        ],
                        "body": {
                            "mode": "raw",
                            "raw": "{\"date_from\":\"architecto\",\"date_to\":\"architecto\",\"providers\":[\"architecto\"],\"sort_by\":\"architecto\",\"sort_direction\":\"architecto\",\"per_page\":16,\"page\":16}"
                        },
                        "description": ""
                    },
                    "response": []
                }
            ]
        },
        {
            "name": "AI Visibility - Competitor",
            "description": "\nCompetitor tab \u2014 brand list with visibility\/SOV\/position metrics and CRUD.",
            "item": [
                {
                    "name": "Competitor overview",
                    "request": {
                        "url": {
                            "host": "{{baseUrl}}",
                            "path": "api\/organisations\/:organisation_uuid\/ai-visibility\/competitors",
                            "query": [],
                            "raw": "{{baseUrl}}\/api\/organisations\/:organisation_uuid\/ai-visibility\/competitors",
                            "variable": [
                                {
                                    "id": "organisation_uuid",
                                    "key": "organisation_uuid",
                                    "value": "660e8400-e29b-41d4-a716-446655440001",
                                    "description": "The organisation UUID."
                                }
                            ]
                        },
                        "method": "POST",
                        "header": [
                            {
                                "key": "Content-Type",
                                "value": "application\/json"
                            },
                            {
                                "key": "Accept",
                                "value": "application\/json"
                            }
                        ],
                        "body": {
                            "mode": "raw",
                            "raw": "{\"date_from\":\"architecto\",\"date_to\":\"architecto\",\"provider\":\"architecto\",\"page\":16,\"per_page\":16,\"search\":\"architecto\"}"
                        },
                        "description": "Returns all tracked brands (own + competitors) with visibility, share-of-voice, and\naverage-position metrics for the requested date window, plus change deltas vs the\npreceding window of equal length."
                    },
                    "response": []
                },
                {
                    "name": "Add competitor",
                    "request": {
                        "url": {
                            "host": "{{baseUrl}}",
                            "path": "api\/organisations\/:organisation_uuid\/ai-visibility\/competitor-brands",
                            "query": [],
                            "raw": "{{baseUrl}}\/api\/organisations\/:organisation_uuid\/ai-visibility\/competitor-brands",
                            "variable": [
                                {
                                    "id": "organisation_uuid",
                                    "key": "organisation_uuid",
                                    "value": "6ff8f7f6-1eb3-3525-be4a-3932c805afed",
                                    "description": ""
                                }
                            ]
                        },
                        "method": "POST",
                        "header": [
                            {
                                "key": "Content-Type",
                                "value": "application\/json"
                            },
                            {
                                "key": "Accept",
                                "value": "application\/json"
                            }
                        ],
                        "body": {
                            "mode": "raw",
                            "raw": "{\"name\":\"Acme Corp\",\"website\":\"acme.com\"}"
                        },
                        "description": ""
                    },
                    "response": []
                },
                {
                    "name": "Update competitor",
                    "request": {
                        "url": {
                            "host": "{{baseUrl}}",
                            "path": "api\/organisations\/:organisation_uuid\/ai-visibility\/competitor-brands\/:brand",
                            "query": [],
                            "raw": "{{baseUrl}}\/api\/organisations\/:organisation_uuid\/ai-visibility\/competitor-brands\/:brand",
                            "variable": [
                                {
                                    "id": "organisation_uuid",
                                    "key": "organisation_uuid",
                                    "value": "6ff8f7f6-1eb3-3525-be4a-3932c805afed",
                                    "description": ""
                                },
                                {
                                    "id": "brand",
                                    "key": "brand",
                                    "value": "16",
                                    "description": "The brand ID."
                                }
                            ]
                        },
                        "method": "PATCH",
                        "header": [
                            {
                                "key": "Content-Type",
                                "value": "application\/json"
                            },
                            {
                                "key": "Accept",
                                "value": "application\/json"
                            }
                        ],
                        "body": {
                            "mode": "raw",
                            "raw": "{\"name\":\"architecto\",\"website\":\"architecto\"}"
                        },
                        "description": ""
                    },
                    "response": []
                },
                {
                    "name": "Delete competitor",
                    "request": {
                        "url": {
                            "host": "{{baseUrl}}",
                            "path": "api\/organisations\/:organisation_uuid\/ai-visibility\/competitor-brands\/:brand",
                            "query": [],
                            "raw": "{{baseUrl}}\/api\/organisations\/:organisation_uuid\/ai-visibility\/competitor-brands\/:brand",
                            "variable": [
                                {
                                    "id": "organisation_uuid",
                                    "key": "organisation_uuid",
                                    "value": "6ff8f7f6-1eb3-3525-be4a-3932c805afed",
                                    "description": ""
                                },
                                {
                                    "id": "brand",
                                    "key": "brand",
                                    "value": "16",
                                    "description": "The brand ID."
                                }
                            ]
                        },
                        "method": "DELETE",
                        "header": [
                            {
                                "key": "Content-Type",
                                "value": "application\/json"
                            },
                            {
                                "key": "Accept",
                                "value": "application\/json"
                            }
                        ],
                        "body": null,
                        "description": ""
                    },
                    "response": []
                }
            ]
        },
        {
            "name": "AI Visibility - Dashboard",
            "description": "\nTicket 7 \u2014 the Visibility tab. Reads exclusively from `ai_visibility_daily_metrics` (Ticket 5),\nnever live-joins execution tables \u2014 see AiVisibilityMetricsAggregateQuery.",
            "item": [
                {
                    "name": "Visibility Tab",
                    "request": {
                        "url": {
                            "host": "{{baseUrl}}",
                            "path": "api\/organisations\/:organisation_uuid\/ai-visibility\/visibility",
                            "query": [],
                            "raw": "{{baseUrl}}\/api\/organisations\/:organisation_uuid\/ai-visibility\/visibility",
                            "variable": [
                                {
                                    "id": "organisation_uuid",
                                    "key": "organisation_uuid",
                                    "value": "660e8400-e29b-41d4-a716-446655440001",
                                    "description": "The organisation UUID."
                                }
                            ]
                        },
                        "method": "POST",
                        "header": [
                            {
                                "key": "Content-Type",
                                "value": "application\/json"
                            },
                            {
                                "key": "Accept",
                                "value": "application\/json"
                            }
                        ],
                        "body": {
                            "mode": "raw",
                            "raw": "{\"date_from\":\"2026-06-01\",\"date_to\":\"2026-06-30\",\"compare_from\":\"architecto\",\"compare_to\":\"architecto\",\"provider\":\"openai\",\"model\":\"architecto\",\"prompt_id\":16,\"country\":\"architecto\",\"language\":\"architecto\",\"source\":\"architecto\"}"
                        },
                        "description": ""
                    },
                    "response": []
                },
                {
                    "name": "Platforms Tab",
                    "request": {
                        "url": {
                            "host": "{{baseUrl}}",
                            "path": "api\/organisations\/:organisation_uuid\/ai-visibility\/platforms",
                            "query": [],
                            "raw": "{{baseUrl}}\/api\/organisations\/:organisation_uuid\/ai-visibility\/platforms",
                            "variable": [
                                {
                                    "id": "organisation_uuid",
                                    "key": "organisation_uuid",
                                    "value": "660e8400-e29b-41d4-a716-446655440001",
                                    "description": "The organisation UUID."
                                }
                            ]
                        },
                        "method": "POST",
                        "header": [
                            {
                                "key": "Content-Type",
                                "value": "application\/json"
                            },
                            {
                                "key": "Accept",
                                "value": "application\/json"
                            }
                        ],
                        "body": {
                            "mode": "raw",
                            "raw": "{\"date_from\":\"architecto\",\"date_to\":\"architecto\"}"
                        },
                        "description": ""
                    },
                    "response": []
                },
                {
                    "name": "Sentiment Tab",
                    "request": {
                        "url": {
                            "host": "{{baseUrl}}",
                            "path": "api\/organisations\/:organisation_uuid\/ai-visibility\/sentiment",
                            "query": [],
                            "raw": "{{baseUrl}}\/api\/organisations\/:organisation_uuid\/ai-visibility\/sentiment",
                            "variable": [
                                {
                                    "id": "organisation_uuid",
                                    "key": "organisation_uuid",
                                    "value": "660e8400-e29b-41d4-a716-446655440001",
                                    "description": "The organisation UUID."
                                }
                            ]
                        },
                        "method": "POST",
                        "header": [
                            {
                                "key": "Content-Type",
                                "value": "application\/json"
                            },
                            {
                                "key": "Accept",
                                "value": "application\/json"
                            }
                        ],
                        "body": {
                            "mode": "raw",
                            "raw": "{\"brand\":16,\"per_page\":16}"
                        },
                        "description": ""
                    },
                    "response": []
                },
                {
                    "name": "Export Sentiment Sources",
                    "request": {
                        "url": {
                            "host": "{{baseUrl}}",
                            "path": "api\/organisations\/:organisation_uuid\/ai-visibility\/sentiment\/sources\/export",
                            "query": [],
                            "raw": "{{baseUrl}}\/api\/organisations\/:organisation_uuid\/ai-visibility\/sentiment\/sources\/export",
                            "variable": [
                                {
                                    "id": "organisation_uuid",
                                    "key": "organisation_uuid",
                                    "value": "660e8400-e29b-41d4-a716-446655440001",
                                    "description": "The organisation UUID."
                                }
                            ]
                        },
                        "method": "POST",
                        "header": [
                            {
                                "key": "Content-Type",
                                "value": "application\/json"
                            },
                            {
                                "key": "Accept",
                                "value": "application\/json"
                            }
                        ],
                        "body": null,
                        "description": ""
                    },
                    "response": []
                },
                {
                    "name": "Citations Tab",
                    "request": {
                        "url": {
                            "host": "{{baseUrl}}",
                            "path": "api\/organisations\/:organisation_uuid\/ai-visibility\/citations",
                            "query": [],
                            "raw": "{{baseUrl}}\/api\/organisations\/:organisation_uuid\/ai-visibility\/citations",
                            "variable": [
                                {
                                    "id": "organisation_uuid",
                                    "key": "organisation_uuid",
                                    "value": "660e8400-e29b-41d4-a716-446655440001",
                                    "description": "The organisation UUID."
                                }
                            ]
                        },
                        "method": "POST",
                        "header": [
                            {
                                "key": "Content-Type",
                                "value": "application\/json"
                            },
                            {
                                "key": "Accept",
                                "value": "application\/json"
                            }
                        ],
                        "body": null,
                        "description": ""
                    },
                    "response": []
                },
                {
                    "name": "Citations \u2014 Domains",
                    "request": {
                        "url": {
                            "host": "{{baseUrl}}",
                            "path": "api\/organisations\/:organisation_uuid\/ai-visibility\/citations\/domains",
                            "query": [],
                            "raw": "{{baseUrl}}\/api\/organisations\/:organisation_uuid\/ai-visibility\/citations\/domains",
                            "variable": [
                                {
                                    "id": "organisation_uuid",
                                    "key": "organisation_uuid",
                                    "value": "660e8400-e29b-41d4-a716-446655440001",
                                    "description": "The organisation UUID."
                                }
                            ]
                        },
                        "method": "POST",
                        "header": [
                            {
                                "key": "Content-Type",
                                "value": "application\/json"
                            },
                            {
                                "key": "Accept",
                                "value": "application\/json"
                            }
                        ],
                        "body": {
                            "mode": "raw",
                            "raw": "{\"per_page\":16}"
                        },
                        "description": ""
                    },
                    "response": []
                },
                {
                    "name": "Citations \u2014 URLs",
                    "request": {
                        "url": {
                            "host": "{{baseUrl}}",
                            "path": "api\/organisations\/:organisation_uuid\/ai-visibility\/citations\/urls",
                            "query": [],
                            "raw": "{{baseUrl}}\/api\/organisations\/:organisation_uuid\/ai-visibility\/citations\/urls",
                            "variable": [
                                {
                                    "id": "organisation_uuid",
                                    "key": "organisation_uuid",
                                    "value": "660e8400-e29b-41d4-a716-446655440001",
                                    "description": "The organisation UUID."
                                }
                            ]
                        },
                        "method": "POST",
                        "header": [
                            {
                                "key": "Content-Type",
                                "value": "application\/json"
                            },
                            {
                                "key": "Accept",
                                "value": "application\/json"
                            }
                        ],
                        "body": {
                            "mode": "raw",
                            "raw": "{\"per_page\":16}"
                        },
                        "description": ""
                    },
                    "response": []
                },
                {
                    "name": "Export Citation URLs",
                    "request": {
                        "url": {
                            "host": "{{baseUrl}}",
                            "path": "api\/organisations\/:organisation_uuid\/ai-visibility\/citations\/urls\/export",
                            "query": [],
                            "raw": "{{baseUrl}}\/api\/organisations\/:organisation_uuid\/ai-visibility\/citations\/urls\/export",
                            "variable": [
                                {
                                    "id": "organisation_uuid",
                                    "key": "organisation_uuid",
                                    "value": "660e8400-e29b-41d4-a716-446655440001",
                                    "description": "The organisation UUID."
                                }
                            ]
                        },
                        "method": "POST",
                        "header": [
                            {
                                "key": "Content-Type",
                                "value": "application\/json"
                            },
                            {
                                "key": "Accept",
                                "value": "application\/json"
                            }
                        ],
                        "body": {
                            "mode": "raw",
                            "raw": "{\"domain\":\"architecto\"}"
                        },
                        "description": "Flat, one-row-per-citation-occurrence export matching the format competitor tools like\nOtterly.ai use -- not the on-screen URL rollup, which aggregates many occurrences of the\nsame URL into one summary row and can't carry per-occurrence fields like Prompt\/Date."
                    },
                    "response": []
                },
                {
                    "name": "Export Citation Domains",
                    "request": {
                        "url": {
                            "host": "{{baseUrl}}",
                            "path": "api\/organisations\/:organisation_uuid\/ai-visibility\/citations\/domains\/export",
                            "query": [],
                            "raw": "{{baseUrl}}\/api\/organisations\/:organisation_uuid\/ai-visibility\/citations\/domains\/export",
                            "variable": [
                                {
                                    "id": "organisation_uuid",
                                    "key": "organisation_uuid",
                                    "value": "660e8400-e29b-41d4-a716-446655440001",
                                    "description": "The organisation UUID."
                                }
                            ]
                        },
                        "method": "POST",
                        "header": [
                            {
                                "key": "Content-Type",
                                "value": "application\/json"
                            },
                            {
                                "key": "Accept",
                                "value": "application\/json"
                            }
                        ],
                        "body": null,
                        "description": "Flat, one-row-per-citation-occurrence export matching the format competitor tools like\nOtterly.ai use -- not the on-screen domain rollup, which aggregates many occurrences of the\nsame domain into one summary row and can't carry per-occurrence fields like Prompt\/Date."
                    },
                    "response": []
                },
                {
                    "name": "Citations \u2014 Domain Detail",
                    "request": {
                        "url": {
                            "host": "{{baseUrl}}",
                            "path": "api\/organisations\/:organisation_uuid\/ai-visibility\/citations\/domain-detail",
                            "query": [],
                            "raw": "{{baseUrl}}\/api\/organisations\/:organisation_uuid\/ai-visibility\/citations\/domain-detail",
                            "variable": [
                                {
                                    "id": "organisation_uuid",
                                    "key": "organisation_uuid",
                                    "value": "6ff8f7f6-1eb3-3525-be4a-3932c805afed",
                                    "description": "The organisation UUID."
                                }
                            ]
                        },
                        "method": "POST",
                        "header": [
                            {
                                "key": "Content-Type",
                                "value": "application\/json"
                            },
                            {
                                "key": "Accept",
                                "value": "application\/json"
                            }
                        ],
                        "body": {
                            "mode": "raw",
                            "raw": "{\"domain\":\"reddit.com\"}"
                        },
                        "description": ""
                    },
                    "response": []
                },
                {
                    "name": "Citations \u2014 URLs for a Domain (paginated)",
                    "request": {
                        "url": {
                            "host": "{{baseUrl}}",
                            "path": "api\/organisations\/:organisation_uuid\/ai-visibility\/citations\/domain-urls",
                            "query": [],
                            "raw": "{{baseUrl}}\/api\/organisations\/:organisation_uuid\/ai-visibility\/citations\/domain-urls",
                            "variable": [
                                {
                                    "id": "organisation_uuid",
                                    "key": "organisation_uuid",
                                    "value": "6ff8f7f6-1eb3-3525-be4a-3932c805afed",
                                    "description": "The organisation UUID."
                                }
                            ]
                        },
                        "method": "POST",
                        "header": [
                            {
                                "key": "Content-Type",
                                "value": "application\/json"
                            },
                            {
                                "key": "Accept",
                                "value": "application\/json"
                            }
                        ],
                        "body": {
                            "mode": "raw",
                            "raw": "{\"domain\":\"architecto\"}"
                        },
                        "description": ""
                    },
                    "response": []
                },
                {
                    "name": "Citations \u2014 URL Detail",
                    "request": {
                        "url": {
                            "host": "{{baseUrl}}",
                            "path": "api\/organisations\/:organisation_uuid\/ai-visibility\/citations\/url-detail",
                            "query": [],
                            "raw": "{{baseUrl}}\/api\/organisations\/:organisation_uuid\/ai-visibility\/citations\/url-detail",
                            "variable": [
                                {
                                    "id": "organisation_uuid",
                                    "key": "organisation_uuid",
                                    "value": "6ff8f7f6-1eb3-3525-be4a-3932c805afed",
                                    "description": "The organisation UUID."
                                }
                            ]
                        },
                        "method": "POST",
                        "header": [
                            {
                                "key": "Content-Type",
                                "value": "application\/json"
                            },
                            {
                                "key": "Accept",
                                "value": "application\/json"
                            }
                        ],
                        "body": {
                            "mode": "raw",
                            "raw": "{\"url\":\"http:\\\/\\\/www.bailey.biz\\\/quos-velit-et-fugiat-sunt-nihil-accusantium-harum.html\"}"
                        },
                        "description": ""
                    },
                    "response": []
                },
                {
                    "name": "Citations \u2014 AI Responses that cited a URL (paginated)",
                    "request": {
                        "url": {
                            "host": "{{baseUrl}}",
                            "path": "api\/organisations\/:organisation_uuid\/ai-visibility\/citations\/url-responses",
                            "query": [],
                            "raw": "{{baseUrl}}\/api\/organisations\/:organisation_uuid\/ai-visibility\/citations\/url-responses",
                            "variable": [
                                {
                                    "id": "organisation_uuid",
                                    "key": "organisation_uuid",
                                    "value": "6ff8f7f6-1eb3-3525-be4a-3932c805afed",
                                    "description": "The organisation UUID."
                                }
                            ]
                        },
                        "method": "POST",
                        "header": [
                            {
                                "key": "Content-Type",
                                "value": "application\/json"
                            },
                            {
                                "key": "Accept",
                                "value": "application\/json"
                            }
                        ],
                        "body": {
                            "mode": "raw",
                            "raw": "{\"url\":\"http:\\\/\\\/www.bailey.biz\\\/quos-velit-et-fugiat-sunt-nihil-accusantium-harum.html\"}"
                        },
                        "description": ""
                    },
                    "response": []
                },
                {
                    "name": "Export AI Responses that cited a URL",
                    "request": {
                        "url": {
                            "host": "{{baseUrl}}",
                            "path": "api\/organisations\/:organisation_uuid\/ai-visibility\/citations\/url-responses\/export",
                            "query": [],
                            "raw": "{{baseUrl}}\/api\/organisations\/:organisation_uuid\/ai-visibility\/citations\/url-responses\/export",
                            "variable": [
                                {
                                    "id": "organisation_uuid",
                                    "key": "organisation_uuid",
                                    "value": "6ff8f7f6-1eb3-3525-be4a-3932c805afed",
                                    "description": "The organisation UUID."
                                }
                            ]
                        },
                        "method": "POST",
                        "header": [
                            {
                                "key": "Content-Type",
                                "value": "application\/json"
                            },
                            {
                                "key": "Accept",
                                "value": "application\/json"
                            }
                        ],
                        "body": {
                            "mode": "raw",
                            "raw": "{\"url\":\"http:\\\/\\\/www.bailey.biz\\\/quos-velit-et-fugiat-sunt-nihil-accusantium-harum.html\"}"
                        },
                        "description": "One row per citation occurrence (a citation URL from a specific prompt\/service\/date),\nmatching the flat format competitor tools like Otterly.ai export -- not one row per\nresponse, since a single response can cite several URLs."
                    },
                    "response": []
                }
            ]
        },
        {
            "name": "AI Visibility - Prompt Detail",
            "description": "\nTicket 7 \u2014 the prompt-detail scrollable page (overview\/citations\/responses) and the top-level\nexecution detail view. Kept separate from AiVisibilityPromptController (already ~1700 lines,\nand owns a different, older payload shape via show()\/executionShow()) \u2014 these are new endpoints\nwith their own contract, built on the same Ticket 5 aggregate-table services as the rest of\nTicket 7 rather than that controller's live-join helpers.",
            "item": [
                {
                    "name": "Prompt Overview",
                    "request": {
                        "url": {
                            "host": "{{baseUrl}}",
                            "path": "api\/organisations\/:organisation_uuid\/ai-visibility\/prompts\/:prompt\/overview",
                            "query": [],
                            "raw": "{{baseUrl}}\/api\/organisations\/:organisation_uuid\/ai-visibility\/prompts\/:prompt\/overview",
                            "variable": [
                                {
                                    "id": "organisation_uuid",
                                    "key": "organisation_uuid",
                                    "value": "660e8400-e29b-41d4-a716-446655440001",
                                    "description": "The organisation UUID."
                                },
                                {
                                    "id": "prompt",
                                    "key": "prompt",
                                    "value": "1",
                                    "description": "The prompt ID."
                                }
                            ]
                        },
                        "method": "GET",
                        "header": [
                            {
                                "key": "Content-Type",
                                "value": "application\/json"
                            },
                            {
                                "key": "Accept",
                                "value": "application\/json"
                            }
                        ],
                        "body": null,
                        "description": ""
                    },
                    "response": [
                        {
                            "header": [
                                {
                                    "key": "cache-control",
                                    "value": "no-cache, private"
                                },
                                {
                                    "key": "content-type",
                                    "value": "application\/json"
                                },
                                {
                                    "key": "vary",
                                    "value": "Origin"
                                }
                            ],
                            "code": 401,
                            "body": "{\"message\":\"Unauthenticated.\"}",
                            "name": ""
                        }
                    ]
                },
                {
                    "name": "Prompt Filter Options",
                    "request": {
                        "url": {
                            "host": "{{baseUrl}}",
                            "path": "api\/organisations\/:organisation_uuid\/ai-visibility\/prompts\/:prompt\/filters",
                            "query": [],
                            "raw": "{{baseUrl}}\/api\/organisations\/:organisation_uuid\/ai-visibility\/prompts\/:prompt\/filters",
                            "variable": [
                                {
                                    "id": "organisation_uuid",
                                    "key": "organisation_uuid",
                                    "value": "660e8400-e29b-41d4-a716-446655440001",
                                    "description": "The organisation UUID."
                                },
                                {
                                    "id": "prompt",
                                    "key": "prompt",
                                    "value": "1",
                                    "description": "The prompt ID."
                                }
                            ]
                        },
                        "method": "GET",
                        "header": [
                            {
                                "key": "Content-Type",
                                "value": "application\/json"
                            },
                            {
                                "key": "Accept",
                                "value": "application\/json"
                            }
                        ],
                        "body": null,
                        "description": "Distinct providers, models, countries and languages that have actually run for this prompt.\nUsed to populate the filter dropdowns on the prompt detail page."
                    },
                    "response": [
                        {
                            "header": [
                                {
                                    "key": "cache-control",
                                    "value": "no-cache, private"
                                },
                                {
                                    "key": "content-type",
                                    "value": "application\/json"
                                },
                                {
                                    "key": "vary",
                                    "value": "Origin"
                                }
                            ],
                            "code": 401,
                            "body": "{\"message\":\"Unauthenticated.\"}",
                            "name": ""
                        }
                    ]
                },
                {
                    "name": "Prompt Citations",
                    "request": {
                        "url": {
                            "host": "{{baseUrl}}",
                            "path": "api\/organisations\/:organisation_uuid\/ai-visibility\/prompts\/:prompt\/citations",
                            "query": [],
                            "raw": "{{baseUrl}}\/api\/organisations\/:organisation_uuid\/ai-visibility\/prompts\/:prompt\/citations",
                            "variable": [
                                {
                                    "id": "organisation_uuid",
                                    "key": "organisation_uuid",
                                    "value": "660e8400-e29b-41d4-a716-446655440001",
                                    "description": "The organisation UUID."
                                },
                                {
                                    "id": "prompt",
                                    "key": "prompt",
                                    "value": "1",
                                    "description": "The prompt ID."
                                }
                            ]
                        },
                        "method": "POST",
                        "header": [
                            {
                                "key": "Content-Type",
                                "value": "application\/json"
                            },
                            {
                                "key": "Accept",
                                "value": "application\/json"
                            }
                        ],
                        "body": null,
                        "description": "Same shape as `POST \/ai-visibility\/citations`, scoped to this prompt."
                    },
                    "response": []
                },
                {
                    "name": "Prompt Citation Domains (paginated)",
                    "request": {
                        "url": {
                            "host": "{{baseUrl}}",
                            "path": "api\/organisations\/:organisation_uuid\/ai-visibility\/prompts\/:prompt\/citations\/domains",
                            "query": [],
                            "raw": "{{baseUrl}}\/api\/organisations\/:organisation_uuid\/ai-visibility\/prompts\/:prompt\/citations\/domains",
                            "variable": [
                                {
                                    "id": "organisation_uuid",
                                    "key": "organisation_uuid",
                                    "value": "660e8400-e29b-41d4-a716-446655440001",
                                    "description": "The organisation UUID."
                                },
                                {
                                    "id": "prompt",
                                    "key": "prompt",
                                    "value": "1",
                                    "description": "The prompt ID."
                                }
                            ]
                        },
                        "method": "POST",
                        "header": [
                            {
                                "key": "Content-Type",
                                "value": "application\/json"
                            },
                            {
                                "key": "Accept",
                                "value": "application\/json"
                            }
                        ],
                        "body": {
                            "mode": "raw",
                            "raw": "{\"per_page\":16,\"page\":16}"
                        },
                        "description": "Same shape as `POST \/ai-visibility\/citations\/domains`, scoped to this prompt."
                    },
                    "response": []
                },
                {
                    "name": "Prompt Citation URLs (paginated)",
                    "request": {
                        "url": {
                            "host": "{{baseUrl}}",
                            "path": "api\/organisations\/:organisation_uuid\/ai-visibility\/prompts\/:prompt\/citations\/urls",
                            "query": [],
                            "raw": "{{baseUrl}}\/api\/organisations\/:organisation_uuid\/ai-visibility\/prompts\/:prompt\/citations\/urls",
                            "variable": [
                                {
                                    "id": "organisation_uuid",
                                    "key": "organisation_uuid",
                                    "value": "660e8400-e29b-41d4-a716-446655440001",
                                    "description": "The organisation UUID."
                                },
                                {
                                    "id": "prompt",
                                    "key": "prompt",
                                    "value": "1",
                                    "description": "The prompt ID."
                                }
                            ]
                        },
                        "method": "POST",
                        "header": [
                            {
                                "key": "Content-Type",
                                "value": "application\/json"
                            },
                            {
                                "key": "Accept",
                                "value": "application\/json"
                            }
                        ],
                        "body": {
                            "mode": "raw",
                            "raw": "{\"per_page\":16,\"page\":16}"
                        },
                        "description": "Same shape as `POST \/ai-visibility\/citations\/urls`, scoped to this prompt."
                    },
                    "response": []
                },
                {
                    "name": "Export Prompt Citation URLs",
                    "request": {
                        "url": {
                            "host": "{{baseUrl}}",
                            "path": "api\/organisations\/:organisation_uuid\/ai-visibility\/prompts\/:prompt\/citations\/export",
                            "query": [],
                            "raw": "{{baseUrl}}\/api\/organisations\/:organisation_uuid\/ai-visibility\/prompts\/:prompt\/citations\/export",
                            "variable": [
                                {
                                    "id": "organisation_uuid",
                                    "key": "organisation_uuid",
                                    "value": "660e8400-e29b-41d4-a716-446655440001",
                                    "description": "The organisation UUID."
                                },
                                {
                                    "id": "prompt",
                                    "key": "prompt",
                                    "value": "1",
                                    "description": "The prompt ID."
                                }
                            ]
                        },
                        "method": "POST",
                        "header": [
                            {
                                "key": "Content-Type",
                                "value": "application\/json"
                            },
                            {
                                "key": "Accept",
                                "value": "application\/json"
                            }
                        ],
                        "body": null,
                        "description": ""
                    },
                    "response": []
                },
                {
                    "name": "GET api\/organisations\/{organisation_uuid}\/ai-visibility\/prompts\/{prompt}\/responses",
                    "request": {
                        "url": {
                            "host": "{{baseUrl}}",
                            "path": "api\/organisations\/:organisation_uuid\/ai-visibility\/prompts\/:prompt\/responses",
                            "query": [],
                            "raw": "{{baseUrl}}\/api\/organisations\/:organisation_uuid\/ai-visibility\/prompts\/:prompt\/responses",
                            "variable": [
                                {
                                    "id": "organisation_uuid",
                                    "key": "organisation_uuid",
                                    "value": "205ae76c-bd73-426b-a36a-8338353b9542",
                                    "description": ""
                                },
                                {
                                    "id": "prompt",
                                    "key": "prompt",
                                    "value": "architecto",
                                    "description": "The prompt."
                                }
                            ]
                        },
                        "method": "GET",
                        "header": [
                            {
                                "key": "Content-Type",
                                "value": "application\/json"
                            },
                            {
                                "key": "Accept",
                                "value": "application\/json"
                            }
                        ],
                        "body": null,
                        "description": ""
                    },
                    "response": [
                        {
                            "header": [
                                {
                                    "key": "cache-control",
                                    "value": "no-cache, private"
                                },
                                {
                                    "key": "content-type",
                                    "value": "application\/json"
                                },
                                {
                                    "key": "vary",
                                    "value": "Origin"
                                }
                            ],
                            "code": 401,
                            "body": "{\"message\":\"Unauthenticated.\"}",
                            "name": ""
                        }
                    ]
                },
                {
                    "name": "Prompt Response Detail",
                    "request": {
                        "url": {
                            "host": "{{baseUrl}}",
                            "path": "api\/organisations\/:organisation_uuid\/ai-visibility\/prompts\/:prompt\/responses\/:execution",
                            "query": [],
                            "raw": "{{baseUrl}}\/api\/organisations\/:organisation_uuid\/ai-visibility\/prompts\/:prompt\/responses\/:execution",
                            "variable": [
                                {
                                    "id": "organisation_uuid",
                                    "key": "organisation_uuid",
                                    "value": "660e8400-e29b-41d4-a716-446655440001",
                                    "description": "The organisation UUID."
                                },
                                {
                                    "id": "prompt",
                                    "key": "prompt",
                                    "value": "1",
                                    "description": "The prompt ID."
                                },
                                {
                                    "id": "execution",
                                    "key": "execution",
                                    "value": "42",
                                    "description": "The execution ID."
                                }
                            ]
                        },
                        "method": "GET",
                        "header": [
                            {
                                "key": "Content-Type",
                                "value": "application\/json"
                            },
                            {
                                "key": "Accept",
                                "value": "application\/json"
                            }
                        ],
                        "body": null,
                        "description": "Full detail for a single execution \u2014 backs the \"AI Response\" modal on the prompt responses tab."
                    },
                    "response": [
                        {
                            "header": [],
                            "code": 200,
                            "body": "{\"data\":{\"execution_id\":42,\"prompt_title\":\"How does Notion help teams?\",\"provider\":\"openai\",\"model\":\"gpt-4o\",\"date\":\"2026-06-25 09:00:00\",\"detected_brands\":[{\"name\":\"Notion\",\"website\":\"notion.com\"}],\"sentiment\":\"positive\",\"is_brand_mentioned\":true,\"response_content\":\"Notion helps teams...\",\"citations\":[{\"rank\":1,\"url\":\"https:\/\/notion.so\/blog\",\"title\":\"Notion Blog\",\"domain\":\"notion.so\",\"page_type\":\"references\"}]}}",
                            "name": ""
                        }
                    ]
                },
                {
                    "name": "Full detail for a single radar (Google AI Overview) response.",
                    "request": {
                        "url": {
                            "host": "{{baseUrl}}",
                            "path": "api\/organisations\/:organisation_uuid\/ai-visibility\/prompts\/:prompt\/radar-responses\/:radarResponse",
                            "query": [],
                            "raw": "{{baseUrl}}\/api\/organisations\/:organisation_uuid\/ai-visibility\/prompts\/:prompt\/radar-responses\/:radarResponse",
                            "variable": [
                                {
                                    "id": "organisation_uuid",
                                    "key": "organisation_uuid",
                                    "value": "6ff8f7f6-1eb3-3525-be4a-3932c805afed",
                                    "description": ""
                                },
                                {
                                    "id": "prompt",
                                    "key": "prompt",
                                    "value": "16",
                                    "description": ""
                                },
                                {
                                    "id": "radarResponse",
                                    "key": "radarResponse",
                                    "value": "16",
                                    "description": "The radar_response id."
                                }
                            ]
                        },
                        "method": "GET",
                        "header": [
                            {
                                "key": "Content-Type",
                                "value": "application\/json"
                            },
                            {
                                "key": "Accept",
                                "value": "application\/json"
                            }
                        ],
                        "body": null,
                        "description": ""
                    },
                    "response": [
                        {
                            "header": [
                                {
                                    "key": "cache-control",
                                    "value": "no-cache, private"
                                },
                                {
                                    "key": "content-type",
                                    "value": "application\/json"
                                },
                                {
                                    "key": "vary",
                                    "value": "Origin"
                                }
                            ],
                            "code": 401,
                            "body": "{\"message\":\"Unauthenticated.\"}",
                            "name": ""
                        }
                    ]
                },
                {
                    "name": "Export Prompt Responses",
                    "request": {
                        "url": {
                            "host": "{{baseUrl}}",
                            "path": "api\/organisations\/:organisation_uuid\/ai-visibility\/prompts\/:prompt\/responses\/export",
                            "query": [],
                            "raw": "{{baseUrl}}\/api\/organisations\/:organisation_uuid\/ai-visibility\/prompts\/:prompt\/responses\/export",
                            "variable": [
                                {
                                    "id": "organisation_uuid",
                                    "key": "organisation_uuid",
                                    "value": "660e8400-e29b-41d4-a716-446655440001",
                                    "description": "The organisation UUID."
                                },
                                {
                                    "id": "prompt",
                                    "key": "prompt",
                                    "value": "1",
                                    "description": "The prompt ID."
                                }
                            ]
                        },
                        "method": "POST",
                        "header": [
                            {
                                "key": "Content-Type",
                                "value": "application\/json"
                            },
                            {
                                "key": "Accept",
                                "value": "application\/json"
                            }
                        ],
                        "body": null,
                        "description": ""
                    },
                    "response": []
                },
                {
                    "name": "Execution Detail",
                    "request": {
                        "url": {
                            "host": "{{baseUrl}}",
                            "path": "api\/organisations\/:organisation_uuid\/ai-visibility\/executions\/:execution",
                            "query": [],
                            "raw": "{{baseUrl}}\/api\/organisations\/:organisation_uuid\/ai-visibility\/executions\/:execution",
                            "variable": [
                                {
                                    "id": "organisation_uuid",
                                    "key": "organisation_uuid",
                                    "value": "660e8400-e29b-41d4-a716-446655440001",
                                    "description": "The organisation UUID."
                                },
                                {
                                    "id": "execution",
                                    "key": "execution",
                                    "value": "501",
                                    "description": "The execution ID."
                                }
                            ]
                        },
                        "method": "GET",
                        "header": [
                            {
                                "key": "Content-Type",
                                "value": "application\/json"
                            },
                            {
                                "key": "Accept",
                                "value": "application\/json"
                            }
                        ],
                        "body": null,
                        "description": "Not scoped to a prompt and exempt from the dashboard cache \u2014 reads live, per Ticket 7's\nspec. Full detail (including inline citation segments) is available regardless of whether\nraw_response has since been pruned by retention (Ticket 8) \u2014 citation_segments is derived\nonce at normalization time (see NormalizeAiVisibilityExecutionJob) and persisted alongside\ngenerated_answer, neither of which the prune command ever touches."
                    },
                    "response": [
                        {
                            "header": [
                                {
                                    "key": "cache-control",
                                    "value": "no-cache, private"
                                },
                                {
                                    "key": "content-type",
                                    "value": "application\/json"
                                },
                                {
                                    "key": "vary",
                                    "value": "Origin"
                                }
                            ],
                            "code": 401,
                            "body": "{\"message\":\"Unauthenticated.\"}",
                            "name": ""
                        }
                    ]
                }
            ]
        },
        {
            "name": "AI Visibility - Prompts",
            "description": "\nAPIs for managing AI Visibility prompts, their scheduled executions, and execution detail.",
            "item": [
                {
                    "name": "List Prompts",
                    "request": {
                        "url": {
                            "host": "{{baseUrl}}",
                            "path": "api\/organisations\/:organisation_uuid\/ai-visibility\/prompts",
                            "query": [
                                {
                                    "key": "topic_id",
                                    "value": "16",
                                    "description": "Optional - filter by topic.",
                                    "disabled": false
                                },
                                {
                                    "key": "status",
                                    "value": "active",
                                    "description": "Optional - filter by status (active, paused, archived).",
                                    "disabled": false
                                },
                                {
                                    "key": "search",
                                    "value": "pricing",
                                    "description": "Optional - keyword search on prompt text.",
                                    "disabled": false
                                },
                                {
                                    "key": "per_page",
                                    "value": "20",
                                    "description": "Optional - results per page. Default: 20.",
                                    "disabled": false
                                }
                            ],
                            "raw": "{{baseUrl}}\/api\/organisations\/:organisation_uuid\/ai-visibility\/prompts?topic_id=16&status=active&search=pricing&per_page=20",
                            "variable": [
                                {
                                    "id": "organisation_uuid",
                                    "key": "organisation_uuid",
                                    "value": "660e8400-e29b-41d4-a716-446655440001",
                                    "description": "The organisation UUID."
                                }
                            ]
                        },
                        "method": "GET",
                        "header": [
                            {
                                "key": "Content-Type",
                                "value": "application\/json"
                            },
                            {
                                "key": "Accept",
                                "value": "application\/json"
                            }
                        ],
                        "body": null,
                        "description": ""
                    },
                    "response": [
                        {
                            "header": [
                                {
                                    "key": "cache-control",
                                    "value": "no-cache, private"
                                },
                                {
                                    "key": "content-type",
                                    "value": "application\/json"
                                },
                                {
                                    "key": "vary",
                                    "value": "Origin"
                                }
                            ],
                            "code": 401,
                            "body": "{\"message\":\"Unauthenticated.\"}",
                            "name": ""
                        }
                    ]
                },
                {
                    "name": "Create Prompt",
                    "request": {
                        "url": {
                            "host": "{{baseUrl}}",
                            "path": "api\/organisations\/:organisation_uuid\/ai-visibility\/prompts",
                            "query": [],
                            "raw": "{{baseUrl}}\/api\/organisations\/:organisation_uuid\/ai-visibility\/prompts",
                            "variable": [
                                {
                                    "id": "organisation_uuid",
                                    "key": "organisation_uuid",
                                    "value": "660e8400-e29b-41d4-a716-446655440001",
                                    "description": "The organisation UUID."
                                }
                            ]
                        },
                        "method": "POST",
                        "header": [
                            {
                                "key": "Content-Type",
                                "value": "application\/json"
                            },
                            {
                                "key": "Accept",
                                "value": "application\/json"
                            }
                        ],
                        "body": {
                            "mode": "raw",
                            "raw": "{\"text\":\"How does our product compare to competitors?\",\"topic_id\":16,\"country\":\"NG\",\"language\":\"en\",\"frequency\":\"weekly\",\"providers\":[\"openai\",\"perplexity\"],\"skip_first_run\":true}"
                        },
                        "description": ""
                    },
                    "response": [
                        {
                            "header": [],
                            "code": 201,
                            "body": "{\n  \"data\": {\n    \"id\": 1,\n    \"text\": \"How does our product compare to competitors?\",\n    \"topic_id\": 16,\n    \"country\": \"NG\",\n    \"language\": \"en\",\n    \"frequency\": \"weekly\",\n    \"status\": \"active\",\n    \"providers\": [\"openai\", \"perplexity\"]\n  }\n}",
                            "name": ""
                        },
                        {
                            "header": [],
                            "code": 403,
                            "body": "{\n  \"message\": \"AI Visibility is not enabled for this organisation.\"\n}",
                            "name": ""
                        },
                        {
                            "header": [],
                            "code": 422,
                            "body": "{\n  \"message\": \"Active prompt limit reached for this plan.\"\n}",
                            "name": ""
                        }
                    ]
                },
                {
                    "name": "Bulk Import Prompts",
                    "request": {
                        "url": {
                            "host": "{{baseUrl}}",
                            "path": "api\/organisations\/:organisation_uuid\/ai-visibility\/prompts\/bulk-import",
                            "query": [],
                            "raw": "{{baseUrl}}\/api\/organisations\/:organisation_uuid\/ai-visibility\/prompts\/bulk-import",
                            "variable": [
                                {
                                    "id": "organisation_uuid",
                                    "key": "organisation_uuid",
                                    "value": "6ff8f7f6-1eb3-3525-be4a-3932c805afed",
                                    "description": "The organisation UUID."
                                }
                            ]
                        },
                        "method": "POST",
                        "header": [
                            {
                                "key": "Content-Type",
                                "value": "application\/json"
                            },
                            {
                                "key": "Accept",
                                "value": "application\/json"
                            }
                        ],
                        "body": {
                            "mode": "raw",
                            "raw": "{\"topic_id\":16,\"prompts\":[\"architecto\"],\"activate\":false}"
                        },
                        "description": "Accepts a flat list of prompt texts assigned to a single topic, split against the plan\nactive-prompt limit: prompts that fit are created as active and dispatched on the priority\nqueue; any overflow is created as paused. Case-insensitive exact duplicates are skipped."
                    },
                    "response": []
                },
                {
                    "name": "Get Organisation-Level Execution Status",
                    "request": {
                        "url": {
                            "host": "{{baseUrl}}",
                            "path": "api\/organisations\/:organisation_uuid\/ai-visibility\/prompts\/execution-status",
                            "query": [],
                            "raw": "{{baseUrl}}\/api\/organisations\/:organisation_uuid\/ai-visibility\/prompts\/execution-status",
                            "variable": [
                                {
                                    "id": "organisation_uuid",
                                    "key": "organisation_uuid",
                                    "value": "660e8400-e29b-41d4-a716-446655440001",
                                    "description": "The organisation UUID."
                                }
                            ]
                        },
                        "method": "GET",
                        "header": [
                            {
                                "key": "Content-Type",
                                "value": "application\/json"
                            },
                            {
                                "key": "Accept",
                                "value": "application\/json"
                            }
                        ],
                        "body": null,
                        "description": "Polling endpoint for the frontend to show a banner (\"results are being recalculated\")\nwhile any AI Visibility execution across the organisation is still in progress. Bounded by\nupdated_at (not scheduled_at -- recurring prompts get scheduled_at pinned to midnight, so\nthat column can't tell \"just went pending\/running\" apart from \"queued 10 hours ago\") to a\nrecent window rather than all-time, since any legitimate in-flight execution resolves\n(completes, fails, or gets reaped by ai-visibility:reap-stale-executions) well within it.\nAlso counts radar (Google AI Overview) rows still in 'pending' status.\n\nin_progress_count is the number of distinct prompts still in flight, not the number of\nrows -- a single prompt fans out to one execution row per provider (openai, perplexity,\n...) plus its own radar row, so counting rows would overstate how many prompts are\nactually still running.\n\nAlways queried fresh (no caching layer, no-store response header) \u2014 every poll reflects\nthe current DB state exactly."
                    },
                    "response": [
                        {
                            "header": [],
                            "code": 200,
                            "body": "{\n  \"data\": {\n    \"in_progress\": true,\n    \"in_progress_count\": 2\n  }\n}",
                            "name": ""
                        }
                    ]
                },
                {
                    "name": "Regions In Use",
                    "request": {
                        "url": {
                            "host": "{{baseUrl}}",
                            "path": "api\/organisations\/:organisation_uuid\/ai-visibility\/prompts\/regions",
                            "query": [],
                            "raw": "{{baseUrl}}\/api\/organisations\/:organisation_uuid\/ai-visibility\/prompts\/regions",
                            "variable": [
                                {
                                    "id": "organisation_uuid",
                                    "key": "organisation_uuid",
                                    "value": "660e8400-e29b-41d4-a716-446655440001",
                                    "description": "The organisation UUID."
                                }
                            ]
                        },
                        "method": "GET",
                        "header": [
                            {
                                "key": "Content-Type",
                                "value": "application\/json"
                            },
                            {
                                "key": "Accept",
                                "value": "application\/json"
                            }
                        ],
                        "body": null,
                        "description": "Distinct region\/country codes actually configured on this organisation's own prompts --\nNOT the full curated config('ai_visibility.supported_regions') list that\nOrganisationController::supportedRegions() returns (that one backs region *pickers* on\ncreation forms, where every supported region is a valid choice). This backs the AI\nVisibility dashboard's region *filter* dropdowns (Platforms\/Visibility\/Sentiment\/\nCitations), which should only ever offer a region that at least one of this org's prompts\ncould actually produce data for -- offering the full global list there let an org filter by\na region with zero prompts and see an always-empty result with no indication why.\n\nScoped to active\/paused prompts only, same default scope as index() -- an archived prompt's\nregion isn't a live filtering concern."
                    },
                    "response": [
                        {
                            "header": [],
                            "code": 200,
                            "body": "{\n  \"data\": [\n    {\"value\": \"US\", \"label\": \"United States\"},\n    {\"value\": \"GB\", \"label\": \"United Kingdom\"}\n  ]\n}",
                            "name": ""
                        }
                    ]
                },
                {
                    "name": "Get Prompt",
                    "request": {
                        "url": {
                            "host": "{{baseUrl}}",
                            "path": "api\/organisations\/:organisation_uuid\/ai-visibility\/prompts\/:prompt",
                            "query": [],
                            "raw": "{{baseUrl}}\/api\/organisations\/:organisation_uuid\/ai-visibility\/prompts\/:prompt",
                            "variable": [
                                {
                                    "id": "organisation_uuid",
                                    "key": "organisation_uuid",
                                    "value": "660e8400-e29b-41d4-a716-446655440001",
                                    "description": "The organisation UUID."
                                },
                                {
                                    "id": "prompt",
                                    "key": "prompt",
                                    "value": "1",
                                    "description": "The prompt ID."
                                }
                            ]
                        },
                        "method": "GET",
                        "header": [
                            {
                                "key": "Content-Type",
                                "value": "application\/json"
                            },
                            {
                                "key": "Accept",
                                "value": "application\/json"
                            }
                        ],
                        "body": null,
                        "description": ""
                    },
                    "response": [
                        {
                            "header": [
                                {
                                    "key": "cache-control",
                                    "value": "no-cache, private"
                                },
                                {
                                    "key": "content-type",
                                    "value": "application\/json"
                                },
                                {
                                    "key": "vary",
                                    "value": "Origin"
                                }
                            ],
                            "code": 401,
                            "body": "{\"message\":\"Unauthenticated.\"}",
                            "name": ""
                        },
                        {
                            "header": [],
                            "code": 404,
                            "body": "{\n  \"message\": \"Prompt not found.\"\n}",
                            "name": ""
                        }
                    ]
                },
                {
                    "name": "Update Prompt",
                    "request": {
                        "url": {
                            "host": "{{baseUrl}}",
                            "path": "api\/organisations\/:organisation_uuid\/ai-visibility\/prompts\/:prompt",
                            "query": [],
                            "raw": "{{baseUrl}}\/api\/organisations\/:organisation_uuid\/ai-visibility\/prompts\/:prompt",
                            "variable": [
                                {
                                    "id": "organisation_uuid",
                                    "key": "organisation_uuid",
                                    "value": "660e8400-e29b-41d4-a716-446655440001",
                                    "description": "The organisation UUID."
                                },
                                {
                                    "id": "prompt",
                                    "key": "prompt",
                                    "value": "1",
                                    "description": "The prompt ID."
                                }
                            ]
                        },
                        "method": "PATCH",
                        "header": [
                            {
                                "key": "Content-Type",
                                "value": "application\/json"
                            },
                            {
                                "key": "Accept",
                                "value": "application\/json"
                            }
                        ],
                        "body": {
                            "mode": "raw",
                            "raw": "{\"text\":\"How does our product compare to competitors?\",\"topic_id\":16,\"country\":\"NG\",\"language\":\"en\",\"frequency\":\"weekly\",\"status\":\"active\",\"providers\":[\"openai\",\"perplexity\"]}"
                        },
                        "description": ""
                    },
                    "response": [
                        {
                            "header": [],
                            "code": 404,
                            "body": "{\n  \"message\": \"Prompt not found.\"\n}",
                            "name": ""
                        },
                        {
                            "header": [],
                            "code": 422,
                            "body": "{\n  \"message\": \"This frequency is not allowed on the current plan.\"\n}",
                            "name": ""
                        }
                    ]
                },
                {
                    "name": "Duplicate Prompt",
                    "request": {
                        "url": {
                            "host": "{{baseUrl}}",
                            "path": "api\/organisations\/:organisation_uuid\/ai-visibility\/prompts\/:prompt\/duplicate",
                            "query": [],
                            "raw": "{{baseUrl}}\/api\/organisations\/:organisation_uuid\/ai-visibility\/prompts\/:prompt\/duplicate",
                            "variable": [
                                {
                                    "id": "organisation_uuid",
                                    "key": "organisation_uuid",
                                    "value": "660e8400-e29b-41d4-a716-446655440001",
                                    "description": "The organisation UUID."
                                },
                                {
                                    "id": "prompt",
                                    "key": "prompt",
                                    "value": "1",
                                    "description": "The prompt ID to duplicate."
                                }
                            ]
                        },
                        "method": "POST",
                        "header": [
                            {
                                "key": "Content-Type",
                                "value": "application\/json"
                            },
                            {
                                "key": "Accept",
                                "value": "application\/json"
                            }
                        ],
                        "body": null,
                        "description": "Creates a paused copy of the prompt with the same topic, text, country, language,\nfrequency and providers."
                    },
                    "response": [
                        {
                            "header": [],
                            "code": 404,
                            "body": "{\n  \"message\": \"Prompt not found.\"\n}",
                            "name": ""
                        },
                        {
                            "header": [],
                            "code": 422,
                            "body": "{\n  \"message\": \"Active prompt limit reached for this plan.\"\n}",
                            "name": ""
                        }
                    ]
                },
                {
                    "name": "Delete Prompt",
                    "request": {
                        "url": {
                            "host": "{{baseUrl}}",
                            "path": "api\/organisations\/:organisation_uuid\/ai-visibility\/prompts\/:prompt",
                            "query": [],
                            "raw": "{{baseUrl}}\/api\/organisations\/:organisation_uuid\/ai-visibility\/prompts\/:prompt",
                            "variable": [
                                {
                                    "id": "organisation_uuid",
                                    "key": "organisation_uuid",
                                    "value": "660e8400-e29b-41d4-a716-446655440001",
                                    "description": "The organisation UUID."
                                },
                                {
                                    "id": "prompt",
                                    "key": "prompt",
                                    "value": "1",
                                    "description": "The prompt ID."
                                }
                            ]
                        },
                        "method": "DELETE",
                        "header": [
                            {
                                "key": "Content-Type",
                                "value": "application\/json"
                            },
                            {
                                "key": "Accept",
                                "value": "application\/json"
                            }
                        ],
                        "body": null,
                        "description": ""
                    },
                    "response": [
                        {
                            "header": [],
                            "code": 204,
                            "body": "{}",
                            "name": ""
                        },
                        {
                            "header": [],
                            "code": 404,
                            "body": "{\n  \"message\": \"Prompt not found.\"\n}",
                            "name": ""
                        }
                    ]
                },
                {
                    "name": "Run Prompt Now",
                    "request": {
                        "url": {
                            "host": "{{baseUrl}}",
                            "path": "api\/organisations\/:organisation_uuid\/ai-visibility\/prompts\/:prompt\/run",
                            "query": [],
                            "raw": "{{baseUrl}}\/api\/organisations\/:organisation_uuid\/ai-visibility\/prompts\/:prompt\/run",
                            "variable": [
                                {
                                    "id": "organisation_uuid",
                                    "key": "organisation_uuid",
                                    "value": "660e8400-e29b-41d4-a716-446655440001",
                                    "description": "The organisation UUID."
                                },
                                {
                                    "id": "prompt",
                                    "key": "prompt",
                                    "value": "1",
                                    "description": "The prompt ID."
                                }
                            ]
                        },
                        "method": "POST",
                        "header": [
                            {
                                "key": "Content-Type",
                                "value": "application\/json"
                            },
                            {
                                "key": "Accept",
                                "value": "application\/json"
                            }
                        ],
                        "body": null,
                        "description": "Manually dispatches a fresh execution for this prompt across all of its allowed providers,\nindependent of the scheduler."
                    },
                    "response": [
                        {
                            "header": [],
                            "code": 202,
                            "body": "{\n  \"data\": {\n    \"prompt_id\": 1,\n    \"execution_ids\": [501, 502]\n  }\n}",
                            "name": ""
                        },
                        {
                            "header": [],
                            "code": 404,
                            "body": "{\n  \"message\": \"Prompt not found.\"\n}",
                            "name": ""
                        },
                        {
                            "header": [],
                            "code": 422,
                            "body": "{\n  \"message\": \"No allowed and available provider could run this prompt.\"\n}",
                            "name": ""
                        }
                    ]
                },
                {
                    "name": "List Prompt Executions",
                    "request": {
                        "url": {
                            "host": "{{baseUrl}}",
                            "path": "api\/organisations\/:organisation_uuid\/ai-visibility\/prompts\/:prompt\/executions",
                            "query": [
                                {
                                    "key": "provider",
                                    "value": "openai",
                                    "description": "Optional - filter by provider.",
                                    "disabled": false
                                },
                                {
                                    "key": "status",
                                    "value": "completed",
                                    "description": "Optional - filter by execution status.",
                                    "disabled": false
                                },
                                {
                                    "key": "per_page",
                                    "value": "20",
                                    "description": "Optional - results per page. Default: 20.",
                                    "disabled": false
                                }
                            ],
                            "raw": "{{baseUrl}}\/api\/organisations\/:organisation_uuid\/ai-visibility\/prompts\/:prompt\/executions?provider=openai&status=completed&per_page=20",
                            "variable": [
                                {
                                    "id": "organisation_uuid",
                                    "key": "organisation_uuid",
                                    "value": "660e8400-e29b-41d4-a716-446655440001",
                                    "description": "The organisation UUID."
                                },
                                {
                                    "id": "prompt",
                                    "key": "prompt",
                                    "value": "1",
                                    "description": "The prompt ID."
                                }
                            ]
                        },
                        "method": "GET",
                        "header": [
                            {
                                "key": "Content-Type",
                                "value": "application\/json"
                            },
                            {
                                "key": "Accept",
                                "value": "application\/json"
                            }
                        ],
                        "body": null,
                        "description": "\"All Responses\" list \u2014 one row per execution (\"chat\") run for this prompt, newest first."
                    },
                    "response": [
                        {
                            "header": [
                                {
                                    "key": "cache-control",
                                    "value": "no-cache, private"
                                },
                                {
                                    "key": "content-type",
                                    "value": "application\/json"
                                },
                                {
                                    "key": "vary",
                                    "value": "Origin"
                                }
                            ],
                            "code": 401,
                            "body": "{\"message\":\"Unauthenticated.\"}",
                            "name": ""
                        },
                        {
                            "header": [],
                            "code": 404,
                            "body": "{\n  \"message\": \"Prompt not found.\"\n}",
                            "name": ""
                        }
                    ]
                },
                {
                    "name": "Get Prompt Execution Detail",
                    "request": {
                        "url": {
                            "host": "{{baseUrl}}",
                            "path": "api\/organisations\/:organisation_uuid\/ai-visibility\/prompts\/:prompt\/executions\/:execution",
                            "query": [],
                            "raw": "{{baseUrl}}\/api\/organisations\/:organisation_uuid\/ai-visibility\/prompts\/:prompt\/executions\/:execution",
                            "variable": [
                                {
                                    "id": "organisation_uuid",
                                    "key": "organisation_uuid",
                                    "value": "660e8400-e29b-41d4-a716-446655440001",
                                    "description": "The organisation UUID."
                                },
                                {
                                    "id": "prompt",
                                    "key": "prompt",
                                    "value": "1",
                                    "description": "The prompt ID."
                                },
                                {
                                    "id": "execution",
                                    "key": "execution",
                                    "value": "501",
                                    "description": "The execution ID."
                                }
                            ]
                        },
                        "method": "GET",
                        "header": [
                            {
                                "key": "Content-Type",
                                "value": "application\/json"
                            },
                            {
                                "key": "Accept",
                                "value": "application\/json"
                            }
                        ],
                        "body": null,
                        "description": "\"Edit Responses\" chat detail \u2014 full generated answer, citations, and per-brand mentions\nfor a single execution."
                    },
                    "response": [
                        {
                            "header": [
                                {
                                    "key": "cache-control",
                                    "value": "no-cache, private"
                                },
                                {
                                    "key": "content-type",
                                    "value": "application\/json"
                                },
                                {
                                    "key": "vary",
                                    "value": "Origin"
                                }
                            ],
                            "code": 401,
                            "body": "{\"message\":\"Unauthenticated.\"}",
                            "name": ""
                        },
                        {
                            "header": [],
                            "code": 404,
                            "body": "{\n  \"message\": \"Execution not found.\"\n}",
                            "name": ""
                        }
                    ]
                },
                {
                    "name": "Get Prompt Execution Status",
                    "request": {
                        "url": {
                            "host": "{{baseUrl}}",
                            "path": "api\/organisations\/:organisation_uuid\/ai-visibility\/prompts\/:prompt\/execution-status",
                            "query": [],
                            "raw": "{{baseUrl}}\/api\/organisations\/:organisation_uuid\/ai-visibility\/prompts\/:prompt\/execution-status",
                            "variable": [
                                {
                                    "id": "organisation_uuid",
                                    "key": "organisation_uuid",
                                    "value": "660e8400-e29b-41d4-a716-446655440001",
                                    "description": "The organisation UUID."
                                },
                                {
                                    "id": "prompt",
                                    "key": "prompt",
                                    "value": "1",
                                    "description": "The prompt ID."
                                }
                            ]
                        },
                        "method": "GET",
                        "header": [
                            {
                                "key": "Content-Type",
                                "value": "application\/json"
                            },
                            {
                                "key": "Accept",
                                "value": "application\/json"
                            }
                        ],
                        "body": null,
                        "description": "Polling endpoint for the frontend to show a loading skeleton while a prompt's latest run\nis still in progress. \"In progress\" covers both an execution that hasn't finished calling\nits provider yet, and one that has (status=completed) but whose citations\/brand-mentions\nhaven't been written yet by the normalization job that runs right after \u2014 status alone\nflips to completed before that data exists, so this checks processing_version too rather\nthan reporting \"ready\" before there's anything real to show. Also folds in the org's latest\nradar (Google AI Overview) pull for this prompt, if radar is enabled on its plan \u2014 radar\nrows live in a separate table (ai_visibility_radar_responses) with their own\npending\/normalised\/failed lifecycle, but ai_visibility_radar_responses.prompt_id is a real\nFK to this same prompt, so it belongs in this prompt's status too.\n\nAlways queried fresh (no caching layer, no-store response header) \u2014 every poll reflects\nthe current DB state exactly."
                    },
                    "response": [
                        {
                            "header": [],
                            "code": 200,
                            "body": "{\n  \"data\": {\n    \"status\": \"in_progress\",\n    \"scheduled_at\": \"2026-08-14 12:23:00\",\n    \"providers\": [\n      {\"provider\": \"openai\", \"status\": \"in_progress\"},\n      {\"provider\": \"perplexity\", \"status\": \"ready\"},\n      {\"provider\": \"google_ai_overviews\", \"status\": \"ready\"}\n    ]\n  }\n}",
                            "name": ""
                        },
                        {
                            "header": [],
                            "code": 404,
                            "body": "{\n  \"message\": \"Prompt not found.\"\n}",
                            "name": ""
                        }
                    ]
                }
            ]
        },
        {
            "name": "AI Visibility - Suggestions",
            "description": "\nPrompt and topic suggestions generated by GenerateAiVisibilitySuggestionsJob. Suggestions start\nas `completed` and move to `accepted` or `dismissed` when the user acts on them.",
            "item": [
                {
                    "name": "List prompt suggestions",
                    "request": {
                        "url": {
                            "host": "{{baseUrl}}",
                            "path": "api\/organisations\/:organisation_uuid\/ai-visibility\/prompts\/suggested",
                            "query": [
                                {
                                    "key": "exclude_categories[0]",
                                    "value": "branded",
                                    "description": "Optional categories to exclude.",
                                    "disabled": false
                                }
                            ],
                            "raw": "{{baseUrl}}\/api\/organisations\/:organisation_uuid\/ai-visibility\/prompts\/suggested?exclude_categories[0]=branded",
                            "variable": [
                                {
                                    "id": "organisation_uuid",
                                    "key": "organisation_uuid",
                                    "value": "660e8400-e29b-41d4-a716-446655440001",
                                    "description": "The organisation UUID."
                                }
                            ]
                        },
                        "method": "GET",
                        "header": [
                            {
                                "key": "Content-Type",
                                "value": "application\/json"
                            },
                            {
                                "key": "Accept",
                                "value": "application\/json"
                            }
                        ],
                        "body": null,
                        "description": "Returns up to 15 prompt suggestions with status `completed` for the organisation,\nordered by source (radar first), then volume descending, then most recent."
                    },
                    "response": [
                        {
                            "header": [],
                            "code": 200,
                            "body": "{\"data\":[{\"id\":1,\"text\":\"What is the best tool for notes and docs?\",\"category\":\"awareness\",\"source\":\"radar\",\"volume\":12000,\"status\":\"completed\",\"generated_at\":\"2026-06-01 00:00:00\"}]}",
                            "name": ""
                        }
                    ]
                },
                {
                    "name": "Refetch suggestions",
                    "request": {
                        "url": {
                            "host": "{{baseUrl}}",
                            "path": "api\/organisations\/:organisation_uuid\/ai-visibility\/prompts\/suggested\/refetch",
                            "query": [],
                            "raw": "{{baseUrl}}\/api\/organisations\/:organisation_uuid\/ai-visibility\/prompts\/suggested\/refetch",
                            "variable": [
                                {
                                    "id": "organisation_uuid",
                                    "key": "organisation_uuid",
                                    "value": "660e8400-e29b-41d4-a716-446655440001",
                                    "description": "The organisation UUID."
                                }
                            ]
                        },
                        "method": "POST",
                        "header": [
                            {
                                "key": "Content-Type",
                                "value": "application\/json"
                            },
                            {
                                "key": "Accept",
                                "value": "application\/json"
                            }
                        ],
                        "body": null,
                        "description": "A separate, standalone generation path from GenerateAiVisibilitySuggestionsJob (the\nonboarding job) \u2014 deliberately not shared code, so this can never change that job's\nbehavior. Two differences from onboarding generation: (1) previously dismissed suggestions\nare deleted first so a fresh batch can take their place \u2014 an upsert alone would otherwise\nleave a dismissed row's regenerated duplicate stuck as dismissed forever, since the upsert\nnever touches `status`; `completed`\/`accepted` suggestions are left untouched. (2) an LLM\nfailure here is a real error, not silently swallowed into the generic fallback set \u2014 a user\nwho clicks \"refetch\" wants real, freshly-generated suggestions, and substituting the generic\nfallback would look like a genuine refresh when it isn't one.\n\nRate-limited to once per 10 minutes per org: a successful call holds its lock for the full\ncooldown (not released in a finally) so a second click can't trigger another LLM call too\nsoon; a failed call releases immediately since it never produced anything worth protecting.\nA request that lands inside an active cooldown isn't rejected \u2014 it gets back the same\nexisting (still-valid) suggestions with `cached: true`, rather than a bare error."
                    },
                    "response": [
                        {
                            "header": [],
                            "code": 200,
                            "body": "{\"data\":{\"topics\":[{\"id\":1,\"name\":\"Feature Discovery\",\"description\":\"...\",\"source\":\"llm\",\"status\":\"completed\",\"generated_at\":\"2026-06-01 00:00:00\"}],\"prompts\":[{\"id\":1,\"text\":\"What is the best tool for notes and docs?\",\"category\":\"awareness\",\"source\":\"llm\",\"status\":\"completed\",\"generated_at\":\"2026-06-01 00:00:00\"}]}}",
                            "name": ""
                        },
                        {
                            "header": [],
                            "code": 200,
                            "body": "{\"data\":{\"topics\":[],\"prompts\":[]},\"cached\":true}",
                            "name": ""
                        },
                        {
                            "header": [],
                            "code": 422,
                            "body": "{\"message\":\"No own brand found for this organisation.\"}",
                            "name": ""
                        },
                        {
                            "header": [],
                            "code": 502,
                            "body": "{\"message\":\"Failed to generate suggestions. Please try again.\"}",
                            "name": ""
                        }
                    ]
                },
                {
                    "name": "Accept a prompt suggestion",
                    "request": {
                        "url": {
                            "host": "{{baseUrl}}",
                            "path": "api\/organisations\/:organisation_uuid\/ai-visibility\/prompts\/suggested\/:suggestion\/accept",
                            "query": [],
                            "raw": "{{baseUrl}}\/api\/organisations\/:organisation_uuid\/ai-visibility\/prompts\/suggested\/:suggestion\/accept",
                            "variable": [
                                {
                                    "id": "organisation_uuid",
                                    "key": "organisation_uuid",
                                    "value": "660e8400-e29b-41d4-a716-446655440001",
                                    "description": "The organisation UUID."
                                },
                                {
                                    "id": "suggestion",
                                    "key": "suggestion",
                                    "value": "1",
                                    "description": "The suggestion ID."
                                }
                            ]
                        },
                        "method": "POST",
                        "header": [
                            {
                                "key": "Content-Type",
                                "value": "application\/json"
                            },
                            {
                                "key": "Accept",
                                "value": "application\/json"
                            }
                        ],
                        "body": {
                            "mode": "raw",
                            "raw": "{\"frequency\":\"daily\",\"providers\":[\"openai\"],\"topic_id\":3,\"country\":\"US\",\"language\":\"en\",\"skip_first_run\":true}"
                        },
                        "description": "Creates a live prompt from the suggestion, dispatches an immediate first run, and marks the\nsuggestion as `accepted`. Returns the new prompt's ID and settings."
                    },
                    "response": [
                        {
                            "header": [],
                            "code": 201,
                            "body": "{\"data\":{\"prompt_id\":42,\"text\":\"What is the best tool for notes and docs?\",\"topic_id\":3,\"frequency\":\"daily\",\"providers\":[\"openai\"],\"country\":\"US\",\"language\":\"en\"}}",
                            "name": ""
                        },
                        {
                            "header": [],
                            "code": 422,
                            "body": "{\"message\":\"Active prompt limit reached for this plan.\"}",
                            "name": ""
                        }
                    ]
                },
                {
                    "name": "Dismiss a prompt suggestion",
                    "request": {
                        "url": {
                            "host": "{{baseUrl}}",
                            "path": "api\/organisations\/:organisation_uuid\/ai-visibility\/prompts\/suggested\/:suggestion",
                            "query": [],
                            "raw": "{{baseUrl}}\/api\/organisations\/:organisation_uuid\/ai-visibility\/prompts\/suggested\/:suggestion",
                            "variable": [
                                {
                                    "id": "organisation_uuid",
                                    "key": "organisation_uuid",
                                    "value": "660e8400-e29b-41d4-a716-446655440001",
                                    "description": "The organisation UUID."
                                },
                                {
                                    "id": "suggestion",
                                    "key": "suggestion",
                                    "value": "1",
                                    "description": "The suggestion ID."
                                }
                            ]
                        },
                        "method": "DELETE",
                        "header": [
                            {
                                "key": "Content-Type",
                                "value": "application\/json"
                            },
                            {
                                "key": "Accept",
                                "value": "application\/json"
                            }
                        ],
                        "body": null,
                        "description": "Marks the suggestion as `dismissed`. It will no longer appear in the suggestions list."
                    },
                    "response": [
                        {
                            "header": [],
                            "code": 204,
                            "body": "{}",
                            "name": ""
                        }
                    ]
                },
                {
                    "name": "Onboarding suggestions",
                    "request": {
                        "url": {
                            "host": "{{baseUrl}}",
                            "path": "api\/organisations\/:organisation_uuid\/ai-visibility\/onboarding\/suggestions",
                            "query": [],
                            "raw": "{{baseUrl}}\/api\/organisations\/:organisation_uuid\/ai-visibility\/onboarding\/suggestions",
                            "variable": [
                                {
                                    "id": "organisation_uuid",
                                    "key": "organisation_uuid",
                                    "value": "660e8400-e29b-41d4-a716-446655440001",
                                    "description": "The organisation UUID."
                                }
                            ]
                        },
                        "method": "GET",
                        "header": [
                            {
                                "key": "Content-Type",
                                "value": "application\/json"
                            },
                            {
                                "key": "Accept",
                                "value": "application\/json"
                            }
                        ],
                        "body": null,
                        "description": "Returns both topic and prompt suggestions for the onboarding wizard in a single call.\nDispatch `GenerateAiVisibilitySuggestionsJob` for the org before calling this endpoint to\nensure suggestions are populated."
                    },
                    "response": [
                        {
                            "header": [],
                            "code": 200,
                            "body": "{\"data\":{\"topics\":[{\"id\":1,\"name\":\"Feature Discovery\",\"description\":\"...\",\"source\":\"llm\",\"status\":\"completed\",\"generated_at\":\"2026-06-01 00:00:00\"}],\"prompts\":[{\"id\":1,\"text\":\"What is the best tool for notes?\",\"category\":\"awareness\",\"source\":\"radar\",\"volume\":12000,\"status\":\"completed\",\"generated_at\":\"2026-06-01 00:00:00\"}]}}",
                            "name": ""
                        }
                    ]
                },
                {
                    "name": "Onboarding kickoff",
                    "request": {
                        "url": {
                            "host": "{{baseUrl}}",
                            "path": "api\/organisations\/:organisation_uuid\/ai-visibility\/onboarding\/kickoff",
                            "query": [],
                            "raw": "{{baseUrl}}\/api\/organisations\/:organisation_uuid\/ai-visibility\/onboarding\/kickoff",
                            "variable": [
                                {
                                    "id": "organisation_uuid",
                                    "key": "organisation_uuid",
                                    "value": "6ff8f7f6-1eb3-3525-be4a-3932c805afed",
                                    "description": "The organisation UUID."
                                }
                            ]
                        },
                        "method": "POST",
                        "header": [
                            {
                                "key": "Content-Type",
                                "value": "application\/json"
                            },
                            {
                                "key": "Accept",
                                "value": "application\/json"
                            }
                        ],
                        "body": null,
                        "description": "Dispatches first-run executions on the priority queue for all active prompts the org\naccepted during onboarding (those created with skip_first_run=true). Call this from the\nBrandAnalysisProgress loading screen, after the user has committed to onboarding (step 4),\nso we don't waste compute on users who abandon after the suggestion step."
                    },
                    "response": [
                        {
                            "header": [],
                            "code": 202,
                            "body": "{\"data\":{\"dispatched\":5}}",
                            "name": ""
                        }
                    ]
                },
                {
                    "name": "Onboarding analysis status",
                    "request": {
                        "url": {
                            "host": "{{baseUrl}}",
                            "path": "api\/organisations\/:organisation_uuid\/ai-visibility\/onboarding\/status",
                            "query": [],
                            "raw": "{{baseUrl}}\/api\/organisations\/:organisation_uuid\/ai-visibility\/onboarding\/status",
                            "variable": [
                                {
                                    "id": "organisation_uuid",
                                    "key": "organisation_uuid",
                                    "value": "6ff8f7f6-1eb3-3525-be4a-3932c805afed",
                                    "description": "The organisation UUID."
                                }
                            ]
                        },
                        "method": "GET",
                        "header": [
                            {
                                "key": "Content-Type",
                                "value": "application\/json"
                            },
                            {
                                "key": "Accept",
                                "value": "application\/json"
                            }
                        ],
                        "body": null,
                        "description": "Returns how many of the org's active prompt executions have completed and a live\nvisibility percentage computed directly from execution_brands rows (no daily_metrics\naggregation needed \u2014 available as soon as the first execution is normalised).\n\nPoll this from BrandAnalysisProgress until `ready` is true."
                    },
                    "response": [
                        {
                            "header": [],
                            "code": 200,
                            "body": "{\"data\":{\"ready\":true,\"executions_total\":10,\"executions_completed\":8,\"visibility_pct\":45.0}}",
                            "name": ""
                        }
                    ]
                },
                {
                    "name": "Onboarding improvement estimate",
                    "request": {
                        "url": {
                            "host": "{{baseUrl}}",
                            "path": "api\/organisations\/:organisation_uuid\/ai-visibility\/onboarding\/improvement",
                            "query": [],
                            "raw": "{{baseUrl}}\/api\/organisations\/:organisation_uuid\/ai-visibility\/onboarding\/improvement",
                            "variable": [
                                {
                                    "id": "organisation_uuid",
                                    "key": "organisation_uuid",
                                    "value": "6ff8f7f6-1eb3-3525-be4a-3932c805afed",
                                    "description": "The organisation UUID."
                                }
                            ]
                        },
                        "method": "POST",
                        "header": [
                            {
                                "key": "Content-Type",
                                "value": "application\/json"
                            },
                            {
                                "key": "Accept",
                                "value": "application\/json"
                            }
                        ],
                        "body": null,
                        "description": "One-shot, synchronous LLM call \u2014 no queue, no polling. Call this once from the onboarding\nscreen right when onboardingStatus() first reports has_own_brand_data (i.e. the real,\naggregated visibility_pct is already showing), so the estimate stays grounded in the exact\nsame number the dashboard will show after login. Cached for 30 days, so a repeat call\n(re-entering onboarding, a second tab) returns instantly without re-running the LLM. Returns\npotential_visibility_pct: null if there isn't enough own-brand data yet, or if the estimate\ngenuinely can't be computed (LLM call failed, no headroom found)."
                    },
                    "response": [
                        {
                            "header": [],
                            "code": 200,
                            "body": "{\"data\":{\"potential_visibility_pct\":45.0}}",
                            "name": ""
                        },
                        {
                            "header": [],
                            "code": 200,
                            "body": "{\"data\":{\"potential_visibility_pct\":null}}",
                            "name": ""
                        }
                    ]
                },
                {
                    "name": "List suggested competitors",
                    "request": {
                        "url": {
                            "host": "{{baseUrl}}",
                            "path": "api\/organisations\/:organisation_uuid\/ai-visibility\/competitors\/suggested",
                            "query": [],
                            "raw": "{{baseUrl}}\/api\/organisations\/:organisation_uuid\/ai-visibility\/competitors\/suggested",
                            "variable": [
                                {
                                    "id": "organisation_uuid",
                                    "key": "organisation_uuid",
                                    "value": "660e8400-e29b-41d4-a716-446655440001",
                                    "description": "The organisation UUID."
                                }
                            ]
                        },
                        "method": "GET",
                        "header": [
                            {
                                "key": "Content-Type",
                                "value": "application\/json"
                            },
                            {
                                "key": "Accept",
                                "value": "application\/json"
                            }
                        ],
                        "body": null,
                        "description": "Returns up to 10 pending competitor suggestions for the organisation, most recent first.\nPopulated by SuggestAiVisibilityCompetitorsJob (dispatched at onboarding and daily\nthereafter via ai-visibility:suggest-competitors)."
                    },
                    "response": [
                        {
                            "header": [],
                            "code": 200,
                            "body": "{\"data\":[{\"id\":1,\"name\":\"Acme Corp\",\"website\":\"acme.com\",\"reason\":\"Direct competitor in the same market.\",\"generated_at\":\"2026-07-09 00:00:00\"}]}",
                            "name": ""
                        }
                    ]
                },
                {
                    "name": "Accept a suggested competitor",
                    "request": {
                        "url": {
                            "host": "{{baseUrl}}",
                            "path": "api\/organisations\/:organisation_uuid\/ai-visibility\/competitors\/suggested\/:suggestion\/accept",
                            "query": [],
                            "raw": "{{baseUrl}}\/api\/organisations\/:organisation_uuid\/ai-visibility\/competitors\/suggested\/:suggestion\/accept",
                            "variable": [
                                {
                                    "id": "organisation_uuid",
                                    "key": "organisation_uuid",
                                    "value": "660e8400-e29b-41d4-a716-446655440001",
                                    "description": "The organisation UUID."
                                },
                                {
                                    "id": "suggestion",
                                    "key": "suggestion",
                                    "value": "1",
                                    "description": "The competitor suggestion ID."
                                }
                            ]
                        },
                        "method": "POST",
                        "header": [
                            {
                                "key": "Content-Type",
                                "value": "application\/json"
                            },
                            {
                                "key": "Accept",
                                "value": "application\/json"
                            }
                        ],
                        "body": null,
                        "description": "Creates a real, tracked competitor brand from the suggestion (source=manual, same as one\nadded directly via the Competitor tab), backfills its historical mention data across every\ncompleted execution so far, and marks the suggestion accepted."
                    },
                    "response": [
                        {
                            "header": [],
                            "code": 201,
                            "body": "{\"data\":{\"brand_id\":42,\"name\":\"Acme Corp\",\"website\":\"acme.com\"}}",
                            "name": ""
                        },
                        {
                            "header": [],
                            "code": 422,
                            "body": "{\"message\":\"This suggestion has already been accepted.\"}",
                            "name": ""
                        }
                    ]
                },
                {
                    "name": "Dismiss a suggested competitor",
                    "request": {
                        "url": {
                            "host": "{{baseUrl}}",
                            "path": "api\/organisations\/:organisation_uuid\/ai-visibility\/competitors\/suggested\/:suggestion",
                            "query": [],
                            "raw": "{{baseUrl}}\/api\/organisations\/:organisation_uuid\/ai-visibility\/competitors\/suggested\/:suggestion",
                            "variable": [
                                {
                                    "id": "organisation_uuid",
                                    "key": "organisation_uuid",
                                    "value": "660e8400-e29b-41d4-a716-446655440001",
                                    "description": "The organisation UUID."
                                },
                                {
                                    "id": "suggestion",
                                    "key": "suggestion",
                                    "value": "1",
                                    "description": "The competitor suggestion ID."
                                }
                            ]
                        },
                        "method": "DELETE",
                        "header": [
                            {
                                "key": "Content-Type",
                                "value": "application\/json"
                            },
                            {
                                "key": "Accept",
                                "value": "application\/json"
                            }
                        ],
                        "body": null,
                        "description": "Marks the competitor suggestion as `rejected`. It will no longer appear in the suggestions\nlist, and the name will never be suggested again for this organisation."
                    },
                    "response": [
                        {
                            "header": [],
                            "code": 204,
                            "body": "{}",
                            "name": ""
                        }
                    ]
                },
                {
                    "name": "List topic suggestions",
                    "request": {
                        "url": {
                            "host": "{{baseUrl}}",
                            "path": "api\/organisations\/:organisation_uuid\/ai-visibility\/topics\/suggested",
                            "query": [],
                            "raw": "{{baseUrl}}\/api\/organisations\/:organisation_uuid\/ai-visibility\/topics\/suggested",
                            "variable": [
                                {
                                    "id": "organisation_uuid",
                                    "key": "organisation_uuid",
                                    "value": "660e8400-e29b-41d4-a716-446655440001",
                                    "description": "The organisation UUID."
                                }
                            ]
                        },
                        "method": "GET",
                        "header": [
                            {
                                "key": "Content-Type",
                                "value": "application\/json"
                            },
                            {
                                "key": "Accept",
                                "value": "application\/json"
                            }
                        ],
                        "body": null,
                        "description": "Returns up to 10 topic suggestions with status `completed` for the organisation,\nordered by most recent first."
                    },
                    "response": [
                        {
                            "header": [],
                            "code": 200,
                            "body": "{\"data\":[{\"id\":1,\"name\":\"Feature Discovery\",\"description\":\"Questions about discovering features in productivity tools\",\"source\":\"llm\",\"status\":\"completed\",\"generated_at\":\"2026-06-01 00:00:00\"}]}",
                            "name": ""
                        }
                    ]
                },
                {
                    "name": "Accept a topic suggestion",
                    "request": {
                        "url": {
                            "host": "{{baseUrl}}",
                            "path": "api\/organisations\/:organisation_uuid\/ai-visibility\/topics\/suggested\/:suggestion\/accept",
                            "query": [],
                            "raw": "{{baseUrl}}\/api\/organisations\/:organisation_uuid\/ai-visibility\/topics\/suggested\/:suggestion\/accept",
                            "variable": [
                                {
                                    "id": "organisation_uuid",
                                    "key": "organisation_uuid",
                                    "value": "660e8400-e29b-41d4-a716-446655440001",
                                    "description": "The organisation UUID."
                                },
                                {
                                    "id": "suggestion",
                                    "key": "suggestion",
                                    "value": "1",
                                    "description": "The topic suggestion ID."
                                }
                            ]
                        },
                        "method": "POST",
                        "header": [
                            {
                                "key": "Content-Type",
                                "value": "application\/json"
                            },
                            {
                                "key": "Accept",
                                "value": "application\/json"
                            }
                        ],
                        "body": null,
                        "description": "Creates a real topic from the suggestion and marks it as `accepted`.\nReturns the new topic's ID and details."
                    },
                    "response": [
                        {
                            "header": [],
                            "code": 201,
                            "body": "{\"data\":{\"topic_id\":5,\"name\":\"Feature Discovery\",\"description\":\"Questions about discovering features in productivity tools\"}}",
                            "name": ""
                        },
                        {
                            "header": [],
                            "code": 422,
                            "body": "{\"message\":\"This suggestion has already been accepted.\"}",
                            "name": ""
                        }
                    ]
                },
                {
                    "name": "Dismiss a topic suggestion",
                    "request": {
                        "url": {
                            "host": "{{baseUrl}}",
                            "path": "api\/organisations\/:organisation_uuid\/ai-visibility\/topics\/suggested\/:suggestion",
                            "query": [],
                            "raw": "{{baseUrl}}\/api\/organisations\/:organisation_uuid\/ai-visibility\/topics\/suggested\/:suggestion",
                            "variable": [
                                {
                                    "id": "organisation_uuid",
                                    "key": "organisation_uuid",
                                    "value": "660e8400-e29b-41d4-a716-446655440001",
                                    "description": "The organisation UUID."
                                },
                                {
                                    "id": "suggestion",
                                    "key": "suggestion",
                                    "value": "1",
                                    "description": "The topic suggestion ID."
                                }
                            ]
                        },
                        "method": "DELETE",
                        "header": [
                            {
                                "key": "Content-Type",
                                "value": "application\/json"
                            },
                            {
                                "key": "Accept",
                                "value": "application\/json"
                            }
                        ],
                        "body": null,
                        "description": "Marks the topic suggestion as `dismissed`. It will no longer appear in the suggestions list."
                    },
                    "response": [
                        {
                            "header": [],
                            "code": 204,
                            "body": "{}",
                            "name": ""
                        }
                    ]
                }
            ]
        },
        {
            "name": "AI Visibility - Topics",
            "description": "\nAPIs for managing topics used to group AI Visibility prompts within an organisation.",
            "item": [
                {
                    "name": "List Topics",
                    "request": {
                        "url": {
                            "host": "{{baseUrl}}",
                            "path": "api\/organisations\/:organisation_uuid\/ai-visibility\/topics",
                            "query": [],
                            "raw": "{{baseUrl}}\/api\/organisations\/:organisation_uuid\/ai-visibility\/topics",
                            "variable": [
                                {
                                    "id": "organisation_uuid",
                                    "key": "organisation_uuid",
                                    "value": "660e8400-e29b-41d4-a716-446655440001",
                                    "description": "The organisation UUID."
                                }
                            ]
                        },
                        "method": "GET",
                        "header": [
                            {
                                "key": "Content-Type",
                                "value": "application\/json"
                            },
                            {
                                "key": "Accept",
                                "value": "application\/json"
                            }
                        ],
                        "body": null,
                        "description": ""
                    },
                    "response": [
                        {
                            "header": [],
                            "code": 200,
                            "body": "{\n  \"data\": [\n    {\n      \"id\": 1,\n      \"name\": \"Competitor comparisons\",\n      \"description\": \"Prompts comparing us against competitors\",\n      \"created_at\": \"2026-06-05T10:00:00.000000Z\",\n      \"updated_at\": \"2026-06-05T10:00:00.000000Z\",\n      \"active_count\": 3,\n      \"inactive_count\": 1,\n      \"suggested_count\": 0\n    }\n  ]\n}",
                            "name": ""
                        }
                    ]
                },
                {
                    "name": "Create Topic",
                    "request": {
                        "url": {
                            "host": "{{baseUrl}}",
                            "path": "api\/organisations\/:organisation_uuid\/ai-visibility\/topics",
                            "query": [],
                            "raw": "{{baseUrl}}\/api\/organisations\/:organisation_uuid\/ai-visibility\/topics",
                            "variable": [
                                {
                                    "id": "organisation_uuid",
                                    "key": "organisation_uuid",
                                    "value": "660e8400-e29b-41d4-a716-446655440001",
                                    "description": "The organisation UUID."
                                }
                            ]
                        },
                        "method": "POST",
                        "header": [
                            {
                                "key": "Content-Type",
                                "value": "application\/json"
                            },
                            {
                                "key": "Accept",
                                "value": "application\/json"
                            }
                        ],
                        "body": {
                            "mode": "raw",
                            "raw": "{\"name\":\"Competitor comparisons\",\"description\":\"Prompts comparing us against competitors\"}"
                        },
                        "description": ""
                    },
                    "response": [
                        {
                            "header": [],
                            "code": 201,
                            "body": "{\n  \"data\": {\n    \"id\": 1,\n    \"name\": \"Competitor comparisons\",\n    \"description\": \"Prompts comparing us against competitors\",\n    \"created_at\": \"2026-06-05T10:00:00.000000Z\",\n    \"updated_at\": \"2026-06-05T10:00:00.000000Z\"\n  }\n}",
                            "name": ""
                        }
                    ]
                },
                {
                    "name": "Update Topic",
                    "request": {
                        "url": {
                            "host": "{{baseUrl}}",
                            "path": "api\/organisations\/:organisation_uuid\/ai-visibility\/topics\/:topic",
                            "query": [],
                            "raw": "{{baseUrl}}\/api\/organisations\/:organisation_uuid\/ai-visibility\/topics\/:topic",
                            "variable": [
                                {
                                    "id": "organisation_uuid",
                                    "key": "organisation_uuid",
                                    "value": "660e8400-e29b-41d4-a716-446655440001",
                                    "description": "The organisation UUID."
                                },
                                {
                                    "id": "topic",
                                    "key": "topic",
                                    "value": "1",
                                    "description": "The topic ID."
                                }
                            ]
                        },
                        "method": "PATCH",
                        "header": [
                            {
                                "key": "Content-Type",
                                "value": "application\/json"
                            },
                            {
                                "key": "Accept",
                                "value": "application\/json"
                            }
                        ],
                        "body": {
                            "mode": "raw",
                            "raw": "{\"name\":\"Competitor comparisons\",\"description\":\"Prompts comparing us against competitors\"}"
                        },
                        "description": ""
                    },
                    "response": [
                        {
                            "header": [],
                            "code": 200,
                            "body": "{\n  \"data\": {\n    \"id\": 1,\n    \"name\": \"Competitor comparisons\",\n    \"description\": \"Prompts comparing us against competitors\",\n    \"created_at\": \"2026-06-05T10:00:00.000000Z\",\n    \"updated_at\": \"2026-06-05T10:00:00.000000Z\"\n  }\n}",
                            "name": ""
                        },
                        {
                            "header": [],
                            "code": 404,
                            "body": "{\n  \"message\": \"Topic not found.\"\n}",
                            "name": ""
                        }
                    ]
                },
                {
                    "name": "Delete Topic",
                    "request": {
                        "url": {
                            "host": "{{baseUrl}}",
                            "path": "api\/organisations\/:organisation_uuid\/ai-visibility\/topics\/:topic",
                            "query": [],
                            "raw": "{{baseUrl}}\/api\/organisations\/:organisation_uuid\/ai-visibility\/topics\/:topic",
                            "variable": [
                                {
                                    "id": "organisation_uuid",
                                    "key": "organisation_uuid",
                                    "value": "660e8400-e29b-41d4-a716-446655440001",
                                    "description": "The organisation UUID."
                                },
                                {
                                    "id": "topic",
                                    "key": "topic",
                                    "value": "1",
                                    "description": "The topic ID."
                                }
                            ]
                        },
                        "method": "DELETE",
                        "header": [
                            {
                                "key": "Content-Type",
                                "value": "application\/json"
                            },
                            {
                                "key": "Accept",
                                "value": "application\/json"
                            }
                        ],
                        "body": null,
                        "description": ""
                    },
                    "response": [
                        {
                            "header": [],
                            "code": 204,
                            "body": "{}",
                            "name": ""
                        },
                        {
                            "header": [],
                            "code": 404,
                            "body": "{\n  \"message\": \"Topic not found.\"\n}",
                            "name": ""
                        },
                        {
                            "header": [],
                            "code": 422,
                            "body": "{\n  \"message\": \"Cannot delete a topic with active prompts assigned to it.\"\n}",
                            "name": ""
                        }
                    ]
                }
            ]
        },
        {
            "name": "API Keys",
            "description": "\nAPIs for managing production API keys for the current organisation's billing group. A key is\nalways generated from (and owned by) the group's billing-anchor organisation, but each key is\nindependently scoped to whichever subset of the group's organisations (workspaces) was chosen\nwhen it was created -- a billing group can hold several keys, each covering a different subset,\nfor different integrations.",
            "item": [
                {
                    "name": "List every production API key generated for this billing group.",
                    "request": {
                        "url": {
                            "host": "{{baseUrl}}",
                            "path": "api\/api-keys",
                            "query": [],
                            "raw": "{{baseUrl}}\/api\/api-keys"
                        },
                        "method": "GET",
                        "header": [
                            {
                                "key": "X-Organisation-Id",
                                "value": "string required The organisation UUID."
                            },
                            {
                                "key": "Content-Type",
                                "value": "application\/json"
                            },
                            {
                                "key": "Accept",
                                "value": "application\/json"
                            }
                        ],
                        "body": null,
                        "description": "Returns every non-revoked key generated from the billing-anchor organisation of whichever\norganisation was selected via X-Organisation-Id, each with the workspaces it's scoped to.\nPlaintext API keys are never returned from this endpoint."
                    },
                    "response": [
                        {
                            "header": [],
                            "code": 200,
                            "body": "{\n  \"data\": [\n    {\n      \"uuid\": \"550e8400-e29b-41d4-a716-446655440000\",\n      \"environment\": \"live\",\n      \"status\": \"active\",\n      \"key\": null,\n      \"masked_key\": \"sk_live_****************************Ab12\",\n      \"last_four\": \"Ab12\",\n      \"plain_text_available\": false,\n      \"idempotent_replay\": false,\n      \"rotation_expires_at\": null,\n      \"expires_at\": null,\n      \"revoked_at\": null,\n      \"organisations\": [\n        {\"uuid\": \"660e8400-e29b-41d4-a716-446655440000\", \"name\": \"Acme Inc\", \"is_primary\": true}\n      ],\n      \"created_at\": \"2026-06-05T10:00:00.000000Z\",\n      \"updated_at\": \"2026-06-05T10:00:00.000000Z\"\n    }\n  ]\n}",
                            "name": ""
                        }
                    ]
                },
                {
                    "name": "Generate a production API key scoped to a chosen subset of this billing group's\norganisations. Plaintext is returned only on first creation.",
                    "request": {
                        "url": {
                            "host": "{{baseUrl}}",
                            "path": "api\/api-keys\/generate",
                            "query": [],
                            "raw": "{{baseUrl}}\/api\/api-keys\/generate"
                        },
                        "method": "POST",
                        "header": [
                            {
                                "key": "X-Organisation-Id",
                                "value": "string required The organisation UUID."
                            },
                            {
                                "key": "Idempotency-Key",
                                "value": "string optional Safe retry key for this generation request."
                            },
                            {
                                "key": "Content-Type",
                                "value": "application\/json"
                            },
                            {
                                "key": "Accept",
                                "value": "application\/json"
                            }
                        ],
                        "body": {
                            "mode": "raw",
                            "raw": "{\"name\":\"Claude Desktop MCP\",\"confirmed\":true,\"organisation_uuids\":[\"architecto\"]}"
                        },
                        "description": ""
                    },
                    "response": [
                        {
                            "header": [],
                            "code": 201,
                            "body": "{\n  \"message\": \"API key generated successfully.\",\n  \"data\": {\n    \"uuid\": \"550e8400-e29b-41d4-a716-446655440000\",\n    \"environment\": \"live\",\n    \"status\": \"active\",\n    \"key\": \"sk_live_xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx\",\n    \"masked_key\": \"sk_live_****************************Ab12\",\n    \"last_four\": \"Ab12\",\n    \"plain_text_available\": true,\n    \"idempotent_replay\": false,\n    \"organisations\": [\n      {\"uuid\": \"660e8400-e29b-41d4-a716-446655440000\", \"name\": \"Acme Inc\", \"is_primary\": true}\n    ],\n    \"created_at\": \"2026-06-05T10:00:00.000000Z\",\n    \"updated_at\": \"2026-06-05T10:00:00.000000Z\"\n  }\n}",
                            "name": ""
                        },
                        {
                            "header": [],
                            "code": 422,
                            "body": "{\n  \"message\": \"One or more selected workspaces are not part of this account's billing group.\",\n  \"error\": {\n    \"code\": \"organisation_not_in_billing_scope\"\n  }\n}",
                            "name": "Workspace outside this billing group"
                        }
                    ]
                },
                {
                    "name": "Rotate one production API key. Plaintext is returned only on first rotation. The new key\nkeeps the exact same workspace scope as the key it replaces.",
                    "request": {
                        "url": {
                            "host": "{{baseUrl}}",
                            "path": "api\/api-keys\/:apiKey_uuid\/rotate",
                            "query": [],
                            "raw": "{{baseUrl}}\/api\/api-keys\/:apiKey_uuid\/rotate",
                            "variable": [
                                {
                                    "id": "apiKey_uuid",
                                    "key": "apiKey_uuid",
                                    "value": "bb5acf44-73b3-4cf7-a3d8-9eeed414dc5a",
                                    "description": ""
                                }
                            ]
                        },
                        "method": "POST",
                        "header": [
                            {
                                "key": "X-Organisation-Id",
                                "value": "string required The organisation UUID."
                            },
                            {
                                "key": "Idempotency-Key",
                                "value": "string optional Safe retry key for this rotation request."
                            },
                            {
                                "key": "Content-Type",
                                "value": "application\/json"
                            },
                            {
                                "key": "Accept",
                                "value": "application\/json"
                            }
                        ],
                        "body": null,
                        "description": "Creates a new active production key immediately and keeps the previous key valid\nfor 24 hours before it is auto-revoked."
                    },
                    "response": [
                        {
                            "header": [],
                            "code": 201,
                            "body": "{\n  \"message\": \"API key rotated successfully.\",\n  \"data\": {\n    \"current_key\": {\n      \"uuid\": \"660e8400-e29b-41d4-a716-446655440000\",\n      \"environment\": \"live\",\n      \"status\": \"active\",\n      \"key\": \"sk_live_yyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyy\",\n      \"masked_key\": \"sk_live_****************************Cd34\",\n      \"last_four\": \"Cd34\",\n      \"plain_text_available\": true,\n      \"idempotent_replay\": false\n    },\n    \"previous_key\": {\n      \"uuid\": \"550e8400-e29b-41d4-a716-446655440000\",\n      \"environment\": \"live\",\n      \"status\": \"rotating\",\n      \"key\": null,\n      \"masked_key\": \"sk_live_****************************Ab12\",\n      \"last_four\": \"Ab12\",\n      \"plain_text_available\": false,\n      \"idempotent_replay\": false,\n      \"rotation_expires_at\": \"2026-06-06T10:00:00.000000Z\"\n    }\n  }\n}",
                            "name": ""
                        },
                        {
                            "header": [],
                            "code": 409,
                            "body": "{\n  \"message\": \"This idempotency key was already used for a different API key action.\",\n  \"error\": {\n    \"code\": \"idempotency_key_conflict\"\n  }\n}",
                            "name": "Idempotency key conflict"
                        }
                    ]
                },
                {
                    "name": "Revoke one production API key immediately (and its still-rotating predecessor, if any).",
                    "request": {
                        "url": {
                            "host": "{{baseUrl}}",
                            "path": "api\/api-keys\/:apiKey_uuid\/revoke",
                            "query": [],
                            "raw": "{{baseUrl}}\/api\/api-keys\/:apiKey_uuid\/revoke",
                            "variable": [
                                {
                                    "id": "apiKey_uuid",
                                    "key": "apiKey_uuid",
                                    "value": "bb5acf44-73b3-4cf7-a3d8-9eeed414dc5a",
                                    "description": ""
                                }
                            ]
                        },
                        "method": "POST",
                        "header": [
                            {
                                "key": "X-Organisation-Id",
                                "value": "string required The organisation UUID."
                            },
                            {
                                "key": "Content-Type",
                                "value": "application\/json"
                            },
                            {
                                "key": "Accept",
                                "value": "application\/json"
                            }
                        ],
                        "body": {
                            "mode": "raw",
                            "raw": "{\"confirmation\":\"REVOKE\"}"
                        },
                        "description": "The request must include the exact confirmation text REVOKE."
                    },
                    "response": [
                        {
                            "header": [],
                            "code": 200,
                            "body": "{\n  \"message\": \"API key revoked successfully.\",\n  \"data\": {\n    \"revoked_count\": 1\n  }\n}",
                            "name": ""
                        },
                        {
                            "header": [],
                            "code": 422,
                            "body": "{\n  \"message\": \"The selected confirmation is invalid.\",\n  \"errors\": {\n    \"confirmation\": [\n      \"The selected confirmation is invalid.\"\n    ]\n  }\n}",
                            "name": "Missing confirmation"
                        }
                    ]
                },
                {
                    "name": "Replace one production API key's workspace scope entirely -- adds any newly-listed\nworkspace and drops any workspace no longer listed, in one call. Does not affect the key\nitself (its value, status, or expiry).",
                    "request": {
                        "url": {
                            "host": "{{baseUrl}}",
                            "path": "api\/api-keys\/:apiKey_uuid\/workspaces",
                            "query": [],
                            "raw": "{{baseUrl}}\/api\/api-keys\/:apiKey_uuid\/workspaces",
                            "variable": [
                                {
                                    "id": "apiKey_uuid",
                                    "key": "apiKey_uuid",
                                    "value": "bb5acf44-73b3-4cf7-a3d8-9eeed414dc5a",
                                    "description": ""
                                }
                            ]
                        },
                        "method": "PATCH",
                        "header": [
                            {
                                "key": "X-Organisation-Id",
                                "value": "string required The organisation UUID."
                            },
                            {
                                "key": "Content-Type",
                                "value": "application\/json"
                            },
                            {
                                "key": "Accept",
                                "value": "application\/json"
                            }
                        ],
                        "body": {
                            "mode": "raw",
                            "raw": "{\"organisation_uuids\":[\"architecto\"]}"
                        },
                        "description": ""
                    },
                    "response": [
                        {
                            "header": [],
                            "code": 200,
                            "body": "{\n  \"message\": \"API key workspaces updated successfully.\",\n  \"data\": {\n    \"uuid\": \"550e8400-e29b-41d4-a716-446655440000\",\n    \"organisations\": [\n      {\"uuid\": \"660e8400-e29b-41d4-a716-446655440000\", \"name\": \"Acme Inc\", \"is_primary\": true},\n      {\"uuid\": \"770e8400-e29b-41d4-a716-446655440000\", \"name\": \"Acme Support\", \"is_primary\": false}\n    ]\n  }\n}",
                            "name": ""
                        },
                        {
                            "header": [],
                            "code": 422,
                            "body": "{\n  \"message\": \"One or more selected workspaces are not part of this account's billing group.\",\n  \"error\": {\n    \"code\": \"organisation_not_in_billing_scope\"\n  }\n}",
                            "name": "Workspace outside this billing group"
                        }
                    ]
                }
            ]
        },
        {
            "name": "AppSumo",
            "description": "\nAPIs for AppSumo lifetime-deal tier comparison and license redemption",
            "item": [
                {
                    "name": "Read-only preview so the FE can show \"you're redeeming Tier 2 -- here's what you get\"\nbefore the user commits. No writes.",
                    "request": {
                        "url": {
                            "host": "{{baseUrl}}",
                            "path": "api\/appsumo\/licenses\/validate",
                            "query": [],
                            "raw": "{{baseUrl}}\/api\/appsumo\/licenses\/validate"
                        },
                        "method": "POST",
                        "header": [
                            {
                                "key": "Content-Type",
                                "value": "application\/json"
                            },
                            {
                                "key": "Accept",
                                "value": "application\/json"
                            }
                        ],
                        "body": {
                            "mode": "raw",
                            "raw": "{\"license_key\":\"architecto\"}"
                        },
                        "description": "",
                        "auth": {
                            "type": "noauth"
                        }
                    },
                    "response": []
                },
                {
                    "name": "POST api\/appsumo\/licenses\/redeem",
                    "request": {
                        "url": {
                            "host": "{{baseUrl}}",
                            "path": "api\/appsumo\/licenses\/redeem",
                            "query": [],
                            "raw": "{{baseUrl}}\/api\/appsumo\/licenses\/redeem"
                        },
                        "method": "POST",
                        "header": [
                            {
                                "key": "Content-Type",
                                "value": "application\/json"
                            },
                            {
                                "key": "Accept",
                                "value": "application\/json"
                            }
                        ],
                        "body": {
                            "mode": "raw",
                            "raw": "{\"license_key\":\"architecto\"}"
                        },
                        "description": "",
                        "auth": {
                            "type": "noauth"
                        }
                    },
                    "response": []
                },
                {
                    "name": "GET api\/appsumo\/licenses\/current",
                    "request": {
                        "url": {
                            "host": "{{baseUrl}}",
                            "path": "api\/appsumo\/licenses\/current",
                            "query": [],
                            "raw": "{{baseUrl}}\/api\/appsumo\/licenses\/current"
                        },
                        "method": "GET",
                        "header": [
                            {
                                "key": "Content-Type",
                                "value": "application\/json"
                            },
                            {
                                "key": "Accept",
                                "value": "application\/json"
                            }
                        ],
                        "body": null,
                        "description": "",
                        "auth": {
                            "type": "noauth"
                        }
                    },
                    "response": [
                        {
                            "header": [
                                {
                                    "key": "cache-control",
                                    "value": "no-cache, private"
                                },
                                {
                                    "key": "content-type",
                                    "value": "application\/json"
                                },
                                {
                                    "key": "vary",
                                    "value": "Origin"
                                }
                            ],
                            "code": 401,
                            "body": "{\"message\":\"Unauthenticated.\"}",
                            "name": ""
                        }
                    ]
                },
                {
                    "name": "List AppSumo tiers",
                    "request": {
                        "url": {
                            "host": "{{baseUrl}}",
                            "path": "api\/appsumo\/plans",
                            "query": [],
                            "raw": "{{baseUrl}}\/api\/appsumo\/plans"
                        },
                        "method": "GET",
                        "header": [
                            {
                                "key": "Content-Type",
                                "value": "application\/json"
                            },
                            {
                                "key": "Accept",
                                "value": "application\/json"
                            }
                        ],
                        "body": null,
                        "description": "Unauthenticated tier comparison listing (name\/price\/reviews\/mentions\/credits per tier) for\na marketing\/comparison page -- unlike GET \/subscription-plans, deliberately does not filter\non is_active, since every AppSumo tier is seeded with is_active=false (see\nAppSumoPlanSeeder) precisely so it's excluded from that general, checkout-oriented listing.\nOrdered tier 1 -> 4 by config('billing.appsumo_tier_price_ids') key order, not by id.",
                        "auth": {
                            "type": "noauth"
                        }
                    },
                    "response": [
                        {
                            "header": [],
                            "code": 200,
                            "body": "{\n  \"data\": [\n    {\n      \"tier\": 1,\n      \"stripe_price_id\": \"price_internal_appsumo_tier1\",\n      \"name\": \"AppSumo Lifetime - Tier 1\",\n      \"description\": \"AppSumo lifetime deal, Tier 1 - 1,200 reviews, 1,000 mentions, 10 tracked prompts, 240 lifetime AI credits\",\n      \"amount\": 4900,\n      \"currency\": \"usd\",\n      \"plan_threshold\": {}\n    }\n  ]\n}",
                            "name": ""
                        }
                    ]
                }
            ]
        },
        {
            "name": "Endpoints",
            "description": "",
            "item": [
                {
                    "name": "Send a reset link to the given user.",
                    "request": {
                        "url": {
                            "host": "{{baseUrl}}",
                            "path": "api\/auth\/forgot-password",
                            "query": [],
                            "raw": "{{baseUrl}}\/api\/auth\/forgot-password"
                        },
                        "method": "POST",
                        "header": [
                            {
                                "key": "Content-Type",
                                "value": "application\/json"
                            },
                            {
                                "key": "Accept",
                                "value": "application\/json"
                            }
                        ],
                        "body": null,
                        "description": "",
                        "auth": {
                            "type": "noauth"
                        }
                    },
                    "response": []
                },
                {
                    "name": "Reset the user's password.",
                    "request": {
                        "url": {
                            "host": "{{baseUrl}}",
                            "path": "api\/auth\/reset-password",
                            "query": [],
                            "raw": "{{baseUrl}}\/api\/auth\/reset-password"
                        },
                        "method": "POST",
                        "header": [
                            {
                                "key": "Content-Type",
                                "value": "application\/json"
                            },
                            {
                                "key": "Accept",
                                "value": "application\/json"
                            }
                        ],
                        "body": {
                            "mode": "raw",
                            "raw": "{\"token\":\"architecto\"}"
                        },
                        "description": "",
                        "auth": {
                            "type": "noauth"
                        }
                    },
                    "response": []
                },
                {
                    "name": "Bulk Deactivate Brands (Temporary)",
                    "request": {
                        "url": {
                            "host": "{{baseUrl}}",
                            "path": "api\/brands\/deactivate-bulk-temporary",
                            "query": [],
                            "raw": "{{baseUrl}}\/api\/brands\/deactivate-bulk-temporary"
                        },
                        "method": "POST",
                        "header": [
                            {
                                "key": "X-Temporary-Bulk-Token",
                                "value": "{token}"
                            },
                            {
                                "key": "Content-Type",
                                "value": "application\/json"
                            },
                            {
                                "key": "Accept",
                                "value": "application\/json"
                            }
                        ],
                        "body": {
                            "mode": "raw",
                            "raw": "{\"chunk_size\":1,\"dry_run\":true}"
                        },
                        "description": "Disabled unless TEMP_BULK_BRAND_DEACTIVATE_ENABLED is set. When TEMP_BULK_BRAND_DEACTIVATE_TOKEN\nis set, the request must include a matching X-Temporary-Bulk-Token header.",
                        "auth": {
                            "type": "noauth"
                        }
                    },
                    "response": []
                },
                {
                    "name": "Send a test webhook (manual trigger).",
                    "request": {
                        "url": {
                            "host": "{{baseUrl}}",
                            "path": "api\/outbound-webhooks\/:webhook\/test",
                            "query": [],
                            "raw": "{{baseUrl}}\/api\/outbound-webhooks\/:webhook\/test",
                            "variable": [
                                {
                                    "id": "webhook",
                                    "key": "webhook",
                                    "value": "architecto",
                                    "description": ""
                                }
                            ]
                        },
                        "method": "POST",
                        "header": [
                            {
                                "key": "Content-Type",
                                "value": "application\/json"
                            },
                            {
                                "key": "Accept",
                                "value": "application\/json"
                            }
                        ],
                        "body": null,
                        "description": "",
                        "auth": {
                            "type": "noauth"
                        }
                    },
                    "response": []
                },
                {
                    "name": "List outbound webhooks for the current organisation.",
                    "request": {
                        "url": {
                            "host": "{{baseUrl}}",
                            "path": "api\/outbound-webhooks",
                            "query": [],
                            "raw": "{{baseUrl}}\/api\/outbound-webhooks"
                        },
                        "method": "GET",
                        "header": [
                            {
                                "key": "Content-Type",
                                "value": "application\/json"
                            },
                            {
                                "key": "Accept",
                                "value": "application\/json"
                            }
                        ],
                        "body": null,
                        "description": "",
                        "auth": {
                            "type": "noauth"
                        }
                    },
                    "response": [
                        {
                            "header": [
                                {
                                    "key": "cache-control",
                                    "value": "no-cache, private"
                                },
                                {
                                    "key": "content-type",
                                    "value": "application\/json"
                                },
                                {
                                    "key": "vary",
                                    "value": "Origin"
                                }
                            ],
                            "code": 401,
                            "body": "{\"message\":\"Unauthenticated.\"}",
                            "name": ""
                        }
                    ]
                },
                {
                    "name": "Create an outbound webhook.",
                    "request": {
                        "url": {
                            "host": "{{baseUrl}}",
                            "path": "api\/outbound-webhooks",
                            "query": [],
                            "raw": "{{baseUrl}}\/api\/outbound-webhooks"
                        },
                        "method": "POST",
                        "header": [
                            {
                                "key": "Content-Type",
                                "value": "application\/json"
                            },
                            {
                                "key": "Accept",
                                "value": "application\/json"
                            }
                        ],
                        "body": {
                            "mode": "raw",
                            "raw": "{\"url\":\"http:\\\/\\\/www.bailey.biz\\\/quos-velit-et-fugiat-sunt-nihil-accusantium-harum.html\",\"headers\":[\"i\"],\"auth_type\":\"none\",\"auth_token\":\"k\",\"secret\":\"h\",\"is_active\":true}"
                        },
                        "description": "",
                        "auth": {
                            "type": "noauth"
                        }
                    },
                    "response": []
                },
                {
                    "name": "Show a single outbound webhook.",
                    "request": {
                        "url": {
                            "host": "{{baseUrl}}",
                            "path": "api\/outbound-webhooks\/:id",
                            "query": [],
                            "raw": "{{baseUrl}}\/api\/outbound-webhooks\/:id",
                            "variable": [
                                {
                                    "id": "id",
                                    "key": "id",
                                    "value": "architecto",
                                    "description": "The ID of the outbound webhook."
                                }
                            ]
                        },
                        "method": "GET",
                        "header": [
                            {
                                "key": "Content-Type",
                                "value": "application\/json"
                            },
                            {
                                "key": "Accept",
                                "value": "application\/json"
                            }
                        ],
                        "body": null,
                        "description": "",
                        "auth": {
                            "type": "noauth"
                        }
                    },
                    "response": [
                        {
                            "header": [
                                {
                                    "key": "cache-control",
                                    "value": "no-cache, private"
                                },
                                {
                                    "key": "content-type",
                                    "value": "application\/json"
                                },
                                {
                                    "key": "vary",
                                    "value": "Origin"
                                }
                            ],
                            "code": 401,
                            "body": "{\"message\":\"Unauthenticated.\"}",
                            "name": ""
                        }
                    ]
                },
                {
                    "name": "Update an outbound webhook.",
                    "request": {
                        "url": {
                            "host": "{{baseUrl}}",
                            "path": "api\/outbound-webhooks\/:id",
                            "query": [],
                            "raw": "{{baseUrl}}\/api\/outbound-webhooks\/:id",
                            "variable": [
                                {
                                    "id": "id",
                                    "key": "id",
                                    "value": "architecto",
                                    "description": "The ID of the outbound webhook."
                                }
                            ]
                        },
                        "method": "PUT",
                        "header": [
                            {
                                "key": "Content-Type",
                                "value": "application\/json"
                            },
                            {
                                "key": "Accept",
                                "value": "application\/json"
                            }
                        ],
                        "body": {
                            "mode": "raw",
                            "raw": "{\"url\":\"http:\\\/\\\/www.bailey.biz\\\/quos-velit-et-fugiat-sunt-nihil-accusantium-harum.html\",\"headers\":[\"i\"],\"auth_type\":\"none\",\"auth_token\":\"k\",\"secret\":\"h\",\"is_active\":false}"
                        },
                        "description": "",
                        "auth": {
                            "type": "noauth"
                        }
                    },
                    "response": []
                },
                {
                    "name": "Delete an outbound webhook.",
                    "request": {
                        "url": {
                            "host": "{{baseUrl}}",
                            "path": "api\/outbound-webhooks\/:id",
                            "query": [],
                            "raw": "{{baseUrl}}\/api\/outbound-webhooks\/:id",
                            "variable": [
                                {
                                    "id": "id",
                                    "key": "id",
                                    "value": "architecto",
                                    "description": "The ID of the outbound webhook."
                                }
                            ]
                        },
                        "method": "DELETE",
                        "header": [
                            {
                                "key": "Content-Type",
                                "value": "application\/json"
                            },
                            {
                                "key": "Accept",
                                "value": "application\/json"
                            }
                        ],
                        "body": null,
                        "description": "",
                        "auth": {
                            "type": "noauth"
                        }
                    },
                    "response": []
                },
                {
                    "name": "Lets the frontend resolve the org's own tracked brand_id on its own -- every agent\nendpoint requires it (see AgentRegistry::baseInputSchema()), but there's exactly one\nis_own_brand row per org and nothing today returns just that id without also computing\na full competitor\/metrics payload (AiVisibilityCompetitorController::index).",
                    "request": {
                        "url": {
                            "host": "{{baseUrl}}",
                            "path": "api\/organisations\/:organisation_uuid\/agents\/own-brand",
                            "query": [],
                            "raw": "{{baseUrl}}\/api\/organisations\/:organisation_uuid\/agents\/own-brand",
                            "variable": [
                                {
                                    "id": "organisation_uuid",
                                    "key": "organisation_uuid",
                                    "value": "205ae76c-bd73-426b-a36a-8338353b9542",
                                    "description": ""
                                }
                            ]
                        },
                        "method": "GET",
                        "header": [
                            {
                                "key": "Content-Type",
                                "value": "application\/json"
                            },
                            {
                                "key": "Accept",
                                "value": "application\/json"
                            }
                        ],
                        "body": null,
                        "description": "",
                        "auth": {
                            "type": "noauth"
                        }
                    },
                    "response": [
                        {
                            "header": [
                                {
                                    "key": "cache-control",
                                    "value": "no-cache, private"
                                },
                                {
                                    "key": "content-type",
                                    "value": "application\/json"
                                },
                                {
                                    "key": "vary",
                                    "value": "Origin"
                                }
                            ],
                            "code": 401,
                            "body": "{\"message\":\"Unauthenticated.\"}",
                            "name": ""
                        }
                    ]
                },
                {
                    "name": "Populates the run form's \"Try our AI Recommendations\" chips with real, org-specific\nobservations (see AgentSuggestedPromptGenerator) instead of the agent's static\nsuggestedPrompts() copy. Meaningful for root_cause_analysis and competitive_benchmark --\nother agents fall back to their registry-declared suggestedPrompts() unchanged since\nnothing generates dynamic ones for them yet.",
                    "request": {
                        "url": {
                            "host": "{{baseUrl}}",
                            "path": "api\/organisations\/:organisation_uuid\/agents\/:key\/suggested-prompts",
                            "query": [],
                            "raw": "{{baseUrl}}\/api\/organisations\/:organisation_uuid\/agents\/:key\/suggested-prompts",
                            "variable": [
                                {
                                    "id": "organisation_uuid",
                                    "key": "organisation_uuid",
                                    "value": "205ae76c-bd73-426b-a36a-8338353b9542",
                                    "description": ""
                                },
                                {
                                    "id": "key",
                                    "key": "key",
                                    "value": "architecto",
                                    "description": ""
                                }
                            ]
                        },
                        "method": "GET",
                        "header": [
                            {
                                "key": "Content-Type",
                                "value": "application\/json"
                            },
                            {
                                "key": "Accept",
                                "value": "application\/json"
                            }
                        ],
                        "body": {
                            "mode": "raw",
                            "raw": "{\"brand_id\":16,\"timeframe\":\"90d\",\"data_source\":\"openai\"}"
                        },
                        "description": "",
                        "auth": {
                            "type": "noauth"
                        }
                    },
                    "response": [
                        {
                            "header": [
                                {
                                    "key": "cache-control",
                                    "value": "no-cache, private"
                                },
                                {
                                    "key": "content-type",
                                    "value": "application\/json"
                                },
                                {
                                    "key": "vary",
                                    "value": "Origin"
                                }
                            ],
                            "code": 401,
                            "body": "{\"message\":\"Unauthenticated.\"}",
                            "name": ""
                        }
                    ]
                },
                {
                    "name": "POST api\/organisations\/{organisation_uuid}\/agents\/{key}\/runs",
                    "request": {
                        "url": {
                            "host": "{{baseUrl}}",
                            "path": "api\/organisations\/:organisation_uuid\/agents\/:key\/runs",
                            "query": [],
                            "raw": "{{baseUrl}}\/api\/organisations\/:organisation_uuid\/agents\/:key\/runs",
                            "variable": [
                                {
                                    "id": "organisation_uuid",
                                    "key": "organisation_uuid",
                                    "value": "205ae76c-bd73-426b-a36a-8338353b9542",
                                    "description": ""
                                },
                                {
                                    "id": "key",
                                    "key": "key",
                                    "value": "architecto",
                                    "description": ""
                                }
                            ]
                        },
                        "method": "POST",
                        "header": [
                            {
                                "key": "Content-Type",
                                "value": "application\/json"
                            },
                            {
                                "key": "Accept",
                                "value": "application\/json"
                            }
                        ],
                        "body": null,
                        "description": "",
                        "auth": {
                            "type": "noauth"
                        }
                    },
                    "response": []
                },
                {
                    "name": "Ticket 5's Recent Outputs listing endpoint -- never built alongside show()\/download(),\nso that page has been stuck on hardcoded demo rows. Matches the mockup's columns exactly:\nFocus Topics, Agents, Status, Date created. Filterable by agent_type\/status per Ticket 5's\ndefinition of done; paginated the same way AiVisibilityCompetitorController::index() is.",
                    "request": {
                        "url": {
                            "host": "{{baseUrl}}",
                            "path": "api\/organisations\/:organisation_uuid\/agent-runs",
                            "query": [],
                            "raw": "{{baseUrl}}\/api\/organisations\/:organisation_uuid\/agent-runs",
                            "variable": [
                                {
                                    "id": "organisation_uuid",
                                    "key": "organisation_uuid",
                                    "value": "205ae76c-bd73-426b-a36a-8338353b9542",
                                    "description": ""
                                }
                            ]
                        },
                        "method": "GET",
                        "header": [
                            {
                                "key": "Content-Type",
                                "value": "application\/json"
                            },
                            {
                                "key": "Accept",
                                "value": "application\/json"
                            }
                        ],
                        "body": null,
                        "description": "",
                        "auth": {
                            "type": "noauth"
                        }
                    },
                    "response": [
                        {
                            "header": [
                                {
                                    "key": "cache-control",
                                    "value": "no-cache, private"
                                },
                                {
                                    "key": "content-type",
                                    "value": "application\/json"
                                },
                                {
                                    "key": "vary",
                                    "value": "Origin"
                                }
                            ],
                            "code": 401,
                            "body": "{\"message\":\"Unauthenticated.\"}",
                            "name": ""
                        }
                    ]
                },
                {
                    "name": "Pulled forward from Ticket 5's full listing\/polling scope -- the Root Cause Analysis run\npage needs to poll run_plan step-by-step progress and read result once completed, and\nnothing else in Ticket 5 (agent listing, Recent Outputs table) is needed for that yet.",
                    "request": {
                        "url": {
                            "host": "{{baseUrl}}",
                            "path": "api\/organisations\/:organisation_uuid\/agent-runs\/:run_id",
                            "query": [],
                            "raw": "{{baseUrl}}\/api\/organisations\/:organisation_uuid\/agent-runs\/:run_id",
                            "variable": [
                                {
                                    "id": "organisation_uuid",
                                    "key": "organisation_uuid",
                                    "value": "205ae76c-bd73-426b-a36a-8338353b9542",
                                    "description": ""
                                },
                                {
                                    "id": "run_id",
                                    "key": "run_id",
                                    "value": "6",
                                    "description": "The ID of the run."
                                }
                            ]
                        },
                        "method": "GET",
                        "header": [
                            {
                                "key": "Content-Type",
                                "value": "application\/json"
                            },
                            {
                                "key": "Accept",
                                "value": "application\/json"
                            }
                        ],
                        "body": null,
                        "description": "",
                        "auth": {
                            "type": "noauth"
                        }
                    },
                    "response": [
                        {
                            "header": [
                                {
                                    "key": "cache-control",
                                    "value": "no-cache, private"
                                },
                                {
                                    "key": "content-type",
                                    "value": "application\/json"
                                },
                                {
                                    "key": "vary",
                                    "value": "Origin"
                                }
                            ],
                            "code": 401,
                            "body": "{\"message\":\"Unauthenticated.\"}",
                            "name": ""
                        }
                    ]
                },
                {
                    "name": "Ticket 4\/5's own definition of done requires this endpoint, but it was never actually\nbuilt alongside RenderAgentReportPdfJob -- the PDF existed with nothing to fetch it\nthrough. Never returns a permanent URL, only a signed one generated on demand.",
                    "request": {
                        "url": {
                            "host": "{{baseUrl}}",
                            "path": "api\/organisations\/:organisation_uuid\/agent-runs\/:run_id\/download",
                            "query": [
                                {
                                    "key": "format",
                                    "value": "docx",
                                    "description": "Optional - 'pdf' (default) or 'docx'.",
                                    "disabled": false
                                }
                            ],
                            "raw": "{{baseUrl}}\/api\/organisations\/:organisation_uuid\/agent-runs\/:run_id\/download?format=docx",
                            "variable": [
                                {
                                    "id": "organisation_uuid",
                                    "key": "organisation_uuid",
                                    "value": "205ae76c-bd73-426b-a36a-8338353b9542",
                                    "description": ""
                                },
                                {
                                    "id": "run_id",
                                    "key": "run_id",
                                    "value": "6",
                                    "description": "The ID of the run."
                                }
                            ]
                        },
                        "method": "GET",
                        "header": [
                            {
                                "key": "Content-Type",
                                "value": "application\/json"
                            },
                            {
                                "key": "Accept",
                                "value": "application\/json"
                            }
                        ],
                        "body": null,
                        "description": "Backs both the frontend's Download button (open-and-forget) and Share button (copy the\nlink to hand to someone without a Subsig login) -- one URL serves both, so the expiry has\nto be long enough for a genuinely shared link to still work hours later, not just a quick\nclick. 24h, matching this feature's other \"good enough, not permanent\" TTLs (see\nAgentSuggestedPromptGenerator's suggestion cache).",
                        "auth": {
                            "type": "noauth"
                        }
                    },
                    "response": [
                        {
                            "header": [
                                {
                                    "key": "cache-control",
                                    "value": "no-cache, private"
                                },
                                {
                                    "key": "content-type",
                                    "value": "application\/json"
                                },
                                {
                                    "key": "vary",
                                    "value": "Origin"
                                }
                            ],
                            "code": 401,
                            "body": "{\"message\":\"Unauthenticated.\"}",
                            "name": ""
                        }
                    ]
                },
                {
                    "name": "Radar Usage",
                    "request": {
                        "url": {
                            "host": "{{baseUrl}}",
                            "path": "api\/organisations\/:organisation_uuid\/ai-visibility\/radar\/usage",
                            "query": [],
                            "raw": "{{baseUrl}}\/api\/organisations\/:organisation_uuid\/ai-visibility\/radar\/usage",
                            "variable": [
                                {
                                    "id": "organisation_uuid",
                                    "key": "organisation_uuid",
                                    "value": "6ff8f7f6-1eb3-3525-be4a-3932c805afed",
                                    "description": "The organisation UUID."
                                }
                            ]
                        },
                        "method": "GET",
                        "header": [
                            {
                                "key": "Content-Type",
                                "value": "application\/json"
                            },
                            {
                                "key": "Accept",
                                "value": "application\/json"
                            }
                        ],
                        "body": null,
                        "description": "Returns this month's SerpApi spend for the organisation's passive brand radar,\nbroken down against the plan budget cap (null when uncapped).",
                        "auth": {
                            "type": "noauth"
                        }
                    },
                    "response": [
                        {
                            "header": [
                                {
                                    "key": "cache-control",
                                    "value": "no-cache, private"
                                },
                                {
                                    "key": "content-type",
                                    "value": "application\/json"
                                },
                                {
                                    "key": "vary",
                                    "value": "Origin"
                                }
                            ],
                            "code": 401,
                            "body": "{\"message\":\"Unauthenticated.\"}",
                            "name": ""
                        }
                    ]
                },
                {
                    "name": "Exchange the single-use `code` AppSumo redirects buyers with (after \"Activate now\") for a\nlicense_key + status. Unauthenticated -- a brand-new buyer has no subsig session yet.",
                    "request": {
                        "url": {
                            "host": "{{baseUrl}}",
                            "path": "api\/appsumo\/oauth\/exchange",
                            "query": [],
                            "raw": "{{baseUrl}}\/api\/appsumo\/oauth\/exchange"
                        },
                        "method": "POST",
                        "header": [
                            {
                                "key": "Content-Type",
                                "value": "application\/json"
                            },
                            {
                                "key": "Accept",
                                "value": "application\/json"
                            }
                        ],
                        "body": {
                            "mode": "raw",
                            "raw": "{\"code\":\"architecto\"}"
                        },
                        "description": "AppSumo's own `status` field flips to \"active\" as soon as our webhook responds 200 to their\n`activate` event -- which happens independently of whether this specific person has ever\nbeen through our OAuth flow (AppSumoWebhookController always 200s that event). So it does\nNOT mean \"this browser's user already has a subsig account\" -- every first-time buyer would\nincorrectly see \"active\" before ever signing up. `already_redeemed` is the real signal:\nwhether *our own* AppSumoLicense record has an organisation attached yet.\n\nFrontend branches on `already_redeemed` for new-vs-returning, and on `status === \"deactivated\"`\n(still AppSumo's own billing-state field, legitimately authoritative for this one case) to\nblock a cancelled\/refunded license outright regardless of redemption state.",
                        "auth": {
                            "type": "noauth"
                        }
                    },
                    "response": []
                },
                {
                    "name": "POST api\/webhook",
                    "request": {
                        "url": {
                            "host": "{{baseUrl}}",
                            "path": "api\/webhook",
                            "query": [],
                            "raw": "{{baseUrl}}\/api\/webhook"
                        },
                        "method": "POST",
                        "header": [
                            {
                                "key": "Content-Type",
                                "value": "application\/json"
                            },
                            {
                                "key": "Accept",
                                "value": "application\/json"
                            }
                        ],
                        "body": null,
                        "description": "",
                        "auth": {
                            "type": "noauth"
                        }
                    },
                    "response": []
                },
                {
                    "name": "GET api\/v1\/workspaces",
                    "request": {
                        "url": {
                            "host": "{{baseUrl}}",
                            "path": "api\/v1\/workspaces",
                            "query": [],
                            "raw": "{{baseUrl}}\/api\/v1\/workspaces"
                        },
                        "method": "GET",
                        "header": [
                            {
                                "key": "Content-Type",
                                "value": "application\/json"
                            },
                            {
                                "key": "Accept",
                                "value": "application\/json"
                            }
                        ],
                        "body": null,
                        "description": "",
                        "auth": {
                            "type": "noauth"
                        }
                    },
                    "response": [
                        {
                            "header": [
                                {
                                    "key": "cache-control",
                                    "value": "no-cache, private"
                                },
                                {
                                    "key": "content-type",
                                    "value": "application\/json"
                                },
                                {
                                    "key": "x-request-id",
                                    "value": "230a42d1-273f-49db-9e2b-7bc30ab9c025"
                                },
                                {
                                    "key": "vary",
                                    "value": "Origin"
                                }
                            ],
                            "code": 401,
                            "body": "{\"error\":{\"code\":\"unauthorized\",\"message\":\"Unauthorized.\",\"docs_url\":\"https:\\\/\\\/docs.subsig.com\\\/errors\\\/unauthorized\",\"request_id\":\"230a42d1-273f-49db-9e2b-7bc30ab9c025\"}}",
                            "name": ""
                        }
                    ]
                },
                {
                    "name": "GET api\/v1\/ai-visibility\/topics",
                    "request": {
                        "url": {
                            "host": "{{baseUrl}}",
                            "path": "api\/v1\/ai-visibility\/topics",
                            "query": [],
                            "raw": "{{baseUrl}}\/api\/v1\/ai-visibility\/topics"
                        },
                        "method": "GET",
                        "header": [
                            {
                                "key": "Content-Type",
                                "value": "application\/json"
                            },
                            {
                                "key": "Accept",
                                "value": "application\/json"
                            }
                        ],
                        "body": null,
                        "description": "",
                        "auth": {
                            "type": "noauth"
                        }
                    },
                    "response": [
                        {
                            "header": [
                                {
                                    "key": "cache-control",
                                    "value": "no-cache, private"
                                },
                                {
                                    "key": "content-type",
                                    "value": "application\/json"
                                },
                                {
                                    "key": "x-request-id",
                                    "value": "0e8d9117-2fd9-45a1-a933-469f26608487"
                                },
                                {
                                    "key": "vary",
                                    "value": "Origin"
                                }
                            ],
                            "code": 401,
                            "body": "{\"error\":{\"code\":\"unauthorized\",\"message\":\"Unauthorized.\",\"docs_url\":\"https:\\\/\\\/docs.subsig.com\\\/errors\\\/unauthorized\",\"request_id\":\"0e8d9117-2fd9-45a1-a933-469f26608487\"}}",
                            "name": ""
                        }
                    ]
                },
                {
                    "name": "GET api\/v1\/ai-visibility\/prompts",
                    "request": {
                        "url": {
                            "host": "{{baseUrl}}",
                            "path": "api\/v1\/ai-visibility\/prompts",
                            "query": [],
                            "raw": "{{baseUrl}}\/api\/v1\/ai-visibility\/prompts"
                        },
                        "method": "GET",
                        "header": [
                            {
                                "key": "Content-Type",
                                "value": "application\/json"
                            },
                            {
                                "key": "Accept",
                                "value": "application\/json"
                            }
                        ],
                        "body": null,
                        "description": "",
                        "auth": {
                            "type": "noauth"
                        }
                    },
                    "response": [
                        {
                            "header": [
                                {
                                    "key": "cache-control",
                                    "value": "no-cache, private"
                                },
                                {
                                    "key": "content-type",
                                    "value": "application\/json"
                                },
                                {
                                    "key": "x-request-id",
                                    "value": "bad3a0be-5a89-43aa-bf4d-67742229db96"
                                },
                                {
                                    "key": "vary",
                                    "value": "Origin"
                                }
                            ],
                            "code": 401,
                            "body": "{\"error\":{\"code\":\"unauthorized\",\"message\":\"Unauthorized.\",\"docs_url\":\"https:\\\/\\\/docs.subsig.com\\\/errors\\\/unauthorized\",\"request_id\":\"bad3a0be-5a89-43aa-bf4d-67742229db96\"}}",
                            "name": ""
                        }
                    ]
                },
                {
                    "name": "GET api\/v1\/ai-visibility\/prompts\/{prompt}",
                    "request": {
                        "url": {
                            "host": "{{baseUrl}}",
                            "path": "api\/v1\/ai-visibility\/prompts\/:prompt",
                            "query": [],
                            "raw": "{{baseUrl}}\/api\/v1\/ai-visibility\/prompts\/:prompt",
                            "variable": [
                                {
                                    "id": "prompt",
                                    "key": "prompt",
                                    "value": "564",
                                    "description": "The prompt."
                                }
                            ]
                        },
                        "method": "GET",
                        "header": [
                            {
                                "key": "Content-Type",
                                "value": "application\/json"
                            },
                            {
                                "key": "Accept",
                                "value": "application\/json"
                            }
                        ],
                        "body": null,
                        "description": "",
                        "auth": {
                            "type": "noauth"
                        }
                    },
                    "response": [
                        {
                            "header": [
                                {
                                    "key": "cache-control",
                                    "value": "no-cache, private"
                                },
                                {
                                    "key": "content-type",
                                    "value": "application\/json"
                                },
                                {
                                    "key": "x-request-id",
                                    "value": "8611e2c8-ae7b-46cc-82fa-e3f3d54ab07d"
                                },
                                {
                                    "key": "vary",
                                    "value": "Origin"
                                }
                            ],
                            "code": 401,
                            "body": "{\"error\":{\"code\":\"unauthorized\",\"message\":\"Unauthorized.\",\"docs_url\":\"https:\\\/\\\/docs.subsig.com\\\/errors\\\/unauthorized\",\"request_id\":\"8611e2c8-ae7b-46cc-82fa-e3f3d54ab07d\"}}",
                            "name": ""
                        }
                    ]
                },
                {
                    "name": "Every brand tracked by AI Visibility (own brand + registered competitors), ranked, with\nvisibility %\/share-of-voice %\/average position for each \u2014 the discovery step before digging\ninto a specific brand via show() or into sentiment\/citations for it. Built on the same\nAiVisibilityBrandRankService::brandMetrics()\/AiVisibilityRanker::rankComposite() combination\nthe session-auth AiVisibilityCompetitorController::index() (Competitor tab) already uses.",
                    "request": {
                        "url": {
                            "host": "{{baseUrl}}",
                            "path": "api\/v1\/ai-visibility\/brands",
                            "query": [],
                            "raw": "{{baseUrl}}\/api\/v1\/ai-visibility\/brands"
                        },
                        "method": "GET",
                        "header": [
                            {
                                "key": "Content-Type",
                                "value": "application\/json"
                            },
                            {
                                "key": "Accept",
                                "value": "application\/json"
                            }
                        ],
                        "body": null,
                        "description": "",
                        "auth": {
                            "type": "noauth"
                        }
                    },
                    "response": [
                        {
                            "header": [
                                {
                                    "key": "cache-control",
                                    "value": "no-cache, private"
                                },
                                {
                                    "key": "content-type",
                                    "value": "application\/json"
                                },
                                {
                                    "key": "x-request-id",
                                    "value": "40edd226-b7ff-4aed-a7d1-1a7507403c9f"
                                },
                                {
                                    "key": "vary",
                                    "value": "Origin"
                                }
                            ],
                            "code": 401,
                            "body": "{\"error\":{\"code\":\"unauthorized\",\"message\":\"Unauthorized.\",\"docs_url\":\"https:\\\/\\\/docs.subsig.com\\\/errors\\\/unauthorized\",\"request_id\":\"40edd226-b7ff-4aed-a7d1-1a7507403c9f\"}}",
                            "name": ""
                        }
                    ]
                },
                {
                    "name": "GET api\/v1\/ai-visibility\/overview",
                    "request": {
                        "url": {
                            "host": "{{baseUrl}}",
                            "path": "api\/v1\/ai-visibility\/overview",
                            "query": [],
                            "raw": "{{baseUrl}}\/api\/v1\/ai-visibility\/overview"
                        },
                        "method": "GET",
                        "header": [
                            {
                                "key": "Content-Type",
                                "value": "application\/json"
                            },
                            {
                                "key": "Accept",
                                "value": "application\/json"
                            }
                        ],
                        "body": null,
                        "description": "",
                        "auth": {
                            "type": "noauth"
                        }
                    },
                    "response": [
                        {
                            "header": [
                                {
                                    "key": "cache-control",
                                    "value": "no-cache, private"
                                },
                                {
                                    "key": "content-type",
                                    "value": "application\/json"
                                },
                                {
                                    "key": "x-request-id",
                                    "value": "ab3d98b7-cdef-4320-9659-7430f33fdfd7"
                                },
                                {
                                    "key": "vary",
                                    "value": "Origin"
                                }
                            ],
                            "code": 401,
                            "body": "{\"error\":{\"code\":\"unauthorized\",\"message\":\"Unauthorized.\",\"docs_url\":\"https:\\\/\\\/docs.subsig.com\\\/errors\\\/unauthorized\",\"request_id\":\"ab3d98b7-cdef-4320-9659-7430f33fdfd7\"}}",
                            "name": ""
                        }
                    ]
                },
                {
                    "name": "Detail for a single brand tracked by AI Visibility: own brand or a specific competitor,\nresolved by name against the SAME ai_visibility_brands-backed set index() draws its\ncompetitors list from. The 404 below says so explicitly rather than leaving the caller to\nguess why a name wasn't found.",
                    "request": {
                        "url": {
                            "host": "{{baseUrl}}",
                            "path": "api\/v1\/ai-visibility\/brand",
                            "query": [],
                            "raw": "{{baseUrl}}\/api\/v1\/ai-visibility\/brand"
                        },
                        "method": "GET",
                        "header": [
                            {
                                "key": "Content-Type",
                                "value": "application\/json"
                            },
                            {
                                "key": "Accept",
                                "value": "application\/json"
                            }
                        ],
                        "body": null,
                        "description": "",
                        "auth": {
                            "type": "noauth"
                        }
                    },
                    "response": [
                        {
                            "header": [
                                {
                                    "key": "cache-control",
                                    "value": "no-cache, private"
                                },
                                {
                                    "key": "content-type",
                                    "value": "application\/json"
                                },
                                {
                                    "key": "x-request-id",
                                    "value": "096ad0b6-fccd-4dbf-b4a4-d1de13b84f20"
                                },
                                {
                                    "key": "vary",
                                    "value": "Origin"
                                }
                            ],
                            "code": 401,
                            "body": "{\"error\":{\"code\":\"unauthorized\",\"message\":\"Unauthorized.\",\"docs_url\":\"https:\\\/\\\/docs.subsig.com\\\/errors\\\/unauthorized\",\"request_id\":\"096ad0b6-fccd-4dbf-b4a4-d1de13b84f20\"}}",
                            "name": ""
                        }
                    ]
                },
                {
                    "name": "GET api\/v1\/ai-visibility\/platforms",
                    "request": {
                        "url": {
                            "host": "{{baseUrl}}",
                            "path": "api\/v1\/ai-visibility\/platforms",
                            "query": [],
                            "raw": "{{baseUrl}}\/api\/v1\/ai-visibility\/platforms"
                        },
                        "method": "GET",
                        "header": [
                            {
                                "key": "Content-Type",
                                "value": "application\/json"
                            },
                            {
                                "key": "Accept",
                                "value": "application\/json"
                            }
                        ],
                        "body": null,
                        "description": "",
                        "auth": {
                            "type": "noauth"
                        }
                    },
                    "response": [
                        {
                            "header": [
                                {
                                    "key": "cache-control",
                                    "value": "no-cache, private"
                                },
                                {
                                    "key": "content-type",
                                    "value": "application\/json"
                                },
                                {
                                    "key": "x-request-id",
                                    "value": "cd19ac92-ee92-4a8e-8c50-0d9a091a3ca1"
                                },
                                {
                                    "key": "vary",
                                    "value": "Origin"
                                }
                            ],
                            "code": 401,
                            "body": "{\"error\":{\"code\":\"unauthorized\",\"message\":\"Unauthorized.\",\"docs_url\":\"https:\\\/\\\/docs.subsig.com\\\/errors\\\/unauthorized\",\"request_id\":\"cd19ac92-ee92-4a8e-8c50-0d9a091a3ca1\"}}",
                            "name": ""
                        }
                    ]
                },
                {
                    "name": "GET api\/v1\/ai-visibility\/sentiment",
                    "request": {
                        "url": {
                            "host": "{{baseUrl}}",
                            "path": "api\/v1\/ai-visibility\/sentiment",
                            "query": [],
                            "raw": "{{baseUrl}}\/api\/v1\/ai-visibility\/sentiment"
                        },
                        "method": "GET",
                        "header": [
                            {
                                "key": "Content-Type",
                                "value": "application\/json"
                            },
                            {
                                "key": "Accept",
                                "value": "application\/json"
                            }
                        ],
                        "body": null,
                        "description": "",
                        "auth": {
                            "type": "noauth"
                        }
                    },
                    "response": [
                        {
                            "header": [
                                {
                                    "key": "cache-control",
                                    "value": "no-cache, private"
                                },
                                {
                                    "key": "content-type",
                                    "value": "application\/json"
                                },
                                {
                                    "key": "x-request-id",
                                    "value": "27c8835c-12da-440d-a236-7fb3bb4009b1"
                                },
                                {
                                    "key": "vary",
                                    "value": "Origin"
                                }
                            ],
                            "code": 401,
                            "body": "{\"error\":{\"code\":\"unauthorized\",\"message\":\"Unauthorized.\",\"docs_url\":\"https:\\\/\\\/docs.subsig.com\\\/errors\\\/unauthorized\",\"request_id\":\"27c8835c-12da-440d-a236-7fb3bb4009b1\"}}",
                            "name": ""
                        }
                    ]
                },
                {
                    "name": "GET api\/v1\/ai-visibility\/citations",
                    "request": {
                        "url": {
                            "host": "{{baseUrl}}",
                            "path": "api\/v1\/ai-visibility\/citations",
                            "query": [],
                            "raw": "{{baseUrl}}\/api\/v1\/ai-visibility\/citations"
                        },
                        "method": "GET",
                        "header": [
                            {
                                "key": "Content-Type",
                                "value": "application\/json"
                            },
                            {
                                "key": "Accept",
                                "value": "application\/json"
                            }
                        ],
                        "body": null,
                        "description": "",
                        "auth": {
                            "type": "noauth"
                        }
                    },
                    "response": [
                        {
                            "header": [
                                {
                                    "key": "cache-control",
                                    "value": "no-cache, private"
                                },
                                {
                                    "key": "content-type",
                                    "value": "application\/json"
                                },
                                {
                                    "key": "x-request-id",
                                    "value": "61a46285-b4b6-44a2-9978-d0229d14eb3c"
                                },
                                {
                                    "key": "vary",
                                    "value": "Origin"
                                }
                            ],
                            "code": 401,
                            "body": "{\"error\":{\"code\":\"unauthorized\",\"message\":\"Unauthorized.\",\"docs_url\":\"https:\\\/\\\/docs.subsig.com\\\/errors\\\/unauthorized\",\"request_id\":\"61a46285-b4b6-44a2-9978-d0229d14eb3c\"}}",
                            "name": ""
                        }
                    ]
                },
                {
                    "name": "GET api\/v1\/ai-visibility\/status",
                    "request": {
                        "url": {
                            "host": "{{baseUrl}}",
                            "path": "api\/v1\/ai-visibility\/status",
                            "query": [],
                            "raw": "{{baseUrl}}\/api\/v1\/ai-visibility\/status"
                        },
                        "method": "GET",
                        "header": [
                            {
                                "key": "Content-Type",
                                "value": "application\/json"
                            },
                            {
                                "key": "Accept",
                                "value": "application\/json"
                            }
                        ],
                        "body": null,
                        "description": "",
                        "auth": {
                            "type": "noauth"
                        }
                    },
                    "response": [
                        {
                            "header": [
                                {
                                    "key": "cache-control",
                                    "value": "no-cache, private"
                                },
                                {
                                    "key": "content-type",
                                    "value": "application\/json"
                                },
                                {
                                    "key": "x-request-id",
                                    "value": "505e799b-99dd-444b-a3c2-9bc91b3836e3"
                                },
                                {
                                    "key": "vary",
                                    "value": "Origin"
                                }
                            ],
                            "code": 401,
                            "body": "{\"error\":{\"code\":\"unauthorized\",\"message\":\"Unauthorized.\",\"docs_url\":\"https:\\\/\\\/docs.subsig.com\\\/errors\\\/unauthorized\",\"request_id\":\"505e799b-99dd-444b-a3c2-9bc91b3836e3\"}}",
                            "name": ""
                        }
                    ]
                },
                {
                    "name": "GET api\/v1\/agent-reports",
                    "request": {
                        "url": {
                            "host": "{{baseUrl}}",
                            "path": "api\/v1\/agent-reports",
                            "query": [],
                            "raw": "{{baseUrl}}\/api\/v1\/agent-reports"
                        },
                        "method": "GET",
                        "header": [
                            {
                                "key": "Content-Type",
                                "value": "application\/json"
                            },
                            {
                                "key": "Accept",
                                "value": "application\/json"
                            }
                        ],
                        "body": null,
                        "description": "",
                        "auth": {
                            "type": "noauth"
                        }
                    },
                    "response": [
                        {
                            "header": [
                                {
                                    "key": "cache-control",
                                    "value": "no-cache, private"
                                },
                                {
                                    "key": "content-type",
                                    "value": "application\/json"
                                },
                                {
                                    "key": "x-request-id",
                                    "value": "9301ec08-32e8-4e59-b401-551c6f40f15e"
                                },
                                {
                                    "key": "vary",
                                    "value": "Origin"
                                }
                            ],
                            "code": 401,
                            "body": "{\"error\":{\"code\":\"unauthorized\",\"message\":\"Unauthorized.\",\"docs_url\":\"https:\\\/\\\/docs.subsig.com\\\/errors\\\/unauthorized\",\"request_id\":\"9301ec08-32e8-4e59-b401-551c6f40f15e\"}}",
                            "name": ""
                        }
                    ]
                },
                {
                    "name": "GET api\/v1\/agent-reports\/{run_id}",
                    "request": {
                        "url": {
                            "host": "{{baseUrl}}",
                            "path": "api\/v1\/agent-reports\/:run_id",
                            "query": [],
                            "raw": "{{baseUrl}}\/api\/v1\/agent-reports\/:run_id",
                            "variable": [
                                {
                                    "id": "run_id",
                                    "key": "run_id",
                                    "value": "6",
                                    "description": "The ID of the run."
                                }
                            ]
                        },
                        "method": "GET",
                        "header": [
                            {
                                "key": "Content-Type",
                                "value": "application\/json"
                            },
                            {
                                "key": "Accept",
                                "value": "application\/json"
                            }
                        ],
                        "body": null,
                        "description": "",
                        "auth": {
                            "type": "noauth"
                        }
                    },
                    "response": [
                        {
                            "header": [
                                {
                                    "key": "cache-control",
                                    "value": "no-cache, private"
                                },
                                {
                                    "key": "content-type",
                                    "value": "application\/json"
                                },
                                {
                                    "key": "x-request-id",
                                    "value": "0a83ae38-983c-476a-8c89-2966e88aeb62"
                                },
                                {
                                    "key": "vary",
                                    "value": "Origin"
                                }
                            ],
                            "code": 401,
                            "body": "{\"error\":{\"code\":\"unauthorized\",\"message\":\"Unauthorized.\",\"docs_url\":\"https:\\\/\\\/docs.subsig.com\\\/errors\\\/unauthorized\",\"request_id\":\"0a83ae38-983c-476a-8c89-2966e88aeb62\"}}",
                            "name": ""
                        }
                    ]
                }
            ]
        },
        {
            "name": "External",
            "description": "\nTrusted external onboarding (API key): create a verified user and complete onboarding in one request.",
            "item": [
                {
                    "name": "Create User And Complete Claim Onboarding",
                    "request": {
                        "url": {
                            "host": "{{baseUrl}}",
                            "path": "api\/external\/claim-onboarding",
                            "query": [],
                            "raw": "{{baseUrl}}\/api\/external\/claim-onboarding"
                        },
                        "method": "POST",
                        "header": [
                            {
                                "key": "Content-Type",
                                "value": "application\/json"
                            },
                            {
                                "key": "Accept",
                                "value": "application\/json"
                            }
                        ],
                        "body": {
                            "mode": "raw",
                            "raw": "{\"name\":\"John Doe\",\"email\":\"john@example.com\",\"organisation_name\":\"Acme Inc\",\"product_name\":\"Acme CRM\",\"product_website\":\"https:\\\/\\\/acme.com\",\"product_logo\":\"https:\\\/\\\/cdn.example.com\\\/logo.png\"}"
                        },
                        "description": "Creates a user (or reuses an existing one), then either:\n- completes onboarding, or\n- if a matching non-competitor project already exists under the user account, skips onboarding\n  and returns a magic link for direct sign-in flow.",
                        "auth": {
                            "type": "noauth"
                        }
                    },
                    "response": [
                        {
                            "header": [],
                            "code": 201,
                            "body": "{\n  \"message\": \"Onboarding completed successfully.\",\n  \"token\": \"1|abc123...\",\n  \"magic_link\": \"https:\/\/subsig-frontend.vercel.app\/login?qid=1%7Cabc123...&is_claim_profile=1&org_id=550e8400-e29b-41d4-a716-446655440000\",\n  \"data\": {\n    \"organisation_uuid\": \"550e8400-e29b-41d4-a716-446655440000\",\n    \"product_uuid\": \"660e8400-e29b-41d4-a716-446655440001\"\n  }\n}",
                            "name": ""
                        },
                        {
                            "header": [],
                            "code": 401,
                            "body": "{\n  \"message\": \"Unauthorized.\"\n}",
                            "name": ""
                        },
                        {
                            "header": [],
                            "code": 422,
                            "body": "{\n  \"message\": \"Provided organisation does not match the existing claimed profile context.\",\n  \"errors\": {\n    \"organisation_name\": [\"Organisation does not match existing profile project.\"]\n  }\n}",
                            "name": ""
                        }
                    ]
                }
            ]
        },
        {
            "name": "Google Analytics Integration",
            "description": "\nOrg-scoped via the `X-Organisation-Id` header (see ResolveOrganisation middleware), same\npattern as the Slack integration -- no organisation_uuid path segment, $request->organisation\nis already resolved and access-checked by the time these methods run.",
            "item": [
                {
                    "name": "Connect Google Analytics Account",
                    "request": {
                        "url": {
                            "host": "{{baseUrl}}",
                            "path": "api\/integrations\/google-analytics\/connect",
                            "query": [],
                            "raw": "{{baseUrl}}\/api\/integrations\/google-analytics\/connect"
                        },
                        "method": "POST",
                        "header": [
                            {
                                "key": "Content-Type",
                                "value": "application\/json"
                            },
                            {
                                "key": "Accept",
                                "value": "application\/json"
                            }
                        ],
                        "body": {
                            "mode": "raw",
                            "raw": "{\"code\":\"4\\\/0Ab_...\",\"redirect_uri\":\"architecto\"}"
                        },
                        "description": "Exchanges an authorization code (obtained by the frontend's own OAuth flow) for tokens and\ncreates or updates the connection. Supports multiple Google accounts per organisation --\na second call with a different account creates a second connection, not a collision.",
                        "auth": {
                            "type": "noauth"
                        }
                    },
                    "response": [
                        {
                            "header": [],
                            "code": 201,
                            "body": "{\"data\": {\"id\": \"...\", \"account_email\": \"user@example.com\", \"status\": \"connected\", \"connected_at\": \"...\", \"selected_property\": null}}",
                            "name": ""
                        }
                    ]
                },
                {
                    "name": "List Google Analytics Connections",
                    "request": {
                        "url": {
                            "host": "{{baseUrl}}",
                            "path": "api\/integrations\/google-analytics\/connections",
                            "query": [],
                            "raw": "{{baseUrl}}\/api\/integrations\/google-analytics\/connections"
                        },
                        "method": "GET",
                        "header": [
                            {
                                "key": "Content-Type",
                                "value": "application\/json"
                            },
                            {
                                "key": "Accept",
                                "value": "application\/json"
                            }
                        ],
                        "body": null,
                        "description": "No properties included -- lazy-loaded separately per connection when its row is expanded.",
                        "auth": {
                            "type": "noauth"
                        }
                    },
                    "response": [
                        {
                            "header": [
                                {
                                    "key": "cache-control",
                                    "value": "no-cache, private"
                                },
                                {
                                    "key": "content-type",
                                    "value": "application\/json"
                                },
                                {
                                    "key": "vary",
                                    "value": "Origin"
                                }
                            ],
                            "code": 401,
                            "body": "{\"message\":\"Unauthenticated.\"}",
                            "name": ""
                        }
                    ]
                },
                {
                    "name": "List GA4 Properties For A Connection",
                    "request": {
                        "url": {
                            "host": "{{baseUrl}}",
                            "path": "api\/integrations\/google-analytics\/connections\/:connection\/properties",
                            "query": [],
                            "raw": "{{baseUrl}}\/api\/integrations\/google-analytics\/connections\/:connection\/properties",
                            "variable": [
                                {
                                    "id": "connection",
                                    "key": "connection",
                                    "value": "architecto",
                                    "description": "The connection's uuid."
                                }
                            ]
                        },
                        "method": "GET",
                        "header": [
                            {
                                "key": "Content-Type",
                                "value": "application\/json"
                            },
                            {
                                "key": "Accept",
                                "value": "application\/json"
                            }
                        ],
                        "body": null,
                        "description": "Fetched live from Google on first row-expand, briefly cached after (see\nGoogleAnalyticsService::listProperties()). Not eagerly included in the connections list.",
                        "auth": {
                            "type": "noauth"
                        }
                    },
                    "response": [
                        {
                            "header": [],
                            "code": 200,
                            "body": "{\"data\": [{\"id\": \"properties\/123\", \"name\": \"Subsig - GA4\", \"domain\": \"subscribed.fyi\", \"sessions_per_month\": 12400, \"matches_site\": true}]}",
                            "name": ""
                        }
                    ]
                },
                {
                    "name": "Select GA4 Property For A Connection",
                    "request": {
                        "url": {
                            "host": "{{baseUrl}}",
                            "path": "api\/integrations\/google-analytics\/connections\/:connection\/property",
                            "query": [],
                            "raw": "{{baseUrl}}\/api\/integrations\/google-analytics\/connections\/:connection\/property",
                            "variable": [
                                {
                                    "id": "connection",
                                    "key": "connection",
                                    "value": "architecto",
                                    "description": "The connection's uuid."
                                }
                            ]
                        },
                        "method": "PATCH",
                        "header": [
                            {
                                "key": "Content-Type",
                                "value": "application\/json"
                            },
                            {
                                "key": "Accept",
                                "value": "application\/json"
                            }
                        ],
                        "body": {
                            "mode": "raw",
                            "raw": "{\"property_id\":\"architecto\"}"
                        },
                        "description": "Validated against the connection's own real property list -- a customer can only select a\nproperty their own connected account actually has. Historical rows already collected under\na previously selected property are never reassigned by changing this.",
                        "auth": {
                            "type": "noauth"
                        }
                    },
                    "response": [
                        {
                            "header": [],
                            "code": 200,
                            "body": "{\"data\": {\"id\": \"...\", \"account_email\": \"...\", \"status\": \"connected\", \"connected_at\": \"...\", \"selected_property\": {\"id\": \"properties\/123\", \"name\": \"Subsig - GA4\"}}}",
                            "name": ""
                        }
                    ]
                },
                {
                    "name": "Disconnect Google Analytics Account",
                    "request": {
                        "url": {
                            "host": "{{baseUrl}}",
                            "path": "api\/integrations\/google-analytics\/connections\/:connection",
                            "query": [],
                            "raw": "{{baseUrl}}\/api\/integrations\/google-analytics\/connections\/:connection",
                            "variable": [
                                {
                                    "id": "connection",
                                    "key": "connection",
                                    "value": "architecto",
                                    "description": "The connection's uuid."
                                }
                            ]
                        },
                        "method": "DELETE",
                        "header": [
                            {
                                "key": "Content-Type",
                                "value": "application\/json"
                            },
                            {
                                "key": "Accept",
                                "value": "application\/json"
                            }
                        ],
                        "body": null,
                        "description": "Best-effort revoke on Google's side, then removes the connection regardless of whether the\nrevoke call succeeds.",
                        "auth": {
                            "type": "noauth"
                        }
                    },
                    "response": [
                        {
                            "header": [],
                            "code": 204,
                            "body": "{}",
                            "name": ""
                        }
                    ]
                }
            ]
        },
        {
            "name": "Home",
            "description": "\nFeeds the standalone Recommendations page, AI-Visibility-only. All the actual signal-gathering\nand recommendation logic lives in AiVisibilityRecommendationService, shared by nothing else, so\nthis stays a thin request\/response adapter.",
            "item": [
                {
                    "name": "GET api\/organisations\/{organisation_uuid}\/agents\/recommendations",
                    "request": {
                        "url": {
                            "host": "{{baseUrl}}",
                            "path": "api\/organisations\/:organisation_uuid\/agents\/recommendations",
                            "query": [],
                            "raw": "{{baseUrl}}\/api\/organisations\/:organisation_uuid\/agents\/recommendations",
                            "variable": [
                                {
                                    "id": "organisation_uuid",
                                    "key": "organisation_uuid",
                                    "value": "205ae76c-bd73-426b-a36a-8338353b9542",
                                    "description": ""
                                }
                            ]
                        },
                        "method": "GET",
                        "header": [
                            {
                                "key": "Content-Type",
                                "value": "application\/json"
                            },
                            {
                                "key": "Accept",
                                "value": "application\/json"
                            }
                        ],
                        "body": null,
                        "description": "",
                        "auth": {
                            "type": "noauth"
                        }
                    },
                    "response": [
                        {
                            "header": [
                                {
                                    "key": "cache-control",
                                    "value": "no-cache, private"
                                },
                                {
                                    "key": "content-type",
                                    "value": "application\/json"
                                },
                                {
                                    "key": "vary",
                                    "value": "Origin"
                                }
                            ],
                            "code": 401,
                            "body": "{\"message\":\"Unauthenticated.\"}",
                            "name": ""
                        }
                    ]
                }
            ]
        },
        {
            "name": "Invites",
            "description": "\nAPIs for managing invites",
            "item": [
                {
                    "name": "Validate Invite",
                    "request": {
                        "url": {
                            "host": "{{baseUrl}}",
                            "path": "api\/invites\/validate\/:token",
                            "query": [],
                            "raw": "{{baseUrl}}\/api\/invites\/validate\/:token",
                            "variable": [
                                {
                                    "id": "token",
                                    "key": "token",
                                    "value": "abc123def456...",
                                    "description": "The invite token."
                                }
                            ]
                        },
                        "method": "GET",
                        "header": [
                            {
                                "key": "Content-Type",
                                "value": "application\/json"
                            },
                            {
                                "key": "Accept",
                                "value": "application\/json"
                            }
                        ],
                        "body": null,
                        "description": "Validate an invite token and return the associated email if the invite is valid.\nAlso returns whether a user account already exists for the invite email,\nso the frontend can route to login vs signup.\nThis endpoint is public and does not require authentication.",
                        "auth": {
                            "type": "noauth"
                        }
                    },
                    "response": [
                        {
                            "header": [],
                            "code": 200,
                            "body": "{\n  \"email\": \"user@example.com\"\n}",
                            "name": ""
                        },
                        {
                            "header": [],
                            "code": 404,
                            "body": "{\n  \"message\": \"Invite not found.\"\n}",
                            "name": "Invite not found"
                        },
                        {
                            "header": [],
                            "code": 410,
                            "body": "{\n  \"message\": \"This invite has expired.\"\n}",
                            "name": "Invite expired"
                        },
                        {
                            "header": [],
                            "code": 410,
                            "body": "{\n  \"message\": \"This invite is no longer valid.\"\n}",
                            "name": "Invite no longer valid"
                        }
                    ]
                },
                {
                    "name": "Accept Invite (Existing User)",
                    "request": {
                        "url": {
                            "host": "{{baseUrl}}",
                            "path": "api\/invites\/accept-invite",
                            "query": [],
                            "raw": "{{baseUrl}}\/api\/invites\/accept-invite"
                        },
                        "method": "POST",
                        "header": [
                            {
                                "key": "Content-Type",
                                "value": "application\/json"
                            },
                            {
                                "key": "Accept",
                                "value": "application\/json"
                            }
                        ],
                        "body": {
                            "mode": "raw",
                            "raw": "{\"token\":\"eEtgjrcdtubjCu4817MfGiimvC2DQLBgaI7LpY1g5kdDMK5wJlQank7ZJ6PWurmb\"}"
                        },
                        "description": "Accept an invitation as an already-registered, authenticated user.\nThe authenticated user's email must match the invite email.\nThe user will be added to the organisation or project specified in the invite."
                    },
                    "response": [
                        {
                            "header": [],
                            "code": 200,
                            "body": "{\n  \"message\": \"Invite accepted successfully.\",\n  \"data\": {\n    \"organisation\": {\n      \"uuid\": \"550e8400-e29b-41d4-a716-446655440000\",\n      \"name\": \"Acme Inc\"\n    }\n  }\n}",
                            "name": ""
                        },
                        {
                            "header": [],
                            "code": 403,
                            "body": "{\n  \"message\": \"This invite was sent to a different email address.\",\n  \"errors\": {\n    \"email\": [\"The invite email does not match your account email.\"]\n  }\n}",
                            "name": "Email mismatch"
                        },
                        {
                            "header": [],
                            "code": 404,
                            "body": "{\n  \"message\": \"Invite not found.\",\n  \"errors\": {\n    \"token\": [\"The invite token is invalid or does not exist.\"]\n  }\n}",
                            "name": "Token not found"
                        },
                        {
                            "header": [],
                            "code": 410,
                            "body": "{\n  \"message\": \"Invite has expired.\",\n  \"errors\": {\n    \"token\": [\"This invite has expired. Please request a new invitation.\"]\n  }\n}",
                            "name": "Invite expired"
                        },
                        {
                            "header": [],
                            "code": 410,
                            "body": "{\n  \"message\": \"Invite has already been accepted.\",\n  \"errors\": {\n    \"token\": [\"This invite has already been accepted.\"]\n  }\n}",
                            "name": "Invite already accepted"
                        },
                        {
                            "header": [],
                            "code": 422,
                            "body": "{\n  \"message\": \"You are already a member of this organisation.\",\n  \"errors\": {\n    \"organisation\": [\"You are already a member of this organisation.\"]\n  }\n}",
                            "name": "Already a member"
                        }
                    ]
                },
                {
                    "name": "List Invites",
                    "request": {
                        "url": {
                            "host": "{{baseUrl}}",
                            "path": "api\/invites",
                            "query": [
                                {
                                    "key": "organisation_id",
                                    "value": "550e8400-e29b-41d4-a716-446655440000",
                                    "description": "Optional. Organisation UUID to list invites for. If omitted, organisation is taken from X-Organisation-Id header or the user's current organisation.",
                                    "disabled": false
                                },
                                {
                                    "key": "project_id",
                                    "value": "660e8400-e29b-41d4-a716-446655440001",
                                    "description": "Optional. Filter invites by project UUID.",
                                    "disabled": false
                                }
                            ],
                            "raw": "{{baseUrl}}\/api\/invites?organisation_id=550e8400-e29b-41d4-a716-446655440000&project_id=660e8400-e29b-41d4-a716-446655440001"
                        },
                        "method": "GET",
                        "header": [
                            {
                                "key": "Content-Type",
                                "value": "application\/json"
                            },
                            {
                                "key": "Accept",
                                "value": "application\/json"
                            }
                        ],
                        "body": null,
                        "description": "Get invites based on context:\n- Organisation level (no project_id): Returns all organisation invites + all project invites for the organisation\n- Project level (with project_id): Returns only invites for the specified project"
                    },
                    "response": [
                        {
                            "header": [],
                            "code": 200,
                            "body": "[\n  {\n    \"id\": 1,\n    \"email\": \"user@example.com\",\n    \"type\": \"organisation\",\n    \"status\": \"pending\",\n    \"expires_at\": \"2025-12-31T10:00:00.000000Z\",\n    \"organisation_id\": \"550e8400-e29b-41d4-a716-446655440000\",\n    \"organisation\": {\n      \"uuid\": \"550e8400-e29b-41d4-a716-446655440000\",\n      \"name\": \"Acme Corp\"\n    },\n    \"project_id\": null,\n    \"project\": null,\n    \"inviter\": {\n      \"name\": \"John Admin\",\n      \"email\": \"admin@acme.com\"\n    },\n    \"created_at\": \"2025-12-24T10:00:00.000000Z\",\n    \"updated_at\": \"2025-12-24T10:00:00.000000Z\"\n  },\n  {\n    \"id\": 2,\n    \"email\": \"developer@example.com\",\n    \"type\": \"project\",\n    \"status\": \"pending\",\n    \"expires_at\": \"2025-12-31T10:00:00.000000Z\",\n    \"organisation_id\": null,\n    \"organisation\": null,\n    \"project_id\": \"660e8400-e29b-41d4-a716-446655440001\",\n    \"project\": {\n      \"uuid\": \"660e8400-e29b-41d4-a716-446655440001\",\n      \"name\": \"My Product\"\n    },\n    \"inviter\": {\n      \"name\": \"John Admin\",\n      \"email\": \"admin@acme.com\"\n    },\n    \"created_at\": \"2025-12-24T10:00:00.000000Z\",\n    \"updated_at\": \"2025-12-24T10:00:00.000000Z\"\n  }\n]",
                            "name": ""
                        },
                        {
                            "header": [],
                            "code": 403,
                            "body": "{\n  \"message\": \"You do not have access to this project.\"\n}",
                            "name": "No access to project"
                        },
                        {
                            "header": [],
                            "code": 403,
                            "body": "{\n  \"message\": \"You do not have access to this organisation.\"\n}",
                            "name": "No access to organisation"
                        },
                        {
                            "header": [],
                            "code": 404,
                            "body": "{\n  \"message\": \"Project not found.\"\n}",
                            "name": "Project not found"
                        },
                        {
                            "header": [],
                            "code": 404,
                            "body": "{\n  \"message\": \"Organisation not found.\"\n}",
                            "name": "Organisation not found"
                        },
                        {
                            "header": [],
                            "code": 422,
                            "body": "{\n  \"message\": \"No organisation context found.\",\n  \"errors\": {\n    \"organisation\": [\"Please select an organisation or set current organisation.\"]\n  }\n}",
                            "name": "No organisation context"
                        }
                    ]
                },
                {
                    "name": "Create Invite",
                    "request": {
                        "url": {
                            "host": "{{baseUrl}}",
                            "path": "api\/invites",
                            "query": [],
                            "raw": "{{baseUrl}}\/api\/invites"
                        },
                        "method": "POST",
                        "header": [
                            {
                                "key": "Content-Type",
                                "value": "application\/json"
                            },
                            {
                                "key": "Accept",
                                "value": "application\/json"
                            }
                        ],
                        "body": {
                            "mode": "raw",
                            "raw": "{\"email\":\"user@example.com\",\"type\":\"organisation\",\"organisation_id\":\"550e8400-e29b-41d4-a716-446655440000\",\"project_id\":\"660e8400-e29b-41d4-a716-446655440001\"}"
                        },
                        "description": "Create a new invite for a user to join an organisation or project.\nFor organisation invites, the organisation is determined from the provided organisation UUID."
                    },
                    "response": [
                        {
                            "header": [],
                            "code": 201,
                            "body": "{\n  \"message\": \"Invite created successfully.\",\n  \"data\": {\n    \"id\": 1,\n    \"email\": \"user@example.com\",\n    \"type\": \"organisation\",\n    \"status\": \"pending\",\n    \"token\": \"abc123...\",\n    \"expires_at\": \"2025-12-31T10:00:00.000000Z\",\n    \"organisation_id\": \"550e8400-e29b-41d4-a716-446655440000\",\n    \"project_id\": null,\n    \"created_at\": \"2025-12-24T10:00:00.000000Z\",\n    \"updated_at\": \"2025-12-24T10:00:00.000000Z\"\n  }\n}",
                            "name": ""
                        },
                        {
                            "header": [],
                            "code": 403,
                            "body": "{\n  \"message\": \"You are not permitted to send invites at this time.\"\n}",
                            "name": "Inviter not whitelisted"
                        },
                        {
                            "header": [],
                            "code": 422,
                            "body": "{\n  \"message\": \"No organisation context found.\",\n  \"errors\": {\n    \"organisation\": [\"Please select an organisation or set current organisation.\"]\n  }\n}",
                            "name": "No organisation context"
                        }
                    ]
                },
                {
                    "name": "Delete Invite",
                    "request": {
                        "url": {
                            "host": "{{baseUrl}}",
                            "path": "api\/invites\/:invite_id",
                            "query": [],
                            "raw": "{{baseUrl}}\/api\/invites\/:invite_id",
                            "variable": [
                                {
                                    "id": "invite_id",
                                    "key": "invite_id",
                                    "value": "1",
                                    "description": "The invite ID."
                                }
                            ]
                        },
                        "method": "DELETE",
                        "header": [
                            {
                                "key": "Content-Type",
                                "value": "application\/json"
                            },
                            {
                                "key": "Accept",
                                "value": "application\/json"
                            }
                        ],
                        "body": null,
                        "description": "Delete an invite. Only the inviter or organisation owners can delete invites."
                    },
                    "response": [
                        {
                            "header": [],
                            "code": 200,
                            "body": "{\n  \"message\": \"Invite deleted successfully.\"\n}",
                            "name": ""
                        },
                        {
                            "header": [],
                            "code": 403,
                            "body": "{\n  \"message\": \"You are not authorized to delete this invite.\"\n}",
                            "name": "Not authorized"
                        },
                        {
                            "header": [],
                            "code": 404,
                            "body": "{\n  \"message\": \"Invite not found.\"\n}",
                            "name": "Invite not found"
                        },
                        {
                            "header": [],
                            "code": 422,
                            "body": "{\n  \"message\": \"No organisation context found.\",\n  \"errors\": {\n    \"organisation\": [\"Please select an organisation or set current organisation.\"]\n  }\n}",
                            "name": "No organisation context"
                        }
                    ]
                }
            ]
        },
        {
            "name": "Links",
            "description": "\nAPIs for managing project links",
            "item": [
                {
                    "name": "List Project Links",
                    "request": {
                        "url": {
                            "host": "{{baseUrl}}",
                            "path": "api\/projects\/:project_uuid\/links",
                            "query": [],
                            "raw": "{{baseUrl}}\/api\/projects\/:project_uuid\/links",
                            "variable": [
                                {
                                    "id": "project_uuid",
                                    "key": "project_uuid",
                                    "value": "660e8400-e29b-41d4-a716-446655440001",
                                    "description": "The project UUID."
                                }
                            ]
                        },
                        "method": "GET",
                        "header": [
                            {
                                "key": "Content-Type",
                                "value": "application\/json"
                            },
                            {
                                "key": "Accept",
                                "value": "application\/json"
                            }
                        ],
                        "body": null,
                        "description": "Get all links associated with a specific project."
                    },
                    "response": [
                        {
                            "header": [],
                            "code": 200,
                            "body": "{\n  \"data\": [\n    {\n      \"uuid\": \"550e8400-e29b-41d4-a716-446655440000\",\n      \"platform\": \"g2\",\n      \"url\": \"https:\/\/g2.com\/products\/acme\",\n      \"enabled\": true,\n      \"created_at\": \"2026-01-22T10:00:00.000000Z\",\n      \"updated_at\": \"2026-01-22T10:00:00.000000Z\"\n    }\n  ]\n}",
                            "name": ""
                        },
                        {
                            "header": [],
                            "code": 403,
                            "body": "{\n  \"message\": \"You do not have access to this project.\"\n}",
                            "name": "No Access"
                        },
                        {
                            "header": [],
                            "code": 404,
                            "body": "{\n  \"message\": \"Project not found.\"\n}",
                            "name": "Project Not Found"
                        }
                    ]
                }
            ]
        },
        {
            "name": "Onboarding",
            "description": "\nAPIs for user onboarding flow",
            "item": [
                {
                    "name": "Complete Onboarding",
                    "request": {
                        "url": {
                            "host": "{{baseUrl}}",
                            "path": "api\/onboarding",
                            "query": [],
                            "raw": "{{baseUrl}}\/api\/onboarding"
                        },
                        "method": "POST",
                        "header": [
                            {
                                "key": "Content-Type",
                                "value": "application\/json"
                            },
                            {
                                "key": "Accept",
                                "value": "application\/json"
                            }
                        ],
                        "body": {
                            "mode": "raw",
                            "raw": "{\"organisation_name\":\"Acme Inc\",\"product_name\":\"Acme CRM\",\"product_website\":\"https:\\\/\\\/acme.com\",\"product_logo\":\"https:\\\/\\\/cdn.brandfetch.io\\\/acme.com\\\/fallback\\\/lettermark\\\/icon?c=BRANDFETCH_CLIENT_ID\",\"threshold_consumption_date\":\"last_14_days. Allowed: last_14_days, last_3_months, last_6_months, last_12_months, last_2_years, last_3_years, all_time\"}"
                        },
                        "description": "Create an organisation and project in a single step during onboarding.\nThe authenticated user becomes the organisation owner."
                    },
                    "response": [
                        {
                            "header": [],
                            "code": 201,
                            "body": "{\n  \"message\": \"Onboarding completed successfully.\",\n  \"data\": {\n    \"organisation_uuid\": \"550e8400-e29b-41d4-a716-446655440000\",\n    \"product_uuid\": \"660e8400-e29b-41d4-a716-446655440001\",\n    \"organisation\": {\n      \"uuid\": \"550e8400-e29b-41d4-a716-446655440000\",\n      \"name\": \"Acme Inc\",\n      \"website\": \"https:\/\/acme.com\",\n      \"threshold_consumption_date\": \"2026-05-11\"\n    },\n    \"project\": {\n      \"uuid\": \"660e8400-e29b-41d4-a716-446655440001\",\n      \"product_name\": \"Acme CRM\",\n      \"product_website\": \"https:\/\/acme.com\",\n      \"product_logo\": \"https:\/\/cdn.brandfetch.io\/acme.com\/fallback\/lettermark\/icon?c=BRANDFETCH_CLIENT_ID\"\n    }\n  }\n}",
                            "name": ""
                        },
                        {
                            "header": [],
                            "code": 422,
                            "body": "{\n  \"message\": \"The organisation name field is required.\",\n  \"errors\": {\n    \"organisation_name\": [\"The organisation name field is required.\"]\n  }\n}",
                            "name": "Validation error"
                        }
                    ]
                },
                {
                    "name": "Update Onboarding",
                    "request": {
                        "url": {
                            "host": "{{baseUrl}}",
                            "path": "api\/onboarding",
                            "query": [],
                            "raw": "{{baseUrl}}\/api\/onboarding"
                        },
                        "method": "PUT",
                        "header": [
                            {
                                "key": "Content-Type",
                                "value": "application\/json"
                            },
                            {
                                "key": "Accept",
                                "value": "application\/json"
                            }
                        ],
                        "body": {
                            "mode": "raw",
                            "raw": "{\"organisation_name\":\"Acme Inc\",\"product_name\":\"Acme CRM\",\"product_website\":\"https:\\\/\\\/acme.com\",\"product_logo\":\"https:\\\/\\\/cdn.brandfetch.io\\\/acme.com\\\/fallback\\\/lettermark\\\/icon?c=BRANDFETCH_CLIENT_ID\",\"threshold_consumption_date\":\"last_6_months\"}"
                        },
                        "description": "Update the current organisation and project for the authenticated user."
                    },
                    "response": [
                        {
                            "header": [],
                            "code": 200,
                            "body": "{\n  \"message\": \"Onboarding updated successfully.\",\n  \"data\": {\n    \"organisation\": {\n      \"uuid\": \"550e8400-e29b-41d4-a716-446655440000\",\n      \"name\": \"Acme Inc\",\n      \"website\": \"https:\/\/acme.com\",\n      \"threshold_consumption_date\": \"2026-02-25\"\n    },\n    \"project\": {\n      \"uuid\": \"660e8400-e29b-41d4-a716-446655440001\",\n      \"product_name\": \"Acme CRM\",\n      \"product_website\": \"https:\/\/acme.com\",\n      \"product_logo\": \"https:\/\/cdn.brandfetch.io\/acme.com\/fallback\/lettermark\/icon?c=BRANDFETCH_CLIENT_ID\"\n    }\n  }\n}",
                            "name": ""
                        },
                        {
                            "header": [],
                            "code": 404,
                            "body": "{\n  \"message\": \"No organisation or project found for the current user.\"\n}",
                            "name": "No organisation or project found"
                        },
                        {
                            "header": [],
                            "code": 422,
                            "body": "{\n  \"message\": \"The organisation name field is required.\",\n  \"errors\": {\n    \"organisation_name\": [\"The organisation name field is required.\"]\n  }\n}",
                            "name": "Validation error"
                        }
                    ]
                }
            ]
        },
        {
            "name": "Organisations",
            "description": "\nAPIs for managing organisations",
            "item": [
                {
                    "name": "Supported Regions",
                    "request": {
                        "url": {
                            "host": "{{baseUrl}}",
                            "path": "api\/organisations\/supported-regions",
                            "query": [],
                            "raw": "{{baseUrl}}\/api\/organisations\/supported-regions"
                        },
                        "method": "GET",
                        "header": [
                            {
                                "key": "Content-Type",
                                "value": "application\/json"
                            },
                            {
                                "key": "Accept",
                                "value": "application\/json"
                            }
                        ],
                        "body": null,
                        "description": "Curated list of region\/country codes usable for an organisation's `region` (and, by\nfallback, a prompt's `country` -- see AiVisibilityPromptController::store()). Backs the\nfrontend's region\/country picker so it never offers a value the backend would then reject.\nSee config('ai_visibility.supported_regions')'s docblock for why this list isn't simply\n\"every ISO 3166-1 alpha-2 code\" or restricted to any one provider's own narrower support.",
                        "auth": {
                            "type": "noauth"
                        }
                    },
                    "response": [
                        {
                            "header": [],
                            "code": 200,
                            "body": "{\n  \"data\": [\n    {\"value\": \"US\", \"label\": \"United States\"},\n    {\"value\": \"GB\", \"label\": \"United Kingdom\"}\n  ]\n}",
                            "name": ""
                        }
                    ]
                },
                {
                    "name": "List Organisations",
                    "request": {
                        "url": {
                            "host": "{{baseUrl}}",
                            "path": "api\/organisations",
                            "query": [],
                            "raw": "{{baseUrl}}\/api\/organisations"
                        },
                        "method": "GET",
                        "header": [
                            {
                                "key": "Content-Type",
                                "value": "application\/json"
                            },
                            {
                                "key": "Accept",
                                "value": "application\/json"
                            }
                        ],
                        "body": null,
                        "description": "Get all organisations the authenticated user belongs to."
                    },
                    "response": [
                        {
                            "header": [],
                            "code": 200,
                            "body": "{\n  \"data\": [\n    {\n      \"uuid\": \"550e8400-e29b-41d4-a716-446655440000\",\n      \"name\": \"Acme Inc\",\n      \"website\": \"https:\/\/acme.com\",\n      \"role\": \"organisation_owner\",\n      \"created_at\": \"2025-12-10T10:00:00.000000Z\",\n      \"updated_at\": \"2025-12-10T10:00:00.000000Z\"\n    }\n  ]\n}",
                            "name": ""
                        }
                    ]
                },
                {
                    "name": "Create Organisation",
                    "request": {
                        "url": {
                            "host": "{{baseUrl}}",
                            "path": "api\/organisations",
                            "query": [],
                            "raw": "{{baseUrl}}\/api\/organisations"
                        },
                        "method": "POST",
                        "header": [
                            {
                                "key": "Content-Type",
                                "value": "application\/json"
                            },
                            {
                                "key": "Accept",
                                "value": "application\/json"
                            }
                        ],
                        "body": {
                            "mode": "raw",
                            "raw": "{\"name\":\"Acme Inc\",\"website\":\"https:\\\/\\\/acme.com\",\"region\":\"architecto\",\"language\":\"ngzmiy\"}"
                        },
                        "description": "Create a new organisation. The authenticated user becomes the admin."
                    },
                    "response": [
                        {
                            "header": [],
                            "code": 201,
                            "body": "{\n  \"message\": \"Organisation created successfully.\",\n  \"data\": {\n    \"uuid\": \"550e8400-e29b-41d4-a716-446655440000\",\n    \"name\": \"Acme Inc\",\n    \"website\": \"https:\/\/acme.com\",\n    \"role\": \"organisation_owner\",\n    \"created_at\": \"2025-12-10T10:00:00.000000Z\",\n    \"updated_at\": \"2025-12-10T10:00:00.000000Z\"\n  }\n}",
                            "name": ""
                        }
                    ]
                },
                {
                    "name": "Get Organisation",
                    "request": {
                        "url": {
                            "host": "{{baseUrl}}",
                            "path": "api\/organisations\/:uuid",
                            "query": [],
                            "raw": "{{baseUrl}}\/api\/organisations\/:uuid",
                            "variable": [
                                {
                                    "id": "uuid",
                                    "key": "uuid",
                                    "value": "205ae76c-bd73-426b-a36a-8338353b9542",
                                    "description": ""
                                },
                                {
                                    "id": "organisation",
                                    "key": "organisation",
                                    "value": "550e8400-e29b-41d4-a716-446655440000",
                                    "description": "The organisation UUID."
                                }
                            ]
                        },
                        "method": "GET",
                        "header": [
                            {
                                "key": "Content-Type",
                                "value": "application\/json"
                            },
                            {
                                "key": "Accept",
                                "value": "application\/json"
                            }
                        ],
                        "body": null,
                        "description": "Get details of a specific organisation."
                    },
                    "response": [
                        {
                            "header": [],
                            "code": 200,
                            "body": "{\n  \"data\": {\n    \"uuid\": \"550e8400-e29b-41d4-a716-446655440000\",\n    \"name\": \"Acme Inc\",\n    \"website\": \"https:\/\/acme.com\",\n    \"role\": \"organisation_owner\",\n    \"created_at\": \"2025-12-10T10:00:00.000000Z\",\n    \"updated_at\": \"2025-12-10T10:00:00.000000Z\"\n  }\n}",
                            "name": ""
                        },
                        {
                            "header": [],
                            "code": 403,
                            "body": "{\n  \"message\": \"You do not have access to this organisation.\"\n}",
                            "name": "No access"
                        }
                    ]
                },
                {
                    "name": "Update Organisation",
                    "request": {
                        "url": {
                            "host": "{{baseUrl}}",
                            "path": "api\/organisations\/:uuid",
                            "query": [],
                            "raw": "{{baseUrl}}\/api\/organisations\/:uuid",
                            "variable": [
                                {
                                    "id": "uuid",
                                    "key": "uuid",
                                    "value": "205ae76c-bd73-426b-a36a-8338353b9542",
                                    "description": ""
                                },
                                {
                                    "id": "organisation",
                                    "key": "organisation",
                                    "value": "550e8400-e29b-41d4-a716-446655440000",
                                    "description": "The organisation UUID."
                                }
                            ]
                        },
                        "method": "PUT",
                        "header": [
                            {
                                "key": "Content-Type",
                                "value": "application\/json"
                            },
                            {
                                "key": "Accept",
                                "value": "application\/json"
                            }
                        ],
                        "body": {
                            "mode": "raw",
                            "raw": "{\"name\":\"Acme Corp\",\"website\":\"https:\\\/\\\/acme.com\",\"region\":\"architecto\",\"language\":\"ngzmiy\"}"
                        },
                        "description": "Update an organisation's details. Requires admin role."
                    },
                    "response": [
                        {
                            "header": [],
                            "code": 200,
                            "body": "{\n  \"message\": \"Organisation updated successfully.\",\n  \"data\": {\n    \"uuid\": \"550e8400-e29b-41d4-a716-446655440000\",\n    \"name\": \"Acme Corp\",\n    \"website\": \"https:\/\/acme.com\",\n    \"role\": \"organisation_owner\",\n    \"created_at\": \"2025-12-10T10:00:00.000000Z\",\n    \"updated_at\": \"2025-12-10T10:00:00.000000Z\"\n  }\n}",
                            "name": ""
                        },
                        {
                            "header": [],
                            "code": 403,
                            "body": "{\n  \"message\": \"You must be an organisation admin to perform this action.\"\n}",
                            "name": "Not admin"
                        }
                    ]
                },
                {
                    "name": "Delete Organisation",
                    "request": {
                        "url": {
                            "host": "{{baseUrl}}",
                            "path": "api\/organisations\/:uuid",
                            "query": [],
                            "raw": "{{baseUrl}}\/api\/organisations\/:uuid",
                            "variable": [
                                {
                                    "id": "uuid",
                                    "key": "uuid",
                                    "value": "205ae76c-bd73-426b-a36a-8338353b9542",
                                    "description": ""
                                },
                                {
                                    "id": "organisation",
                                    "key": "organisation",
                                    "value": "550e8400-e29b-41d4-a716-446655440000",
                                    "description": "The organisation UUID."
                                }
                            ]
                        },
                        "method": "DELETE",
                        "header": [
                            {
                                "key": "Content-Type",
                                "value": "application\/json"
                            },
                            {
                                "key": "Accept",
                                "value": "application\/json"
                            }
                        ],
                        "body": null,
                        "description": "Delete an organisation and its projects (cascaded). Requires organisation owner role.\nCannot delete the authenticated user's current (primary) workspace; switch first."
                    },
                    "response": [
                        {
                            "header": [],
                            "code": 200,
                            "body": "{\n  \"message\": \"Organisation deleted successfully.\"\n}",
                            "name": ""
                        },
                        {
                            "header": [],
                            "code": 403,
                            "body": "{\n  \"message\": \"You do not have access to this organisation.\"\n}",
                            "name": "No access"
                        },
                        {
                            "header": [],
                            "code": 403,
                            "body": "{\n  \"message\": \"You must be an organisation admin to perform this action.\"\n}",
                            "name": "Not owner"
                        },
                        {
                            "header": [],
                            "code": 422,
                            "body": "{\n  \"message\": \"You cannot delete your current workspace. Switch to another organisation first.\"\n}",
                            "name": "Current workspace"
                        }
                    ]
                },
                {
                    "name": "Switch Current Organisation",
                    "request": {
                        "url": {
                            "host": "{{baseUrl}}",
                            "path": "api\/organisations\/:organisation_uuid\/switch",
                            "query": [],
                            "raw": "{{baseUrl}}\/api\/organisations\/:organisation_uuid\/switch",
                            "variable": [
                                {
                                    "id": "organisation_uuid",
                                    "key": "organisation_uuid",
                                    "value": "205ae76c-bd73-426b-a36a-8338353b9542",
                                    "description": ""
                                },
                                {
                                    "id": "organisation",
                                    "key": "organisation",
                                    "value": "550e8400-e29b-41d4-a716-446655440000",
                                    "description": "The organisation UUID."
                                }
                            ]
                        },
                        "method": "POST",
                        "header": [
                            {
                                "key": "Content-Type",
                                "value": "application\/json"
                            },
                            {
                                "key": "Accept",
                                "value": "application\/json"
                            }
                        ],
                        "body": null,
                        "description": "Set the user's current organisation for subsequent requests."
                    },
                    "response": [
                        {
                            "header": [],
                            "code": 200,
                            "body": "{\n  \"message\": \"Switched to organisation successfully.\",\n  \"data\": {\n    \"uuid\": \"550e8400-e29b-41d4-a716-446655440000\",\n    \"name\": \"Acme Inc\"\n  }\n}",
                            "name": ""
                        },
                        {
                            "header": [],
                            "code": 403,
                            "body": "{\n  \"message\": \"You do not have access to this organisation.\"\n}",
                            "name": "No access"
                        }
                    ]
                }
            ]
        },
        {
            "name": "Ownership Transfer",
            "description": "\nHands an entire organisation (and every other organisation its current owner also owns --\nthey move as one bundle) over to a new owner. Modeled as a third InviteType on the existing\nInvite table rather than a parallel system, since it already has everything a token-based\noffer\/accept flow needs.",
            "item": [
                {
                    "name": "Accept Ownership Transfer",
                    "request": {
                        "url": {
                            "host": "{{baseUrl}}",
                            "path": "api\/ownership-transfers\/accept",
                            "query": [],
                            "raw": "{{baseUrl}}\/api\/ownership-transfers\/accept"
                        },
                        "method": "POST",
                        "header": [
                            {
                                "key": "Content-Type",
                                "value": "application\/json"
                            },
                            {
                                "key": "Accept",
                                "value": "application\/json"
                            }
                        ],
                        "body": {
                            "mode": "raw",
                            "raw": "{\"token\":\"architecto\"}"
                        },
                        "description": "",
                        "auth": {
                            "type": "noauth"
                        }
                    },
                    "response": []
                },
                {
                    "name": "Initiate Ownership Transfer",
                    "request": {
                        "url": {
                            "host": "{{baseUrl}}",
                            "path": "api\/ownership-transfers",
                            "query": [],
                            "raw": "{{baseUrl}}\/api\/ownership-transfers"
                        },
                        "method": "POST",
                        "header": [
                            {
                                "key": "Content-Type",
                                "value": "application\/json"
                            },
                            {
                                "key": "Accept",
                                "value": "application\/json"
                            }
                        ],
                        "body": {
                            "mode": "raw",
                            "raw": "{\"email\":\"gbailey@example.net\",\"organisation_id\":\"architecto\"}"
                        },
                        "description": "",
                        "auth": {
                            "type": "noauth"
                        }
                    },
                    "response": []
                }
            ]
        },
        {
            "name": "Platforms",
            "description": "\nAPIs for managing platforms",
            "item": [
                {
                    "name": "List All Platforms",
                    "request": {
                        "url": {
                            "host": "{{baseUrl}}",
                            "path": "api\/platforms",
                            "query": [],
                            "raw": "{{baseUrl}}\/api\/platforms"
                        },
                        "method": "GET",
                        "header": [
                            {
                                "key": "Content-Type",
                                "value": "application\/json"
                            },
                            {
                                "key": "Accept",
                                "value": "application\/json"
                            }
                        ],
                        "body": null,
                        "description": "Get all platforms."
                    },
                    "response": [
                        {
                            "header": [],
                            "code": 200,
                            "body": "[\n  {\n    \"uuid\": \"550e8400-e29b-41d4-a716-446655440000\",\n    \"name\": \"G2\",\n    \"created_at\": \"2026-01-08T10:00:00.000000Z\",\n    \"updated_at\": \"2026-01-08T10:00:00.000000Z\"\n  }\n]",
                            "name": ""
                        }
                    ]
                },
                {
                    "name": "Create Platform",
                    "request": {
                        "url": {
                            "host": "{{baseUrl}}",
                            "path": "api\/platforms",
                            "query": [],
                            "raw": "{{baseUrl}}\/api\/platforms"
                        },
                        "method": "POST",
                        "header": [
                            {
                                "key": "Content-Type",
                                "value": "application\/json"
                            },
                            {
                                "key": "Accept",
                                "value": "application\/json"
                            }
                        ],
                        "body": {
                            "mode": "raw",
                            "raw": "{\"name\":\"G2\"}"
                        },
                        "description": "Create a new platform."
                    },
                    "response": [
                        {
                            "header": [],
                            "code": 201,
                            "body": "{\n  \"message\": \"Platform created successfully.\",\n  \"data\": {\n    \"uuid\": \"550e8400-e29b-41d4-a716-446655440000\",\n    \"name\": \"G2\",\n    \"created_at\": \"2026-01-08T10:00:00.000000Z\",\n    \"updated_at\": \"2026-01-08T10:00:00.000000Z\"\n  }\n}",
                            "name": ""
                        },
                        {
                            "header": [],
                            "code": 422,
                            "body": "{\n  \"message\": \"The name has already been taken.\",\n  \"errors\": {\n    \"name\": [\"The name has already been taken.\"]\n  }\n}",
                            "name": "Validation Error"
                        }
                    ]
                },
                {
                    "name": "Update Platform",
                    "request": {
                        "url": {
                            "host": "{{baseUrl}}",
                            "path": "api\/platforms\/:uuid",
                            "query": [],
                            "raw": "{{baseUrl}}\/api\/platforms\/:uuid",
                            "variable": [
                                {
                                    "id": "uuid",
                                    "key": "uuid",
                                    "value": "550e8400-e29b-41d4-a716-446655440000",
                                    "description": "The platform UUID."
                                }
                            ]
                        },
                        "method": "PATCH",
                        "header": [
                            {
                                "key": "Content-Type",
                                "value": "application\/json"
                            },
                            {
                                "key": "Accept",
                                "value": "application\/json"
                            }
                        ],
                        "body": {
                            "mode": "raw",
                            "raw": "{\"name\":\"Capterra\"}"
                        },
                        "description": "Update a platform's details."
                    },
                    "response": [
                        {
                            "header": [],
                            "code": 200,
                            "body": "{\n  \"message\": \"Platform updated successfully.\",\n  \"data\": {\n    \"uuid\": \"550e8400-e29b-41d4-a716-446655440000\",\n    \"name\": \"Capterra\",\n    \"created_at\": \"2026-01-08T10:00:00.000000Z\",\n    \"updated_at\": \"2026-01-08T10:30:00.000000Z\"\n  }\n}",
                            "name": ""
                        },
                        {
                            "header": [],
                            "code": 404,
                            "body": "{\n  \"message\": \"Platform not found.\"\n}",
                            "name": "Not Found"
                        },
                        {
                            "header": [],
                            "code": 422,
                            "body": "{\n  \"message\": \"The name has already been taken.\",\n  \"errors\": {\n    \"name\": [\"The name has already been taken.\"]\n  }\n}",
                            "name": "Validation Error"
                        }
                    ]
                },
                {
                    "name": "Delete Platform",
                    "request": {
                        "url": {
                            "host": "{{baseUrl}}",
                            "path": "api\/platforms\/:uuid",
                            "query": [],
                            "raw": "{{baseUrl}}\/api\/platforms\/:uuid",
                            "variable": [
                                {
                                    "id": "uuid",
                                    "key": "uuid",
                                    "value": "550e8400-e29b-41d4-a716-446655440000",
                                    "description": "The platform UUID."
                                }
                            ]
                        },
                        "method": "DELETE",
                        "header": [
                            {
                                "key": "Content-Type",
                                "value": "application\/json"
                            },
                            {
                                "key": "Accept",
                                "value": "application\/json"
                            }
                        ],
                        "body": null,
                        "description": "Delete a platform."
                    },
                    "response": [
                        {
                            "header": [],
                            "code": 200,
                            "body": "{\n  \"message\": \"Platform deleted successfully.\"\n}",
                            "name": ""
                        },
                        {
                            "header": [],
                            "code": 404,
                            "body": "{\n  \"message\": \"Platform not found.\"\n}",
                            "name": "Not Found"
                        }
                    ]
                }
            ]
        },
        {
            "name": "Profiles",
            "description": "\nAPIs for managing product claims and product profile data.\n\nThe Profiles API group covers two related workflows:\n\n1. **Claim Profiles** - Submit and manage ownership claims for products\n2. **Product Profiles** - Edit and sync detailed product information",
            "item": [
                {
                    "name": "Claim Profiles",
                    "description": "Claim profiles allow users to claim ownership of products listed in the system.\n\nOnce a claim is submitted, it goes through a review process. Approved claims grant access to edit the product's profile data.\n\n**Claim Statuses:**\n- `unclaimed` - Product not yet claimed\n- `claim_started` - Claim submitted, awaiting review\n- `confirmed_claimed` - Approved (free plan)\n- `confirmed_verified` - Approved (paid\/verified plan)\n- `rejected` - Claim was rejected\n\n**Staging Environment:**\n\nIn staging, use test products from Curiosity (names ending with `_test`):\n- Test Alpha _test, Test Beta _test, Test Gamma _test, etc.\n\nConfigure via `CURIOSITY_TEST_PRODUCT_IDS` and `CURIOSITY_RESTRICT_TO_TEST_PRODUCTS` environment variables.",
                    "item": [
                        {
                            "name": "Search Products",
                            "request": {
                                "url": {
                                    "host": "{{baseUrl}}",
                                    "path": "api\/products\/search",
                                    "query": [
                                        {
                                            "key": "q",
                                            "value": "slack",
                                            "description": "The search query.",
                                            "disabled": false
                                        },
                                        {
                                            "key": "limit",
                                            "value": "10",
                                            "description": "The maximum number of results (default 10, max 50).",
                                            "disabled": false
                                        }
                                    ],
                                    "raw": "{{baseUrl}}\/api\/products\/search?q=slack&limit=10"
                                },
                                "method": "GET",
                                "header": [
                                    {
                                        "key": "Content-Type",
                                        "value": "application\/json"
                                    },
                                    {
                                        "key": "Accept",
                                        "value": "application\/json"
                                    }
                                ],
                                "body": null,
                                "description": "Search for products in the Curiosity database to claim."
                            },
                            "response": [
                                {
                                    "header": [],
                                    "code": 200,
                                    "body": "{\n  \"data\": {\n    \"products\": [\n      {\n        \"id\": 123,\n        \"name\": \"Slack\",\n        \"url\": \"https:\/\/slack.com\",\n        \"logo_path\": \"products\/slack-logo.png\"\n      }\n    ]\n  }\n}",
                                    "name": ""
                                }
                            ]
                        },
                        {
                            "name": "List All Claim Profiles",
                            "request": {
                                "url": {
                                    "host": "{{baseUrl}}",
                                    "path": "api\/claim-profiles",
                                    "query": [],
                                    "raw": "{{baseUrl}}\/api\/claim-profiles"
                                },
                                "method": "GET",
                                "header": [
                                    {
                                        "key": "Content-Type",
                                        "value": "application\/json"
                                    },
                                    {
                                        "key": "Accept",
                                        "value": "application\/json"
                                    }
                                ],
                                "body": null,
                                "description": "Get all claim profiles across all organisations. Intended for admin panel usage."
                            },
                            "response": [
                                {
                                    "header": [],
                                    "code": 200,
                                    "body": "[\n  {\n    \"uuid\": \"880e8400-e29b-41d4-a716-446655440000\",\n    \"business_email\": \"john@company.com\",\n    \"job_title\": \"Product Manager\",\n    \"business_phone\": \"+1234567890\",\n    \"status\": \"pending\",\n    \"project\": {\n      \"uuid\": \"660e8400-e29b-41d4-a716-446655440001\",\n      \"product_name\": \"Acme App\"\n    },\n    \"organisation\": {\n      \"uuid\": \"550e8400-e29b-41d4-a716-446655440000\",\n      \"name\": \"Acme Corp\"\n    },\n    \"status_updated_by\": null,\n    \"created_at\": \"2026-01-03T12:00:00.000000Z\",\n    \"updated_at\": \"2026-01-03T12:00:00.000000Z\"\n  }\n]",
                                    "name": ""
                                }
                            ]
                        },
                        {
                            "name": "Create Claim Profile",
                            "request": {
                                "url": {
                                    "host": "{{baseUrl}}",
                                    "path": "api\/claim-profiles",
                                    "query": [],
                                    "raw": "{{baseUrl}}\/api\/claim-profiles"
                                },
                                "method": "POST",
                                "header": [
                                    {
                                        "key": "Content-Type",
                                        "value": "application\/json"
                                    },
                                    {
                                        "key": "Accept",
                                        "value": "application\/json"
                                    }
                                ],
                                "body": {
                                    "mode": "raw",
                                    "raw": "{\"project_id\":\"660e8400-e29b-41d4-a716-446655440001\",\"scraper_product_id\":123,\"product_name\":\"Slack\",\"product_url\":\"https:\\\/\\\/slack.com\",\"business_email\":\"john@company.com\",\"job_title\":\"Product Manager\",\"business_phone\":\"+1234567890\"}"
                                },
                                "description": "Create a new claim profile for a project. The organisation is automatically\nderived from the authenticated user's current organisation context."
                            },
                            "response": [
                                {
                                    "header": [],
                                    "code": 201,
                                    "body": "{\n  \"message\": \"Claim profile created successfully.\",\n  \"data\": {\n    \"uuid\": \"880e8400-e29b-41d4-a716-446655440000\",\n    \"scraper_product_id\": 123,\n    \"product_name\": \"Slack\",\n    \"product_url\": \"https:\/\/slack.com\",\n    \"business_email\": \"john@company.com\",\n    \"job_title\": \"Product Manager\",\n    \"business_phone\": \"+1234567890\",\n    \"status\": \"pending\",\n    \"created_at\": \"2026-01-03T12:00:00.000000Z\",\n    \"updated_at\": \"2026-01-03T12:00:00.000000Z\"\n  }\n}",
                                    "name": "Success"
                                },
                                {
                                    "header": [],
                                    "code": 403,
                                    "body": "{\n  \"message\": \"This action is unauthorized.\"\n}",
                                    "name": "No organisation context"
                                },
                                {
                                    "header": [],
                                    "code": 422,
                                    "body": "{\n  \"message\": \"The project is required. (and 1 more error)\",\n  \"errors\": {\n    \"project_id\": [\"The project is required.\"],\n    \"business_email\": [\"Please use a business email address.\"]\n  }\n}",
                                    "name": "Validation Error"
                                }
                            ]
                        }
                    ]
                },
                {
                    "name": "Product Profiles",
                    "description": "Product profiles contain detailed information about claimed products, synced bidirectionally with the Curiosity database.\n\nProduct profiles are created automatically when a claim is approved. They include:\n\n- **Basic Info:** Name, URL, logo, subtitle, overview\n- **Categorization:** Parent category, sub-categories, segments, search fields\n- **Reviews:** G2, Capterra (editable URLs), Trustpilot (read-only scores)\n- **Content:** Pricing, analysis, FAQ, pros\/cons, alternatives\n- **SEO:** Meta titles and descriptions for main, deals, and cancellation pages\n\n**Sync Operations:**\n- `pull` - Fetch latest data from Curiosity (overwrites local changes)\n- `push` - Send local changes to Curiosity\n\n**Staging Environment:**\n\nSync operations are restricted to test products. Configure via:\n- `CURIOSITY_TEST_PRODUCT_IDS` - Comma-separated list of allowed product IDs\n- `CURIOSITY_RESTRICT_TO_TEST_PRODUCTS` - Set to `true` to enable restriction",
                    "item": [
                        {
                            "name": "Get Product Profile",
                            "request": {
                                "url": {
                                    "host": "{{baseUrl}}",
                                    "path": "api\/projects\/:project_uuid\/profile",
                                    "query": [],
                                    "raw": "{{baseUrl}}\/api\/projects\/:project_uuid\/profile",
                                    "variable": [
                                        {
                                            "id": "project_uuid",
                                            "key": "project_uuid",
                                            "value": "660e8400-e29b-41d4-a716-446655440001",
                                            "description": "The project UUID."
                                        }
                                    ]
                                },
                                "method": "GET",
                                "header": [
                                    {
                                        "key": "Content-Type",
                                        "value": "application\/json"
                                    },
                                    {
                                        "key": "Accept",
                                        "value": "application\/json"
                                    }
                                ],
                                "body": null,
                                "description": "Get the product profile for a specific project.\nReturns all profile data including content, SEO meta, categories, and sync status."
                            },
                            "response": [
                                {
                                    "header": [],
                                    "code": 200,
                                    "body": "{\n  \"data\": {\n    \"uuid\": \"770e8400-e29b-41d4-a716-446655440002\",\n    \"curiosity_product_id\": 123,\n    \"name\": \"Slack\",\n    \"url\": \"https:\/\/slack.com\",\n    \"logo_path\": \"products\/slack-logo.png\",\n    \"local_logo\": null,\n    \"subtitle\": \"<p>Where work happens<\/p>\",\n    \"overview\": \"<p>Slack is a messaging platform...<\/p>\",\n    \"pricing\": \"<p>Free, Pro $7.25\/user, Business+ $12.50\/user<\/p>\",\n    \"verified_badge\": true,\n    \"parent_category\": { \"id\": 5, \"name\": \"Communication\" },\n    \"review_platforms\": {\n      \"g2\": { \"enabled\": true, \"url\": \"https:\/\/g2.com\/products\/slack\", \"score\": 4.5, \"reviews_count\": 120 },\n      \"capterra\": { \"enabled\": true, \"url\": \"https:\/\/capterra.com\/p\/123\/slack\", \"score\": 4.6, \"reviews_count\": 85 },\n      \"trustpilot\": { \"score\": 3.6, \"reviews_count\": 11218 }\n    },\n    \"categories\": [{ \"id\": 1, \"name\": \"Communication\" }],\n    \"segments\": [{ \"id\": 1, \"name\": \"Enterprise\" }],\n    \"search_fields\": {\n      \"built_for\": [{ \"id\": 1, \"name\": \"Marketing Teams\" }],\n      \"platform\": [{ \"id\": 2, \"name\": \"Web\" }],\n      \"pricing_model\": [{ \"id\": 3, \"name\": \"Subscription\" }]\n    },\n    \"competitors\": [{ \"id\": 456, \"name\": \"Microsoft Teams\", \"url\": \"https:\/\/teams.microsoft.com\", \"logo_path\": null }],\n    \"videos\": [\"https:\/\/www.youtube.com\/watch?v=abc\"],\n    \"awards\": [{ \"id\": 1, \"name\": \"Best Communication Tool 2025\" }],\n    \"deal\": \"Get 20% off annual plans\",\n    \"deals_meta_title\": \"Best Slack Deals\",\n    \"deals_meta_description\": null,\n    \"cancellation_content\": \"<p>To cancel your subscription...<\/p>\",\n    \"cancellation_content_summary\": \"<p>Cancel anytime from settings<\/p>\",\n    \"book_demo_url\": \"https:\/\/slack.com\/demo\",\n    \"pricing_url\": \"https:\/\/slack.com\/pricing\",\n    \"pros_cons\": \"Pros: Easy to use\\nCons: Can be expensive\",\n    \"analysis\": \"<p>Detailed analysis of Slack...<\/p>\",\n    \"faq\": \"Q: How much does it cost?\\nA: Free tier available\",\n    \"alternatives_text\": \"<p>Consider Microsoft Teams or Discord...<\/p>\",\n    \"pricing_range\": \"$0-$15\/user\/mo\",\n    \"is_ai_powered\": false,\n    \"meta\": {\n      \"main_page\": { \"title\": \"Slack - Where Work Happens\", \"description\": \"Team messaging platform\" },\n      \"deals\": { \"title\": \"Slack Deals\", \"description\": \"Best Slack discounts\" },\n      \"cancellation\": { \"title\": \"Cancel Slack\", \"description\": \"How to cancel\" }\n    },\n    \"sync_status\": \"synced\",\n    \"synced_at\": \"2026-01-06T10:00:00.000000Z\",\n    \"local_changes_at\": null,\n    \"last_change_request\": {\n      \"uuid\": \"880e8400-e29b-41d4-a716-446655440003\",\n      \"status\": \"pending\",\n      \"requested_at\": \"2026-01-06T11:00:00.000000Z\",\n      \"reviewed_at\": null\n    },\n    \"created_at\": \"2026-01-06T09:00:00.000000Z\",\n    \"updated_at\": \"2026-01-06T10:00:00.000000Z\"\n  }\n}",
                                    "name": ""
                                },
                                {
                                    "header": [],
                                    "code": 404,
                                    "body": "{\n  \"message\": \"Project not found.\"\n}",
                                    "name": ""
                                },
                                {
                                    "header": [],
                                    "code": 404,
                                    "body": "{\n  \"message\": \"This project does not have a product profile yet.\"\n}",
                                    "name": ""
                                }
                            ]
                        },
                        {
                            "name": "Update Product Profile",
                            "request": {
                                "url": {
                                    "host": "{{baseUrl}}",
                                    "path": "api\/projects\/:project_uuid\/profile",
                                    "query": [],
                                    "raw": "{{baseUrl}}\/api\/projects\/:project_uuid\/profile",
                                    "variable": [
                                        {
                                            "id": "project_uuid",
                                            "key": "project_uuid",
                                            "value": "660e8400-e29b-41d4-a716-446655440001",
                                            "description": "The project UUID."
                                        }
                                    ]
                                },
                                "method": "PUT",
                                "header": [
                                    {
                                        "key": "Content-Type",
                                        "value": "application\/json"
                                    },
                                    {
                                        "key": "Accept",
                                        "value": "application\/json"
                                    }
                                ],
                                "body": {
                                    "mode": "raw",
                                    "raw": "{\"subtitle\":\"<p>Where work happens<\\\/p>\",\"overview\":\"<p>Slack is a messaging platform...<\\\/p>\",\"pricing\":\"<p>Free, Pro $7.25\\\/user<\\\/p>\",\"parent_category_id\":5,\"review_platforms\":[],\"videos\":[\"architecto\"],\"categories\":[[]],\"segments\":[[]],\"search_fields\":[],\"competitors\":[[]],\"deal\":\"architecto\",\"deals_meta_title\":\"Best Slack Deals 2026\",\"deals_meta_description\":\"architecto\",\"cancellation_content\":\"architecto\",\"cancellation_content_summary\":\"architecto\",\"book_demo_url\":\"https:\\\/\\\/slack.com\\\/demo\",\"pricing_url\":\"https:\\\/\\\/slack.com\\\/pricing\",\"pros_cons\":\"architecto\",\"analysis\":\"architecto\",\"faq\":\"architecto\",\"alternatives_text\":\"architecto\",\"pricing_range\":\"$99-$999\\\/mo\",\"is_ai_powered\":true,\"meta\":[]}"
                                },
                                "description": "Submit a change request for the product profile. Changes are stored as a pending\nrequest for admin review. Once approved, changes will be applied and synced to Curiosity.\nFields like subtitle, overview, pricing, analysis, and alternatives_text support HTML\/richtext."
                            },
                            "response": [
                                {
                                    "header": [],
                                    "code": 200,
                                    "body": "{\n  \"message\": \"Change request submitted for review.\",\n  \"data\": {\n    \"change_request_uuid\": \"880e8400-e29b-41d4-a716-446655440003\",\n    \"status\": \"pending\"\n  }\n}",
                                    "name": ""
                                },
                                {
                                    "header": [],
                                    "code": 404,
                                    "body": "{\n  \"message\": \"This project does not have a product profile yet.\"\n}",
                                    "name": ""
                                }
                            ]
                        },
                        {
                            "name": "Upload Product Logo",
                            "request": {
                                "url": {
                                    "host": "{{baseUrl}}",
                                    "path": "api\/projects\/:project_uuid\/profile\/logo",
                                    "query": [],
                                    "raw": "{{baseUrl}}\/api\/projects\/:project_uuid\/profile\/logo",
                                    "variable": [
                                        {
                                            "id": "project_uuid",
                                            "key": "project_uuid",
                                            "value": "660e8400-e29b-41d4-a716-446655440001",
                                            "description": "The project UUID."
                                        }
                                    ]
                                },
                                "method": "POST",
                                "header": [
                                    {
                                        "key": "Content-Type",
                                        "value": "multipart\/form-data"
                                    },
                                    {
                                        "key": "Accept",
                                        "value": "application\/json"
                                    }
                                ],
                                "body": {
                                    "mode": "formdata",
                                    "formdata": [
                                        {
                                            "key": "logo",
                                            "src": [],
                                            "type": "file"
                                        }
                                    ]
                                },
                                "description": "Upload a new logo image for the product profile. The logo is stored locally\nand will be synced to Curiosity when you push changes."
                            },
                            "response": [
                                {
                                    "header": [],
                                    "code": 200,
                                    "body": "{\n  \"message\": \"Logo uploaded successfully.\",\n  \"data\": {\n    \"local_logo\": \"product-logos\/abc123.png\",\n    \"sync_status\": \"local_changes\",\n    \"local_changes_at\": \"2026-01-06T11:00:00.000000Z\"\n  }\n}",
                                    "name": ""
                                },
                                {
                                    "header": [],
                                    "code": 404,
                                    "body": "{\n  \"message\": \"This project does not have a product profile yet.\"\n}",
                                    "name": ""
                                },
                                {
                                    "header": [],
                                    "code": 422,
                                    "body": "{\n  \"message\": \"The logo field is required.\",\n  \"errors\": {\n    \"logo\": [\"The logo field is required.\"]\n  }\n}",
                                    "name": ""
                                }
                            ]
                        },
                        {
                            "name": "Get Sync Status",
                            "request": {
                                "url": {
                                    "host": "{{baseUrl}}",
                                    "path": "api\/projects\/:project_uuid\/profile\/status",
                                    "query": [],
                                    "raw": "{{baseUrl}}\/api\/projects\/:project_uuid\/profile\/status",
                                    "variable": [
                                        {
                                            "id": "project_uuid",
                                            "key": "project_uuid",
                                            "value": "660e8400-e29b-41d4-a716-446655440001",
                                            "description": "The project UUID."
                                        }
                                    ]
                                },
                                "method": "GET",
                                "header": [
                                    {
                                        "key": "Content-Type",
                                        "value": "application\/json"
                                    },
                                    {
                                        "key": "Accept",
                                        "value": "application\/json"
                                    }
                                ],
                                "body": null,
                                "description": "Get the current sync status of a project's product profile."
                            },
                            "response": [
                                {
                                    "header": [],
                                    "code": 200,
                                    "body": "{\n  \"data\": {\n    \"has_profile\": true,\n    \"has_curiosity_link\": true,\n    \"sync_status\": \"local_changes\",\n    \"synced_at\": \"2026-01-06T10:00:00.000000Z\",\n    \"local_changes_at\": \"2026-01-06T11:00:00.000000Z\",\n    \"last_change_request\": {\n      \"uuid\": \"880e8400-e29b-41d4-a716-446655440003\",\n      \"status\": \"pending\",\n      \"requested_at\": \"2026-01-06T11:00:00.000000Z\",\n      \"reviewed_at\": null\n    }\n  }\n}",
                                    "name": ""
                                },
                                {
                                    "header": [],
                                    "code": 200,
                                    "body": "{\n  \"data\": {\n    \"has_profile\": false,\n    \"has_curiosity_link\": true,\n    \"sync_status\": null,\n    \"synced_at\": null,\n    \"local_changes_at\": null,\n    \"last_change_request\": null\n  }\n}",
                                    "name": ""
                                }
                            ]
                        }
                    ]
                },
                {
                    "name": "Catalog",
                    "description": "Reference data for product categorization and filtering.\n\nThese endpoints provide access to taxonomy data from Curiosity used when editing product profiles.\n\n**Available Data:**\n- **Parent Categories** - Top-level categories (e.g., Communication, Marketing)\n- **Categories** - Detailed sub-categories\n- **Segments** - Market segments (e.g., Enterprise, SMB)\n- **Search Fields** - Filter attributes grouped by type (built_for, platform, pricing_model)",
                    "item": [
                        {
                            "name": "List Parent Categories",
                            "request": {
                                "url": {
                                    "host": "{{baseUrl}}",
                                    "path": "api\/catalog\/parent-categories",
                                    "query": [],
                                    "raw": "{{baseUrl}}\/api\/catalog\/parent-categories"
                                },
                                "method": "GET",
                                "header": [
                                    {
                                        "key": "Content-Type",
                                        "value": "application\/json"
                                    },
                                    {
                                        "key": "Accept",
                                        "value": "application\/json"
                                    }
                                ],
                                "body": null,
                                "description": "Get all top-level parent categories for product classification.\nParent categories represent broad product domains."
                            },
                            "response": [
                                {
                                    "header": [],
                                    "code": 200,
                                    "body": "{\n  \"data\": [\n    { \"id\": 1, \"name\": \"Analytics\" },\n    { \"id\": 2, \"name\": \"Communication\" },\n    { \"id\": 3, \"name\": \"Marketing\" },\n    { \"id\": 4, \"name\": \"Project Management\" },\n    { \"id\": 5, \"name\": \"Sales\" }\n  ]\n}",
                                    "name": ""
                                }
                            ]
                        },
                        {
                            "name": "List Categories",
                            "request": {
                                "url": {
                                    "host": "{{baseUrl}}",
                                    "path": "api\/catalog\/categories",
                                    "query": [],
                                    "raw": "{{baseUrl}}\/api\/catalog\/categories"
                                },
                                "method": "GET",
                                "header": [
                                    {
                                        "key": "Content-Type",
                                        "value": "application\/json"
                                    },
                                    {
                                        "key": "Accept",
                                        "value": "application\/json"
                                    }
                                ],
                                "body": null,
                                "description": "Get all detailed categories for product classification.\nCategories are more specific than parent categories and can be assigned to products."
                            },
                            "response": [
                                {
                                    "header": [],
                                    "code": 200,
                                    "body": "{\n  \"data\": [\n    { \"id\": 1, \"name\": \"Video Conferencing\" },\n    { \"id\": 2, \"name\": \"Team Chat\" },\n    { \"id\": 3, \"name\": \"Email Marketing\" },\n    { \"id\": 4, \"name\": \"CRM\" },\n    { \"id\": 5, \"name\": \"Task Management\" }\n  ]\n}",
                                    "name": ""
                                }
                            ]
                        },
                        {
                            "name": "List Segments",
                            "request": {
                                "url": {
                                    "host": "{{baseUrl}}",
                                    "path": "api\/catalog\/segments",
                                    "query": [],
                                    "raw": "{{baseUrl}}\/api\/catalog\/segments"
                                },
                                "method": "GET",
                                "header": [
                                    {
                                        "key": "Content-Type",
                                        "value": "application\/json"
                                    },
                                    {
                                        "key": "Accept",
                                        "value": "application\/json"
                                    }
                                ],
                                "body": null,
                                "description": "Get all market segments for product targeting.\nSegments define the target audience or market size for products."
                            },
                            "response": [
                                {
                                    "header": [],
                                    "code": 200,
                                    "body": "{\n  \"data\": [\n    { \"id\": 1, \"name\": \"Enterprise\" },\n    { \"id\": 2, \"name\": \"Mid-Market\" },\n    { \"id\": 3, \"name\": \"SMB\" },\n    { \"id\": 4, \"name\": \"Startup\" },\n    { \"id\": 5, \"name\": \"Freelancer\" }\n  ]\n}",
                                    "name": ""
                                }
                            ]
                        },
                        {
                            "name": "List Search Fields",
                            "request": {
                                "url": {
                                    "host": "{{baseUrl}}",
                                    "path": "api\/catalog\/search-fields",
                                    "query": [],
                                    "raw": "{{baseUrl}}\/api\/catalog\/search-fields"
                                },
                                "method": "GET",
                                "header": [
                                    {
                                        "key": "Content-Type",
                                        "value": "application\/json"
                                    },
                                    {
                                        "key": "Accept",
                                        "value": "application\/json"
                                    }
                                ],
                                "body": null,
                                "description": "Get all search field options grouped by type.\nSearch fields are structured attributes used for filtering and discovery.\n\n**Field Types:**\n- `built_for` - Target user roles or teams (e.g., \"Marketing Teams\", \"Developers\")\n- `platform` - Deployment platforms (e.g., \"Web\", \"iOS\", \"Android\", \"Desktop\")\n- `pricing_model` - Business models (e.g., \"Subscription\", \"One-time\", \"Freemium\")"
                            },
                            "response": [
                                {
                                    "header": [],
                                    "code": 200,
                                    "body": "{\n  \"data\": {\n    \"built_for\": [\n      { \"id\": 1, \"name\": \"Marketing Teams\" },\n      { \"id\": 2, \"name\": \"Sales Teams\" },\n      { \"id\": 3, \"name\": \"Developers\" },\n      { \"id\": 4, \"name\": \"HR Teams\" }\n    ],\n    \"platform\": [\n      { \"id\": 1, \"name\": \"Web\" },\n      { \"id\": 2, \"name\": \"iOS\" },\n      { \"id\": 3, \"name\": \"Android\" },\n      { \"id\": 4, \"name\": \"Desktop\" }\n    ],\n    \"pricing_model\": [\n      { \"id\": 1, \"name\": \"Subscription\" },\n      { \"id\": 2, \"name\": \"One-time Purchase\" },\n      { \"id\": 3, \"name\": \"Freemium\" },\n      { \"id\": 4, \"name\": \"Usage-based\" }\n    ]\n  }\n}",
                                    "name": ""
                                }
                            ]
                        }
                    ]
                }
            ]
        },
        {
            "name": "Projects",
            "description": "\nAPIs for managing projects within organisations",
            "item": [
                {
                    "name": "List Projects",
                    "request": {
                        "url": {
                            "host": "{{baseUrl}}",
                            "path": "api\/organisations\/:organisation_uuid\/projects",
                            "query": [],
                            "raw": "{{baseUrl}}\/api\/organisations\/:organisation_uuid\/projects",
                            "variable": [
                                {
                                    "id": "organisation_uuid",
                                    "key": "organisation_uuid",
                                    "value": "205ae76c-bd73-426b-a36a-8338353b9542",
                                    "description": ""
                                },
                                {
                                    "id": "organisation",
                                    "key": "organisation",
                                    "value": "550e8400-e29b-41d4-a716-446655440000",
                                    "description": "The organisation UUID."
                                }
                            ]
                        },
                        "method": "GET",
                        "header": [
                            {
                                "key": "Content-Type",
                                "value": "application\/json"
                            },
                            {
                                "key": "Accept",
                                "value": "application\/json"
                            }
                        ],
                        "body": null,
                        "description": "Get all projects in an organisation that the user has access to."
                    },
                    "response": [
                        {
                            "header": [],
                            "code": 200,
                            "body": "{\n  \"data\": [\n    {\n      \"uuid\": \"660e8400-e29b-41d4-a716-446655440001\",\n      \"product_name\": \"Acme App\",\n      \"product_website\": \"https:\/\/acme.com\",\n      \"created_at\": \"2025-12-10T10:00:00.000000Z\",\n      \"updated_at\": \"2025-12-10T10:00:00.000000Z\"\n    }\n  ]\n}",
                            "name": ""
                        }
                    ]
                },
                {
                    "name": "Create Project",
                    "request": {
                        "url": {
                            "host": "{{baseUrl}}",
                            "path": "api\/organisations\/:organisation_uuid\/projects",
                            "query": [],
                            "raw": "{{baseUrl}}\/api\/organisations\/:organisation_uuid\/projects",
                            "variable": [
                                {
                                    "id": "organisation_uuid",
                                    "key": "organisation_uuid",
                                    "value": "205ae76c-bd73-426b-a36a-8338353b9542",
                                    "description": ""
                                },
                                {
                                    "id": "organisation",
                                    "key": "organisation",
                                    "value": "550e8400-e29b-41d4-a716-446655440000",
                                    "description": "The organisation UUID."
                                }
                            ]
                        },
                        "method": "POST",
                        "header": [
                            {
                                "key": "Content-Type",
                                "value": "application\/json"
                            },
                            {
                                "key": "Accept",
                                "value": "application\/json"
                            }
                        ],
                        "body": {
                            "mode": "raw",
                            "raw": "{\"product_name\":\"Acme App\",\"product_website\":\"https:\\\/\\\/acme.com\",\"product_logo\":\"https:\\\/\\\/cdn.brandfetch.io\\\/acme.com\\\/fallback\\\/lettermark\\\/icon?c=BRANDFETCH_CLIENT_ID\"}"
                        },
                        "description": "Create a new project in an organisation. Requires organisation admin role."
                    },
                    "response": [
                        {
                            "header": [],
                            "code": 201,
                            "body": "{\n  \"message\": \"Project created successfully.\",\n  \"data\": {\n    \"uuid\": \"660e8400-e29b-41d4-a716-446655440001\",\n    \"product_name\": \"Acme App\",\n    \"product_website\": \"https:\/\/acme.com\",\n    \"product_logo\": \"https:\/\/cdn.brandfetch.io\/acme.com\/fallback\/lettermark\/icon?c=BRANDFETCH_CLIENT_ID\",\n    \"is_competitor\": false,\n    \"created_at\": \"2025-12-10T10:00:00.000000Z\",\n    \"updated_at\": \"2025-12-10T10:00:00.000000Z\"\n  }\n}",
                            "name": ""
                        }
                    ]
                },
                {
                    "name": "Get Project",
                    "request": {
                        "url": {
                            "host": "{{baseUrl}}",
                            "path": "api\/organisations\/:organisation_uuid\/projects\/:uuid",
                            "query": [],
                            "raw": "{{baseUrl}}\/api\/organisations\/:organisation_uuid\/projects\/:uuid",
                            "variable": [
                                {
                                    "id": "organisation_uuid",
                                    "key": "organisation_uuid",
                                    "value": "205ae76c-bd73-426b-a36a-8338353b9542",
                                    "description": ""
                                },
                                {
                                    "id": "uuid",
                                    "key": "uuid",
                                    "value": "cbe3b865-507c-442a-aeab-0e6b948c10e0",
                                    "description": ""
                                },
                                {
                                    "id": "organisation",
                                    "key": "organisation",
                                    "value": "550e8400-e29b-41d4-a716-446655440000",
                                    "description": "The organisation UUID."
                                },
                                {
                                    "id": "project",
                                    "key": "project",
                                    "value": "660e8400-e29b-41d4-a716-446655440001",
                                    "description": "The project UUID."
                                }
                            ]
                        },
                        "method": "GET",
                        "header": [
                            {
                                "key": "Content-Type",
                                "value": "application\/json"
                            },
                            {
                                "key": "Accept",
                                "value": "application\/json"
                            }
                        ],
                        "body": null,
                        "description": "Get details of a specific project."
                    },
                    "response": [
                        {
                            "header": [],
                            "code": 200,
                            "body": "{\n  \"data\": {\n    \"uuid\": \"660e8400-e29b-41d4-a716-446655440001\",\n    \"product_name\": \"Acme App\",\n    \"product_website\": \"https:\/\/acme.com\",\n    \"created_at\": \"2025-12-10T10:00:00.000000Z\",\n    \"updated_at\": \"2025-12-10T10:00:00.000000Z\"\n  }\n}",
                            "name": ""
                        }
                    ]
                },
                {
                    "name": "Update Project",
                    "request": {
                        "url": {
                            "host": "{{baseUrl}}",
                            "path": "api\/organisations\/:organisation_uuid\/projects\/:uuid",
                            "query": [],
                            "raw": "{{baseUrl}}\/api\/organisations\/:organisation_uuid\/projects\/:uuid",
                            "variable": [
                                {
                                    "id": "organisation_uuid",
                                    "key": "organisation_uuid",
                                    "value": "205ae76c-bd73-426b-a36a-8338353b9542",
                                    "description": ""
                                },
                                {
                                    "id": "uuid",
                                    "key": "uuid",
                                    "value": "cbe3b865-507c-442a-aeab-0e6b948c10e0",
                                    "description": ""
                                },
                                {
                                    "id": "organisation",
                                    "key": "organisation",
                                    "value": "550e8400-e29b-41d4-a716-446655440000",
                                    "description": "The organisation UUID."
                                },
                                {
                                    "id": "project",
                                    "key": "project",
                                    "value": "660e8400-e29b-41d4-a716-446655440001",
                                    "description": "The project UUID."
                                }
                            ]
                        },
                        "method": "PUT",
                        "header": [
                            {
                                "key": "Content-Type",
                                "value": "application\/json"
                            },
                            {
                                "key": "Accept",
                                "value": "application\/json"
                            }
                        ],
                        "body": {
                            "mode": "raw",
                            "raw": "{\"product_name\":\"Acme App Pro\",\"product_website\":\"https:\\\/\\\/acme.com\",\"product_logo\":\"https:\\\/\\\/cdn.brandfetch.io\\\/acme.com\\\/fallback\\\/lettermark\\\/icon?c=BRANDFETCH_CLIENT_ID\"}"
                        },
                        "description": "Update a project's details. Requires organisation admin role."
                    },
                    "response": [
                        {
                            "header": [],
                            "code": 200,
                            "body": "{\n  \"message\": \"Project updated successfully.\",\n  \"data\": {\n    \"uuid\": \"660e8400-e29b-41d4-a716-446655440001\",\n    \"product_name\": \"Acme App Pro\",\n    \"product_website\": \"https:\/\/acme.com\",\n    \"product_logo\": \"https:\/\/cdn.brandfetch.io\/acme.com\/fallback\/lettermark\/icon?c=BRANDFETCH_CLIENT_ID\",\n    \"is_competitor\": false,\n    \"created_at\": \"2025-12-10T10:00:00.000000Z\",\n    \"updated_at\": \"2025-12-10T10:00:00.000000Z\"\n  }\n}",
                            "name": ""
                        }
                    ]
                },
                {
                    "name": "Delete Project",
                    "request": {
                        "url": {
                            "host": "{{baseUrl}}",
                            "path": "api\/organisations\/:organisation_uuid\/projects\/:uuid",
                            "query": [],
                            "raw": "{{baseUrl}}\/api\/organisations\/:organisation_uuid\/projects\/:uuid",
                            "variable": [
                                {
                                    "id": "organisation_uuid",
                                    "key": "organisation_uuid",
                                    "value": "205ae76c-bd73-426b-a36a-8338353b9542",
                                    "description": ""
                                },
                                {
                                    "id": "uuid",
                                    "key": "uuid",
                                    "value": "cbe3b865-507c-442a-aeab-0e6b948c10e0",
                                    "description": ""
                                },
                                {
                                    "id": "organisation",
                                    "key": "organisation",
                                    "value": "550e8400-e29b-41d4-a716-446655440000",
                                    "description": "The organisation UUID."
                                },
                                {
                                    "id": "project",
                                    "key": "project",
                                    "value": "660e8400-e29b-41d4-a716-446655440001",
                                    "description": "The project UUID."
                                }
                            ]
                        },
                        "method": "DELETE",
                        "header": [
                            {
                                "key": "Content-Type",
                                "value": "application\/json"
                            },
                            {
                                "key": "Accept",
                                "value": "application\/json"
                            }
                        ],
                        "body": null,
                        "description": "Delete a project. Requires organisation admin role."
                    },
                    "response": [
                        {
                            "header": [],
                            "code": 200,
                            "body": "{\n  \"message\": \"Project deleted successfully.\"\n}",
                            "name": ""
                        }
                    ]
                }
            ]
        },
        {
            "name": "Slack Integration",
            "description": "\nAPIs for connecting and managing Slack workspace integration",
            "item": [
                {
                    "name": "Slack OAuth Callback",
                    "request": {
                        "url": {
                            "host": "{{baseUrl}}",
                            "path": "api\/integrations\/slack\/callback",
                            "query": [
                                {
                                    "key": "code",
                                    "value": "123456789.abcdef",
                                    "description": "The authorization code from Slack.",
                                    "disabled": false
                                },
                                {
                                    "key": "state",
                                    "value": "abc123...",
                                    "description": "The state parameter for CSRF protection.",
                                    "disabled": false
                                },
                                {
                                    "key": "error",
                                    "value": "access_denied",
                                    "description": "OAuth error if user denied access.",
                                    "disabled": false
                                }
                            ],
                            "raw": "{{baseUrl}}\/api\/integrations\/slack\/callback?code=123456789.abcdef&state=abc123...&error=access_denied"
                        },
                        "method": "GET",
                        "header": [
                            {
                                "key": "Content-Type",
                                "value": "application\/json"
                            },
                            {
                                "key": "Accept",
                                "value": "application\/json"
                            }
                        ],
                        "body": {
                            "mode": "raw",
                            "raw": "{\"code\":\"architecto\",\"state\":\"ngzmiyvdljnikhwaykcmyuwpwlvqwrsitcpscqldzsnrwtujwvlxjklqppwqbewt\",\"error\":\"architecto\"}"
                        },
                        "description": "Handles the OAuth callback from Slack after user authorization.\nExchanges the authorization code for an access token.\nThis endpoint is unauthenticated - uses cached state for auth context.",
                        "auth": {
                            "type": "noauth"
                        }
                    },
                    "response": [
                        {
                            "header": [],
                            "code": 302,
                            "body": "Redirects to \/dashboard\/notification\/overview?slack_connected=true&workspace={name}",
                            "name": "Success"
                        },
                        {
                            "header": [],
                            "code": 302,
                            "body": "Redirects to \/dashboard\/notification\/overview?slack_error={error_code}",
                            "name": "Error"
                        },
                        {
                            "header": [
                                {
                                    "key": "cache-control",
                                    "value": "no-cache, private"
                                },
                                {
                                    "key": "location",
                                    "value": "https:\/\/subsig-frontend.vercel.app\/dashboard\/notification\/overview?slack_error=architecto"
                                },
                                {
                                    "key": "content-type",
                                    "value": "text\/html; charset=utf-8"
                                },
                                {
                                    "key": "vary",
                                    "value": "Origin"
                                }
                            ],
                            "code": 302,
                            "body": "<!DOCTYPE html>\n<html>\n    <head>\n        <meta charset=\"UTF-8\" \/>\n        <meta http-equiv=\"refresh\" content=\"0;url='https:\/\/subsig-frontend.vercel.app\/dashboard\/notification\/overview?slack_error=architecto'\" \/>\n\n        <title>Redirecting to https:\/\/subsig-frontend.vercel.app\/dashboard\/notification\/overview?slack_error=architecto<\/title>\n    <\/head>\n    <body>\n        Redirecting to <a href=\"https:\/\/subsig-frontend.vercel.app\/dashboard\/notification\/overview?slack_error=architecto\">https:\/\/subsig-frontend.vercel.app\/dashboard\/notification\/overview?slack_error=architecto<\/a>.\n    <\/body>\n<\/html>",
                            "name": ""
                        }
                    ]
                },
                {
                    "name": "Initiate Slack OAuth",
                    "request": {
                        "url": {
                            "host": "{{baseUrl}}",
                            "path": "api\/integrations\/slack\/connect",
                            "query": [],
                            "raw": "{{baseUrl}}\/api\/integrations\/slack\/connect"
                        },
                        "method": "GET",
                        "header": [
                            {
                                "key": "Content-Type",
                                "value": "application\/json"
                            },
                            {
                                "key": "Accept",
                                "value": "application\/json"
                            }
                        ],
                        "body": null,
                        "description": "Starts the OAuth flow to connect a Slack workspace.\nRedirects to Slack's authorization page."
                    },
                    "response": [
                        {
                            "header": [],
                            "code": 302,
                            "body": "Redirects to Slack OAuth page",
                            "name": "Redirect to Slack"
                        },
                        {
                            "header": [],
                            "code": 400,
                            "body": "{\n  \"error\": \"configuration\",\n  \"message\": \"Slack integration is not configured.\"\n}",
                            "name": "Not configured"
                        },
                        {
                            "header": [
                                {
                                    "key": "cache-control",
                                    "value": "no-cache, private"
                                },
                                {
                                    "key": "content-type",
                                    "value": "application\/json"
                                },
                                {
                                    "key": "vary",
                                    "value": "Origin"
                                }
                            ],
                            "code": 401,
                            "body": "{\"message\":\"Unauthenticated.\"}",
                            "name": ""
                        },
                        {
                            "header": [],
                            "code": 403,
                            "body": "{\n  \"message\": \"Organisation context required.\"\n}",
                            "name": "No organisation"
                        }
                    ]
                },
                {
                    "name": "Get Slack Connection Status",
                    "request": {
                        "url": {
                            "host": "{{baseUrl}}",
                            "path": "api\/integrations\/slack\/status",
                            "query": [],
                            "raw": "{{baseUrl}}\/api\/integrations\/slack\/status"
                        },
                        "method": "GET",
                        "header": [
                            {
                                "key": "Content-Type",
                                "value": "application\/json"
                            },
                            {
                                "key": "Accept",
                                "value": "application\/json"
                            }
                        ],
                        "body": null,
                        "description": "Returns the current Slack connection status for the organisation."
                    },
                    "response": [
                        {
                            "header": [],
                            "code": 200,
                            "body": "{\n  \"connected\": true,\n  \"team_id\": \"T123456789\",\n  \"team_name\": \"My Workspace\",\n  \"scopes\": \"chat:write,channels:read\",\n  \"connected_at\": \"2025-01-01T12:00:00Z\"\n}",
                            "name": "Connected"
                        },
                        {
                            "header": [],
                            "code": 200,
                            "body": "{\n  \"connected\": false\n}",
                            "name": "Not connected"
                        },
                        {
                            "header": [],
                            "code": 200,
                            "body": "{\n  \"connected\": false,\n  \"error\": \"token_invalid\",\n  \"message\": \"Slack connection needs to be re-authorized.\"\n}",
                            "name": "Invalid token"
                        },
                        {
                            "header": [],
                            "code": 403,
                            "body": "{\n  \"message\": \"Organisation context required.\"\n}",
                            "name": "No organisation"
                        }
                    ]
                },
                {
                    "name": "Disconnect Slack",
                    "request": {
                        "url": {
                            "host": "{{baseUrl}}",
                            "path": "api\/integrations\/slack\/disconnect",
                            "query": [],
                            "raw": "{{baseUrl}}\/api\/integrations\/slack\/disconnect"
                        },
                        "method": "POST",
                        "header": [
                            {
                                "key": "Content-Type",
                                "value": "application\/json"
                            },
                            {
                                "key": "Accept",
                                "value": "application\/json"
                            }
                        ],
                        "body": null,
                        "description": "Removes the Slack workspace connection for the organisation."
                    },
                    "response": [
                        {
                            "header": [],
                            "code": 200,
                            "body": "{\n  \"success\": true,\n  \"message\": \"Slack connection removed.\"\n}",
                            "name": "Success"
                        },
                        {
                            "header": [],
                            "code": 200,
                            "body": "{\n  \"success\": true,\n  \"message\": \"No Slack connection found.\"\n}",
                            "name": "Not connected"
                        },
                        {
                            "header": [],
                            "code": 403,
                            "body": "{\n  \"message\": \"Organisation context required.\"\n}",
                            "name": "No organisation"
                        }
                    ]
                },
                {
                    "name": "List Slack Channels",
                    "request": {
                        "url": {
                            "host": "{{baseUrl}}",
                            "path": "api\/integrations\/slack\/channels",
                            "query": [],
                            "raw": "{{baseUrl}}\/api\/integrations\/slack\/channels"
                        },
                        "method": "GET",
                        "header": [
                            {
                                "key": "Content-Type",
                                "value": "application\/json"
                            },
                            {
                                "key": "Accept",
                                "value": "application\/json"
                            }
                        ],
                        "body": null,
                        "description": "Fetches the list of channels from the connected Slack workspace."
                    },
                    "response": [
                        {
                            "header": [],
                            "code": 200,
                            "body": "{\n  \"ok\": true,\n  \"channels\": [\n    {\"id\": \"C123456789\", \"name\": \"general\", \"is_member\": true},\n    {\"id\": \"C987654321\", \"name\": \"random\", \"is_member\": false}\n  ]\n}",
                            "name": "Success"
                        },
                        {
                            "header": [],
                            "code": 401,
                            "body": "{\n  \"ok\": false,\n  \"error\": \"not_connected\",\n  \"message\": \"Not connected to Slack.\"\n}",
                            "name": "Not connected"
                        },
                        {
                            "header": [],
                            "code": 401,
                            "body": "{\n  \"ok\": false,\n  \"error\": \"token_invalid\",\n  \"message\": \"Slack connection needs to be re-authorized.\"\n}",
                            "name": "Invalid token"
                        },
                        {
                            "header": [],
                            "code": 403,
                            "body": "{\n  \"message\": \"Organisation context required.\"\n}",
                            "name": "No organisation"
                        }
                    ]
                },
                {
                    "name": "Send a message to Slack",
                    "request": {
                        "url": {
                            "host": "{{baseUrl}}",
                            "path": "api\/integrations\/slack\/send",
                            "query": [],
                            "raw": "{{baseUrl}}\/api\/integrations\/slack\/send"
                        },
                        "method": "POST",
                        "header": [
                            {
                                "key": "Content-Type",
                                "value": "application\/json"
                            },
                            {
                                "key": "Accept",
                                "value": "application\/json"
                            }
                        ],
                        "body": {
                            "mode": "raw",
                            "raw": "{\"channel_id\":\"b\",\"status\":\"architecto\",\"process_id\":\"architecto\",\"created_at\":\"architecto\",\"data\":[]}"
                        },
                        "description": "Accepts a payload in either Reviews format (data = array of reviews) or\nMentions format (data = object with posts and\/or comments) and posts\na Block Kit message to the given Slack channel via the notification dispatcher."
                    },
                    "response": [
                        {
                            "header": [],
                            "code": 200,
                            "body": "{\"ok\": true, \"message\": \"Message sent.\"}",
                            "name": "Success"
                        },
                        {
                            "header": [],
                            "code": 400,
                            "body": "{\"ok\": false, \"error\": \"...\", \"message\": \"...\"}",
                            "name": "Slack API error"
                        },
                        {
                            "header": [],
                            "code": 401,
                            "body": "{\"ok\": false, \"error\": \"not_connected\", \"message\": \"Not connected to Slack.\"}",
                            "name": "Not connected"
                        },
                        {
                            "header": [],
                            "code": 422,
                            "body": "{\"message\": \"Invalid payload: data must be reviews array or mentions object.\"}",
                            "name": "Invalid payload"
                        },
                        {
                            "header": [],
                            "code": 500,
                            "body": "{\"message\": \"Failed to send message.\"}",
                            "name": "Server error"
                        }
                    ]
                }
            ]
        },
        {
            "name": "Subscriptions",
            "description": "\nAPIs for managing subscriptions",
            "item": [
                {
                    "name": "List Subscription Plans",
                    "request": {
                        "url": {
                            "host": "{{baseUrl}}",
                            "path": "api\/subscription-plans",
                            "query": [],
                            "raw": "{{baseUrl}}\/api\/subscription-plans"
                        },
                        "method": "GET",
                        "header": [
                            {
                                "key": "Content-Type",
                                "value": "application\/json"
                            },
                            {
                                "key": "Accept",
                                "value": "application\/json"
                            }
                        ],
                        "body": null,
                        "description": "Get all available subscription plans."
                    },
                    "response": [
                        {
                            "header": [],
                            "code": 200,
                            "body": "{\n  \"data\": [\n    {\n      \"id\": 1,\n      \"stripe_price_id\": \"price_internal_free\",\n      \"name\": \"Free\",\n      \"description\": \"Post-trial free tier\",\n      \"amount\": 0,\n      \"currency\": \"usd\",\n      \"interval\": \"month\",\n      \"plan_threshold\": {}\n    }\n  ]\n}",
                            "name": ""
                        }
                    ]
                },
                {
                    "name": "Get Threshold Usage",
                    "request": {
                        "url": {
                            "host": "{{baseUrl}}",
                            "path": "api\/subscriptions\/threshold-usage",
                            "query": [],
                            "raw": "{{baseUrl}}\/api\/subscriptions\/threshold-usage"
                        },
                        "method": "GET",
                        "header": [
                            {
                                "key": "Content-Type",
                                "value": "application\/json"
                            },
                            {
                                "key": "Accept",
                                "value": "application\/json"
                            }
                        ],
                        "body": null,
                        "description": "Returns plan soft limits in `threshold` and `limits.*_soft`.\nUsage is all-time across organisations owned by the billing user.\nPer-platform breakdowns are uncapped; they may sum above the top-level totals."
                    },
                    "response": [
                        {
                            "header": [],
                            "code": 200,
                            "body": "{\n  \"data\": {\n    \"threshold\": {\n      \"competitor_brands_limit\": 3,\n      \"history_months\": 6,\n      \"refresh_interval\": \"daily\",\n      \"users_limit\": null,\n      \"workspaces_limit\": null,\n      \"data_export_type\": null,\n      \"ai_visibility_prompts_limit\": 20\n    },\n    \"limits\": {\n      \"ai_visibility_prompts_soft\": 20\n    },\n    \"usage\": {\n      \"mentions\": 1000,\n      \"mentions_per_platform\": {\"reddit\": 200},\n      \"competitor_brands\": 0,\n      \"ai_visibility_prompts\": 7,\n      \"workspaces\": 1,\n      \"users\": 1\n    },\n    \"usage_period\": {\n      \"scope\": \"all_time\",\n      \"start\": \"2025-01-01\",\n      \"end\": \"2026-04-02\"\n    },\n    \"trial_days_left\": 3\n  }\n}",
                            "name": ""
                        },
                        {
                            "header": [],
                            "code": 403,
                            "body": "{\n  \"message\": \"You do not have access to this organisation.\"\n}",
                            "name": "No organisation access"
                        }
                    ]
                },
                {
                    "name": "POST api\/subscriptions\/checkout",
                    "request": {
                        "url": {
                            "host": "{{baseUrl}}",
                            "path": "api\/subscriptions\/checkout",
                            "query": [],
                            "raw": "{{baseUrl}}\/api\/subscriptions\/checkout"
                        },
                        "method": "POST",
                        "header": [
                            {
                                "key": "Content-Type",
                                "value": "application\/json"
                            },
                            {
                                "key": "Accept",
                                "value": "application\/json"
                            }
                        ],
                        "body": {
                            "mode": "raw",
                            "raw": "{\"plan_id\":16,\"success_url\":\"http:\\\/\\\/bailey.com\\\/\",\"cancel_url\":\"http:\\\/\\\/rempel.com\\\/sunt-nihil-accusantium-harum-mollitia\",\"addons\":{\"ai_visibility_prompts\":{\"price\":23,\"quantity\":64}}}"
                        },
                        "description": "",
                        "auth": {
                            "type": "noauth"
                        }
                    },
                    "response": []
                },
                {
                    "name": "Update Subscription Add-ons",
                    "request": {
                        "url": {
                            "host": "{{baseUrl}}",
                            "path": "api\/subscriptions\/addons",
                            "query": [],
                            "raw": "{{baseUrl}}\/api\/subscriptions\/addons"
                        },
                        "method": "POST",
                        "header": [
                            {
                                "key": "Content-Type",
                                "value": "application\/json"
                            },
                            {
                                "key": "Accept",
                                "value": "application\/json"
                            }
                        ],
                        "body": {
                            "mode": "raw",
                            "raw": "{\"addons\":{\"ai_visibility_prompts\":{\"price\":14000,\"quantity\":1000}},\"proration_date\":1715000000}"
                        },
                        "description": "Update add-ons on the organisation's current active subscription.\nSupports optional `proration_date` to control Stripe proration timing."
                    },
                    "response": [
                        {
                            "header": [],
                            "code": 200,
                            "body": "{\n  \"data\": {\n    \"id\": 1,\n    \"stripe_subscription_id\": \"sub_1234567890\",\n    \"status\": \"active\",\n    \"addons\": [\n      {\n        \"id\": 10,\n        \"product_id\": \"prod_ai_visibility_prompts_123\",\n        \"stripe_price_id\": \"price_inline_ai_visibility_prompts_1\",\n        \"price\": 2000,\n        \"ai_visibility_prompts_quantity\": 1,\n        \"status\": \"active\"\n      }\n    ]\n  }\n}",
                            "name": ""
                        },
                        {
                            "header": [],
                            "code": 403,
                            "body": "{\n  \"message\": \"You must be an organisation owner to manage subscriptions.\"\n}",
                            "name": "Not owner or no organisation access"
                        },
                        {
                            "header": [],
                            "code": 404,
                            "body": "{\n  \"message\": \"No active subscription found for this organisation.\"\n}",
                            "name": "No active subscription"
                        },
                        {
                            "header": [],
                            "code": 422,
                            "body": "{\n  \"message\": \"The given data was invalid.\"\n}",
                            "name": "Validation error"
                        }
                    ]
                },
                {
                    "name": "Preview Add-on Proration",
                    "request": {
                        "url": {
                            "host": "{{baseUrl}}",
                            "path": "api\/subscriptions\/addons\/preview-proration",
                            "query": [],
                            "raw": "{{baseUrl}}\/api\/subscriptions\/addons\/preview-proration"
                        },
                        "method": "POST",
                        "header": [
                            {
                                "key": "Content-Type",
                                "value": "application\/json"
                            },
                            {
                                "key": "Accept",
                                "value": "application\/json"
                            }
                        ],
                        "body": {
                            "mode": "raw",
                            "raw": "{\"addons\":{\"ai_visibility_prompts\":{\"price\":14000,\"quantity\":1000}},\"proration_date\":1715000000}"
                        },
                        "description": "Preview Stripe prorated invoice impact for add-on changes\nwithout applying the subscription update."
                    },
                    "response": [
                        {
                            "header": [],
                            "code": 200,
                            "body": "{\n  \"data\": {\n    \"amount_due\": 2400,\n    \"subtotal\": 2400,\n    \"total\": 2400,\n    \"currency\": \"usd\",\n    \"proration_lines\": [\n      {\n        \"id\": \"il_proration_123\",\n        \"amount\": 2400,\n        \"currency\": \"usd\",\n        \"description\": \"Proration adjustment\"\n      }\n    ]\n  }\n}",
                            "name": ""
                        },
                        {
                            "header": [],
                            "code": 403,
                            "body": "{\n  \"message\": \"You must be an organisation owner to manage subscriptions.\"\n}",
                            "name": "Not owner or no organisation access"
                        },
                        {
                            "header": [],
                            "code": 404,
                            "body": "{\n  \"message\": \"No active subscription found for this organisation.\"\n}",
                            "name": "No active subscription"
                        },
                        {
                            "header": [],
                            "code": 422,
                            "body": "{\n  \"message\": \"The given data was invalid.\"\n}",
                            "name": "Validation error"
                        }
                    ]
                },
                {
                    "name": "AI Platforms Pricing",
                    "request": {
                        "url": {
                            "host": "{{baseUrl}}",
                            "path": "api\/subscriptions\/ai-platforms\/pricing",
                            "query": [],
                            "raw": "{{baseUrl}}\/api\/subscriptions\/ai-platforms\/pricing"
                        },
                        "method": "GET",
                        "header": [
                            {
                                "key": "Content-Type",
                                "value": "application\/json"
                            },
                            {
                                "key": "Accept",
                                "value": "application\/json"
                            }
                        ],
                        "body": null,
                        "description": "Cents-per-prompt rate for each AI platform add-on, keyed in the frontend's own provider\nvocabulary (GetMoreAiPlatformsModal.tsx multiplies this by the org's current AI Visibility\nPrompts quantity to render its preview) -- this is now also the exact table\nrepriceAiPlatformsAddons() uses server-side to compute the real charge in updateAddons(),\nso the preview and the actual charge can never drift out of sync."
                    },
                    "response": [
                        {
                            "header": [],
                            "code": 200,
                            "body": "{\n  \"data\": {\n    \"openai\": 0, \"perplexity\": 0, \"google_ai_overviews\": 0, \"bing_copilot\": 0,\n    \"google_ai_mode\": 43, \"gemini\": 161, \"claude\": 142, \"deepseek\": 12, \"grok\": 120\n  }\n}",
                            "name": ""
                        }
                    ]
                },
                {
                    "name": "Get Current Subscription",
                    "request": {
                        "url": {
                            "host": "{{baseUrl}}",
                            "path": "api\/subscriptions\/current",
                            "query": [],
                            "raw": "{{baseUrl}}\/api\/subscriptions\/current"
                        },
                        "method": "GET",
                        "header": [
                            {
                                "key": "Content-Type",
                                "value": "application\/json"
                            },
                            {
                                "key": "Accept",
                                "value": "application\/json"
                            }
                        ],
                        "body": null,
                        "description": "Get the current subscription for the organisation."
                    },
                    "response": [
                        {
                            "header": [],
                            "code": 200,
                            "body": "{\n  \"data\": {\n    \"id\": 1,\n    \"stripe_subscription_id\": \"sub_1234567890\",\n    \"status\": \"active\",\n    \"current_period_start\": \"2025-12-01T00:00:00.000000Z\",\n    \"current_period_end\": \"2026-01-01T00:00:00.000000Z\",\n    \"plan\": {\n      \"id\": 1,\n      \"stripe_price_id\": \"price_1234567890\",\n      \"description\": \"Professional features\",\n      \"name\": \"Pro Plan\",\n      \"amount\": 2999,\n      \"currency\": \"usd\",\n      \"interval\": \"month\",\n      \"features\": [\"Feature 1\", \"Feature 2\"]\n    }\n  }\n}",
                            "name": ""
                        },
                        {
                            "header": [],
                            "code": 403,
                            "body": "{\n  \"message\": \"You do not have access to this organisation.\"\n}",
                            "name": "No organisation access"
                        },
                        {
                            "header": [],
                            "code": 404,
                            "body": "{\n  \"message\": \"No subscription found for this organisation.\"\n}",
                            "name": "No subscription"
                        }
                    ]
                },
                {
                    "name": "Refresh subscription from Stripe",
                    "request": {
                        "url": {
                            "host": "{{baseUrl}}",
                            "path": "api\/subscriptions\/refresh",
                            "query": [],
                            "raw": "{{baseUrl}}\/api\/subscriptions\/refresh"
                        },
                        "method": "POST",
                        "header": [
                            {
                                "key": "Content-Type",
                                "value": "application\/json"
                            },
                            {
                                "key": "Accept",
                                "value": "application\/json"
                            }
                        ],
                        "body": null,
                        "description": "Fetch the organisation's current subscription from Stripe and sync to the database.\nUse after the user returns from the billing portal so subscription and threshold data are up to date."
                    },
                    "response": [
                        {
                            "header": [],
                            "code": 200,
                            "body": "{\n  \"data\": {\n    \"id\": 1,\n    \"stripe_subscription_id\": \"sub_xxx\",\n    \"status\": \"active\",\n    \"current_period_start\": \"2025-12-01T00:00:00.000000Z\",\n    \"current_period_end\": \"2026-01-01T00:00:00.000000Z\",\n    \"canceled_at\": null,\n    \"ends_at\": null,\n    \"plan\": { \"id\": 1, \"stripe_price_id\": \"price_xxx\", \"name\": \"Pro - Monthly\", ... }\n  }\n}",
                            "name": ""
                        },
                        {
                            "header": [],
                            "code": 403,
                            "body": "{ \"message\": \"You must be an organisation owner to manage subscriptions.\" }",
                            "name": "Not owner"
                        },
                        {
                            "header": [],
                            "code": 404,
                            "body": "{ \"message\": \"No active subscription found for this organisation.\" }",
                            "name": "No subscription"
                        }
                    ]
                },
                {
                    "name": "Get Billing Portal URL",
                    "request": {
                        "url": {
                            "host": "{{baseUrl}}",
                            "path": "api\/subscriptions\/billing-portal",
                            "query": [],
                            "raw": "{{baseUrl}}\/api\/subscriptions\/billing-portal"
                        },
                        "method": "POST",
                        "header": [
                            {
                                "key": "Content-Type",
                                "value": "application\/json"
                            },
                            {
                                "key": "Accept",
                                "value": "application\/json"
                            }
                        ],
                        "body": {
                            "mode": "raw",
                            "raw": "{\"return_url\":\"https:\\\/\\\/app.example.com\\\/settings\\\/billing\"}"
                        },
                        "description": "Create a Stripe Billing Portal session for the organisation's customer.\nThe portal allows customers to manage their subscription, update payment methods,\nview invoices, and cancel their subscription."
                    },
                    "response": [
                        {
                            "header": [],
                            "code": 200,
                            "body": "{\n  \"portal_url\": \"https:\/\/billing.stripe.com\/p\/session\/...\"\n}",
                            "name": ""
                        },
                        {
                            "header": [],
                            "code": 403,
                            "body": "{\n  \"message\": \"You must be an organisation owner to manage subscriptions.\"\n}",
                            "name": "Not owner"
                        },
                        {
                            "header": [],
                            "code": 404,
                            "body": "{\n  \"message\": \"No active subscription found for this organisation.\"\n}",
                            "name": "No subscription"
                        }
                    ]
                }
            ]
        },
        {
            "name": "Utilities",
            "description": "",
            "item": [
                {
                    "name": "Validate URL Reachability",
                    "request": {
                        "url": {
                            "host": "{{baseUrl}}",
                            "path": "api\/validate-url",
                            "query": [],
                            "raw": "{{baseUrl}}\/api\/validate-url"
                        },
                        "method": "POST",
                        "header": [
                            {
                                "key": "Content-Type",
                                "value": "application\/json"
                            },
                            {
                                "key": "Accept",
                                "value": "application\/json"
                            }
                        ],
                        "body": {
                            "mode": "raw",
                            "raw": "{\"url\":\"https:\\\/\\\/example.com\"}"
                        },
                        "description": "Validates URL format and checks if the URL is reachable."
                    },
                    "response": [
                        {
                            "header": [],
                            "code": 200,
                            "body": "{\n  \"valid\": true,\n  \"status_code\": 200,\n  \"message\": \"URL is valid and reachable\"\n}",
                            "name": ""
                        },
                        {
                            "header": [],
                            "code": 422,
                            "body": "{\n  \"valid\": false,\n  \"message\": \"Invalid URL format\"\n}",
                            "name": ""
                        }
                    ]
                }
            ]
        },
        {
            "name": "Webhook Tools",
            "description": "\nUtility endpoints for webhook signature testing.",
            "item": [
                {
                    "name": "Generate webhook signature",
                    "request": {
                        "url": {
                            "host": "{{baseUrl}}",
                            "path": "api\/tools\/webhook-signatures",
                            "query": [],
                            "raw": "{{baseUrl}}\/api\/tools\/webhook-signatures"
                        },
                        "method": "POST",
                        "header": [
                            {
                                "key": "Content-Type",
                                "value": "application\/json"
                            },
                            {
                                "key": "Accept",
                                "value": "application\/json"
                            }
                        ],
                        "body": {
                            "mode": "raw",
                            "raw": "{\"target\":\"social\",\"raw_body\":\"{\\\"status\\\":\\\"SUCCESS\\\",\\\"process_id\\\":76445,\\\"created_at\\\":\\\"2026-01-19 14:23:11\\\",\\\"link_url\\\":\\\"https:\\\/\\\/www.trustpilot.com\\\/review\\\/example.com\\\",\\\"data\\\":[]}\"}"
                        },
                        "description": "Generate `X-Scraper-Signature` using HMAC SHA256 from the exact `raw_body` string you send.\nUse this for Swagger testing before calling scrape webhook endpoints."
                    },
                    "response": [
                        {
                            "header": [],
                            "code": 200,
                            "body": "{\n  \"signature\": \"8e1b1b0d7c6c1b3b8c9a...\"\n}",
                            "name": ""
                        },
                        {
                            "header": [],
                            "code": 422,
                            "body": "{\n  \"message\": \"The given data was invalid.\",\n  \"errors\": {\n    \"target\": [\"The selected target is invalid.\"]\n  }\n}",
                            "name": ""
                        }
                    ]
                }
            ]
        }
    ],
    "auth": {
        "type": "bearer",
        "bearer": [
            {
                "key": "key",
                "type": "string"
            }
        ]
    }
}