TecHunter API (1.0.0)

Download OpenAPI specification:

TecHunter API Support: support@techunter.com License: MIT

Comprehensive API for TecHunter platform - a technology management and collaboration system.

Features

  • User authentication and authorization with role-based permissions
  • Asset management (internal/external) with file uploads
  • Project and team collaboration
  • Thread-based discussions and conversations
  • Technology scouting and discovery
  • AI-powered prompts and suggestions
  • Administrative functions and system management

Authentication

The API uses JWT Bearer tokens for authentication. Include the token in the Authorization header:

Authorization: Bearer <your-jwt-token>

Authentication

User authentication and authorization operations

Check authentication method for email

Determine available authentication methods for a given email (login flow)

Authorizations:
BearerAuth
Request Body schema: application/json
required
email
required
string <email>

User's email address to check authentication methods

Responses

Request samples

Content type
application/json
{
  • "email": "john.doe@example.com"
}

Response samples

Content type
application/json
{
  • "success": true,
  • "message": "Authentication methods retrieved successfully",
  • "data": {
    }
}

Firebase OAuth login

Authenticate existing users using Firebase OAuth token

Authorizations:
BearerAuth
Request Body schema: application/json
required
firebaseToken
required
string

Firebase authentication token

provider
string
Enum: "google" "github" "microsoft" "apple" "twitter" "facebook"

OAuth provider used (optional)

Responses

Request samples

Content type
application/json
{
  • "firebaseToken": "eyJhbGciOiJSUzI1NiIsImtpZCI6IjFm...",
  • "provider": "google"
}

Response samples

Content type
application/json
{
  • "success": true,
  • "message": "Authentication successful",
  • "data": {
    }
}

Send OTP for login

Send OTP to email for existing users login

Authorizations:
BearerAuth
Request Body schema: application/json
required
email
required
string <email>

User's email address to send OTP

Responses

Request samples

Content type
application/json
{
  • "email": "john.doe@example.com"
}

Response samples

Content type
application/json
{
  • "success": true,
  • "message": "Operation completed successfully",
  • "data": { }
}

Verify OTP for login

Verify OTP and authenticate existing user

Authorizations:
BearerAuth
Request Body schema: application/json
required
email
required
string <email>

User's email address

otp
required
string^[0-9]{6}$

6-digit OTP code

Responses

Request samples

Content type
application/json
{
  • "email": "john.doe@example.com",
  • "otp": "123456"
}

Response samples

Content type
application/json
{
  • "success": true,
  • "message": "Authentication successful",
  • "data": {
    }
}

Create new user via Firebase OAuth (Admin only)

Create a new user account using Firebase OAuth (requires admin permissions)

Authorizations:
BearerAuth
Request Body schema: application/json
required
email
required
string <email>

User's email address

name
required
string [ 1 .. 100 ] characters

User's full name

departmentId
integer >= 1

Department ID (optional)

roleIds
Array of integers[ items >= 1 ]

Array of role IDs to assign to user (optional)

Responses

Request samples

Content type
application/json
{
  • "email": "john.doe@example.com",
  • "name": "John Doe",
  • "departmentId": 1,
  • "roleIds": [
    ]
}

Response samples

Content type
application/json
{
  • "success": true,
  • "message": "User created successfully",
  • "data": {
    }
}

Create new user via OTP (Admin only)

Create a new user account with OTP authentication (requires admin permissions)

Authorizations:
BearerAuth
Request Body schema: application/json
required
email
required
string <email>

User's email address

name
required
string [ 1 .. 100 ] characters

User's full name

departmentId
integer >= 1

Department ID (optional)

roleIds
Array of integers[ items >= 1 ]

Array of role IDs to assign to user (optional)

sendWelcomeEmail
boolean
Default: true

Whether to send welcome email to new user

Responses

Request samples

Content type
application/json
{
  • "email": "john.doe@example.com",
  • "name": "John Doe",
  • "departmentId": 1,
  • "roleIds": [
    ],
  • "sendWelcomeEmail": true
}

Response samples

Content type
application/json
{
  • "success": true,
  • "message": "User created successfully",
  • "data": {
    }
}

Refresh JWT token

Get a new JWT access token using refresh token

Authorizations:
BearerAuth
Request Body schema: application/json
required
refreshToken
required
string

Valid refresh token

Responses

Request samples

Content type
application/json
{
  • "refreshToken": "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9..."
}

Response samples

Content type
application/json
{
  • "success": true,
  • "message": "Authentication successful",
  • "data": {
    }
}

User logout

Invalidate the current JWT token and optionally the refresh token

Authorizations:
BearerAuth
Request Body schema: application/json
optional
refreshToken
string

Refresh token to invalidate (optional)

Responses

Request samples

Content type
application/json
{
  • "refreshToken": "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9..."
}

Response samples

Content type
application/json
{
  • "success": true,
  • "message": "Operation completed successfully",
  • "data": { }
}

Get user profile

Retrieve the authenticated user's profile information

Authorizations:
BearerAuth

Responses

Response samples

Content type
application/json
{
  • "success": true,
  • "message": "Profile retrieved successfully",
  • "data": {
    }
}

