Skip to main content

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 type
  • visibility: Must match user permissions