MENU navbar-image

Introduction

This documentation aims to provide all the information you need to work with our API.

Mail test server: https://backend-staging.subsig.com:8025

Postman collection: https://backend-staging.subsig.com/docs.postman

OpenAPI spec: https://backend-staging.subsig.com/docs.openapi

Test Users (Development Only)

The following test accounts are available for testing purposes:

Email Password Organisation Role
admin@acme.com password Acme Corporation admin
admin@acme.com password Acme Corporation organisation_owner
member@acme.com password Acme Corporation organisation_member
project@acme.com password Acme Corporation project_member (CRM & Analytics only)
alice@techstart.com password TechStart Inc organisation_owner

Note: admin@acme.com is also a member of TechStart Inc for testing multi-organisation switching.

Authenticating requests

To authenticate requests, include an Authorization header with the value "Bearer 1|abc123...".

All authenticated endpoints are marked with a requires authentication badge in the documentation below.

You can retrieve your token by visiting your dashboard and clicking Generate API token.

Registration

Create a new user account to access the application.

Create Account

Register a new user account. After successful registration, the user will be automatically logged in and redirected to the dashboard. Personal email addresses are NOT allowed. Verification link is sent via email. /verify-email?code=1234&email=john@example.com

Example request:
const url = new URL(
    "http://localhost/register"
);

const headers = {
    "Content-Type": "application/json",
    "Accept": "application/json",
};

let body = {
    "name": "John Doe",
    "email": "john@example.com",
    "password": "SecurePass123!",
    "password_confirmation": "SecurePass123!"
};

fetch(url, {
    method: "POST",
    headers,
    body: JSON.stringify(body),
}).then(response => response.json());

Example response (201, Account created. User logged in and redirected.):



 

Example response (422, Validation error.):


{
    "message": "The email has already been taken.",
    "errors": {
        "email": [
            "The email has already been taken."
        ]
    }
}
 

Request      

POST register

Headers

Content-Type        

Example: application/json

Accept        

Example: application/json

Body Parameters

name   string     

Full name of the user. Example: John Doe

email   string     

Valid email address. Must be unique. Example: john@example.com

password   string     

Password (min 8 characters, at least one letter and one number). Example: SecurePass123!

password_confirmation   string     

Must match password exactly. Example: SecurePass123!

Authentication

APIs for user authentication

Create API Token

Generate an API token for authenticated requests. Requires a verified email address.

Example request:
const url = new URL(
    "http://localhost/api/sanctum/token"
);

const headers = {
    "Content-Type": "application/json",
    "Accept": "application/json",
};

let body = {
    "email": "john@example.com",
    "password": "SecurePass123!"
};

fetch(url, {
    method: "POST",
    headers,
    body: JSON.stringify(body),
}).then(response => response.json());

Example response (200):


{
    "token": "1|abc123..."
}
 

Example response (422, Invalid credentials):


{
    "message": "The provided credentials are incorrect.",
    "errors": {
        "email": [
            "The provided credentials are incorrect."
        ]
    }
}
 

Example response (422, Email not verified):


{
    "message": "Please verify your email address before logging in.",
    "errors": {
        "email": [
            "Please verify your email address before logging in."
        ]
    }
}
 

Request      

POST api/sanctum/token

Headers

Content-Type        

Example: application/json

Accept        

Example: application/json

Body Parameters

email   string     

The user's email address. Example: john@example.com

password   string     

The user's password. Example: SecurePass123!

Verify Email

Verify user's email address using the 4-digit code sent via email. Returns an API token on successful verification. Verification link is sent via email. /verify-email?code=1234&email=john@example.com

Example request:
const url = new URL(
    "http://localhost/api/email/verify"
);

const headers = {
    "Content-Type": "application/json",
    "Accept": "application/json",
};

let body = {
    "email": "john@example.com",
    "code": "1234"
};

fetch(url, {
    method: "POST",
    headers,
    body: JSON.stringify(body),
}).then(response => response.json());

Example response (200):


{
    "message": "Email verified successfully.",
    "token": "1|abc123..."
}
 

Example response (200, Already verified):


{
    "message": "Email already verified.",
    "token": "1|abc123..."
}
 

Example response (422, Invalid code):


{
    "message": "Invalid verification code.",
    "errors": {
        "code": [
            "Invalid verification code."
        ]
    }
}
 

Example response (422, Expired code):


{
    "message": "Verification code has expired. Please request a new one.",
    "errors": {
        "code": [
            "Verification code has expired. Please request a new one."
        ]
    }
}
 

