Opportunity Creation API
Overviewβ
The Opportunity Creation API allows authenticated users with appropriate permissions to create new job opportunities, project listings, and collaboration requests in the Ring Platform.
Endpoint Detailsβ
- URL:
/api/opportunities/create
- Method:
POST
- Authentication: Required (JWT Token)
- Rate Limit: 30 requests per minute
Authentication Requirementsβ
Required roles:
- ADMIN - Full access
- CONFIDENTIAL - Can create confidential opportunities
- MEMBER - Can create public and member opportunities
Request Formatβ
Headersβ
POST /api/opportunities/create
Content-Type: application/json
Authorization: Bearer <jwt_token>
Request Body Schemaβ
interface CreateOpportunityRequest {
title: string; // Required
description: string; // Required
type: 'job' | 'project' | 'collaboration' | 'internship';
category: string;
visibility: 'public' | 'member' | 'confidential';
experienceLevel: 'entry' | 'mid' | 'senior' | 'executive';
// ... additional fields
}
Response Formatβ
Success Response (201 Created)β
{
"id": "opportunity_123456789",
"title": "Senior Full-Stack Developer",
"description": "We are looking for an experienced developer...",
"type": "job",
"status": "active",
"createdBy": "user_987654321",
"dateCreated": "2025-01-14T17:15:00Z"
}
Error Responsesβ
400 Bad Requestβ
{
"error": "Invalid opportunity data. Title and description are required."
}
401 Unauthorizedβ
{
"error": "User not authenticated"
}
403 Forbiddenβ
{
"error": "Access denied. Insufficient permissions to create an opportunity."
}
Code Examplesβ
JavaScript/TypeScriptβ
async function createOpportunity(data: CreateOpportunityRequest) {
const response = await fetch('/api/opportunities/create', {
method: 'POST',
headers: {
'Content-Type': 'application/json',
'Authorization': `Bearer ${token}`
},
body: JSON.stringify(data)
});
if (!response.ok) {
const error = await response.json();
throw new Error(error.error);
}
return response.json();
}
cURL Exampleβ
curl -X POST https://ring.ck.ua/api/opportunities/create \
-H "Content-Type: application/json" \
-H "Authorization: Bearer YOUR_JWT_TOKEN" \
-d '{
"title": "Senior Developer",
"description": "Looking for experienced developer",
"type": "job",
"category": "Software Development",
"visibility": "public",
"experienceLevel": "senior"
}'
Validation Rulesβ
title
: 1-200 characters (required)description
: 10-5000 characters (required)type
: Must be valid opportunity typevisibility
: Must match user permissions
Related Endpointsβ
- List Opportunities - Browse opportunities
- Update Opportunity - Modify opportunity
- Delete Opportunity - Remove opportunity