Users

User management and profile operations

List users with filtering and pagination

Retrieve a paginated list of users with optional filtering by department, role, status, and search

Authorizations:
BearerAuth
query Parameters
departmentId
integer >= 1
Example: departmentId=1

Filter by department ID

roleId
integer >= 1
Example: roleId=2

Filter by role ID

isActive
string
Enum: true false
Example: isActive=true

Filter by user active status

search
string [ 1 .. 100 ] characters
Example: search=john

Search term for user name or email

page
integer >= 1
Default: 1
Example: page=1

Page number for pagination

limit
integer [ 1 .. 100 ]
Default: 20
Example: limit=20

Number of items per page

Responses

Response samples

Content type
application/json
{
  • "success": true,
  • "message": "Users retrieved successfully",
  • "data": {
    }
}

Create new user

Create a new user account with specified roles and department

Authorizations:
BearerAuth
Request Body schema: application/json
required
email
required
string <email>

User's email address

name
required
string [ 1 .. 100 ] characters

User's full name

departmentId
integer >= 1

Department ID (optional)

roleIds
Array of integers non-empty [ items >= 1 ]

Array of role IDs to assign

signInMethod
string
Enum: "otp" "firebase"

Preferred sign-in method

sendWelcomeEmail
boolean
Default: true

Whether to send welcome email

Responses

Request samples

Content type
application/json
{
  • "email": "john.doe@example.com",
  • "name": "John Doe",
  • "departmentId": 1,
  • "roleIds": [
    ],
  • "signInMethod": "otp",
  • "sendWelcomeEmail": true
}

Response samples

Content type
application/json
{
  • "success": true,
  • "message": "User created successfully",
  • "data": {
    }
}

Get user details

Retrieve detailed information about a specific user

Authorizations:
BearerAuth
path Parameters
userId
required
integer >= 1
Example: 1

User ID

Responses

Response samples

Content type
application/json
{
  • "success": true,
  • "message": "User details retrieved successfully",
  • "data": {
    }
}

Update user profile (Admin function)

Update user profile information including name, department, and country (requires admin permissions)

Authorizations:
BearerAuth
path Parameters
userId
required
integer >= 1
Example: 1

User ID

Request Body schema: application/json
required
name
string [ 1 .. 100 ] characters

User's full name

departmentId
integer or null >= 1

Department ID (null for system-wide users)

country
string [ 2 .. 50 ] characters

User's country

Responses

Request samples

Content type
application/json
{
  • "name": "John Doe",
  • "departmentId": 1,
  • "country": "United States"
}

Response samples

Content type
application/json
{
  • "success": true,
  • "message": "User details retrieved successfully",
  • "data": {
    }
}

Update own profile

Update authenticated user's own profile information

Authorizations:
BearerAuth
Request Body schema: application/json
required
name
string [ 1 .. 100 ] characters

User's full name

country
string [ 2 .. 50 ] characters

User's country

Responses

Request samples

Content type
application/json
{
  • "name": "John Doe",
  • "country": "United States"
}

Response samples

Content type
application/json
{
  • "success": true,
  • "message": "User details retrieved successfully",
  • "data": {
    }
}

Update user roles and department

Update user's assigned roles and department

Authorizations:
BearerAuth
path Parameters
userId
required
integer >= 1
Example: 1

User ID

Request Body schema: application/json
required
roleIds
required
Array of integers non-empty [ items >= 1 ]

Array of role IDs to assign

departmentId
integer >= 1

Department ID (optional)

Responses

Request samples

Content type
application/json
{
  • "roleIds": [
    ],
  • "departmentId": 1
}

Response samples

Content type
application/json
{
  • "success": true,
  • "message": "User details retrieved successfully",
  • "data": {
    }
}

Get user's role history

Retrieve complete history of role assignments for a user

Authorizations:
BearerAuth
path Parameters
userId
required
integer >= 1
Example: 1

User ID

Responses

Response samples

Content type
application/json
{
  • "success": true,
  • "message": "Role history retrieved successfully",
  • "data": {
    }
}

Deactivate specific role assignment

Deactivate a specific role assignment for a user

Authorizations:
BearerAuth
path Parameters
userId
required
integer >= 1
Example: 1

User ID

roleId
required
integer >= 1
Example: 2

Role ID

Request Body schema: application/json
optional
reason
string [ 1 .. 500 ] characters

Reason for deactivation

Responses

Request samples

Content type
application/json
{
  • "reason": "Role no longer needed for current responsibilities"
}

Response samples

Content type
application/json
{
  • "success": true,
  • "message": "Operation completed successfully",
  • "data": { }
}

Reactivate specific role assignment

Reactivate a previously deactivated role assignment for a user

Authorizations:
BearerAuth
path Parameters
userId
required
integer >= 1
Example: 1

User ID

roleId
required
integer >= 1
Example: 2

Role ID

Responses

Response samples

Content type
application/json
{
  • "success": true,
  • "message": "Operation completed successfully",
  • "data": { }
}

Activate user

Activate a user account

Authorizations:
BearerAuth
path Parameters
userId
required
integer >= 1
Example: 1