Request      

POST api/email/verify

Headers

Content-Type        

Example: application/json

Accept        

Example: application/json

Body Parameters

email   string     

The user's email address. Example: john@example.com

code   string     

The 4-digit verification code. Example: 1234

Resend Verification Code

Send a new 4-digit verification code to the user's email. Code expires in 60 minutes.

Example request:
const url = new URL(
    "http://localhost/api/email/resend"
);

const headers = {
    "Content-Type": "application/json",
    "Accept": "application/json",
};

let body = {
    "email": "john@example.com"
};

fetch(url, {
    method: "POST",
    headers,
    body: JSON.stringify(body),
}).then(response => response.json());

Example response (200):


{
    "message": "Verification code sent."
}
 

Example response (200, Already verified):


{
    "message": "Email already verified."
}
 

Example response (422, User not found):


{
    "message": "No account found with this email.",
    "errors": {
        "email": [
            "No account found with this email."
        ]
    }
}
 

Request      

POST api/email/resend

Headers

Content-Type        

Example: application/json

Accept        

Example: application/json

Body Parameters

email   string     

The user's email address. Example: john@example.com

Get Current User

requires authentication

Get the authenticated user's details.

Example request:
const url = new URL(
    "http://localhost/api/user"
);

const headers = {
    "Authorization": "Bearer 1|abc123...",
    "Content-Type": "application/json",
    "Accept": "application/json",
};

fetch(url, {
    method: "GET",
    headers,
}).then(response => response.json());

Example response (200):


{
  "name": "John Doe",
  "email": "john@example.com",
  "email_verified_at": "2025-12-04T12:00:00.000000Z",
  "created_at": "2025-12-04T10:00:00.000000Z",
}
 

Example response (401, Unauthenticated):


{
    "message": "Unauthenticated."
}
 

Request      

GET api/user

Headers

Authorization        

Example: Bearer 1|abc123...

Content-Type        

Example: application/json

Accept        

Example: application/json

Log In

Authenticate with your email and password to start a session. On success, you receive a token for subsequent requests.

Example request:
const url = new URL(
    "http://localhost/login"
);

const headers = {
    "Content-Type": "application/json",
    "Accept": "application/json",
};

let body = {
    "email": "john@example.com",
    "password": "SecurePass123!",
    "remember": true
};

fetch(url, {
    method: "POST",
    headers,
    body: JSON.stringify(body),
}).then(response => response.json());

Example response (200, Login successful. Session started.):



 

Example response (422, Invalid credentials.):


{
    "message": "These credentials do not match our records.",
    "errors": {
        "email": [
            "These credentials do not match our records."
        ]
    }
}
 

Request      

POST login

Headers

Content-Type        

Example: application/json

Accept        

Example: application/json

Body Parameters

email   string     

Your registered email address. Example: john@example.com

password   string     

Your account password. Example: SecurePass123!

remember   boolean  optional    

Stay logged in for extended period. Example: true

Log Out

requires authentication

End your current session. You will need to log in again to access protected resources.

Example request:
const url = new URL(
    "http://localhost/logout"
);

const headers = {
    "Content-Type": "application/json",
    "Accept": "application/json",
};

fetch(url, {
    method: "POST",
    headers,
}).then(response => response.json());

Example response (200, Logged out successfully.):



 

Example response (401, Not logged in.):


{
    "message": "Unauthenticated."
}
 

Request      

POST logout

Headers

Content-Type        

Example: application/json

Accept        

Example: application/json

Password Reset

Recover access to your account if you forgot your password.

Request Password Reset

Send a password reset link to your email. The link expires after 60 minutes. Same response for security even if email not found.

Example request:
const url = new URL(
    "http://localhost/forgot-password"
);

const headers = {
    "Content-Type": "application/json",
    "Accept": "application/json",
};

let body = {
    "email": "john@example.com"
};

fetch(url, {
    method: "POST",
    headers,
    body: JSON.stringify(body),
}).then(response => response.json());

Example response (200, Reset link sent.):


{
    "status": "We have emailed your password reset link."
}
 

Request      

POST forgot-password

Headers

Content-Type        

Example: application/json

Accept        

Example: application/json

Body Parameters

email   string     

Email address associated with your account. Example: john@example.com

Reset Password

Set a new password using the token from your email. Token is valid for 60 minutes.

Example request:
const url = new URL(
    "http://localhost/reset-password"
);

