{
    "variable": [
        {
            "id": "baseUrl",
            "key": "baseUrl",
            "type": "string",
            "name": "string",
            "value": "https:\/\/backend-api.subsig.com"
        }
    ],
    "info": {
        "name": "Subsig API Documentation",
        "_postman_id": "96e21d99-2b5b-4a35-ad98-97acd2aaecba",
        "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": 422,
                            "body": "{\n  \"message\": \"The provided credentials are incorrect.\",\n  \"errors\": {\n    \"email\": [\"The provided credentials are incorrect.\"]\n  }\n}",
                            "name": "Invalid credentials"
                        },
                        {
                            "header": [],
                            "code": 422,
                            "body": "{\n  \"message\": \"Please verify your email address before logging in.\",\n  \"errors\": {\n    \"email\": [\"Please verify your email address before logging in.\"]\n  }\n}",
                            "name": "Email not verified"
                        }
                    ]
                },
                {
                    "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": "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": "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": "Reviews",
            "description": "\nAPIs for fetching aggregated reviews from multiple platforms, scoped to organizations.",
            "item": [
                {
                    "name": "Get Organization Reviews",
                    "request": {
                        "url": {
                            "host": "{{baseUrl}}",
                            "path": "api\/organisations\/:organisation_uuid\/reviews",
                            "query": [],
                            "raw": "{{baseUrl}}\/api\/organisations\/:organisation_uuid\/reviews",
                            "variable": [
                                {
                                    "id": "organisation_uuid",
                                    "key": "organisation_uuid",
                                    "value": "660e8400-e29b-41d4-a716-446655440001",
                                    "description": "The organization UUID."
                                }
                            ]
                        },
                        "method": "POST",
                        "header": [
                            {
                                "key": "Content-Type",
                                "value": "application\/json"
                            },
                            {
                                "key": "Accept",
                                "value": "application\/json"
                            }
                        ],
                        "body": {
                            "mode": "raw",
                            "raw": "{\"brands\":[\"uuid-1\",\"uuid-2\"],\"view_uuid\":\"a1b2c3d4-e5f6-g7h8-i9j0\",\"platforms\":[\"G2\",\"Capterra\"],\"date_range\":{\"type\":\"preset\",\"value\":\"last_14_days\"},\"date_range_custom\":{\"start\":\"2026-04-27T09:09:18\",\"end\":\"2052-05-20\"},\"date_from\":\"2026-01-01\",\"date_to\":\"2026-01-24\",\"rating_buckets\":[\"5.0\",\"4.0-4.9\"],\"languages\":[\"en\",\"de\"],\"read_status\":\"unread\",\"search\":\"customer support\",\"sort_by\":\"creation_date\",\"sort_direction\":\"desc\\n\\nNote: Results are paginated with 10 items per page (fixed, not configurable).\",\"period_in_days\":30,\"page\":1}"
                        },
                        "description": "Fetch and aggregate reviews from multiple projects\/brands within an organization.\nReviews are fetched from external API, persisted to database, and returned with filters applied.\nSupports filtering by multiple brands (projects), platforms, ratings, languages, and more."
                    },
                    "response": [
                        {
                            "header": [],
                            "code": 200,
                            "body": "{\n  \"data\": {\n    \"organisation_id\": \"660e8400-e29b-41d4-a716-446655440001\",\n    \"organisation_name\": \"Acme Corp\",\n    \"reviews\": {\n      \"current_page\": 1,\n      \"data\": [\n        {\n          \"id\": 1,\n          \"scraper_review_id\": 10452,\n          \"organisation_id\": 5,\n          \"project_id\": 30,\n          \"platform\": \"Capterra\",\n          \"platform_icon\": null,\n          \"rating\": 5.0,\n          \"content\": \"Great product with excellent features...\",\n          \"author\": \"John Smith\",\n          \"job_role\": \"Product Manager\",\n          \"language\": \"en\",\n          \"date\": \"2026-01-13\",\n          \"link_url\": \"https:\/\/www.capterra.com\/reviews\/\",\n          \"direct_review_url\": \"https:\/\/scraper.example.com\/reviews\",\n          \"created_at\": \"2026-01-15T09:30:21.000000Z\"\n        }\n      ],\n      \"per_page\": 10,\n      \"total\": 150\n    }\n  }\n}",
                            "name": ""
                        },
                        {
                            "header": [],
                            "code": 403,
                            "body": "{\n  \"message\": \"You do not have access to this organisation.\"\n}",
                            "name": ""
                        },
                        {
                            "header": [],
                            "code": 404,
                            "body": "{\n  \"message\": \"Organisation not found.\"\n}",
                            "name": ""
                        }
                    ]
                },
                {
                    "name": "Sync review aggregation tables from scraper historical data.",
                    "request": {
                        "url": {
                            "host": "{{baseUrl}}",
                            "path": "api\/organisations\/:organisation_uuid\/reviews\/aggregation\/sync",
                            "query": [],
                            "raw": "{{baseUrl}}\/api\/organisations\/:organisation_uuid\/reviews\/aggregation\/sync",
                            "variable": [
                                {
                                    "id": "organisation_uuid",
                                    "key": "organisation_uuid",
                                    "value": "660e8400-e29b-41d4-a716-446655440001",
                                    "description": "The organization UUID."
                                }
                            ]
                        },
                        "method": "POST",
                        "header": [
                            {
                                "key": "Content-Type",
                                "value": "application\/json"
                            },
                            {
                                "key": "Accept",
                                "value": "application\/json"
                            }
                        ],
                        "body": {
                            "mode": "raw",
                            "raw": "{\"all_organisations\":true,\"brands\":[\"uuid-1\",\"uuid-2\"],\"period_in_days\":365}"
                        },
                        "description": "Fetches enabled link URLs from the links table (via link_project), calls scraper\n`\/v1\/reviews` for all pages, aggregates data, and upserts into:\n- review_aggregation_daily\n- review_aggregation_rating_daily\n\nHistorical flow only (no process_id and no webhook deliveries checks)."
                    },
                    "response": [
                        {
                            "header": [],
                            "code": 202,
                            "body": "{\n  \"data\": {\n    \"organisation_id\": \"660e8400-e29b-41d4-a716-446655440001\",\n    \"organisation_name\": \"Acme Corp\",\n    \"run_id\": \"0f57a8e6-89e6-43d8-8d5d-176c52747467\",\n    \"period_in_days\": 365,\n    \"projects_total\": 1,\n    \"links_queued\": 2,\n    \"status\": \"queued\"\n  }\n}",
                            "name": ""
                        },
                        {
                            "header": [],
                            "code": 403,
                            "body": "{\"message\": \"You do not have access to this organisation.\"}",
                            "name": ""
                        },
                        {
                            "header": [],
                            "code": 404,
                            "body": "{\"message\": \"Organisation not found.\"}",
                            "name": ""
                        },
                        {
                            "header": [],
                            "code": 422,
                            "body": "{\"message\": \"Review aggregation sync is unavailable. Scraper service is not configured.\"}",
                            "name": ""
                        }
                    ]
                },
                {
                    "name": "Get aggregation run status using run_id.",
                    "request": {
                        "url": {
                            "host": "{{baseUrl}}",
                            "path": "api\/organisations\/:organisation_uuid\/reviews\/aggregation\/runs\/:run_id",
                            "query": [],
                            "raw": "{{baseUrl}}\/api\/organisations\/:organisation_uuid\/reviews\/aggregation\/runs\/:run_id",
                            "variable": [
                                {
                                    "id": "organisation_uuid",
                                    "key": "organisation_uuid",
                                    "value": "f0b83e11-6966-41a5-af34-d2a46e243d4c",
                                    "description": ""
                                },
                                {
                                    "id": "run_id",
                                    "key": "run_id",
                                    "value": "architecto",
                                    "description": "Aggregation run UUID returned by sync endpoint."
                                }
                            ]
                        },
                        "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    \"run_id\": \"0f57a8e6-89e6-43d8-8d5d-176c52747467\",\n    \"status\": \"running\",\n    \"period_in_days\": 365,\n    \"projects_total\": 1,\n    \"total_links\": 8,\n    \"processed_links\": 5,\n    \"success_links\": 4,\n    \"failed_links\": 1,\n    \"no_rows_links\": 1,\n    \"queued_at\": \"2026-04-22T06:31:06.000000Z\",\n    \"started_at\": \"2026-04-22T06:31:10.000000Z\",\n    \"completed_at\": null\n  }\n}",
                            "name": ""
                        },
                        {
                            "header": [],
                            "code": 403,
                            "body": "{\"message\":\"You do not have access to this organisation.\"}",
                            "name": ""
                        },
                        {
                            "header": [],
                            "code": 404,
                            "body": "{\"message\":\"Aggregation run not found.\"}",
                            "name": ""
                        }
                    ]
                },
                {
                    "name": "Get Review Analytics",
                    "request": {
                        "url": {
                            "host": "{{baseUrl}}",
                            "path": "api\/organisations\/:organisation_uuid\/reviews\/analytics",
                            "query": [],
                            "raw": "{{baseUrl}}\/api\/organisations\/:organisation_uuid\/reviews\/analytics",
                            "variable": [
                                {
                                    "id": "organisation_uuid",
                                    "key": "organisation_uuid",
                                    "value": "660e8400-e29b-41d4-a716-446655440001",
                                    "description": "The organization UUID."
                                }
                            ]
                        },
                        "method": "POST",
                        "header": [
                            {
                                "key": "Content-Type",
                                "value": "application\/json"
                            },
                            {
                                "key": "Accept",
                                "value": "application\/json"
                            }
                        ],
                        "body": {
                            "mode": "raw",
                            "raw": "{\"brands\":[\"uuid-1\",\"uuid-2\"],\"compare_products\":[\"uuid-1\",\"uuid-2\"],\"platforms\":[\"G2\",\"Capterra\"],\"date_range\":{\"type\":\"preset\",\"value\":\"last_3_months\"},\"date_range_custom\":{\"start\":\"2025-10-01\",\"end\":\"2026-01-27\"},\"max_results\":22,\"max_period\":67}"
                        },
                        "description": "Calculate analytics metrics for reviews including new reviews count, average rating,\nreviews per month, with comparison to previous period. Also includes rating distribution\nand platform breakdown. Each product in data includes is_scraping_reviews (boolean): true\nif a review scrape is currently in progress for that product; use it to show a loading state in the UI.\nis_data (boolean): true if any aggregation record exists for the same scope (project_ids, platforms, date range) as the metrics; false otherwise."
                    },
                    "response": [
                        {
                            "header": [],
                            "code": 200,
                            "body": "{\n  \"data\": [\n    {\n      \"product_uuid\": \"660e8400-e29b-41d4-a716-446655440001\",\n      \"product_name\": \"Acme Product\",\n      \"product_logo\": \"https:\/\/...\",\n      \"period\": {\n        \"start\": \"2025-10-28\",\n        \"end\": \"2026-01-27\",\n        \"duration\": 3\n      },\n      \"metrics\": {\n        \"new_reviews\": {\n          \"current\": 2,\n          \"previous\": 10,\n          \"change_percentage\": -80.0,\n          \"trend\": \"down\"\n        },\n        \"average_rating\": {\n          \"current\": 4.1,\n          \"previous\": 4.4,\n          \"change_percentage\": -6.8,\n          \"trend\": \"down\"\n        },\n        \"reviews_per_month\": {\n          \"current\": 2,\n          \"previous\": 6,\n          \"change_percentage\": -68.3,\n          \"trend\": \"down\"\n        },\n        \"review_velocity\": {\n          \"interval\": \"week\",\n          \"data\": [{\"group\": \"2025-10-W5\", \"count\": 1, \"cumulative_before\": 0, \"rating\": 4.2}]\n        }\n      },\n      \"breakdown\": {\n        \"ratings\": {\n          \"5.0\": 0,\n          \"4.0\": 2,\n          \"3.0\": 0,\n          \"2.0\": 0,\n          \"1.0\": 0\n        },\n        \"platforms\": [\n          {\"name\": \"G2\", \"has_data\": 1},\n          {\"name\": \"Capterra\", \"has_data\": 2}\n        ]\n      },\n      \"is_scraping_reviews\": false\n    }\n  ],\n  \"competitors\": [\n    {\n      \"project_uuid\": \"660e8400-e29b-41d4-a716-446655440001\",\n      \"product_name\": \"Base Product\",\n      \"product_logo\": \"https:\/\/...\",\n      \"is_competitor\": false,\n      \"total_reviews\": {\n        \"current\": 10,\n        \"previous\": 5,\n        \"change_percentage\": 100.0,\n        \"trend\": \"up\"\n      },\n      \"average_rating\": {\n        \"current\": 4.3,\n        \"previous\": 4.1,\n        \"change_percentage\": 4.9,\n        \"trend\": \"up\"\n      },\n      \"rank\": 1\n    }\n  ],\n  \"applied_filters\": {\n    \"brands\": [\"uuid-1\"],\n    \"platforms\": [\"G2\", \"Capterra\"],\n    \"date_range\": {\"type\": \"preset\", \"value\": \"last_3_months\"}\n  },\n  \"organisation_id\": \"660e8400-e29b-41d4-a716-446655440001\",\n  \"organisation_name\": \"Acme Corp\",\n  \"is_data\": true\n}",
                            "name": ""
                        },
                        {
                            "header": [],
                            "code": 200,
                            "body": "{\n  \"data\": [\n    {\n      \"product_uuid\": \"660e8400-e29b-41d4-a716-446655440001\",\n      \"product_name\": \"Product 1\",\n      \"product_logo\": \"https:\/\/...\",\n      \"period\": {\n        \"start\": \"2025-10-28\",\n        \"end\": \"2026-01-27\",\n        \"duration\": 3\n      },\n      \"metrics\": {\n        \"new_reviews\": {...},\n        \"average_rating\": {...},\n        \"reviews_per_month\": {...},\n        \"review_velocity\": {\"interval\": \"week\", \"data\": [{\"group\": \"...\", \"count\": 0, \"cumulative_before\": 0, \"rating\": 4.1}]}\n      },\n      \"breakdown\": {\n        \"ratings\": {\"5.0\": 0, \"4.0\": 2, \"3.0\": 0, \"2.0\": 0, \"1.0\": 0},\n        \"platforms\": [\n          {\"name\": \"G2\", \"has_data\": 1},\n          {\"name\": \"Capterra\", \"has_data\": 2}\n        ]\n      },\n      \"is_scraping_reviews\": false\n    },\n    {\n      \"product_uuid\": \"770e8400-e29b-41d4-a716-446655440002\",\n      \"product_name\": \"Product 2\",\n      \"product_logo\": \"https:\/\/...\",\n      \"period\": {...},\n      \"metrics\": {...},\n      \"breakdown\": {...},\n      \"is_scraping_reviews\": false\n    }\n  ],\n  \"competitors\": [\n    {\n      \"project_uuid\": \"660e8400-e29b-41d4-a716-446655440001\",\n      \"product_name\": \"Base Product\",\n      \"product_logo\": \"https:\/\/...\",\n      \"is_competitor\": false,\n      \"total_reviews\": {\"current\": 10, \"previous\": 5, \"change_percentage\": 100.0, \"trend\": \"up\"},\n      \"average_rating\": {\"current\": 4.3, \"previous\": 4.1, \"change_percentage\": 4.9, \"trend\": \"up\"},\n      \"rank\": 1\n    }\n  ],\n  \"applied_filters\": {\n    \"brands\": [\"660e8400-e29b-41d4-a716-446655440001\", \"770e8400-e29b-41d4-a716-446655440002\"],\n    \"platforms\": [],\n    \"date_range\": {\"type\": \"preset\", \"value\": \"last_3_months\"}\n  },\n  \"organisation_id\": \"660e8400-e29b-41d4-a716-446655440000\",\n  \"organisation_name\": \"Acme Corp\",\n  \"is_data\": true\n}",
                            "name": "Multi-product comparison"
                        },
                        {
                            "header": [],
                            "code": 403,
                            "body": "{\n  \"message\": \"You do not have access to this organisation.\"\n}",
                            "name": ""
                        },
                        {
                            "header": [],
                            "code": 404,
                            "body": "{\n  \"message\": \"Organisation not found.\"\n}",
                            "name": ""
                        }
                    ]
                },
                {
                    "name": "Get aggregation run status using run_id without organisation in URL.",
                    "request": {
                        "url": {
                            "host": "{{baseUrl}}",
                            "path": "api\/reviews\/aggregation\/runs\/:run_id",
                            "query": [],
                            "raw": "{{baseUrl}}\/api\/reviews\/aggregation\/runs\/:run_id",
                            "variable": [
                                {
                                    "id": "run_id",
                                    "key": "run_id",
                                    "value": "architecto",
                                    "description": "Aggregation run UUID returned by sync endpoint."
                                }
                            ]
                        },
                        "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": "Social Posts",
            "description": "\nAPIs for fetching and filtering social media mentions from multiple platforms, scoped to organizations.",
            "item": [
                {
                    "name": "Get Organization Social Posts",
                    "request": {
                        "url": {
                            "host": "{{baseUrl}}",
                            "path": "api\/organisations\/:organisation_uuid\/social",
                            "query": [],
                            "raw": "{{baseUrl}}\/api\/organisations\/:organisation_uuid\/social",
                            "variable": [
                                {
                                    "id": "organisation_uuid",
                                    "key": "organisation_uuid",
                                    "value": "660e8400-e29b-41d4-a716-446655440001",
                                    "description": "The organization UUID."
                                }
                            ]
                        },
                        "method": "POST",
                        "header": [
                            {
                                "key": "Content-Type",
                                "value": "application\/json"
                            },
                            {
                                "key": "Accept",
                                "value": "application\/json"
                            }
                        ],
                        "body": {
                            "mode": "raw",
                            "raw": "{\"brands\":[\"uuid-1\",\"uuid-2\"],\"view_uuid\":\"a1b2c3d4-e5f6-g7h8-i9j0\",\"platforms\":[\"reddit\",\"github\"],\"types\":[\"post\",\"comment\"],\"sentiments\":[\"positive\",\"negative\"],\"keywords\":[\"Loom\",\"Figma\"],\"date_range\":{\"type\":\"preset\",\"value\":\"last_3_months\"},\"date_range_custom\":{\"start\":\"2026-01-01\",\"end\":\"2026-01-24\"},\"read_status\":\"unread\",\"search\":\"customer support\",\"sort_by\":\"post_date\",\"sort_direction\":\"desc\",\"page\":1,\"per_page\":10}"
                        },
                        "description": "Fetch and aggregate social posts from multiple projects\/brands within an organization.\nPosts are fetched from external Scraper API, persisted to database, and returned with filters applied.\nSupports filtering by brands, platforms, types, sentiments, keywords, and more."
                    },
                    "response": [
                        {
                            "header": [],
                            "code": 200,
                            "body": "{\n  \"data\": {\n    \"posts\": [\n      {\n        \"uuid\": \"770e8400-e29b-41d4-a716-446655440002\",\n        \"platform\": \"reddit\",\n        \"community_name\": \"saas\",\n        \"content_type\": \"post\",\n        \"brand_keyword\": \"Acme\",\n        \"title\": \"Great product discussion\",\n        \"text\": \"We've been using this for months...\",\n        \"post_date\": \"2026-01-20T10:00:00.000000Z\",\n        \"url\": \"https:\/\/reddit.com\/r\/saas\/comments\/123\",\n        \"sentiment\": \"positive\",\n        \"intensity\": 5,\n        \"score_0_100\": 85,\n        \"user_name\": \"johndoe\",\n        \"upvotes_count\": 42,\n        \"comments_count\": 10,\n        \"project\": {\n          \"uuid\": \"660e8400-e29b-41d4-a716-446655440001\",\n          \"product_name\": \"Acme CRM\",\n          \"product_logo\": \"https:\/\/...\"\n        },\n        \"created_at\": \"2026-01-20T09:30:21.000000Z\",\n        \"updated_at\": \"2026-01-20T09:30:21.000000Z\"\n      }\n    ],\n    \"meta\": {\n      \"current_page\": 1,\n      \"per_page\": 10,\n      \"total\": 838,\n      \"last_page\": 17\n    },\n    \"applied_filters\": {\n      \"brands\": [\"uuid1\", \"uuid2\"],\n      \"platforms\": [\"reddit\", \"github\"],\n      \"types\": [\"post\"],\n      \"sentiments\": [\"positive\", \"negative\"],\n      \"keywords\": [\"Loom\", \"Figma\"]\n    }\n  }\n}",
                            "name": ""
                        },
                        {
                            "header": [],
                            "code": 403,
                            "body": "{\n  \"message\": \"You do not have access to this organisation.\"\n}",
                            "name": ""
                        },
                        {
                            "header": [],
                            "code": 404,
                            "body": "{\n  \"message\": \"Organisation not found.\"\n}",
                            "name": ""
                        }
                    ]
                },
                {
                    "name": "Sync social aggregation tables from mentions API historical data.",
                    "request": {
                        "url": {
                            "host": "{{baseUrl}}",
                            "path": "api\/organisations\/:organisation_uuid\/social\/aggregation\/sync",
                            "query": [],
                            "raw": "{{baseUrl}}\/api\/organisations\/:organisation_uuid\/social\/aggregation\/sync",
                            "variable": [
                                {
                                    "id": "organisation_uuid",
                                    "key": "organisation_uuid",
                                    "value": "6ff8f7f6-1eb3-3525-be4a-3932c805afed",
                                    "description": "The organization UUID."
                                }
                            ]
                        },
                        "method": "POST",
                        "header": [
                            {
                                "key": "Content-Type",
                                "value": "application\/json"
                            },
                            {
                                "key": "Accept",
                                "value": "application\/json"
                            }
                        ],
                        "body": {
                            "mode": "raw",
                            "raw": "{\"all_organisations\":true,\"brands\":[\"architecto\"],\"period_in_days\":16}"
                        },
                        "description": "Uses projects.social_platform.brand_id and fetches both \/v1\/mentions\/posts and\n\/v1\/mentions\/comments for all supported platforms:\nreddit, github, stackoverflow, hackernews, x, youtube, linkedin."
                    },
                    "response": [
                        {
                            "header": [],
                            "code": 202,
                            "body": "{\n  \"data\": {\n    \"organisation_id\": \"660e8400-e29b-41d4-a716-446655440001\",\n    \"organisation_name\": \"Acme Corp\",\n    \"run_id\": \"0f57a8e6-89e6-43d8-8d5d-176c52747467\",\n    \"period_in_days\": 365,\n    \"projects_total\": 1,\n    \"tasks_queued\": 7,\n    \"supported_platforms\": [\"reddit\",\"github\",\"stackoverflow\",\"hackernews\",\"x\",\"youtube\",\"linkedin\"],\n    \"status\": \"queued\"\n  }\n}",
                            "name": ""
                        },
                        {
                            "header": [],
                            "code": 403,
                            "body": "{\"message\":\"You do not have access to this organisation.\"}",
                            "name": ""
                        },
                        {
                            "header": [],
                            "code": 404,
                            "body": "{\"message\":\"Organisation not found.\"}",
                            "name": ""
                        },
                        {
                            "header": [],
                            "code": 422,
                            "body": "{\"message\":\"Social aggregation sync is unavailable. Mentions service is not configured.\"}",
                            "name": ""
                        }
                    ]
                },
                {
                    "name": "Get social aggregation run status for an organisation-scoped run.",
                    "request": {
                        "url": {
                            "host": "{{baseUrl}}",
                            "path": "api\/organisations\/:organisation_uuid\/social\/aggregation\/runs\/:run_id",
                            "query": [],
                            "raw": "{{baseUrl}}\/api\/organisations\/:organisation_uuid\/social\/aggregation\/runs\/:run_id",
                            "variable": [
                                {
                                    "id": "organisation_uuid",
                                    "key": "organisation_uuid",
                                    "value": "6ff8f7f6-1eb3-3525-be4a-3932c805afed",
                                    "description": "The organization UUID."
                                },
                                {
                                    "id": "run_id",
                                    "key": "run_id",
                                    "value": "architecto",
                                    "description": "Aggregation run UUID returned by social aggregation sync endpoint."
                                }
                            ]
                        },
                        "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    \"run_id\": \"0f57a8e6-89e6-43d8-8d5d-176c52747467\",\n    \"status\": \"running\",\n    \"period_in_days\": 365,\n    \"projects_total\": 3,\n    \"tasks_total\": 21,\n    \"processed_tasks\": 9,\n    \"success_tasks\": 8,\n    \"failed_tasks\": 1,\n    \"no_rows_tasks\": 2\n  }\n}",
                            "name": ""
                        },
                        {
                            "header": [],
                            "code": 403,
                            "body": "{\"message\":\"You do not have access to this organisation.\"}",
                            "name": ""
                        },
                        {
                            "header": [],
                            "code": 404,
                            "body": "{\"message\":\"Aggregation run not found.\"}",
                            "name": ""
                        }
                    ]
                },
                {
                    "name": "Organisation-level social analytics.",
                    "request": {
                        "url": {
                            "host": "{{baseUrl}}",
                            "path": "api\/organisations\/:organisation_uuid\/social\/analytics",
                            "query": [],
                            "raw": "{{baseUrl}}\/api\/organisations\/:organisation_uuid\/social\/analytics",
                            "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": "{\"brands\":[\"123\",\"456\"],\"platforms\":[\"reddit\",\"github\"],\"date_range\":\"last_3_months\",\"custom_date_range\":{\"from\":\"2025-10-01\",\"to\":\"2026-01-27\"},\"date_range_custom\":{\"start\":\"2025-10-01\",\"end\":\"2026-01-27\"},\"max_results\":22,\"max_period\":67}"
                        },
                        "description": "Returns mention count and average sentiment with period-over-period comparison.\nFilters: brands (brand_id), platforms, date_range, date_range_custom (start\/end), or custom_date_range (from\/to).\ndata.is_scraping_mentions (boolean): true if a mentions scrape is currently in progress for any project in scope; use it to show a loading state in the UI.\nis_data (boolean): true if any aggregation record exists for the same scope (organisation, brands, platforms, date range) as the metrics; false otherwise."
                    },
                    "response": [
                        {
                            "header": [],
                            "code": 200,
                            "body": "{\n  \"data\": {\n    \"mentions\": {\"current\": 42, \"previous\": 30, \"percentage_change\": 40.0},\n    \"average_sentiment\": {\"current\": 0.65, \"previous\": 0.58, \"percentage_change\": 12.1},\n    \"estimated_reach_per_month\": {\"current\": 1200, \"previous\": 800, \"percentage_change\": 50.0},\n    \"mentions_and_reach_velocity\": {\"interval\": \"day\", \"data\": []},\n    \"breakdown\": {\n      \"platforms\": [\n        {\"name\": \"reddit\", \"has_data\": 1, \"count\": 20},\n        {\"name\": \"github\", \"has_data\": 2, \"count\": 22}\n      ],\n      \"sentiments\": {\"positive\": 25, \"neutral\": 12, \"negative\": 5}\n    },\n    \"competitors\": [],\n    \"is_scraping_mentions\": 2\n  },\n  \"is_data\": true\n}",
                            "name": ""
                        },
                        {
                            "header": [],
                            "code": 403,
                            "body": "{\"message\": \"You do not have access to this organisation.\"}",
                            "name": ""
                        },
                        {
                            "header": [],
                            "code": 404,
                            "body": "{\"message\": \"Organisation not found.\"}",
                            "name": ""
                        }
                    ]
                },
                {
                    "name": "List Social Post Views",
                    "request": {
                        "url": {
                            "host": "{{baseUrl}}",
                            "path": "api\/organisations\/:organisation_uuid\/social\/views",
                            "query": [],
                            "raw": "{{baseUrl}}\/api\/organisations\/:organisation_uuid\/social\/views",
                            "variable": [
                                {
                                    "id": "organisation_uuid",
                                    "key": "organisation_uuid",
                                    "value": "6ff8f7f6-1eb3-3525-be4a-3932c805afed",
                                    "description": "The organization UUID."
                                }
                            ]
                        },
                        "method": "GET",
                        "header": [
                            {
                                "key": "Content-Type",
                                "value": "application\/json"
                            },
                            {
                                "key": "Accept",
                                "value": "application\/json"
                            }
                        ],
                        "body": null,
                        "description": "Get all saved filter views for the current user in this organization."
                    },
                    "response": [
                        {
                            "header": [],
                            "code": 200,
                            "body": "{\n  \"data\": [\n    {\n      \"uuid\": \"a1b2c3d4-e5f6-g7h8-i9j0\",\n      \"name\": \"Critical Alerts\",\n      \"filters\": {\"platforms\": [\"reddit\"], \"sentiments\": [\"negative\"]},\n      \"created_at\": \"2026-01-26T10:00:00.000000Z\"\n    }\n  ]\n}",
                            "name": ""
                        }
                    ]
                },
                {
                    "name": "Store Social Post View",
                    "request": {
                        "url": {
                            "host": "{{baseUrl}}",
                            "path": "api\/organisations\/:organisation_uuid\/social\/views",
                            "query": [],
                            "raw": "{{baseUrl}}\/api\/organisations\/:organisation_uuid\/social\/views",
                            "variable": [
                                {
                                    "id": "organisation_uuid",
                                    "key": "organisation_uuid",
                                    "value": "6ff8f7f6-1eb3-3525-be4a-3932c805afed",
                                    "description": "The organization UUID."
                                }
                            ]
                        },
                        "method": "POST",
                        "header": [
                            {
                                "key": "Content-Type",
                                "value": "application\/json"
                            },
                            {
                                "key": "Accept",
                                "value": "application\/json"
                            }
                        ],
                        "body": {
                            "mode": "raw",
                            "raw": "{\"name\":\"Critical Alerts\",\"filters\":{\"platforms\":[\"reddit\"],\"sentiments\":[\"negative\"],\"brands\":[\"6ff8f7f6-1eb3-3525-be4a-3932c805afed\"],\"types\":[\"comment\"],\"keywords\":[\"g\"],\"date_range\":{\"type\":\"custom\",\"value\":\"all_time\"},\"date_range_custom\":{\"start\":\"2026-04-27T09:09:18\",\"end\":\"2052-05-20\"},\"read_status\":\"unread\",\"search\":\"n\",\"sort_by\":\"upvotes_count\",\"sort_direction\":\"asc\"}}"
                        },
                        "description": "Create a new saved filter view for social posts."
                    },
                    "response": [
                        {
                            "header": [],
                            "code": 201,
                            "body": "{\n  \"data\": {\n    \"uuid\": \"a1b2c3d4-e5f6-g7h8-i9j0\",\n    \"name\": \"Critical Alerts\",\n    \"filters\": {\"platforms\": [\"reddit\"], \"sentiments\": [\"negative\"]},\n    \"created_at\": \"2026-01-26T10:00:00.000000Z\"\n  }\n}",
                            "name": ""
                        }
                    ]
                },
                {
                    "name": "Show Social Post View",
                    "request": {
                        "url": {
                            "host": "{{baseUrl}}",
                            "path": "api\/organisations\/:organisation_uuid\/social\/views\/:view_uuid",
                            "query": [],
                            "raw": "{{baseUrl}}\/api\/organisations\/:organisation_uuid\/social\/views\/:view_uuid",
                            "variable": [
                                {
                                    "id": "organisation_uuid",
                                    "key": "organisation_uuid",
                                    "value": "6ff8f7f6-1eb3-3525-be4a-3932c805afed",
                                    "description": "The organization UUID."
                                },
                                {
                                    "id": "view_uuid",
                                    "key": "view_uuid",
                                    "value": "6ff8f7f6-1eb3-3525-be4a-3932c805afed",
                                    "description": "The view UUID."
                                }
                            ]
                        },
                        "method": "GET",
                        "header": [
                            {
                                "key": "Content-Type",
                                "value": "application\/json"
                            },
                            {
                                "key": "Accept",
                                "value": "application\/json"
                            }
                        ],
                        "body": null,
                        "description": "Get a specific saved filter view."
                    },
                    "response": [
                        {
                            "header": [],
                            "code": 200,
                            "body": "{\n  \"data\": {\n    \"uuid\": \"a1b2c3d4-e5f6-g7h8-i9j0\",\n    \"name\": \"Critical Alerts\",\n    \"filters\": {\"platforms\": [\"reddit\"], \"sentiments\": [\"negative\"]},\n    \"created_at\": \"2026-01-26T10:00:00.000000Z\"\n  }\n}",
                            "name": ""
                        }
                    ]
                },
                {
                    "name": "Update Social Post View",
                    "request": {
                        "url": {
                            "host": "{{baseUrl}}",
                            "path": "api\/organisations\/:organisation_uuid\/social\/views\/:view_uuid",
                            "query": [],
                            "raw": "{{baseUrl}}\/api\/organisations\/:organisation_uuid\/social\/views\/:view_uuid",
                            "variable": [
                                {
                                    "id": "organisation_uuid",
                                    "key": "organisation_uuid",
                                    "value": "6ff8f7f6-1eb3-3525-be4a-3932c805afed",
                                    "description": "The organization UUID."
                                },
                                {
                                    "id": "view_uuid",
                                    "key": "view_uuid",
                                    "value": "6ff8f7f6-1eb3-3525-be4a-3932c805afed",
                                    "description": "The view UUID."
                                }
                            ]
                        },
                        "method": "PUT",
                        "header": [
                            {
                                "key": "Content-Type",
                                "value": "application\/json"
                            },
                            {
                                "key": "Accept",
                                "value": "application\/json"
                            }
                        ],
                        "body": {
                            "mode": "raw",
                            "raw": "{\"sort_order\":27,\"name\":\"architecto\",\"filters\":{\"brands\":[\"6b72fe4a-5b40-307c-bc24-f79acf9a1bb9\"],\"platforms\":[\"hackernews\"],\"types\":[\"comment\"],\"sentiments\":[\"neutral\"],\"keywords\":[\"m\"],\"date_range\":{\"type\":\"preset\",\"value\":\"last_12_months\"},\"date_range_custom\":{\"start\":\"2026-04-27T09:09:18\",\"end\":\"2052-05-20\"},\"read_status\":\"all\",\"search\":\"n\",\"sort_by\":\"created_at\",\"sort_direction\":\"asc\"}}"
                        },
                        "description": "Update a saved filter view."
                    },
                    "response": [
                        {
                            "header": [],
                            "code": 200,
                            "body": "{\n  \"data\": {\n    \"uuid\": \"a1b2c3d4-e5f6-g7h8-i9j0\",\n    \"name\": \"Critical Alerts Updated\",\n    \"filters\": {\"platforms\": [\"reddit\"], \"sentiments\": [\"negative\"]},\n    \"updated_at\": \"2026-01-26T11:00:00.000000Z\"\n  }\n}",
                            "name": ""
                        }
                    ]
                },
                {
                    "name": "Delete Social Post View",
                    "request": {
                        "url": {
                            "host": "{{baseUrl}}",
                            "path": "api\/organisations\/:organisation_uuid\/social\/views\/:view_uuid",
                            "query": [],
                            "raw": "{{baseUrl}}\/api\/organisations\/:organisation_uuid\/social\/views\/:view_uuid",
                            "variable": [
                                {
                                    "id": "organisation_uuid",
                                    "key": "organisation_uuid",
                                    "value": "6ff8f7f6-1eb3-3525-be4a-3932c805afed",
                                    "description": "The organization UUID."
                                },
                                {
                                    "id": "view_uuid",
                                    "key": "view_uuid",
                                    "value": "6ff8f7f6-1eb3-3525-be4a-3932c805afed",
                                    "description": "The view UUID."
                                }
                            ]
                        },
                        "method": "DELETE",
                        "header": [
                            {
                                "key": "Content-Type",
                                "value": "application\/json"
                            },
                            {
                                "key": "Accept",
                                "value": "application\/json"
                            }
                        ],
                        "body": null,
                        "description": "Delete a saved filter view."
                    },
                    "response": [
                        {
                            "header": [],
                            "code": 204,
                            "body": "{}",
                            "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": "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\":true}"
                        },
                        "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": "POST api\/notifications\/email",
                    "request": {
                        "url": {
                            "host": "{{baseUrl}}",
                            "path": "api\/notifications\/email",
                            "query": [],
                            "raw": "{{baseUrl}}\/api\/notifications\/email"
                        },
                        "method": "POST",
                        "header": [
                            {
                                "key": "Content-Type",
                                "value": "application\/json"
                            },
                            {
                                "key": "Accept",
                                "value": "application\/json"
                            }
                        ],
                        "body": {
                            "mode": "raw",
                            "raw": "{\"email\":\"gbailey@example.net\",\"template\":\"architecto\"}"
                        },
                        "description": "",
                        "auth": {
                            "type": "noauth"
                        }
                    },
                    "response": []
                },
                {
                    "name": "POST api\/links\/deactivate-bulk-temporary",
                    "request": {
                        "url": {
                            "host": "{{baseUrl}}",
                            "path": "api\/links\/deactivate-bulk-temporary",
                            "query": [],
                            "raw": "{{baseUrl}}\/api\/links\/deactivate-bulk-temporary"
                        },
                        "method": "POST",
                        "header": [
                            {
                                "key": "Content-Type",
                                "value": "application\/json"
                            },
                            {
                                "key": "Accept",
                                "value": "application\/json"
                            }
                        ],
                        "body": {
                            "mode": "raw",
                            "raw": "{\"platform\":\"b\",\"chunk_size\":22,\"dry_run\":true}"
                        },
                        "description": "",
                        "auth": {
                            "type": "noauth"
                        }
                    },
                    "response": []
                },
                {
                    "name": "POST api\/brands\/deactivate-bulk-temporary",
                    "request": {
                        "url": {
                            "host": "{{baseUrl}}",
                            "path": "api\/brands\/deactivate-bulk-temporary",
                            "query": [],
                            "raw": "{{baseUrl}}\/api\/brands\/deactivate-bulk-temporary"
                        },
                        "method": "POST",
                        "header": [
                            {
                                "key": "Content-Type",
                                "value": "application\/json"
                            },
                            {
                                "key": "Accept",
                                "value": "application\/json"
                            }
                        ],
                        "body": {
                            "mode": "raw",
                            "raw": "{\"chunk_size\":1,\"dry_run\":false}"
                        },
                        "description": "",
                        "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": "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": "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": 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": "Notifications",
            "description": "\nAPIs for managing notification rules",
            "item": [
                {
                    "name": "List Notifications",
                    "request": {
                        "url": {
                            "host": "{{baseUrl}}",
                            "path": "api\/notifications",
                            "query": [],
                            "raw": "{{baseUrl}}\/api\/notifications"
                        },
                        "method": "GET",
                        "header": [
                            {
                                "key": "Content-Type",
                                "value": "application\/json"
                            },
                            {
                                "key": "Accept",
                                "value": "application\/json"
                            }
                        ],
                        "body": null,
                        "description": "Get all notification rules for the current organisation."
                    },
                    "response": [
                        {
                            "header": [],
                            "code": 200,
                            "body": "[\n  {\n    \"uuid\": \"770e8400-e29b-41d4-a716-446655440000\",\n    \"name\": \"Daily Review Alerts\",\n    \"trigger_type\": \"new_review\",\n    \"languages\": [\"en\", \"es\"],\n    \"auto_translate\": true,\n    \"rating_filters\": [1, 2, 3],\n    \"sentiment_filters\": [\"negative\"],\n    \"condition_filters\": {\"logic\": \"and\", \"rules\": [{\"field\": \"platforms\", \"operator\": \"contains\", \"value\": [\"g2\"]}]},\n    \"notification_frequency\": \"instant\",\n    \"read_status\": \"all\",\n    \"is_active\": true,\n    \"channels\": [],\n    \"projects\": [],\n    \"created_at\": \"2025-12-31T12:00:00.000000Z\",\n    \"updated_at\": \"2025-12-31T12:00:00.000000Z\"\n  }\n]",
                            "name": ""
                        }
                    ]
                },
                {
                    "name": "Create Notification",
                    "request": {
                        "url": {
                            "host": "{{baseUrl}}",
                            "path": "api\/notifications",
                            "query": [],
                            "raw": "{{baseUrl}}\/api\/notifications"
                        },
                        "method": "POST",
                        "header": [
                            {
                                "key": "Content-Type",
                                "value": "application\/json"
                            },
                            {
                                "key": "Accept",
                                "value": "application\/json"
                            }
                        ],
                        "body": {
                            "mode": "raw",
                            "raw": "{\"name\":\"Daily Review Alerts\",\"trigger_type\":\"new_review\",\"is_active\":true,\"languages\":[\"en\",\"es\",\"fr\",\"de\"],\"auto_translate\":true,\"rating_filters\":[1,2,3,4,5],\"sentiment_filters\":[\"positive\",\"neutral\",\"negative\"],\"keyword\":[\"ai\",\"support\"],\"content_type\":\"post\",\"notification_frequency\":\"instant\",\"read_status\":\"all\",\"condition_filters\":{\"logic\":\"and\",\"rules\":[{\"field\":\"platforms\",\"operator\":\"contains\",\"value\":\"[\\\"g2\\\", \\\"capterra\\\"]\",\"logic\":\"or\",\"rules\":[[]]}]},\"channels\":[{\"channel_type\":\"slack\",\"is_active\":true,\"config\":{\"channel_names\":[\"alerts\",\"incidents\"],\"channel_url\":\"https:\\\/\\\/hooks.slack.com\\\/services\\\/xxx\",\"recipients\":[\"alerts@company.com\"],\"template\":\"review\",\"url\":\"https:\\\/\\\/your-server.com\\\/webhook\\\/notifications\",\"webhook_url\":\"http:\\\/\\\/www.bailey.biz\\\/quos-velit-et-fugiat-sunt-nihil-accusantium-harum.html\"}}],\"projects\":[{\"project_uuid\":\"5f1812b1-15f7-432d-996a-9ab5cfbe01d6\",\"is_active\":true,\"platforms\":{\"review\":[\"g2\",\"capterra\",\"product_hunt\",\"google_play\"],\"social\":[\"reddit\",\"hackernews\",\"linkedin\"]},\"product_logo\":\"https:\\\/\\\/cdn.example.com\\\/logo.png\"}]}"
                        },
                        "description": "Create a new notification rule with channels and project mappings."
                    },
                    "response": [
                        {
                            "header": [],
                            "code": 201,
                            "body": "{\n  \"message\": \"Notification created successfully.\",\n  \"data\": {\n    \"uuid\": \"770e8400-e29b-41d4-a716-446655440000\",\n    \"name\": \"Daily Review Alerts\",\n    \"trigger_type\": \"new_review\",\n    \"languages\": [\"en\", \"es\"],\n    \"auto_translate\": true,\n    \"rating_filters\": [1, 2, 3, 4, 5],\n    \"sentiment_filters\": [\"positive\", \"neutral\", \"negative\"],\n    \"condition_filters\": {\n      \"logic\": \"and\",\n      \"rules\": [\n        {\"field\": \"platforms\", \"operator\": \"contains\", \"value\": [\"g2\", \"capterra\"]},\n        {\"field\": \"sentiment\", \"operator\": \"contains\", \"value\": [\"negative\"]}\n      ]\n    },\n    \"notification_frequency\": \"instant\",\n    \"read_status\": \"unread\",\n    \"keyword\": null,\n    \"content_type\": \"post\",\n    \"is_active\": true,\n    \"channels\": [\n      {\n        \"uuid\": \"880e8400-e29b-41d4-a716-446655440001\",\n        \"channel_type\": \"slack\",\n        \"is_active\": true,\n        \"config\": {\n          \"channel_names\": [\"alerts\", \"incidents\"],\n          \"channel_url\": \"https:\/\/hooks.slack.com\/services\/xxx\",\n          \"recipients\": [\"alerts@company.com\"],\n          \"url\": \"https:\/\/your-server.com\/webhook\/notifications\"\n        }\n      }\n    ],\n    \"projects\": [\n      {\n        \"uuid\": \"990e8400-e29b-41d4-a716-446655440002\",\n        \"project_uuid\": \"5f1812b1-15f7-432d-996a-9ab5cfbe01d6\",\n        \"project_name\": \"Acme App\",\n        \"is_active\": true,\n        \"product_logo\": \"https:\/\/cdn.example.com\/logo.png\",\n        \"platforms\": {\"review\": [\"g2\", \"capterra\"], \"social\": [\"reddit\"]}\n      }\n    ],\n    \"created_at\": \"2025-12-31T12:00:00.000000Z\",\n    \"updated_at\": \"2025-12-31T12:00:00.000000Z\"\n  }\n}",
                            "name": "Success"
                        },
                        {
                            "header": [],
                            "code": 422,
                            "body": "{\n  \"message\": \"The name field is required. (and 2 more errors)\",\n  \"errors\": {\n    \"name\": [\"The name field is required.\"],\n    \"channels\": [\"At least one channel is required.\"],\n    \"projects\": [\"Select at least one brand.\"]\n  }\n}",
                            "name": "Validation Error"
                        }
                    ]
                },
                {
                    "name": "Get Notification",
                    "request": {
                        "url": {
                            "host": "{{baseUrl}}",
                            "path": "api\/notifications\/:uuid",
                            "query": [],
                            "raw": "{{baseUrl}}\/api\/notifications\/:uuid",
                            "variable": [
                                {
                                    "id": "uuid",
                                    "key": "uuid",
                                    "value": "770e8400-e29b-41d4-a716-446655440000",
                                    "description": "The notification UUID."
                                }
                            ]
                        },
                        "method": "GET",
                        "header": [
                            {
                                "key": "Content-Type",
                                "value": "application\/json"
                            },
                            {
                                "key": "Accept",
                                "value": "application\/json"
                            }
                        ],
                        "body": null,
                        "description": "Get details of a specific notification."
                    },
                    "response": [
                        {
                            "header": [],
                            "code": 200,
                            "body": "{\n  \"uuid\": \"770e8400-e29b-41d4-a716-446655440000\",\n  \"name\": \"Daily Review Alerts\",\n  \"trigger_type\": \"new_review\",\n  \"languages\": [\"en\", \"es\"],\n  \"auto_translate\": true,\n  \"rating_filters\": [1, 2, 3],\n  \"sentiment_filters\": [\"negative\"],\n  \"condition_filters\": {\"logic\": \"and\", \"rules\": [{\"field\": \"platforms\", \"operator\": \"contains\", \"value\": [\"g2\"]}]},\n  \"notification_frequency\": \"instant\",\n  \"read_status\": \"all\",\n  \"keyword\": null,\n  \"is_active\": true,\n  \"channels\": [],\n  \"projects\": [],\n  \"created_at\": \"2025-12-31T12:00:00.000000Z\",\n  \"updated_at\": \"2025-12-31T12:00:00.000000Z\"\n}",
                            "name": ""
                        }
                    ]
                },
                {
                    "name": "Update Notification",
                    "request": {
                        "url": {
                            "host": "{{baseUrl}}",
                            "path": "api\/notifications\/:uuid",
                            "query": [],
                            "raw": "{{baseUrl}}\/api\/notifications\/:uuid",
                            "variable": [
                                {
                                    "id": "uuid",
                                    "key": "uuid",
                                    "value": "770e8400-e29b-41d4-a716-446655440000",
                                    "description": "The notification UUID."
                                }
                            ]
                        },
                        "method": "PUT",
                        "header": [
                            {
                                "key": "Content-Type",
                                "value": "application\/json"
                            },
                            {
                                "key": "Accept",
                                "value": "application\/json"
                            }
                        ],
                        "body": {
                            "mode": "raw",
                            "raw": "{\"name\":\"Daily Review Alerts\",\"trigger_type\":\"new_review\",\"is_active\":true,\"languages\":[\"en\",\"es\",\"fr\",\"de\"],\"auto_translate\":true,\"rating_filters\":[1,2,3,4,5],\"sentiment_filters\":[\"positive\",\"neutral\",\"negative\"],\"keyword\":[\"ai\",\"support\"],\"content_type\":\"post\",\"notification_frequency\":\"instant\",\"read_status\":\"all\",\"condition_filters\":{\"logic\":\"and\",\"rules\":[{\"field\":\"platforms\",\"operator\":\"contains\",\"value\":\"[\\\"g2\\\", \\\"capterra\\\"]\"}]},\"channels\":[{\"channel_type\":\"slack\",\"is_active\":true,\"config\":{\"channel_names\":[\"alerts\",\"incidents\"],\"channel_url\":\"https:\\\/\\\/hooks.slack.com\\\/services\\\/xxx\",\"recipients\":[\"alerts@company.com\"],\"template\":\"review\",\"url\":\"https:\\\/\\\/your-server.com\\\/webhook\\\/notifications\",\"webhook_url\":\"http:\\\/\\\/www.bailey.biz\\\/quos-velit-et-fugiat-sunt-nihil-accusantium-harum.html\"}}],\"projects\":[{\"project_uuid\":\"5f1812b1-15f7-432d-996a-9ab5cfbe01d6\",\"is_active\":true,\"platforms\":{\"review\":[\"app_store\"],\"social\":[\"reddit\"]},\"product_logo\":\"g\"}]}"
                        },
                        "description": "Update an existing notification rule with channels and project mappings."
                    },
                    "response": [
                        {
                            "header": [],
                            "code": 200,
                            "body": "{\n  \"message\": \"Notification updated successfully.\",\n  \"data\": {\n    \"uuid\": \"770e8400-e29b-41d4-a716-446655440000\",\n    \"name\": \"Updated Review Alerts\",\n    \"trigger_type\": \"new_review\",\n    \"languages\": [\"en\"],\n    \"auto_translate\": false,\n    \"rating_filters\": [1, 2],\n    \"sentiment_filters\": [\"negative\"],\n    \"condition_filters\": {\"logic\": \"and\", \"rules\": [{\"field\": \"sentiment\", \"operator\": \"contains\", \"value\": [\"negative\"]}]},\n    \"notification_frequency\": \"daily\",\n    \"read_status\": \"unread\",\n    \"keyword\": null,\n    \"content_type\": \"comment\",\n    \"is_active\": true,\n    \"channels\": [],\n    \"projects\": [],\n    \"created_at\": \"2025-12-31T12:00:00.000000Z\",\n    \"updated_at\": \"2025-12-31T13:00:00.000000Z\"\n  }\n}",
                            "name": "Success"
                        },
                        {
                            "header": [],
                            "code": 404,
                            "body": "{\n  \"message\": \"Notification not found.\"\n}",
                            "name": "Not Found"
                        }
                    ]
                },
                {
                    "name": "Delete Notification",
                    "request": {
                        "url": {
                            "host": "{{baseUrl}}",
                            "path": "api\/notifications\/:uuid",
                            "query": [],
                            "raw": "{{baseUrl}}\/api\/notifications\/:uuid",
                            "variable": [
                                {
                                    "id": "uuid",
                                    "key": "uuid",
                                    "value": "770e8400-e29b-41d4-a716-446655440000",
                                    "description": "The notification UUID."
                                }
                            ]
                        },
                        "method": "DELETE",
                        "header": [
                            {
                                "key": "Content-Type",
                                "value": "application\/json"
                            },
                            {
                                "key": "Accept",
                                "value": "application\/json"
                            }
                        ],
                        "body": null,
                        "description": "Delete a notification and all associated channels and project mappings."
                    },
                    "response": [
                        {
                            "header": [],
                            "code": 200,
                            "body": "{\"message\": \"Notification deleted successfully.\"}",
                            "name": ""
                        },
                        {
                            "header": [],
                            "code": 404,
                            "body": "{\"message\": \"Notification not found.\"}",
                            "name": ""
                        }
                    ]
                }
            ]
        },
        {
            "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\",\"review_platforms\":{\"g2\":{\"enabled\":true,\"url\":\"https:\\\/\\\/g2.com\\\/products\\\/acme\"},\"capterra\":{\"enabled\":false,\"url\":null}},\"reddit_keywords\":[\"acme\",\"acme crm\"],\"reddit_brand_name\":\"Acme\",\"negative_keywords\":[\"spam\",\"competitor\"]}"
                        },
                        "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    },\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      \"review_platforms\": {},\n      \"reddit_keywords\": [\"acme\", \"acme crm\"],\n      \"negative_keywords\": [],\n      \"reddit_brand_name\": \"Acme\"\n    },\n    \"scraper_sync\": {\n      \"success\": true,\n      \"synced_platforms\": [\"g2\", \"capterra\"],\n      \"errors\": []\n    },\n    \"brand_sync\": {\n      \"success\": true,\n      \"brand_id\": \"12345\",\n      \"error\": null\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\",\"review_platforms\":{\"g2\":{\"enabled\":true,\"url\":\"https:\\\/\\\/g2.com\\\/products\\\/acme\"},\"capterra\":{\"enabled\":false,\"url\":null}},\"reddit_keywords\":[\"acme\",\"acme crm\"],\"reddit_brand_name\":\"Acme\",\"negative_keywords\":[\"spam\",\"competitor\"]}"
                        },
                        "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    },\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      \"review_platforms\": {},\n      \"reddit_keywords\": [\"acme\", \"acme crm\"],\n      \"negative_keywords\": [],\n      \"reddit_brand_name\": \"Acme\"\n    },\n    \"scraper_sync\": {\n      \"success\": true,\n      \"synced_platforms\": [\"g2\", \"capterra\"],\n      \"errors\": []\n    },\n    \"brand_sync\": {\n      \"success\": true,\n      \"brand_id\": \"12345\",\n      \"error\": null\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": "Search Platform URLs",
                    "request": {
                        "url": {
                            "host": "{{baseUrl}}",
                            "path": "api\/platform-urls",
                            "query": [],
                            "raw": "{{baseUrl}}\/api\/platform-urls"
                        },
                        "method": "POST",
                        "header": [
                            {
                                "key": "Content-Type",
                                "value": "application\/json"
                            },
                            {
                                "key": "Accept",
                                "value": "application\/json"
                            }
                        ],
                        "body": {
                            "mode": "raw",
                            "raw": "{\"product_name\":\"Slack\",\"product_website\":\"https:\\\/\\\/slack.com\",\"platform\":\"g2\"}"
                        },
                        "description": "Search for a product's listing pages across multiple review platforms using Perplexity AI-powered web search.\nEach URL is validated and assigned a status: valid, invalid, or needs_review."
                    },
                    "response": [
                        {
                            "header": [],
                            "code": 200,
                            "body": "{\n  \"product_name\": \"Slack\",\n  \"product_website\": \"https:\/\/slack.com\",\n  \"reviews\": {\n    \"g2\": {\"url\": \"https:\/\/www.g2.com\/products\/slack\/reviews\", \"status\": \"valid\"},\n    \"capterra\": {\"url\": \"https:\/\/www.capterra.com\/p\/135003\/Slack\/\", \"status\": \"valid\"},\n    \"software_advice\": {\"url\": \"https:\/\/www.softwareadvice.com\/team-communication\/slack-profile\/\", \"status\": \"needs_review\"},\n    \"trustpilot\": {\"url\": \"https:\/\/www.trustpilot.com\/review\/slack.com\", \"status\": \"valid\"},\n    \"omr_reviews\": {\"url\": \"https:\/\/omr.com\/reviews\/product\/slack\", \"status\": \"valid\"},\n    \"clutch\": {\"url\": null, \"status\": \"invalid\"},\n    \"sourceforge\": {\"url\": \"https:\/\/sourceforge.net\/software\/product\/Slack\/\", \"status\": \"valid\"},\n    \"product_hunt\": {\"url\": \"https:\/\/www.producthunt.com\/products\/slack\", \"status\": \"valid\"},\n    \"hubspot_directory\": {\"url\": null, \"status\": \"invalid\"},\n    \"goodfirms\": {\"url\": \"https:\/\/www.goodfirms.co\/software\/slack\", \"status\": \"valid\"},\n    \"chrome_web_store\": {\"url\": null, \"status\": \"invalid\"},\n    \"google_workspace_marketplace\": {\"url\": \"https:\/\/workspace.google.com\/marketplace\/app\/slack\/429783454934\", \"status\": \"needs_review\"},\n    \"app_store\": {\"url\": null, \"status\": \"invalid\"},\n    \"play_store\": {\"url\": null, \"status\": \"invalid\"},\n    \"subscribed_fyi\": {\"url\": \"https:\/\/subscribed.fyi\/slack\/reviews\/\", \"status\": \"valid\"}\n  }\n}",
                            "name": "All platforms"
                        },
                        {
                            "header": [],
                            "code": 200,
                            "body": "{\n  \"product_name\": \"Slack\",\n  \"product_website\": \"https:\/\/slack.com\",\n  \"reviews\": {\n    \"g2\": {\"url\": \"https:\/\/www.g2.com\/products\/slack\/reviews\", \"status\": \"valid\"}\n  }\n}",
                            "name": "Filtered by platform"
                        },
                        {
                            "header": [],
                            "code": 422,
                            "body": "{\n  \"message\": \"The product name field is required.\",\n  \"errors\": {\n    \"product_name\": [\"The product name field is required.\"]\n  }\n}",
                            "name": "Validation error"
                        }
                    ]
                },
                {
                    "name": "Generate Reddit Keywords",
                    "request": {
                        "url": {
                            "host": "{{baseUrl}}",
                            "path": "api\/reddit-keywords",
                            "query": [],
                            "raw": "{{baseUrl}}\/api\/reddit-keywords"
                        },
                        "method": "POST",
                        "header": [
                            {
                                "key": "Content-Type",
                                "value": "application\/json"
                            },
                            {
                                "key": "Accept",
                                "value": "application\/json"
                            }
                        ],
                        "body": {
                            "mode": "raw",
                            "raw": "{\"brand_name\":\"Salesforce\"}"
                        },
                        "description": "Generate commonly used variations of a brand name for Reddit tracking, including misspellings, abbreviations, and nicknames."
                    },
                    "response": [
                        {
                            "header": [],
                            "code": 200,
                            "body": "{\n  \"brand_name\": \"Salesforce\",\n  \"top_variations\": {\n    \"exact\": \"Salesforce\",\n    \"misspellings\": [\"Salesfoce\", \"Salseforce\", \"Saleforce\"],\n    \"abbreviations\": [\"SF\", \"SFDC\"],\n    \"nicknames\": [\"The Force\", \"SF CRM\", \"Sales Cloud\"]\n  }\n}",
                            "name": ""
                        },
                        {
                            "header": [],
                            "code": 422,
                            "body": "{\n  \"message\": \"The brand name field is required.\",\n  \"errors\": {\n    \"brand_name\": [\"The brand name field is required.\"]\n  }\n}",
                            "name": "Validation error"
                        }
                    ]
                }
            ]
        },
        {
            "name": "Organisations",
            "description": "\nAPIs for managing organisations",
            "item": [
                {
                    "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\"}"
                        },
                        "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": "f0b83e11-6966-41a5-af34-d2a46e243d4c",
                                    "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": "f0b83e11-6966-41a5-af34-d2a46e243d4c",
                                    "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\"}"
                        },
                        "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": "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": "f0b83e11-6966-41a5-af34-d2a46e243d4c",
                                    "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": "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": "Create Claim Profile (External)",
                            "request": {
                                "url": {
                                    "host": "{{baseUrl}}",
                                    "path": "api\/external\/claim-profiles",
                                    "query": [],
                                    "raw": "{{baseUrl}}\/api\/external\/claim-profiles"
                                },
                                "method": "POST",
                                "header": [
                                    {
                                        "key": "Content-Type",
                                        "value": "application\/json"
                                    },
                                    {
                                        "key": "Accept",
                                        "value": "application\/json"
                                    }
                                ],
                                "body": {
                                    "mode": "raw",
                                    "raw": "{\"scraper_product_id\":123,\"product_name\":\"Lovable\",\"product_url\":\"https:\\\/\\\/lovable.dev\",\"business_email\":\"john@company.com\",\"job_title\":\"Product Manager\",\"business_phone\":\"+1234567890\",\"is_verified\":true}"
                                },
                                "description": "Create a new claim profile from an external website. This endpoint does not require\nuser authentication but requires a valid external API key.",
                                "auth": {
                                    "type": "noauth"
                                }
                            },
                            "response": [
                                {
                                    "header": [],
                                    "code": 201,
                                    "body": "{\n  \"message\": \"Claim profile submitted successfully.\",\n  \"data\": {\n    \"uuid\": \"880e8400-e29b-41d4-a716-446655440000\",\n    \"product_name\": \"Lovable\",\n    \"business_email\": \"john@company.com\",\n    \"status\": \"pending\",\n    \"is_verified\": false\n  }\n}",
                                    "name": "Success"
                                },
                                {
                                    "header": [],
                                    "code": 401,
                                    "body": "{\n  \"message\": \"Unauthorized.\"\n}",
                                    "name": "Unauthorized"
                                },
                                {
                                    "header": [],
                                    "code": 422,
                                    "body": "{\n  \"message\": \"The business email is required.\",\n  \"errors\": {\n    \"business_email\": [\"The business email is required.\"]\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": "f0b83e11-6966-41a5-af34-d2a46e243d4c",
                                    "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      \"review_platforms\": {\n        \"g2\": {\"enabled\": true, \"url\": \"https:\/\/g2.com\/products\/acme\"}\n      },\n      \"reddit_keywords\": [\"acme\", \"acme app\"],\n      \"negative_keywords\": [],\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": "f0b83e11-6966-41a5-af34-d2a46e243d4c",
                                    "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\",\"review_platforms\":{\"g2\":{\"enabled\":true,\"url\":\"https:\\\/\\\/g2.com\\\/products\\\/acme\"},\"capterra\":{\"enabled\":false,\"url\":null}},\"reddit_keywords\":[\"acme\",\"acme app\"],\"reddit_brand_name\":\"Acme\",\"social_platform\":{\"twitter\":{\"enabled\":true,\"url\":\"https:\\\/\\\/twitter.com\\\/acme\"}},\"is_competitor\":false,\"negative_keywords\":[\"spam\",\"competitor\"]}"
                        },
                        "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    \"review_platforms\": {},\n    \"reddit_keywords\": [\"acme\"],\n    \"negative_keywords\": [],\n    \"reddit_brand_name\": \"Acme\",\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": "f0b83e11-6966-41a5-af34-d2a46e243d4c",
                                    "description": ""
                                },
                                {
                                    "id": "uuid",
                                    "key": "uuid",
                                    "value": "71c8d0ac-1e01-4314-a2aa-2b7ae81af80b",
                                    "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    \"review_platforms\": {\n      \"g2\": {\"enabled\": true, \"url\": \"https:\/\/g2.com\/products\/acme\"}\n    },\n    \"reddit_keywords\": [\"acme\", \"acme app\"],\n    \"negative_keywords\": [],\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": "f0b83e11-6966-41a5-af34-d2a46e243d4c",
                                    "description": ""
                                },
                                {
                                    "id": "uuid",
                                    "key": "uuid",
                                    "value": "71c8d0ac-1e01-4314-a2aa-2b7ae81af80b",
                                    "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\",\"review_platforms\":{\"g2\":{\"enabled\":true,\"url\":\"https:\\\/\\\/g2.com\\\/products\\\/acme\"},\"capterra\":{\"enabled\":false,\"url\":null}},\"reddit_keywords\":[\"acme\",\"acme pro\"],\"reddit_brand_name\":\"Acme\",\"social_platform\":{\"twitter\":{\"enabled\":true,\"url\":\"https:\\\/\\\/twitter.com\\\/acme\"}},\"is_competitor\":false,\"negative_keywords\":[\"spam\",\"competitor\"]}"
                        },
                        "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    \"review_platforms\": {},\n    \"reddit_keywords\": [\"acme\", \"acme pro\"],\n    \"negative_keywords\": [],\n    \"reddit_brand_name\": \"Acme\",\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": "f0b83e11-6966-41a5-af34-d2a46e243d4c",
                                    "description": ""
                                },
                                {
                                    "id": "uuid",
                                    "key": "uuid",
                                    "value": "71c8d0ac-1e01-4314-a2aa-2b7ae81af80b",
                                    "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": "Read status (reviews and mentions)",
            "description": "\nMark and check read status per project using scraper identity (platform + scraper id).\nFrontend uses scraper API directly; these endpoints store and return read state by project.\nIdentifiers match the scraper API: use `data[].id` as scraper_review_id\/scraper_post_id and `data[].platform` as platform.",
            "item": [
                {
                    "name": "Mark a review as read for a project",
                    "request": {
                        "url": {
                            "host": "{{baseUrl}}",
                            "path": "api\/organisations\/:organisation_uuid\/reviews\/read",
                            "query": [],
                            "raw": "{{baseUrl}}\/api\/organisations\/:organisation_uuid\/reviews\/read",
                            "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": "{\"project_uuid\":\"550e8400-e29b-41d4-a716-446655440002\",\"platform\":\"G2\",\"scraper_review_id\":987654}"
                        },
                        "description": "Store that a review (identified by platform + scraper_review_id from the scraper API) is read for the given project."
                    },
                    "response": [
                        {
                            "header": [],
                            "code": 200,
                            "body": "{\"message\": \"Review marked as read.\"}",
                            "name": ""
                        },
                        {
                            "header": [],
                            "code": 403,
                            "body": "{\"message\": \"You do not have access to this organisation.\"}",
                            "name": ""
                        },
                        {
                            "header": [],
                            "code": 403,
                            "body": "{\"message\": \"You do not have access to this project.\"}",
                            "name": ""
                        },
                        {
                            "header": [],
                            "code": 404,
                            "body": "{\"message\": \"Organisation not found.\"}",
                            "name": ""
                        }
                    ]
                },
                {
                    "name": "Get read status for a review",
                    "request": {
                        "url": {
                            "host": "{{baseUrl}}",
                            "path": "api\/organisations\/:organisation_uuid\/reviews\/read-status",
                            "query": [
                                {
                                    "key": "project_uuid",
                                    "value": "550e8400-e29b-41d4-a716-446655440002",
                                    "description": "The project UUID.",
                                    "disabled": false
                                },
                                {
                                    "key": "platform",
                                    "value": "G2",
                                    "description": "Platform from scraper (e.g. G2).",
                                    "disabled": false
                                },
                                {
                                    "key": "scraper_review_id",
                                    "value": "987654",
                                    "description": "The review id from scraper API data[].id.",
                                    "disabled": false
                                }
                            ],
                            "raw": "{{baseUrl}}\/api\/organisations\/:organisation_uuid\/reviews\/read-status?project_uuid=550e8400-e29b-41d4-a716-446655440002&platform=G2&scraper_review_id=987654",
                            "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": {
                            "mode": "raw",
                            "raw": "{\"project_uuid\":\"6ff8f7f6-1eb3-3525-be4a-3932c805afed\",\"platform\":\"g\",\"scraper_review_id\":66}"
                        },
                        "description": "Check whether a review (identified by platform + scraper_review_id) is marked as read for the given project."
                    },
                    "response": [
                        {
                            "header": [],
                            "code": 200,
                            "body": "{\"read\": true}",
                            "name": ""
                        },
                        {
                            "header": [],
                            "code": 200,
                            "body": "{\"read\": false}",
                            "name": ""
                        },
                        {
                            "header": [],
                            "code": 403,
                            "body": "{\"message\": \"You do not have access to this organisation.\"}",
                            "name": ""
                        },
                        {
                            "header": [],
                            "code": 403,
                            "body": "{\"message\": \"You do not have access to this project.\"}",
                            "name": ""
                        },
                        {
                            "header": [],
                            "code": 404,
                            "body": "{\"message\": \"Organisation not found.\"}",
                            "name": ""
                        },
                        {
                            "header": [],
                            "code": 404,
                            "body": "{\"message\": \"Project not found.\"}",
                            "name": ""
                        }
                    ]
                },
                {
                    "name": "Get list of read review IDs for multiple projects",
                    "request": {
                        "url": {
                            "host": "{{baseUrl}}",
                            "path": "api\/organisations\/:organisation_uuid\/reviews\/read-ids",
                            "query": [
                                {
                                    "key": "project_uuids[0]",
                                    "value": "550e8400-e29b-41d4-a716-446655440002",
                                    "description": "Array of project UUIDs.",
                                    "disabled": false
                                },
                                {
                                    "key": "project_uuids[1]",
                                    "value": "660e8400-e29b-41d4-a716-446655440003",
                                    "description": "Array of project UUIDs.",
                                    "disabled": false
                                },
                                {
                                    "key": "project_uuids%5B%5D",
                                    "value": "550e8400-e29b-41d4-a716-446655440002",
                                    "description": "A project UUID (must belong to the organisation).",
                                    "disabled": false
                                },
                                {
                                    "key": "platform",
                                    "value": "G2",
                                    "description": "optional Filter by platform. If omitted, returns all read review IDs per project.",
                                    "disabled": false
                                }
                            ],
                            "raw": "{{baseUrl}}\/api\/organisations\/:organisation_uuid\/reviews\/read-ids?project_uuids[0]=550e8400-e29b-41d4-a716-446655440002&project_uuids[1]=660e8400-e29b-41d4-a716-446655440003&project_uuids%5B%5D=550e8400-e29b-41d4-a716-446655440002&platform=G2",
                            "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": {
                            "mode": "raw",
                            "raw": "{\"project_uuids\":[\"6ff8f7f6-1eb3-3525-be4a-3932c805afed\"],\"platform\":\"g\"}"
                        },
                        "description": "Returns scraper review IDs (data[].id) per project. Use with optional platform filter.\nFrontend can map by project_uuid to show read\/unread state per brand."
                    },
                    "response": [
                        {
                            "header": [],
                            "code": 200,
                            "body": "{\"data\": [{\"project_uuid\": \"550e8400-e29b-41d4-a716-446655440002\", \"scraper_review_ids\": [987654, 987655]}, {\"project_uuid\": \"660e8400-e29b-41d4-a716-446655440003\", \"scraper_review_ids\": []}]}",
                            "name": ""
                        },
                        {
                            "header": [],
                            "code": 403,
                            "body": "{\"message\": \"You do not have access to this organisation.\"}",
                            "name": ""
                        },
                        {
                            "header": [],
                            "code": 403,
                            "body": "{\"message\": \"You do not have access to one or more projects.\"}",
                            "name": ""
                        },
                        {
                            "header": [],
                            "code": 404,
                            "body": "{\"message\": \"Organisation not found.\"}",
                            "name": ""
                        },
                        {
                            "header": [],
                            "code": 404,
                            "body": "{\"message\": \"One or more projects not found.\"}",
                            "name": ""
                        }
                    ]
                },
                {
                    "name": "Mark a mention as read for a project",
                    "request": {
                        "url": {
                            "host": "{{baseUrl}}",
                            "path": "api\/organisations\/:organisation_uuid\/social\/read",
                            "query": [],
                            "raw": "{{baseUrl}}\/api\/organisations\/:organisation_uuid\/social\/read",
                            "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": "{\"project_uuid\":\"550e8400-e29b-41d4-a716-446655440002\",\"platform\":\"reddit\",\"scraper_post_id\":98765}"
                        },
                        "description": "Store that a mention\/social post (identified by platform + scraper_post_id from the scraper API) is read for the given project."
                    },
                    "response": [
                        {
                            "header": [],
                            "code": 200,
                            "body": "{\"message\": \"Mention marked as read.\"}",
                            "name": ""
                        },
                        {
                            "header": [],
                            "code": 403,
                            "body": "{\"message\": \"You do not have access to this organisation.\"}",
                            "name": ""
                        },
                        {
                            "header": [],
                            "code": 403,
                            "body": "{\"message\": \"You do not have access to this project.\"}",
                            "name": ""
                        },
                        {
                            "header": [],
                            "code": 404,
                            "body": "{\"message\": \"Organisation not found.\"}",
                            "name": ""
                        }
                    ]
                },
                {
                    "name": "Get read status for a mention",
                    "request": {
                        "url": {
                            "host": "{{baseUrl}}",
                            "path": "api\/organisations\/:organisation_uuid\/social\/read-status",
                            "query": [
                                {
                                    "key": "project_uuid",
                                    "value": "550e8400-e29b-41d4-a716-446655440002",
                                    "description": "The project UUID.",
                                    "disabled": false
                                },
                                {
                                    "key": "platform",
                                    "value": "reddit",
                                    "description": "Platform from scraper (e.g. reddit).",
                                    "disabled": false
                                },
                                {
                                    "key": "scraper_post_id",
                                    "value": "98765",
                                    "description": "The post id from scraper API data[].id.",
                                    "disabled": false
                                }
                            ],
                            "raw": "{{baseUrl}}\/api\/organisations\/:organisation_uuid\/social\/read-status?project_uuid=550e8400-e29b-41d4-a716-446655440002&platform=reddit&scraper_post_id=98765",
                            "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": {
                            "mode": "raw",
                            "raw": "{\"project_uuid\":\"6ff8f7f6-1eb3-3525-be4a-3932c805afed\",\"platform\":\"g\",\"scraper_post_id\":66}"
                        },
                        "description": "Check whether a mention (identified by platform + scraper_post_id) is marked as read for the given project."
                    },
                    "response": [
                        {
                            "header": [],
                            "code": 200,
                            "body": "{\"read\": true}",
                            "name": ""
                        },
                        {
                            "header": [],
                            "code": 200,
                            "body": "{\"read\": false}",
                            "name": ""
                        },
                        {
                            "header": [],
                            "code": 403,
                            "body": "{\"message\": \"You do not have access to this organisation.\"}",
                            "name": ""
                        },
                        {
                            "header": [],
                            "code": 403,
                            "body": "{\"message\": \"You do not have access to this project.\"}",
                            "name": ""
                        },
                        {
                            "header": [],
                            "code": 404,
                            "body": "{\"message\": \"Organisation not found.\"}",
                            "name": ""
                        },
                        {
                            "header": [],
                            "code": 404,
                            "body": "{\"message\": \"Project not found.\"}",
                            "name": ""
                        }
                    ]
                },
                {
                    "name": "Get list of read mention IDs for multiple projects",
                    "request": {
                        "url": {
                            "host": "{{baseUrl}}",
                            "path": "api\/organisations\/:organisation_uuid\/social\/read-ids",
                            "query": [
                                {
                                    "key": "project_uuids[0]",
                                    "value": "550e8400-e29b-41d4-a716-446655440002",
                                    "description": "Array of project UUIDs.",
                                    "disabled": false
                                },
                                {
                                    "key": "project_uuids[1]",
                                    "value": "660e8400-e29b-41d4-a716-446655440003",
                                    "description": "Array of project UUIDs.",
                                    "disabled": false
                                },
                                {
                                    "key": "project_uuids%5B%5D",
                                    "value": "550e8400-e29b-41d4-a716-446655440002",
                                    "description": "A project UUID (must belong to the organisation).",
                                    "disabled": false
                                },
                                {
                                    "key": "platform",
                                    "value": "reddit",
                                    "description": "optional Filter by platform. If omitted, returns all read post IDs per project.",
                                    "disabled": false
                                }
                            ],
                            "raw": "{{baseUrl}}\/api\/organisations\/:organisation_uuid\/social\/read-ids?project_uuids[0]=550e8400-e29b-41d4-a716-446655440002&project_uuids[1]=660e8400-e29b-41d4-a716-446655440003&project_uuids%5B%5D=550e8400-e29b-41d4-a716-446655440002&platform=reddit",
                            "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": {
                            "mode": "raw",
                            "raw": "{\"project_uuids\":[\"6ff8f7f6-1eb3-3525-be4a-3932c805afed\"],\"platform\":\"g\"}"
                        },
                        "description": "Returns scraper post IDs (data[].id) per project. Use with optional platform filter.\nFrontend can map by project_uuid to show read\/unread state per brand."
                    },
                    "response": [
                        {
                            "header": [],
                            "code": 200,
                            "body": "{\"data\": [{\"project_uuid\": \"550e8400-e29b-41d4-a716-446655440002\", \"scraper_post_ids\": [98765, 98766]}, {\"project_uuid\": \"660e8400-e29b-41d4-a716-446655440003\", \"scraper_post_ids\": []}]}",
                            "name": ""
                        },
                        {
                            "header": [],
                            "code": 403,
                            "body": "{\"message\": \"You do not have access to this organisation.\"}",
                            "name": ""
                        },
                        {
                            "header": [],
                            "code": 403,
                            "body": "{\"message\": \"You do not have access to one or more projects.\"}",
                            "name": ""
                        },
                        {
                            "header": [],
                            "code": 404,
                            "body": "{\"message\": \"Organisation not found.\"}",
                            "name": ""
                        },
                        {
                            "header": [],
                            "code": 404,
                            "body": "{\"message\": \"One or more projects not found.\"}",
                            "name": ""
                        }
                    ]
                }
            ]
        },
        {
            "name": "Review Views",
            "description": "\nAPIs for managing saved review filter views (organization-scoped).",
            "item": [
                {
                    "name": "Get All Review Views",
                    "request": {
                        "url": {
                            "host": "{{baseUrl}}",
                            "path": "api\/organisations\/:organisation_uuid\/review-views",
                            "query": [],
                            "raw": "{{baseUrl}}\/api\/organisations\/:organisation_uuid\/review-views",
                            "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": "List all saved review views for the authenticated user in a specific organisation.\nViews are ordered by sort_order and creation date."
                    },
                    "response": [
                        {
                            "header": [],
                            "code": 200,
                            "body": "{\n  \"data\": [\n    {\n      \"uuid\": \"a1b2c3d4-...\",\n      \"name\": \"Critical Reviews\",\n      \"sort_order\": 0,\n      \"filters\": {\n        \"brands\": [\"uuid-1\", \"uuid-2\"],\n        \"platforms\": [\"G2\", \"Capterra\"],\n        \"rating_buckets\": [\"1.0-1.9\", \"2.0-2.9\"],\n        \"date_range\": {\"type\": \"preset\", \"value\": \"last_3_months\"}\n      },\n      \"created_at\": \"2026-01-15T10:30:00.000Z\",\n      \"updated_at\": \"2026-01-20T14:22:00.000Z\"\n    }\n  ]\n}",
                            "name": ""
                        }
                    ]
                },
                {
                    "name": "Create Review View",
                    "request": {
                        "url": {
                            "host": "{{baseUrl}}",
                            "path": "api\/organisations\/:organisation_uuid\/review-views",
                            "query": [],
                            "raw": "{{baseUrl}}\/api\/organisations\/:organisation_uuid\/review-views",
                            "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\":\"High Priority Reviews\",\"filters\":{\"platforms\":[\"G2\"],\"rating_buckets\":[\"1.0-1.9\"],\"brands\":[\"uuid-1\",\"uuid-2\"],\"date_range\":{\"type\":\"preset\",\"value\":\"last_3_months\"},\"date_range_custom\":{\"start\":\"2026-01-01\",\"end\":\"2026-01-24\"},\"languages\":[\"en\",\"de\",\"es\"],\"read_status\":\"unread\",\"search\":\"customer support\",\"sort_by\":\"creation_date\",\"sort_direction\":\"desc\"}}"
                        },
                        "description": "Create a new saved review view for the authenticated user."
                    },
                    "response": [
                        {
                            "header": [],
                            "code": 201,
                            "body": "{\n  \"data\": {\n    \"uuid\": \"e5f6g7h8-...\",\n    \"name\": \"High Priority Reviews\",\n    \"sort_order\": 1,\n    \"filters\": {...},\n    \"created_at\": \"2026-01-24T10:00:00.000Z\",\n    \"updated_at\": \"2026-01-24T10:00:00.000Z\"\n  }\n}",
                            "name": ""
                        }
                    ]
                },
                {
                    "name": "Get Review View",
                    "request": {
                        "url": {
                            "host": "{{baseUrl}}",
                            "path": "api\/organisations\/:organisation_uuid\/review-views\/:view_uuid",
                            "query": [],
                            "raw": "{{baseUrl}}\/api\/organisations\/:organisation_uuid\/review-views\/:view_uuid",
                            "variable": [
                                {
                                    "id": "organisation_uuid",
                                    "key": "organisation_uuid",
                                    "value": "660e8400-e29b-41d4-a716-446655440001",
                                    "description": "The organisation UUID."
                                },
                                {
                                    "id": "view_uuid",
                                    "key": "view_uuid",
                                    "value": "a1b2c3d4-e5f6-g7h8-i9j0-k1l2m3n4o5p6",
                                    "description": "The view UUID."
                                }
                            ]
                        },
                        "method": "GET",
                        "header": [
                            {
                                "key": "Content-Type",
                                "value": "application\/json"
                            },
                            {
                                "key": "Accept",
                                "value": "application\/json"
                            }
                        ],
                        "body": null,
                        "description": "Get a specific saved review view."
                    },
                    "response": [
                        {
                            "header": [],
                            "code": 200,
                            "body": "{\n  \"data\": {\n    \"uuid\": \"a1b2c3d4-...\",\n    \"name\": \"Critical Reviews\",\n    \"sort_order\": 0,\n    \"filters\": {...},\n    \"created_at\": \"2026-01-15T10:30:00.000Z\",\n    \"updated_at\": \"2026-01-20T14:22:00.000Z\"\n  }\n}",
                            "name": ""
                        }
                    ]
                },
                {
                    "name": "Update Review View",
                    "request": {
                        "url": {
                            "host": "{{baseUrl}}",
                            "path": "api\/organisations\/:organisation_uuid\/review-views\/:view_uuid",
                            "query": [],
                            "raw": "{{baseUrl}}\/api\/organisations\/:organisation_uuid\/review-views\/:view_uuid",
                            "variable": [
                                {
                                    "id": "organisation_uuid",
                                    "key": "organisation_uuid",
                                    "value": "660e8400-e29b-41d4-a716-446655440001",
                                    "description": "The organisation UUID."
                                },
                                {
                                    "id": "view_uuid",
                                    "key": "view_uuid",
                                    "value": "a1b2c3d4-e5f6-g7h8-i9j0-k1l2m3n4o5p6",
                                    "description": "The view UUID."
                                }
                            ]
                        },
                        "method": "PUT",
                        "header": [
                            {
                                "key": "Content-Type",
                                "value": "application\/json"
                            },
                            {
                                "key": "Accept",
                                "value": "application\/json"
                            }
                        ],
                        "body": {
                            "mode": "raw",
                            "raw": "{\"name\":\"Critical Reviews - Updated\",\"filters\":{\"platforms\":[\"G2\"],\"brands\":[\"a4855dc5-0acb-33c3-b921-f4291f719ca0\"],\"date_range\":{\"type\":\"custom\",\"value\":\"last_12_months\"},\"date_range_custom\":{\"start\":\"2026-04-27T09:09:18\",\"end\":\"2052-05-20\"},\"rating_buckets\":[\"1.0-1.9\"],\"languages\":[\"architecto\"],\"read_status\":\"read\",\"search\":\"n\",\"sort_by\":\"creation_date\",\"sort_direction\":\"desc\"}}"
                        },
                        "description": "Update an existing saved review view. Can update name and\/or filters."
                    },
                    "response": [
                        {
                            "header": [],
                            "code": 200,
                            "body": "{\n  \"data\": {\n    \"uuid\": \"a1b2c3d4-...\",\n    \"name\": \"Critical Reviews - Updated\",\n    \"sort_order\": 0,\n    \"filters\": {...},\n    \"created_at\": \"2026-01-15T10:30:00.000Z\",\n    \"updated_at\": \"2026-01-24T11:15:00.000Z\"\n  }\n}",
                            "name": ""
                        }
                    ]
                },
                {
                    "name": "Delete Review View",
                    "request": {
                        "url": {
                            "host": "{{baseUrl}}",
                            "path": "api\/organisations\/:organisation_uuid\/review-views\/:view_uuid",
                            "query": [],
                            "raw": "{{baseUrl}}\/api\/organisations\/:organisation_uuid\/review-views\/:view_uuid",
                            "variable": [
                                {
                                    "id": "organisation_uuid",
                                    "key": "organisation_uuid",
                                    "value": "660e8400-e29b-41d4-a716-446655440001",
                                    "description": "The organisation UUID."
                                },
                                {
                                    "id": "view_uuid",
                                    "key": "view_uuid",
                                    "value": "a1b2c3d4-e5f6-g7h8-i9j0-k1l2m3n4o5p6",
                                    "description": "The view UUID."
                                }
                            ]
                        },
                        "method": "DELETE",
                        "header": [
                            {
                                "key": "Content-Type",
                                "value": "application\/json"
                            },
                            {
                                "key": "Accept",
                                "value": "application\/json"
                            }
                        ],
                        "body": null,
                        "description": "Delete a saved review view."
                    },
                    "response": [
                        {
                            "header": [],
                            "code": 204,
                            "body": "{}",
                            "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:\/\/app.subsig.com\/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:\/\/app.subsig.com\/dashboard\/notification\/overview?slack_error=architecto'\" \/>\n\n        <title>Redirecting to https:\/\/app.subsig.com\/dashboard\/notification\/overview?slack_error=architecto<\/title>\n    <\/head>\n    <body>\n        Redirecting to <a href=\"https:\/\/app.subsig.com\/dashboard\/notification\/overview?slack_error=architecto\">https:\/\/app.subsig.com\/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_1234567890\",\n      \"name\": \"Pro Plan\",\n      \"description\": \"Professional features\",\n      \"amount\": 2999,\n      \"currency\": \"usd\",\n      \"interval\": \"month\"\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 from `threshold` and fixed hard caps in `limits`.\nUsage is all-time across organisations owned by the billing user (same scope as hard-limit enforcement).\n`usage.reviews` and `usage.mentions` are capped at hard limits (800 \/ 1000); `reviews_raw` and `mentions_raw` show actual totals.\nPer-platform breakdowns are uncapped; they may sum above the capped top-level totals."
                    },
                    "response": [
                        {
                            "header": [],
                            "code": 200,
                            "body": "{\n  \"data\": {\n    \"threshold\": {\n      \"reviews_limit\": 3000,\n      \"mentions_limit\": 4000,\n      \"competitor_brands_limit\": 3,\n      \"history_months\": 6,\n      \"mentions_history_months\": 3,\n      \"refresh_interval\": \"daily\",\n      \"users_limit\": null,\n      \"workspaces_limit\": null,\n      \"data_export_type\": null\n    },\n    \"limits\": {\n      \"reviews_soft\": 3000,\n      \"mentions_soft\": 4000,\n      \"reviews_hard\": 800,\n      \"mentions_hard\": 1000\n    },\n    \"usage\": {\n      \"reviews\": 800,\n      \"mentions\": 1000,\n      \"reviews_raw\": 900,\n      \"mentions_raw\": 1200,\n      \"reviews_per_platform\": {\"G2\": 50, \"Capterra\": 50},\n      \"mentions_per_platform\": {\"reddit\": 200},\n      \"competitor_brands\": 0,\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": "Create Checkout Session",
                    "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\":1,\"success_url\":\"https:\\\/\\\/app.example.com\\\/subscription\\\/success\",\"cancel_url\":\"https:\\\/\\\/app.example.com\\\/subscription\\\/cancel\"}"
                        },
                        "description": "Create a Stripe Checkout session for subscribing to a plan."
                    },
                    "response": [
                        {
                            "header": [],
                            "code": 200,
                            "body": "{\n  \"checkout_url\": \"https:\/\/checkout.stripe.com\/pay\/cs_test_...\"\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\": \"Subscription plan not found.\"\n}",
                            "name": "Plan not found"
                        }
                    ]
                },
                {
                    "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": "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\":\"reviews\",\"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"
            }
        ]
    }
}