User ID

Responses

Response samples

Content type
application/json
{
  • "success": true,
  • "message": "Operation completed successfully",
  • "data": { }
}

Deactivate user

Deactivate a user account

Authorizations:
BearerAuth
path Parameters
userId
required
integer >= 1
Example: 1

User ID

Request Body schema: application/json
optional
reason
string [ 1 .. 500 ] characters

Reason for deactivation

Responses

Request samples

Content type
application/json
{
  • "reason": "User left the organization"
}

Response samples

Content type
application/json
{
  • "success": true,
  • "message": "Operation completed successfully",
  • "data": { }
}

Get user's permission overrides

Retrieve user-specific permission overrides (not from roles)

Authorizations:
BearerAuth
path Parameters
userId
required
integer >= 1
Example: 1

User ID

Responses

Response samples

Content type
application/json
{
  • "success": true,
  • "message": "User permissions retrieved successfully",
  • "data": {
    }
}

Grant specific permissions to user

Grant specific permissions to user (override role permissions)

Authorizations:
BearerAuth
path Parameters
userId
required
integer >= 1
Example: 1

User ID

Request Body schema: application/json
required
permissionIds
required
Array of integers non-empty [ items >= 1 ]

Array of permission IDs to grant

scope
string
Enum: "own" "department" "any" "assigned"

Permission scope

reason
string [ 1 .. 500 ] characters

Reason for granting permissions

Responses

Request samples

Content type
application/json
{
  • "permissionIds": [
    ],
  • "scope": "department",
  • "reason": "Temporary project lead responsibilities"
}

Response samples

Content type
application/json
{
  • "success": true,
  • "message": "Operation completed successfully",
  • "data": { }
}

Update user's permission overrides

Update all user-specific permission overrides

Authorizations:
BearerAuth
path Parameters
userId
required
integer >= 1
Example: 1

User ID

Request Body schema: application/json
required
permissionIds
required
Array of integers[ items >= 1 ]

Array of permission IDs (empty array removes all overrides)

scope
string
Enum: "own" "department" "any" "assigned"

Permission scope

reason
string [ 1 .. 500 ] characters

Reason for updating permissions

Responses

Request samples

Content type
application/json
{
  • "permissionIds": [
    ],
  • "scope": "department",
  • "reason": "Role change requires different access levels"
}

Response samples

Content type
application/json
{
  • "success": true,
  • "message": "Operation completed successfully",
  • "data": { }
}

Revoke specific permission from user

Remove a specific permission override from user

Authorizations:
BearerAuth
path Parameters
userId
required
integer >= 1
Example: 1

User ID

permissionId
required
integer >= 1
Example: 5

Permission ID

Request Body schema: application/json
optional
reason
string [ 1 .. 500 ] characters

Reason for revoking permission

Responses

Request samples

Content type
application/json
{
  • "reason": "Permission no longer required"
}

Response samples

Content type
application/json
{
  • "success": true,
  • "message": "Operation completed successfully",
  • "data": { }
}

Get user's effective permissions

Get combined permissions from roles and user-specific overrides

Authorizations:
BearerAuth
path Parameters
userId
required
integer >= 1
Example: 1

User ID

query Parameters
context
string
Enum: "department" "system" "project"
Example: context=department

Permission context filter

Responses

Response samples

Content type
application/json
{
  • "success": true,
  • "message": "Effective permissions retrieved successfully",
  • "data": {
    }
}

Assets

Asset management including internal/external assets and file uploads

List assets with unified filtering and pagination

Retrieve a paginated list of both internal and external assets with filtering options

Authorizations:
BearerAuth
query Parameters
page
integer >= 1
Default: 1
Example: page=1

Page number for pagination

limit
integer [ 1 .. 100 ]
Default: 20
Example: limit=20

Number of items per page

asset_type
string
Default: "all"
Enum: "all" "internal" "external"
Example: asset_type=all

Filter by asset type

search
string <= 100 characters
Example: search=technology report

Search term for asset title, description, or filename

is_active
string
Enum: true false
Example: is_active=true

Filter by active status

sort_by
string
Default: "created_at"
Enum: "created_at" "updated_at" "title" "file_name" "file_size"
Example: sort_by=created_at

Field to sort by

sort_order
string
Default: "DESC"
Enum: "ASC" "DESC"
Example: sort_order=DESC

Sort order

Responses

Response samples

Content type
application/json
{
  • "success": true,
  • "message": "Assets retrieved successfully",
  • "data": {
    }
}

Get specific asset details by type and ID

Retrieve detailed information about a specific internal or external asset

Authorizations:
BearerAuth
path Parameters
type
required
string
Enum: "internal" "external"
Example: internal

Asset type

id
required
integer >= 1
Example: 1

Asset ID

Responses

Response samples

Content type
application/json
{
  • "success": true,
  • "message": "Asset retrieved successfully",
  • "data": {
    }
}

Get dashboard statistics

Retrieve comprehensive statistics for assets dashboard

Authorizations:
BearerAuth
query Parameters
type
string
Default: "all"
Enum: "all" "internal" "external"
Example: type=all