const headers = {
    "Content-Type": "application/json",
    "Accept": "application/json",
};

let body = {
    "token": "a1b2c3d4e5f6g7h8i9j0",
    "email": "john@example.com",
    "password": "NewSecurePass123!",
    "password_confirmation": "NewSecurePass123!"
};

fetch(url, {
    method: "POST",
    headers,
    body: JSON.stringify(body),
}).then(response => response.json());

Example response (200, Password reset successful.):


{
    "status": "Your password has been reset."
}
 

Example response (422, Invalid or expired token.):


{
    "message": "This password reset token is invalid.",
    "errors": {
        "email": [
            "This password reset token is invalid."
        ]
    }
}
 

Request      

POST reset-password

Headers

Content-Type        

Example: application/json

Accept        

Example: application/json

Body Parameters

token   string     

Reset token from the email link. Example: a1b2c3d4e5f6g7h8i9j0

email   string     

Your account email address. Example: john@example.com

password   string     

Password (min 8 characters, at least one letter and one number). Example: NewSecurePass123!

password_confirmation   string     

Must match new password exactly. Example: NewSecurePass123!

Onboarding

APIs for user onboarding flow

Complete Onboarding

requires authentication

Create an organisation and project in a single step during onboarding. The authenticated user becomes the organisation owner.

Example request:
const url = new URL(
    "http://localhost/api/onboarding"
);

const headers = {
    "Authorization": "Bearer 1|abc123...",
    "Content-Type": "application/json",
    "Accept": "application/json",
};

let body = {
    "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": [],
    "reddit_keywords": [
        "acme",
        "acme crm"
    ],
    "reddit_brand_name": "Acme"
};

fetch(url, {
    method: "POST",
    headers,
    body: JSON.stringify(body),
}).then(response => response.json());

Example response (201):


{
    "message": "Onboarding completed successfully.",
    "data": {
        "organisation": {
            "uuid": "550e8400-e29b-41d4-a716-446655440000",
            "name": "Acme Inc"
        },
        "project": {
            "uuid": "660e8400-e29b-41d4-a716-446655440001",
            "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": {},
            "reddit_keywords": [
                "acme",
                "acme crm"
            ],
            "reddit_brand_name": "Acme"
        }
    }
}
 

Example response (422, Validation error):


{
    "message": "The organisation name field is required.",
    "errors": {
        "organisation_name": [
            "The organisation name field is required."
        ]
    }
}
 

Request      

POST api/onboarding

Headers

Authorization        

Example: Bearer 1|abc123...

Content-Type        

Example: application/json

Accept        

Example: application/json

Body Parameters

organisation_name   string     

The organisation/company name. Example: Acme Inc

product_name   string     

The product name. Example: Acme CRM

product_website   string  optional    

The product website URL. Example: https://acme.com

product_logo   string  optional    

The product logo URL. Example: https://cdn.brandfetch.io/acme.com/fallback/lettermark/icon?c=BRANDFETCH_CLIENT_ID

review_platforms   object  optional    

Review platform settings with enabled status and URLs.

reddit_keywords   string[]  optional    

Reddit keyword variations to track.

reddit_brand_name   string  optional    

The brand name for Reddit tracking. Example: Acme

Organisations

APIs for managing organisations

List Organisations

requires authentication

Get all organisations the authenticated user belongs to.

Example request:
const url = new URL(
    "http://localhost/api/organisations"
);

const headers = {
    "Authorization": "Bearer 1|abc123...",
    "Content-Type": "application/json",
    "Accept": "application/json",
};

fetch(url, {
    method: "GET",
    headers,
}).then(response => response.json());

Example response (200):


{
    "data": [
        {
            "uuid": "550e8400-e29b-41d4-a716-446655440000",
            "name": "Acme Inc",
            "role": "organisation_owner",
            "created_at": "2025-12-10T10:00:00.000000Z",
            "updated_at": "2025-12-10T10:00:00.000000Z"
        }
    ]
}
 

Request      

GET api/organisations

Headers

Authorization        

Example: Bearer 1|abc123...

Content-Type        

Example: application/json

Accept        

Example: application/json

Create Organisation

requires authentication

Create a new organisation. The authenticated user becomes the admin.

Example request:
const url = new URL(
    "http://localhost/api/organisations"
);

const headers = {
    "Authorization": "Bearer 1|abc123...",
    "Content-Type": "application/json",
    "Accept": "application/json",
};

let body = {
    "name": "Acme Inc"
};

fetch(url, {
    method: "POST",
    headers,
    body: JSON.stringify(body),
}).then(response => response.json());

Example response (201):


{
    "message": "Organisation created successfully.",
    "data": {
        "uuid": "550e8400-e29b-41d4-a716-446655440000",
        "name": "Acme Inc",
        "role": "organisation_owner",
        "created_at": "2025-12-10T10:00:00.000000Z",
        "updated_at": "2025-12-10T10:00:00.000000Z"
    }
}
 

Request      

POST api/organisations

Headers

Authorization        

Example: Bearer 1|abc123...

Content-Type        

Example: application/json

Accept        

Example: application/json

Body Parameters

name   string     

The organisation name. Example: Acme Inc

Get Organisation

requires authentication

Get details of a specific organisation.

Example request:
const url = new URL(
    "http://localhost/api/organisations/53efd125-269f-4e97-8b25-16a5dc0ccb71"
);

const headers = {
    "Authorization": "Bearer 1|abc123...",
    "Content-Type": "application/json",
    "Accept": "application/json",
};

fetch(url, {
    method: "GET",
    headers,
}).then(response => response.json());

Example response (200):


{
    "data": {
        "uuid": "550e8400-e29b-41d4-a716-446655440000",
        "name": "Acme Inc",
        "role": "organisation_owner",
        "created_at": "2025-12-10T10:00:00.000000Z",
        "updated_at": "2025-12-10T10:00:00.000000Z"
    }
}
 

Example response (403, No access):


{
    "message": "You do not have access to this organisation."
}
 

Request      

GET api/organisations/{uuid}

Headers

Authorization        

Example: Bearer 1|abc123...

Content-Type        

Example: application/json

Accept        

Example: application/json

URL Parameters

uuid   string     

Example: 53efd125-269f-4e97-8b25-16a5dc0ccb71

organisation   string     

The organisation UUID. Example: 550e8400-e29b-41d4-a716-446655440000

Update Organisation

requires authentication

Update an organisation's details. Requires admin role.

Example request:
const url = new URL(
    "http://localhost/api/organisations/53efd125-269f-4e97-8b25-16a5dc0ccb71"
);

const headers = {
    "Authorization": "Bearer 1|abc123...",
    "Content-Type": "application/json",
    "Accept": "application/json",
};

let body = {
    "name": "Acme Corp"
};

fetch(url, {
    method: "PUT",
    headers,
    body: JSON.stringify(body),
}).then(response => response.json());

Example response (200):


{
    "message": "Organisation updated successfully.",
    "data": {
        "uuid": "550e8400-e29b-41d4-a716-446655440000",
        "name": "Acme Corp",
        "role": "organisation_owner",
        "created_at": "2025-12-10T10:00:00.000000Z",
        "updated_at": "2025-12-10T10:00:00.000000Z"
    }
}
 

Example response (403, Not admin):


{
    "message": "You must be an organisation admin to perform this action."
}
 

Request      

PUT api/organisations/{uuid}

PATCH api/organisations/{uuid}

Headers

Authorization        

Example: Bearer 1|abc123...

Content-Type        

Example: application/json

Accept        

Example: application/json

URL Parameters

uuid   string     

Example: 53efd125-269f-4e97-8b25-16a5dc0ccb71

organisation   string     

The organisation UUID. Example: 550e8400-e29b-41d4-a716-446655440000

Body Parameters

name   string     

The organisation name. Example: Acme Corp

Switch Current Organisation

requires authentication

Set the user's current organisation for subsequent requests.

Example request:
const url = new URL(
    "http://localhost/api/organisations/53efd125-269f-4e97-8b25-16a5dc0ccb71/switch"
);

const headers = {
    "Authorization": "Bearer 1|abc123...",
    "Content-Type": "application/json",
    "Accept": "application/json",
};

fetch(url, {
    method: "POST",
    headers,
}).then(response => response.json());

Example response (200):


{
    "message": "Switched to organisation successfully.",
    "data": {
        "uuid": "550e8400-e29b-41d4-a716-446655440000",
        "name": "Acme Inc"
    }
}
 

Example response (403, No access):


{
    "message": "You do not have access to this organisation."
}
 

Request      

POST api/organisations/{organisation_uuid}/switch

Headers

Authorization        

Example: Bearer 1|abc123...

Content-Type        

Example: application/json

Accept        

Example: application/json

URL Parameters

organisation_uuid   string     