Filter statistics by asset type

Responses

Response samples

Content type
application/json
{
  • "success": true,
  • "message": "Dashboard statistics retrieved successfully",
  • "data": {
    }
}

Get tag analytics

Retrieve tag analytics for external assets

Authorizations:
BearerAuth
query Parameters
type
string
Default: "external"
Value: "external"
Example: type=external

Asset type for analytics (only external supported)

Responses

Response samples

Content type
application/json
{
  • "success": true,
  • "message": "Tag analytics retrieved successfully",
  • "data": {
    }
}

Search assets across types

Search for assets across internal and external types with relevance scoring

Authorizations:
BearerAuth
query Parameters
q
required
string [ 1 .. 100 ] characters
Example: q=AI technology

Search term

type
string
Default: "all"
Enum: "all" "internal" "external"
Example: type=all

Asset type to search

page
integer >= 1
Default: 1
Example: page=1

Page number

limit
integer [ 1 .. 100 ]
Default: 20
Example: limit=20

Items per page

object
Example: filters={"is_active": true}

Additional filters (JSON object)

Responses

Response samples

Content type
application/json
{
  • "success": true,
  • "message": "Search completed successfully",
  • "data": {
    }
}

Get assets by topic

Retrieve internal assets associated with a specific topic

Authorizations:
BearerAuth
path Parameters
topicId
required
integer >= 1
Example: 1

Topic ID

Responses

Response samples

Content type
application/json
{
  • "success": true,
  • "message": "Topic assets retrieved successfully",
  • "data": {
    }
}

Get asset topics

Retrieve topics associated with an internal asset

Authorizations:
BearerAuth
path Parameters
id
required
integer >= 1
Example: 1

Internal asset ID

Responses

Response samples

Content type
application/json
{
  • "success": true,
  • "message": "Asset topics retrieved successfully",
  • "data": {
    }
}

Get internal asset with tags

Retrieve internal asset details including associated tags

Authorizations:
BearerAuth
path Parameters
id
required
integer >= 1
Example: 1

Internal asset ID

Responses

Response samples

Content type
application/json
{
  • "success": true,
  • "message": "Asset with tags retrieved successfully",
  • "data": {
    }
}

Get asset by TO/TN number

Retrieve internal asset by TO/TN reference number

Authorizations:
BearerAuth
path Parameters
toNumber
required
string
Example: TO-2024-001

TO/TN reference number

Responses

Response samples

Content type
application/json
{
  • "success": true,
  • "message": "Asset retrieved successfully",
  • "data": {
    }
}

Get signed URL for internal asset

Generate a signed URL for accessing internal asset file

Authorizations:
BearerAuth
path Parameters
id
required
integer >= 1
Example: 1

Internal asset ID

Responses

Response samples

Content type
application/json
{}

Trigger asset ingestion

Manually trigger ingestion process for an internal asset

Authorizations:
BearerAuth
path Parameters
id
required
integer >= 1
Example: 1

Internal asset ID

Responses

Response samples

Content type
application/json
{
  • "success": true,
  • "message": "Operation completed successfully",
  • "data": { }
}

Verify internal asset tag

Verify a tag assignment for an internal asset

Authorizations:
BearerAuth
path Parameters
assetId
required
integer >= 1
Example: 1

Internal asset ID

tagId
required
integer >= 1
Example: 5

Tag ID

Responses

Response samples

Content type
application/json
{
  • "success": true,
  • "message": "Operation completed successfully",
  • "data": { }
}

Upload external assets

Upload multiple external assets with metadata

Authorizations:
BearerAuth
Request Body schema: multipart/form-data
required
files
Array of strings <binary> <= 10 items [ items <binary > ]

Files to upload (max 10 files, 100MB each)

upload_context
string <= 255 characters

Context for the upload batch

tags
Array of integers[ items >= 1 ]

Tag IDs to automatically assign to uploaded assets

auto_process
boolean
Default: true

Whether to automatically start processing after upload

Responses

Response samples

Content type
application/json
{
  • "success": true,
  • "message": "Assets uploaded successfully",
  • "data": {
    }
}

Get download URL for external asset

Generate a download URL for an external asset

Authorizations:
BearerAuth
path Parameters
id
required
integer >= 1
Example: 1

External asset ID

Responses

Response samples

Content type
application/json
{}

Delete external asset

Permanently delete an external asset and its associated data

Authorizations:
BearerAuth
path Parameters
id
required
integer >= 1
Example: 1

External asset ID

Responses

Response samples

Content type
application/json
{
  • "success": true,
  • "message": "Operation completed successfully",
  • "data": { }
}

Add tags to external asset

Add one or more tags to an external asset

Authorizations:
BearerAuth
path Parameters
id
required
integer >= 1
Example: 1

External asset ID

Request Body schema: application/json
required
tagIds
required
Array of integers non-empty [ items >= 1 ]

Array of tag IDs to add

source
string
Default: "manual"
Enum: "manual" "auto" "ai"

Source of tag assignment

confidence_score
number [ 0 .. 1 ]
Default: 1

Confidence score for tag assignment

Responses

Request samples