Example: 53efd125-269f-4e97-8b25-16a5dc0ccb71

organisation   string     

The organisation UUID. Example: 550e8400-e29b-41d4-a716-446655440000

Projects

APIs for managing projects within organisations

List Projects

requires authentication

Get all projects in an organisation that the user has access to.

Example request:
const url = new URL(
    "http://localhost/api/organisations/53efd125-269f-4e97-8b25-16a5dc0ccb71/projects"
);

const headers = {
    "Authorization": "Bearer 1|abc123...",
    "Content-Type": "application/json",
    "Accept": "application/json",
};

fetch(url, {
    method: "GET",
    headers,
}).then(response => response.json());

Example response (200):


{
    "data": [
        {
            "uuid": "660e8400-e29b-41d4-a716-446655440001",
            "product_name": "Acme App",
            "product_website": "https://acme.com",
            "review_platforms": {
                "g2": {
                    "enabled": true,
                    "url": "https://g2.com/products/acme"
                }
            },
            "reddit_keywords": [
                "acme",
                "acme app"
            ],
            "created_at": "2025-12-10T10:00:00.000000Z",
            "updated_at": "2025-12-10T10:00:00.000000Z"
        }
    ]
}
 

Request      

GET api/organisations/{organisation_uuid}/projects

Headers

Authorization        

Example: Bearer 1|abc123...

Content-Type        

Example: application/json

Accept        

Example: application/json

URL Parameters

organisation_uuid   string     

Example: 53efd125-269f-4e97-8b25-16a5dc0ccb71

organisation   string     

The organisation UUID. Example: 550e8400-e29b-41d4-a716-446655440000

Create Project

requires authentication

Create a new project in an organisation. Requires organisation admin role.

Example request:
const url = new URL(
    "http://localhost/api/organisations/53efd125-269f-4e97-8b25-16a5dc0ccb71/projects"
);

const headers = {
    "Authorization": "Bearer 1|abc123...",
    "Content-Type": "application/json",
    "Accept": "application/json",
};

let body = {
    "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": [],
    "reddit_keywords": [
        "acme",
        "acme app"
    ],
    "reddit_brand_name": "Acme"
};

fetch(url, {
    method: "POST",
    headers,
    body: JSON.stringify(body),
}).then(response => response.json());

Example response (201):


{
    "message": "Project created successfully.",
    "data": {
        "uuid": "660e8400-e29b-41d4-a716-446655440001",
        "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": {},
        "reddit_keywords": [
            "acme"
        ],
        "reddit_brand_name": "Acme",
        "created_at": "2025-12-10T10:00:00.000000Z",
        "updated_at": "2025-12-10T10:00:00.000000Z"
    }
}
 

Request      

POST api/organisations/{organisation_uuid}/projects

Headers

Authorization        

Example: Bearer 1|abc123...

Content-Type        

Example: application/json

Accept        

Example: application/json

URL Parameters

organisation_uuid   string     

Example: 53efd125-269f-4e97-8b25-16a5dc0ccb71

organisation   string     

The organisation UUID. Example: 550e8400-e29b-41d4-a716-446655440000

Body Parameters

product_name   string     

The product name. Example: Acme App

product_website   string  optional    

The product website URL. Example: https://acme.com

product_logo   string  optional    

The product logo URL. Example: https://cdn.brandfetch.io/acme.com/fallback/lettermark/icon?c=BRANDFETCH_CLIENT_ID

review_platforms   object  optional    

Review platform settings.

reddit_keywords   string[]  optional    

Reddit keyword variations.

reddit_brand_name   string  optional    

The brand name for Reddit tracking. Example: Acme

Get Project

requires authentication

Get details of a specific project.

Example request:
const url = new URL(
    "http://localhost/api/organisations/53efd125-269f-4e97-8b25-16a5dc0ccb71/projects/1f12183c-cad2-43e2-b7b7-4a5d7ef2e34a"
);

const headers = {
    "Authorization": "Bearer 1|abc123...",
    "Content-Type": "application/json",
    "Accept": "application/json",
};

fetch(url, {
    method: "GET",
    headers,
}).then(response => response.json());

Example response (200):


{
    "data": {
        "uuid": "660e8400-e29b-41d4-a716-446655440001",
        "product_name": "Acme App",
        "product_website": "https://acme.com",
        "review_platforms": {
            "g2": {
                "enabled": true,
                "url": "https://g2.com/products/acme"
            }
        },
        "reddit_keywords": [
            "acme",
            "acme app"
        ],
        "created_at": "2025-12-10T10:00:00.000000Z",
        "updated_at": "2025-12-10T10:00:00.000000Z"
    }
}
 

Request      

GET api/organisations/{organisation_uuid}/projects/{uuid}

Headers

Authorization        

Example: Bearer 1|abc123...

Content-Type        

Example: application/json

Accept        

Example: application/json

URL Parameters

organisation_uuid   string     

Example: 53efd125-269f-4e97-8b25-16a5dc0ccb71

uuid   string     

Example: 1f12183c-cad2-43e2-b7b7-4a5d7ef2e34a

organisation   string     

The organisation UUID. Example: 550e8400-e29b-41d4-a716-446655440000

project   string     

The project UUID. Example: 660e8400-e29b-41d4-a716-446655440001

Update Project

requires authentication

Update a project's details. Requires organisation admin role.

Example request:
const url = new URL(
    "http://localhost/api/organisations/53efd125-269f-4e97-8b25-16a5dc0ccb71/projects/1f12183c-cad2-43e2-b7b7-4a5d7ef2e34a"
);

const headers = {
    "Authorization": "Bearer 1|abc123...",
    "Content-Type": "application/json",
    "Accept": "application/json",
};

let body = {
    "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": [],
    "reddit_keywords": [
        "acme",
        "acme pro"
    ],
    "reddit_brand_name": "Acme"
};

fetch(url, {
    method: "PUT",
    headers,
    body: JSON.stringify(body),
}).then(response => response.json());

Example response (200):


{
    "message": "Project updated successfully.",
    "data": {
        "uuid": "660e8400-e29b-41d4-a716-446655440001",
        "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": {},
        "reddit_keywords": [
            "acme",
            "acme pro"
        ],
        "reddit_brand_name": "Acme",
        "created_at": "2025-12-10T10:00:00.000000Z",
        "updated_at": "2025-12-10T10:00:00.000000Z"
    }
}
 

Request      

PUT api/organisations/{organisation_uuid}/projects/{uuid}

PATCH api/organisations/{organisation_uuid}/projects/{uuid}

Headers

Authorization        

Example: Bearer 1|abc123...

Content-Type        

Example: application/json

Accept        

Example: application/json

URL Parameters

organisation_uuid   string     

Example: 53efd125-269f-4e97-8b25-16a5dc0ccb71

uuid   string     

Example: 1f12183c-cad2-43e2-b7b7-4a5d7ef2e34a

organisation   string     

The organisation UUID. Example: 550e8400-e29b-41d4-a716-446655440000

project   string     

The project UUID. Example: 660e8400-e29b-41d4-a716-446655440001

Body Parameters

product_name   string     

The product name. Example: Acme App Pro

product_website   string  optional    

The product website URL. Example: https://acme.com

product_logo   string  optional    

The product logo URL. Example: https://cdn.brandfetch.io/acme.com/fallback/lettermark/icon?c=BRANDFETCH_CLIENT_ID

review_platforms   object  optional    

Review platform settings.

reddit_keywords   string[]  optional    

Reddit keyword variations.

reddit_brand_name   string  optional    

The brand name for Reddit tracking. Example: Acme

Delete Project

requires authentication

Delete a project. Requires organisation admin role.

Example request:
const url = new URL(
    "http://localhost/api/organisations/53efd125-269f-4e97-8b25-16a5dc0ccb71/projects/1f12183c-cad2-43e2-b7b7-4a5d7ef2e34a"
);

const headers = {
    "Authorization": "Bearer 1|abc123...",
    "Content-Type": "application/json",
    "Accept": "application/json",
};

fetch(url, {
    method: "DELETE",
    headers,
}).then(response => response.json());

Example response (200):


{
    "message": "Project deleted successfully."
}
 

Request      

DELETE api/organisations/{organisation_uuid}/projects/{uuid}

Headers

Authorization        

Example: Bearer 1|abc123...

Content-Type        

Example: application/json

Accept        

Example: application/json

URL Parameters

organisation_uuid   string     

Example: 53efd125-269f-4e97-8b25-16a5dc0ccb71

uuid   string     

Example: 1f12183c-cad2-43e2-b7b7-4a5d7ef2e34a

organisation   string     

The organisation UUID. Example: 550e8400-e29b-41d4-a716-446655440000

project   string     

The project UUID. Example: 660e8400-e29b-41d4-a716-446655440001