Content type
application/json
{
  • "tagIds": [
    ],
  • "source": "manual",
  • "confidence_score": 0.85
}

Response samples

Content type
application/json
{
  • "success": true,
  • "message": "Operation completed successfully",
  • "data": { }
}

Remove tag from external asset

Remove a specific tag from an external asset

Authorizations:
BearerAuth
path Parameters
id
required
integer >= 1
Example: 1

External asset ID

tagId
required
integer >= 1
Example: 5

Tag ID

Responses

Response samples

Content type
application/json
{
  • "success": true,
  • "message": "Operation completed successfully",
  • "data": { }
}

Verify external asset tag

Verify a tag assignment for an external asset

Authorizations:
BearerAuth
path Parameters
id
required
integer >= 1
Example: 1

External asset ID

tagId
required
integer >= 1
Example: 5

Tag ID

Responses

Response samples

Content type
application/json
{
  • "success": true,
  • "message": "Operation completed successfully",
  • "data": { }
}

Reprocess external asset

Trigger reprocessing of an external asset

Authorizations:
BearerAuth
path Parameters
id
required
integer >= 1
Example: 1

External asset ID

Responses

Response samples

Content type
application/json
{
  • "success": true,
  • "message": "Operation completed successfully",
  • "data": { }
}

Map asset to thread

Associate an external asset with a thread

Authorizations:
BearerAuth
path Parameters
id
required
integer >= 1
Example: 1

External asset ID

Request Body schema: application/json
required
threadId
required
integer >= 1

Thread ID to map asset to

relationship
string
Default: "attachment"
Enum: "attachment" "reference" "supporting_doc"

Type of relationship to thread

Responses

Request samples

Content type
application/json
{
  • "threadId": 42,
  • "relationship": "attachment"
}

Response samples

Content type
application/json
{
  • "success": true,
  • "message": "Operation completed successfully",
  • "data": { }
}

Map asset to conversation

Associate an external asset with a conversation

Authorizations:
BearerAuth
path Parameters
id
required
integer >= 1
Example: 1

External asset ID

Request Body schema: application/json
required
conversationId
required
integer >= 1

Conversation ID to map asset to

relationship
string
Default: "attachment"
Enum: "attachment" "reference" "supporting_doc"

Type of relationship to conversation

Responses

Request samples

Content type
application/json
{
  • "conversationId": 15,
  • "relationship": "reference"
}

Response samples

Content type
application/json
{
  • "success": true,
  • "message": "Operation completed successfully",
  • "data": { }
}

Remove asset mapping

Remove an asset mapping (thread or conversation association)

Authorizations:
BearerAuth
path Parameters
id
required
integer >= 1
Example: 1

External asset ID

mappingId
required
integer >= 1
Example: 3

Mapping ID

Responses

Response samples

Content type
application/json
{
  • "success": true,
  • "message": "Operation completed successfully",
  • "data": { }
}

Get upload status by upload ID

Retrieve status of a specific upload batch

Authorizations:
BearerAuth
path Parameters
uploadId
required
string
Example: upload_123456

Upload batch ID

Responses

Response samples

Content type
application/json
{
  • "success": true,
  • "message": "Upload status retrieved successfully",
  • "data": {
    }
}

Get asset processing status

Retrieve processing status of a specific external asset

Authorizations:
BearerAuth
path Parameters
id
required
integer >= 1
Example: 1

External asset ID

Responses

Response samples

Content type
application/json
{
  • "success": true,
  • "message": "Asset status retrieved successfully",
  • "data": {
    }
}

Get overall processing status

Retrieve overall processing queue status and statistics

Authorizations:
BearerAuth

Responses

Response samples

Content type
application/json
{
  • "success": true,
  • "message": "Processing status retrieved successfully",
  • "data": {
    }
}

Get allowed file types configuration

Retrieve configuration for allowed file types, extensions, and size limits

Authorizations:
BearerAuth

Responses

Response samples

Content type
application/json
{
  • "success": true,
  • "message": "Allowed file types retrieved successfully",
  • "data": {
    }
}

Get tag cloud analytics

Retrieve tag cloud data for visualization

Authorizations:
BearerAuth

Responses

Response samples

Content type
application/json
{
  • "success": true,
  • "message": "Tag cloud data retrieved successfully",
  • "data": {
    }
}

Get assets by tag

Retrieve assets associated with a specific tag

Authorizations:
BearerAuth
path Parameters
tagId
required
integer >= 1
Example: 5

Tag ID

query Parameters
page
integer >= 1
Default: 1
Example: page=1

Page number

limit
integer [ 1 .. 100 ]
Default: 20
Example: limit=20

Items per page

min_confidence
number [ 0 .. 1 ]
Default: 0
Example: min_confidence=0.7

Minimum confidence score for tag associations

Responses

Response samples

Content type
application/json
{
  • "success": true,
  • "message": "Assets by tag retrieved successfully",
  • "data": {
    }
}

Perform bulk operations on external assets

Execute bulk operations like tagging, status changes, or deletions

Authorizations:
BearerAuth
Request Body schema: application/json
required
operation
required
string
Enum: "add_tags" "remove_tags" "activate" "deactivate" "delete" "reprocess"

Bulk operation to perform

assetIds
required
Array of integers [ 1 .. 100 ] items [ items >= 1 ]

Array of asset IDs to operate on

object

Operation-specific parameters

Responses

Request samples

Content type
application/json
{
  • "operation": "add_tags",
  • "assetIds": [
    ],
  • "parameters": {
    }
}

Response samples

Content type
application/json
{
  • "success": true,
  • "message": "Bulk operations completed successfully",
  • "data": {
    }
}

Projects

Project management and team collaboration

Threads

Thread-based collaboration and conversations

List all threads

Get all threads with filtering, pagination, and access control

Authorizations:
None
query Parameters
page
integer >= 1
Default: 1
limit
integer [ 1 .. 100 ]
Default: 20
search
string

Search in thread title and description

status
string
Enum: "active" "completed" "on_hold" "archived"
department_id
integer
project_id
integer
created_by
integer
priority
string
Enum: "low" "medium" "high" "urgent"
has_techneed
boolean
date_from
string <date>
date_to
string <date>
sort_by
string
Default: "created_at"
Enum: "created_at" "updated_at" "title" "status"
sort_order
string
Default: "DESC"
Enum: "ASC" "DESC"

Responses

Response samples

Content type
application/json
{
  • "success": true,
  • "message": "Operation completed successfully",
  • "data": { },
  • "threads": [
    ],
  • "pagination": {
    }
}

Create a new thread

Create a new thread with OpenAI conversation

Authorizations:
None
Request Body schema: application/json
required
title
required
string [ 1 .. 255 ] characters

Thread title (auto-processed for proper case)

description
required
string non-empty

Thread description

project_id
integer

Associated project ID

department_id
integer

Department ID (defaults to user's department)

priority
string
Default: "medium"
Enum: "low" "medium" "high" "urgent"
metadata
object

Additional thread metadata

Responses

Request samples

Content type
application/json
{
  • "title": "string",
  • "description": "string",
  • "project_id": 0,
  • "department_id": 0,
  • "priority": "low",
  • "metadata": { }
}

Response samples

Content type
application/json
{
  • "success": true,
  • "message": "Operation completed successfully",
  • "data": { },
  • "thread": {
    }
}

Get recent threads

Get 3-10 most recently updated threads user has access to

Authorizations:
None
query Parameters
limit
integer [ 3 .. 10 ]
Default: 5

Number of threads to return

include_archived
boolean
Default: false

Include archived threads

Responses

Response samples

Content type
application/json
{
  • "success": true,
  • "message": "Operation completed successfully",
  • "data": { },
  • "threads": [
    ]
}

Get thread details

Get detailed information about a specific thread

Authorizations:
None
path Parameters
threadId
required
string <uuid>

Responses

Response samples

Content type
application/json
{
  • "success": true,
  • "message": "Operation completed successfully",
  • "data": { },
  • "thread": {
    }
}

Update thread

Update thread details (requires appropriate permissions)

Authorizations:
None
path Parameters
threadId
required
string <uuid>
Request Body schema: application/json
required
title
string [ 1 .. 255 ] characters
description
string
status
string
Enum: "active" "completed" "on_hold" "archived"
priority
string
Enum: "low" "medium" "high" "urgent"
project_id
integer
department_id
integer
metadata
object

Responses

Request samples

Content type
application/json
{
  • "title": "string",
  • "description": "string",
  • "status": "active",
  • "priority": "low",
  • "project_id": 0,
  • "department_id": 0,
  • "metadata": { }
}

Response samples

Content type
application/json
{
  • "success": true,
  • "message": "Operation completed successfully",
  • "data": { },
  • "thread": {
    }
}

Delete thread

Delete a thread (requires department-level permissions)

Authorizations:
None
path Parameters
threadId
required
string <uuid>

Responses

Response samples

Content type
application/json
{
  • "success": true,
  • "message": "Operation completed successfully",
  • "data": { }
}

Get thread assets

Get all assets associated with a thread

Authorizations:
None
path Parameters
threadId
required
string <uuid>

Responses

Response samples

Content type
application/json
{
  • "success": true,
  • "message": "Operation completed successfully",
  • "data": { },
  • "assets": [
    ]
}

Upload assets to thread

Upload multiple files to a thread (max 10 files, 50MB each)

Authorizations:
None
path Parameters
threadId
required
string <uuid>
Request Body schema: multipart/form-data
required
files
Array of strings <binary> <= 10 items [ items <binary > ]

Files to upload (PDF, Word, Excel, text, CSV, JSON)

Responses

Response samples

Content type
application/json
{
  • "success": true,
  • "message": "Operation completed successfully",
  • "data": { },
  • "results": [
    ]
}

Map existing asset to thread

Associate an existing asset with a thread

Authorizations:
None
path Parameters
threadId
required
string <uuid>
Request Body schema: application/json
required
asset_id
required
integer

ID of existing external asset

Responses

Request samples

Content type
application/json
{
  • "asset_id": 0
}

Response samples

Content type
application/json
{
  • "success": true,
  • "message": "Operation completed successfully",
  • "data": { }
}

Remove asset from thread

Remove asset mapping from thread with OpenAI cleanup

Authorizations:
None
path Parameters
threadId
required
string <uuid>
assetId
required
integer

Responses

Response samples

Content type
application/json
{
  • "success": true,
  • "message": "Operation completed successfully",
  • "data": { }
}

Get thread conversations

Get all conversations in a thread with read status

Authorizations:
None
path Parameters
threadId
required
string <uuid>
query Parameters
page
integer >= 1
Default: 1
limit
integer [ 1 .. 100 ]
Default: 20
sort_order
string
Default: "ASC"
Enum: "ASC" "DESC"
include_read_status
boolean
Default: true

Responses

Response samples

Content type
application/json
{
  • "success": true,
  • "message": "Operation completed successfully",
  • "data": { },
  • "conversations": [
    ],
  • "pagination": {
    },
  • "summary": {
    }
}

Create conversation

Create a new AI conversation in a thread (streaming response)

Authorizations:
None
path Parameters
threadId
required
string <uuid>
Request Body schema: application/json
required
message
required
string non-empty

User message/question for AI

conversation_type
string
Default: "question"
Enum: "question" "request" "analysis"
context
object

Additional context for the conversation

Responses

Request samples

Content type
application/json
{
  • "message": "string",
  • "conversation_type": "question",
  • "context": { }
}

Response samples

Content type
application/json
{
  • "success": false,
  • "message": "Invalid input data",
  • "error": {
    },
  • "errors": [
    ]
}

Get conversation by ID

Get a specific conversation with read status

Authorizations:
None
path Parameters
conversationId
required
string <uuid>

Responses

Response samples

Content type
application/json
{
  • "success": true,
  • "message": "Operation completed successfully",
  • "data": { },
  • "conversation": {
    }
}

Update conversation

Update conversation feedback/rating

Authorizations:
None
path Parameters
conversationId
required
string <uuid>
Request Body schema: application/json
required
feedback_rating
integer [ 1 .. 5 ]

Rating from 1-5

feedback_comment
string <= 1000 characters

Optional feedback comment

is_helpful
boolean

Whether the conversation was helpful

Responses

Request samples

Content type
application/json
{
  • "feedback_rating": 1,
  • "feedback_comment": "string",
  • "is_helpful": true
}

Response samples

Content type
application/json
{
  • "success": true,
  • "message": "Operation completed successfully",
  • "data": { },
  • "conversation": {
    }
}

Delete conversation

Delete a conversation (own conversations or admin access)

Authorizations:
None
path Parameters
conversationId
required
string <uuid>

Responses

Response samples

Content type
application/json
{
  • "success": true,
  • "message": "Operation completed successfully",
  • "data": { }
}

Mark conversation as read

Mark a specific conversation as read

Authorizations:
None
path Parameters
conversationId
required
string <uuid>

Responses

Response samples

Content type
application/json
{
  • "success": true,
  • "message": "Operation completed successfully",
  • "data": { }
}

Mark conversation as unread

Mark a specific conversation as unread

Authorizations:
None
path Parameters
conversationId
required
string <uuid>

Responses

Response samples

Content type
application/json
{
  • "success": true,
  • "message": "Operation completed successfully",
  • "data": { }
}

Mark all thread conversations as read

Mark all conversations in a thread as read

Authorizations:
None
path Parameters
threadId
required
string <uuid>

Responses

Response samples

Content type
application/json
{
  • "success": true,
  • "message": "Operation completed successfully",
  • "data": { },
  • "marked_count": 0
}

Get unread conversation count

Get total count of unread conversations for the current user

Authorizations:
None

Responses

Response samples

Content type
application/json
{
  • "success": true,
  • "message": "Operation completed successfully",
  • "data": { },
  • "unread_count": 0
}

Generate conversation follow-ups

Generate AI-powered follow-up questions/suggestions for a conversation

Authorizations:
None
path Parameters
conversationId
required
string <uuid>

Responses

Response samples

Content type
application/json
{
  • "success": true,
  • "message": "Operation completed successfully",
  • "data": { },
  • "followups": [
    ]
}

Get thread participants

Get all participants/collaborators of a thread

Authorizations:
None
path Parameters
threadId
required
string <uuid>

Responses

Response samples

Content type
application/json
{
  • "success": true,
  • "message": "Operation completed successfully",
  • "data": { },
  • "participants": [
    ]
}

Add thread participant

Add a participant/collaborator to a thread

Authorizations:
None
path Parameters
threadId
required
string <uuid>
Request Body schema: application/json
required
user_id
required
integer

ID of user to add as participant

role
string
Default: "collaborator"
Enum: "collaborator" "viewer" "contributor"

Participant role in the thread

permissions
Array of strings

Specific permissions for this participant

Responses

Request samples

Content type
application/json
{
  • "user_id": 0,
  • "role": "collaborator",
  • "permissions": [
    ]
}

Response samples

Content type
application/json
{
  • "success": true,
  • "message": "Operation completed successfully",
  • "data": { },
  • "participant": {
    }
}

Update thread participant

Update participant role/permissions

Authorizations:
None
path Parameters
threadId
required
string <uuid>
userId
required
integer
Request Body schema: application/json
required
role
string
Enum: "collaborator" "viewer" "contributor"
permissions
Array of strings

Responses

Request samples

Content type
application/json
{
  • "role": "collaborator",
  • "permissions": [
    ]
}

Response samples

Content type
application/json
{
  • "success": true,
  • "message": "Operation completed successfully",
  • "data": { },
  • "participant": {
    }
}

Remove thread participant

Remove a participant from a thread

Authorizations:
None
path Parameters
threadId
required
string <uuid>
userId
required
integer

Responses

Response samples

Content type
application/json
{
  • "success": true,
  • "message": "Operation completed successfully",
  • "data": { }
}

Generate TechNeed from thread

Generate a TechNeed document based on thread conversations

Authorizations:
None
path Parameters
threadId
required
string <uuid>
Request Body schema: application/json
required
title
string

Optional custom title for the TechNeed

description
string

Optional custom description

technology_category
string

Technology category

key_requirements
Array of strings

Key technical requirements

location
string

Location of tech seeker

metadata
object

Additional metadata for TechNeed generation

Responses

Request samples

Content type
application/json
{
  • "title": "string",
  • "description": "string",
  • "technology_category": "string",
  • "key_requirements": [
    ],
  • "location": "string",
  • "metadata": { }
}

Response samples

Content type
application/json
{
  • "success": true,
  • "message": "Operation completed successfully",
  • "data": { },
  • "techneed": {
    }
}

Generate TechNeed summary

Generate a comprehensive summary for an existing TechNeed

Authorizations:
None
path Parameters
threadId
required
string <uuid>
techNeedId
required
string <uuid>
Request Body schema: application/json
required
Description
required
string

TechNeed description

required
object
Key_Requirements
required
Array of strings

Array of key requirements

Technology_Category
required
string

Technology category

Location_of_Tech_Seeker
required
string

Location of tech seeker

object

Responses

Request samples

Content type
application/json
{
  • "Description": "string",
  • "TechNeed": {
    },
  • "Key_Requirements": [
    ],
  • "Technology_Category": "string",
  • "Location_of_Tech_Seeker": "string",
  • "metadata": {
    }
}

Response samples

Content type
application/json
{
  • "success": true,
  • "message": "Operation completed successfully",
  • "data": { },
  • "summary": {
    }
}

Get thread tech offers

Get all tech offers associated with a thread

Authorizations:
None
path Parameters
threadId
required
string <uuid>

Responses

Response samples

Content type
application/json
{
  • "success": true,
  • "message": "Operation completed successfully",
  • "data": { },
  • "offers": [
    ]
}

Submit TechNeed for offers

Submit a TechNeed to external API for tech offer generation

Authorizations:
None
path Parameters
techNeedId
required
string <uuid>

Responses

Response samples

Content type
application/json
{
  • "success": true,
  • "message": "Operation completed successfully",
  • "data": { },
  • "submission_id": "string",
  • "status": "submitted"
}

Get TechNeed offers

Get all tech offers for a specific TechNeed

Authorizations:
None
path Parameters
techNeedId
required
string <uuid>

Responses

Response samples

Content type
application/json
{
  • "success": true,
  • "message": "Operation completed successfully",
  • "data": { },
  • "offers": [
    ]
}

Get TechOffer by ID

Get detailed information about a specific tech offer

Authorizations:
None
path Parameters
techOfferId
required
string <uuid>

Responses

Response samples

Content type
application/json
{
  • "success": true,
  • "message": "Operation completed successfully",
  • "data": { },
  • "offer": {
    }
}

Add thread bookmark

Bookmark a thread for the current user

Authorizations:
None
path Parameters
threadId
required
string <uuid>

Responses

Response samples

Content type
application/json
{
  • "success": true,
  • "message": "Operation completed successfully",
  • "data": { },
  • "bookmark": {
    }
}

Remove thread bookmark

Remove bookmark from a thread for the current user

Authorizations:
None
path Parameters
threadId
required
string <uuid>

Responses

Response samples

Content type
application/json
{
  • "success": true,
  • "message": "Operation completed successfully",
  • "data": { }
}

Get my bookmarked threads

Get all threads bookmarked by the current user

Authorizations:
None
query Parameters
page
integer >= 1
Default: 1
limit
integer [ 1 .. 100 ]
Default: 20
sort_by
string
Default: "created_at"
Enum: "created_at" "updated_at" "title"
sort_order
string
Default: "DESC"
Enum: "ASC" "DESC"

Responses

Response samples

Content type
application/json
{
  • "success": true,
  • "message": "Operation completed successfully",
  • "data": { },
  • "bookmarks": [
    ],
  • "pagination": {
    }
}

TechScout

Technology scouting and discovery operations

TechOffers

Technology offers and ratings management

Topics

Topic categorization and hierarchy management

Prompts

AI prompt management and suggestions

Admin

Administrative functions and system management

Webhooks

Webhook integration and callbacks

Cron

Scheduled tasks and maintenance operations