diff --git a/app/(landing)/organizations/[id]/bounties/[bountyId]/page.tsx b/app/(landing)/organizations/[id]/bounties/[bountyId]/page.tsx
new file mode 100644
index 00000000..12387ac4
--- /dev/null
+++ b/app/(landing)/organizations/[id]/bounties/[bountyId]/page.tsx
@@ -0,0 +1,18 @@
+import { Metadata } from 'next';
+
+import { AuthGuard } from '@/components/auth';
+import Loading from '@/components/Loading';
+import { generatePageMetadata } from '@/lib/metadata';
+import BountyManagementDashboard from '@/components/organization/bounties/manage/BountyManagementDashboard';
+
+export const metadata: Metadata = generatePageMetadata('bounties');
+
+export default function BountyManagePageRoute() {
+ return (
+ }>
+
+
+
+
+ );
+}
diff --git a/app/(landing)/organizations/[id]/bounties/page.tsx b/app/(landing)/organizations/[id]/bounties/page.tsx
index 08dd3c5d..170b4fa3 100644
--- a/app/(landing)/organizations/[id]/bounties/page.tsx
+++ b/app/(landing)/organizations/[id]/bounties/page.tsx
@@ -234,7 +234,15 @@ export default function OrganizationBountiesPage() {
return (
+ router.push(
+ `/organizations/${organizationId}/bounties/${bounty.id}`
+ )
+ }
+ tabIndex={0}
+ role='button'
+ aria-label={`Manage bounty ${bounty.title || 'Untitled bounty'}`}
>
{
- const s = ['th', 'st', 'nd', 'rd'];
- const v = n % 100;
- return `${n}${s[(v - 20) % 10] ?? s[v] ?? s[0]}`;
-};
-
export default function BountyDetail({ id }: { id: string }) {
const { data: bounty, isLoading, error } = useBounty(id);
const { data: myApplication } = useMyBountyApplication(id);
diff --git a/components/bounties/marketplace/BountyCard.tsx b/components/bounties/marketplace/BountyCard.tsx
index d2ead59c..893589f6 100644
--- a/components/bounties/marketplace/BountyCard.tsx
+++ b/components/bounties/marketplace/BountyCard.tsx
@@ -13,6 +13,7 @@ import {
} from '@/components/organization/bounties/new/tabs/schemas/scopeSchema';
import type { BountyPublic } from '@/features/bounties';
import { DueCountdown } from '../DueCountdown';
+import { bountyStatusClass } from '../statusClass';
/** Plain-language mode label (single claim / competition / application). */
function modeLabel(b: BountyPublic): string {
@@ -22,22 +23,13 @@ function modeLabel(b: BountyPublic): string {
return 'Bounty';
}
-const STATUS_CLASS: Record = {
- open: 'border-emerald-500/30 bg-emerald-500/10 text-emerald-400',
- in_progress: 'border-emerald-500/30 bg-emerald-500/10 text-emerald-400',
- completed: 'border-primary/30 bg-primary/10 text-primary',
- cancelled: 'border-zinc-700 bg-zinc-800/60 text-zinc-300',
-};
-
export function BountyCard({ bounty }: { bounty: BountyPublic }) {
const reward = bounty.rewardAmount > 0;
const isUsdc = bounty.rewardCurrency?.toUpperCase() === 'USDC';
const categoryLabel = bounty.category
? (CATEGORY_LABELS[bounty.category as BountyCategory] ?? bounty.category)
: null;
- const statusClass =
- STATUS_CLASS[bounty.status] ??
- 'border-zinc-700 bg-zinc-800/60 text-zinc-300';
+ const statusClass = bountyStatusClass(bounty.status);
return (
= {
+ open: 'border-emerald-500/30 bg-emerald-500/10 text-emerald-400',
+ in_progress: 'border-emerald-500/30 bg-emerald-500/10 text-emerald-400',
+ ready_to_shortlist: 'border-amber-500/30 bg-amber-500/10 text-amber-400',
+ submitted: 'border-blue-500/30 bg-blue-500/10 text-blue-400',
+ under_review: 'border-blue-500/30 bg-blue-500/10 text-blue-400',
+ completed: 'border-primary/30 bg-primary/10 text-primary',
+ cancelled: 'border-zinc-700 bg-zinc-800/60 text-zinc-300',
+ disputed: 'border-red-500/30 bg-red-500/10 text-red-400',
+};
+
+export function bountyStatusClass(status: string): string {
+ return STATUS_CLASS[status] ?? 'border-zinc-700 bg-zinc-800/60 text-zinc-300';
+}
diff --git a/components/organization/bounties/manage/BountyManagementDashboard.tsx b/components/organization/bounties/manage/BountyManagementDashboard.tsx
new file mode 100644
index 00000000..15396b3c
--- /dev/null
+++ b/components/organization/bounties/manage/BountyManagementDashboard.tsx
@@ -0,0 +1,333 @@
+'use client';
+
+import { useParams } from 'next/navigation';
+import Link from 'next/link';
+import { ArrowLeft, Info, Loader2, Lock } from 'lucide-react';
+
+import { Badge } from '@/components/ui/badge';
+import { Tabs, TabsContent, TabsList, TabsTrigger } from '@/components/ui/tabs';
+import {
+ Tooltip,
+ TooltipContent,
+ TooltipTrigger,
+} from '@/components/ui/tooltip';
+import EmptyState from '@/components/EmptyState';
+import { DueCountdown } from '@/components/bounties/DueCountdown';
+import { bountyStatusClass } from '@/components/bounties/statusClass';
+import {
+ computeBountyModeLabel,
+ computeBountyModeDescription,
+} from '@/components/organization/bounties/new/tabs/schemas/modeSchema';
+import {
+ useBountyOverview,
+ type BountyOperateOverview,
+} from '@/features/bounties';
+import { ordinal } from '@/lib/utils';
+
+export default function BountyManagementDashboard() {
+ const params = useParams<{ id: string; bountyId: string }>();
+ const organizationId = params?.id ?? '';
+ const bountyId = params?.bountyId ?? '';
+
+ const {
+ data: overview,
+ isLoading,
+ error,
+ } = useBountyOverview(organizationId, bountyId);
+
+ if (isLoading) {
+ return (
+
+
+
+ );
+ }
+
+ if (error || !overview) {
+ return (
+
+
+
+
+ Back to bounties
+
+
+
+ );
+ }
+
+ const isApplication =
+ overview.entryType === 'APPLICATION_LIGHT' ||
+ overview.entryType === 'APPLICATION_FULL';
+ const modeLabel =
+ overview.entryType && overview.claimType
+ ? computeBountyModeLabel(overview.entryType, overview.claimType)
+ : 'Bounty';
+ const modeDescription =
+ overview.entryType && overview.claimType
+ ? computeBountyModeDescription(overview.entryType, overview.claimType)
+ : null;
+ const statusClass = bountyStatusClass(overview.status);
+
+ return (
+
+
+
+ Back to bounties
+
+
+ {/* Header */}
+
+
+
+ {overview.status.replace(/_/g, ' ')}
+
+ {modeDescription ? (
+
+
+
+ {modeLabel}
+
+
+
+
+ {modeDescription}
+
+
+ ) : (
+
+ {modeLabel}
+
+ )}
+
+
+ {overview.title}
+
+
+
+
+
+ Overview
+ {isApplication && (
+ Applications
+ )}
+ Submissions
+ Payout & Winners
+ Settings
+
+
+
+
+
+ {isApplication && (
+
+
+
+ )}
+
+
+
+
+
+
+
+
+
+
+
+ );
+}
+
+function OverviewPanel({ overview }: { overview: BountyOperateOverview }) {
+ const { intake } = overview;
+ return (
+
+ {/* Intake stats */}
+
+
+
+
+
+
+ {/* Facts */}
+
+
+
Details
+
+
+ {overview.submissionDeadline && (
+
+
- Submission deadline
+ -
+
+
+
+ )}
+ {overview.applicationWindowCloseAt && (
+
+
- Applications close
+ -
+
+
+
+ )}
+ {overview.maxApplicants != null && (
+
+ )}
+ {overview.shortlistSize != null && (
+
+ )}
+ {overview.escrowEventId && (
+
+ )}
+
+
+
+ {/* Prize tiers */}
+
+
Prize tiers
+ {overview.prizeTiers.length === 0 ? (
+
No prize tiers configured.
+ ) : (
+
+ {overview.prizeTiers.map(tier => (
+
+
+ {ordinal(tier.position)} place
+
+
+ {Number(tier.amount).toLocaleString()}{' '}
+ {overview.rewardCurrency}
+
+
+ ))}
+
+ )}
+
+
+
+ );
+}
+
+function StatCard({
+ label,
+ total,
+ breakdown,
+}: {
+ label: string;
+ total: number;
+ breakdown: Array<[string, string | number]>;
+}) {
+ return (
+
+
{label}
+
{total}
+
+ {breakdown.map(([k, v]) => (
+
+
- {k}
+ - {v}
+
+ ))}
+
+
+ );
+}
+
+function Row({
+ label,
+ value,
+ mono,
+}: {
+ label: string;
+ value: string;
+ mono?: boolean;
+}) {
+ return (
+
+
{label}
+
+ {value}
+
+
+ );
+}
+
+function TabPlaceholder({ title, issue }: { title: string; issue: string }) {
+ return (
+
+
+
{title}
+
Coming soon ({issue}).
+
+ );
+}
diff --git a/components/organization/bounties/new/tabs/RewardTab.tsx b/components/organization/bounties/new/tabs/RewardTab.tsx
index 1aaffe1f..f901b7c9 100644
--- a/components/organization/bounties/new/tabs/RewardTab.tsx
+++ b/components/organization/bounties/new/tabs/RewardTab.tsx
@@ -28,6 +28,7 @@ import {
getBountyPrizePool,
getBountyTotalFunding,
} from '@/lib/utils/bounty-escrow';
+import { ordinal } from '@/lib/utils';
import { MAX_PRIZE_TIERS, type BountyClaimType } from './schemas/modeSchema';
import { makeRewardSchema, type RewardFormData } from './schemas/rewardSchema';
import RegenerateBountySectionButton from '../RegenerateBountySectionButton';
@@ -48,12 +49,6 @@ const REWARD_CURRENCIES = [
{ code: 'XLM', label: 'XLM', disabled: true },
] as const;
-const ordinal = (n: number): string => {
- const s = ['th', 'st', 'nd', 'rd'];
- const v = n % 100;
- return `${n}${s[(v - 20) % 10] ?? s[v] ?? s[0]}`;
-};
-
export default function RewardTab({
mode,
onContinue,
diff --git a/features/bounties/api/keys.ts b/features/bounties/api/keys.ts
index 732803ab..2ae4765b 100644
--- a/features/bounties/api/keys.ts
+++ b/features/bounties/api/keys.ts
@@ -21,4 +21,6 @@ export const bountyKeys = {
mySubmission: (bountyId: string) =>
[...bountyKeys.all, 'my-submission', bountyId] as const,
myActivity: () => [...bountyKeys.all, 'my-activity'] as const,
+ overview: (organizationId: string, bountyId: string) =>
+ [...bountyKeys.all, 'overview', organizationId, bountyId] as const,
};
diff --git a/features/bounties/api/organizer-dashboard-client.ts b/features/bounties/api/organizer-dashboard-client.ts
new file mode 100644
index 00000000..cc4cb2bc
--- /dev/null
+++ b/features/bounties/api/organizer-dashboard-client.ts
@@ -0,0 +1,30 @@
+/**
+ * Organizer operate-dashboard reads (boundless-nestjs #338).
+ *
+ * Types are aliased from the generated OpenAPI schema; calls go through the
+ * typed openapi-fetch client, with the `{ success, data }` envelope unwrapped
+ * by the apiClient middleware + `unwrapData`.
+ */
+import { apiClient, unwrapData, type Schemas } from '@/lib/api';
+
+export type BountyOperateApplicationStats =
+ Schemas['BountyApplicationStatsDto'];
+export type BountyOperateSubmissionStats = Schemas['BountySubmissionStatsDto'];
+export type BountyOperateContributionStats =
+ Schemas['BountyContributionStatsDto'];
+export type BountyOperateIntake = Schemas['BountyOperateIntakeDto'];
+export type BountyOverviewPrizeTier = Schemas['BountyOverviewPrizeTierDto'];
+
+/** One read that powers the management dashboard header + stats (#338). */
+export type BountyOperateOverview = Schemas['BountyOperateOverviewDto'];
+
+export const getBountyOverview = async (
+ organizationId: string,
+ bountyId: string
+): Promise =>
+ unwrapData(
+ await apiClient.GET(
+ '/api/organizations/{organizationId}/bounties/{bountyId}/overview',
+ { params: { path: { organizationId, bountyId } } }
+ )
+ );
diff --git a/features/bounties/api/use-organizer-dashboard.ts b/features/bounties/api/use-organizer-dashboard.ts
new file mode 100644
index 00000000..a4ce9655
--- /dev/null
+++ b/features/bounties/api/use-organizer-dashboard.ts
@@ -0,0 +1,26 @@
+'use client';
+
+import { useQuery } from '@tanstack/react-query';
+
+import { bountyKeys } from './keys';
+import {
+ getBountyOverview,
+ type BountyOperateOverview,
+} from './organizer-dashboard-client';
+
+/**
+ * Operate-dashboard overview for the organizer management surface (#338 / #630).
+ * Global query defaults apply: 4xx never retries, transient errors retry twice;
+ * the shell renders an error/empty state on failure.
+ */
+export function useBountyOverview(
+ organizationId: string | undefined,
+ bountyId: string | undefined
+) {
+ return useQuery({
+ queryKey: bountyKeys.overview(organizationId ?? '', bountyId ?? ''),
+ queryFn: () =>
+ getBountyOverview(organizationId as string, bountyId as string),
+ enabled: !!organizationId && !!bountyId,
+ });
+}
diff --git a/features/bounties/index.ts b/features/bounties/index.ts
index 99c3afb0..a01baec7 100644
--- a/features/bounties/index.ts
+++ b/features/bounties/index.ts
@@ -183,6 +183,18 @@ export {
useMyBountySubmission,
} from './api/use-participant-dashboard';
+// ── Organizer operate dashboard (#338 / #630) ─────────────────────────────────
+export { getBountyOverview } from './api/organizer-dashboard-client';
+export type {
+ BountyOperateOverview,
+ BountyOperateIntake,
+ BountyOperateApplicationStats,
+ BountyOperateSubmissionStats,
+ BountyOperateContributionStats,
+ BountyOverviewPrizeTier,
+} from './api/organizer-dashboard-client';
+export { useBountyOverview } from './api/use-organizer-dashboard';
+
// Participant hooks (React Query).
export {
useBountiesList,
diff --git a/lib/api/generated/schema.d.ts b/lib/api/generated/schema.d.ts
index 42fa8116..7349d3b1 100644
--- a/lib/api/generated/schema.d.ts
+++ b/lib/api/generated/schema.d.ts
@@ -4,45454 +4,45652 @@
*/
export interface paths {
- '/api': {
- parameters: {
- query?: never;
- header?: never;
- path?: never;
- cookie?: never;
- };
- get: operations['AppController_getHello'];
- put?: never;
- post?: never;
- delete?: never;
- options?: never;
- head?: never;
- patch?: never;
- trace?: never;
- };
- '/api/notifications': {
- parameters: {
- query?: never;
- header?: never;
- path?: never;
- cookie?: never;
- };
- get: operations['NotificationsController_getNotifications'];
- put?: never;
- post?: never;
- delete?: never;
- options?: never;
- head?: never;
- patch?: never;
- trace?: never;
- };
- '/api/notifications/unread-count': {
- parameters: {
- query?: never;
- header?: never;
- path?: never;
- cookie?: never;
- };
- get: operations['NotificationsController_getUnreadCount'];
- put?: never;
- post?: never;
- delete?: never;
- options?: never;
- head?: never;
- patch?: never;
- trace?: never;
- };
- '/api/notifications/{id}/read': {
- parameters: {
- query?: never;
- header?: never;
- path?: never;
- cookie?: never;
- };
- get?: never;
- put: operations['NotificationsController_markAsRead'];
- post?: never;
- delete?: never;
- options?: never;
- head?: never;
- patch?: never;
- trace?: never;
- };
- '/api/notifications/read-all': {
- parameters: {
- query?: never;
- header?: never;
- path?: never;
- cookie?: never;
- };
- get?: never;
- put: operations['NotificationsController_markAllAsRead'];
- post?: never;
- delete?: never;
- options?: never;
- head?: never;
- patch?: never;
- trace?: never;
- };
- '/api/notifications/{id}': {
- parameters: {
- query?: never;
- header?: never;
- path?: never;
- cookie?: never;
- };
- get?: never;
- put?: never;
- post?: never;
- delete: operations['NotificationsController_deleteNotification'];
- options?: never;
- head?: never;
- patch?: never;
- trace?: never;
- };
- '/api/notifications/preferences': {
- parameters: {
- query?: never;
- header?: never;
- path?: never;
- cookie?: never;
- };
- get: operations['NotificationsController_getPreferences'];
- put: operations['NotificationsController_updatePreferences'];
- post?: never;
- delete?: never;
- options?: never;
- head?: never;
- patch?: never;
- trace?: never;
- };
- '/api/notifications/test': {
- parameters: {
- query?: never;
- header?: never;
- path?: never;
- cookie?: never;
- };
- get?: never;
- put?: never;
- post: operations['NotificationsController_sendTestNotification'];
- delete?: never;
- options?: never;
- head?: never;
- patch?: never;
- trace?: never;
- };
- '/api/notifications/test-marketing-cron': {
- parameters: {
- query?: never;
- header?: never;
- path?: never;
- cookie?: never;
- };
- get?: never;
- put?: never;
- post: operations['NotificationsController_triggerMarketingCron'];
- delete?: never;
- options?: never;
- head?: never;
- patch?: never;
- trace?: never;
- };
- '/api/users/settings': {
- parameters: {
- query?: never;
- header?: never;
- path?: never;
- cookie?: never;
- };
- /** Get user settings */
- get: operations['SettingsController_getSettings'];
- put?: never;
- post?: never;
- delete?: never;
- options?: never;
- head?: never;
- patch?: never;
- trace?: never;
- };
- '/api/users/settings/notifications': {
- parameters: {
- query?: never;
- header?: never;
- path?: never;
- cookie?: never;
- };
- get?: never;
- /** Update notification settings */
- put: operations['SettingsController_updateNotificationSettings'];
- post?: never;
- delete?: never;
- options?: never;
- head?: never;
- patch?: never;
- trace?: never;
- };
- '/api/users/settings/privacy': {
- parameters: {
- query?: never;
- header?: never;
- path?: never;
- cookie?: never;
- };
- get?: never;
- /** Update privacy settings */
- put: operations['SettingsController_updatePrivacySettings'];
- post?: never;
- delete?: never;
- options?: never;
- head?: never;
- patch?: never;
- trace?: never;
- };
- '/api/users/settings/appearance': {
- parameters: {
- query?: never;
- header?: never;
- path?: never;
- cookie?: never;
- };
- get?: never;
- /** Update appearance settings */
- put: operations['SettingsController_updateAppearanceSettings'];
- post?: never;
- delete?: never;
- options?: never;
- head?: never;
- patch?: never;
- trace?: never;
- };
- '/api/users/earnings/public': {
- parameters: {
- query?: never;
- header?: never;
- path?: never;
- cookie?: never;
- };
- /**
- * Get public earnings for a user (profile page)
- * @description Returns visibility-filtered earnings for the given username: total earned, breakdown by source, and completed activities only. No pending/claimable amounts or entityIds.
- */
- get: operations['EarningsController_getEarningsPublic'];
- put?: never;
- post?: never;
- delete?: never;
- options?: never;
- head?: never;
- patch?: never;
- trace?: never;
- };
- '/api/users/earnings': {
- parameters: {
- query?: never;
- header?: never;
- path?: never;
- cookie?: never;
- };
- /**
- * Get current user earnings
- * @description Returns summary (total earned, pending/completed withdrawal), breakdown by source (hackathons, grants, crowdfunding, bounties), and activity feed.
- */
- get: operations['EarningsController_getEarnings'];
- put?: never;
- post?: never;
- delete?: never;
- options?: never;
- head?: never;
- patch?: never;
- trace?: never;
- };
- '/api/users/profile': {
- parameters: {
- query?: never;
- header?: never;
- path?: never;
- cookie?: never;
- };
- /** Get current user profile */
- get: operations['ProfileController_getProfile'];
- /** Update current user profile */
- put: operations['ProfileController_updateProfile'];
- post?: never;
- delete?: never;
- options?: never;
- head?: never;
- patch?: never;
- trace?: never;
- };
- '/api/users/profile/stats': {
- parameters: {
- query?: never;
- header?: never;
- path?: never;
- cookie?: never;
- };
- /** Get user profile statistics */
- get: operations['ProfileController_getProfileStats'];
- put?: never;
- post?: never;
- delete?: never;
- options?: never;
- head?: never;
- patch?: never;
- trace?: never;
- };
- '/api/users/profile/activity': {
- parameters: {
- query?: never;
- header?: never;
- path?: never;
- cookie?: never;
- };
- /** Get user activity */
- get: operations['ProfileController_getActivity'];
- put?: never;
- post?: never;
- delete?: never;
- options?: never;
- head?: never;
- patch?: never;
- trace?: never;
- };
- '/api/users/profile/avatar': {
- parameters: {
- query?: never;
- header?: never;
- path?: never;
- cookie?: never;
- };
- get?: never;
- put?: never;
- /** Upload user avatar */
- post: operations['ProfileController_uploadAvatar'];
- delete?: never;
- options?: never;
- head?: never;
- patch?: never;
- trace?: never;
- };
- '/api/users/preferences': {
- parameters: {
- query?: never;
- header?: never;
- path?: never;
- cookie?: never;
- };
- /** Get user preferences */
- get: operations['PreferencesController_getPreferences'];
- put?: never;
- post?: never;
- delete?: never;
- options?: never;
- head?: never;
- patch?: never;
- trace?: never;
- };
- '/api/users/preferences/language': {
- parameters: {
- query?: never;
- header?: never;
- path?: never;
- cookie?: never;
- };
- get?: never;
- /** Update language preference */
- put: operations['PreferencesController_updateLanguage'];
- post?: never;
- delete?: never;
- options?: never;
- head?: never;
- patch?: never;
- trace?: never;
- };
- '/api/users/preferences/timezone': {
- parameters: {
- query?: never;
- header?: never;
- path?: never;
- cookie?: never;
- };
- get?: never;
- /** Update timezone preference */
- put: operations['PreferencesController_updateTimezone'];
- post?: never;
- delete?: never;
- options?: never;
- head?: never;
- patch?: never;
- trace?: never;
- };
- '/api/users/preferences/categories': {
- parameters: {
- query?: never;
- header?: never;
- path?: never;
- cookie?: never;
- };
- get?: never;
- /** Update category preferences */
- put: operations['PreferencesController_updateCategoryPreferences'];
- post?: never;
- delete?: never;
- options?: never;
- head?: never;
- patch?: never;
- trace?: never;
- };
- '/api/users/preferences/skills': {
- parameters: {
- query?: never;
- header?: never;
- path?: never;
- cookie?: never;
- };
- get?: never;
- /** Update skill preferences */
- put: operations['PreferencesController_updateSkillPreferences'];
- post?: never;
- delete?: never;
- options?: never;
- head?: never;
- patch?: never;
- trace?: never;
- };
- '/api/users/me': {
- parameters: {
- query?: never;
- header?: never;
- path?: never;
- cookie?: never;
- };
- /** Get the current user (lean identity payload) */
- get: operations['UserController_getMe'];
- put?: never;
- post?: never;
- delete?: never;
- options?: never;
- head?: never;
- patch?: never;
- trace?: never;
- };
- '/api/users/dashboard': {
- parameters: {
- query?: never;
- header?: never;
- path?: never;
- cookie?: never;
- };
- /** Get the current user dashboard: stats, chart, activities graph, and recent activities */
- get: operations['UserController_getDashboard'];
- put?: never;
- post?: never;
- delete?: never;
- options?: never;
- head?: never;
- patch?: never;
- trace?: never;
- };
- '/api/users/onboarding': {
- parameters: {
- query?: never;
- header?: never;
- path?: never;
- cookie?: never;
- };
- get?: never;
- put?: never;
- /** Complete onboarding (persona, referral source, skills, goals) */
- post: operations['UserController_completeOnboarding'];
- delete?: never;
- options?: never;
- head?: never;
- patch?: never;
- trace?: never;
- };
- '/api/users/public': {
- parameters: {
- query?: never;
- header?: never;
- path?: never;
- cookie?: never;
- };
- /** Public test endpoint */
- get: operations['UserController_getPublic'];
- put?: never;
- post?: never;
- delete?: never;
- options?: never;
- head?: never;
- patch?: never;
- trace?: never;
- };
- '/api/users/optional': {
- parameters: {
- query?: never;
- header?: never;
- path?: never;
- cookie?: never;
- };
- /** Optional authentication test endpoint */
- get: operations['UserController_getOptional'];
- put?: never;
- post?: never;
- delete?: never;
- options?: never;
- head?: never;
- patch?: never;
- trace?: never;
- };
- '/api/users/{username}': {
- parameters: {
- query?: never;
- header?: never;
- path?: never;
- cookie?: never;
- };
- /**
- * Get user profile by username
- * @description Get a user profile by their username. Accessible to anyone without authentication.
- */
- get: operations['UserController_getUserByUsername'];
- put?: never;
- post?: never;
- delete?: never;
- options?: never;
- head?: never;
- patch?: never;
- trace?: never;
- };
- '/api/users/{username}/followers': {
- parameters: {
- query?: never;
- header?: never;
- path?: never;
- cookie?: never;
- };
- /**
- * Get user followers
- * @description Get a list of users who follow this profile
- */
- get: operations['UserController_getUserFollowers'];
- put?: never;
- post?: never;
- delete?: never;
- options?: never;
- head?: never;
- patch?: never;
- trace?: never;
- };
- '/api/users/{username}/following': {
- parameters: {
- query?: never;
- header?: never;
- path?: never;
- cookie?: never;
- };
- /**
- * Get users followed by this profile
- * @description Get a list of entities (users, projects, organizations) followed by this user
- */
- get: operations['UserController_getUserFollowing'];
- put?: never;
- post?: never;
- delete?: never;
- options?: never;
- head?: never;
- patch?: never;
- trace?: never;
- };
- '/api/users': {
- parameters: {
- query?: never;
- header?: never;
- path?: never;
- cookie?: never;
- };
- /** Get paginated list of users (Admin only) */
- get: operations['UsersController_getUsers'];
- put?: never;
- post?: never;
- delete?: never;
- options?: never;
- head?: never;
- patch?: never;
- trace?: never;
- };
- '/api/users/{id}': {
- parameters: {
- query?: never;
- header?: never;
- path?: never;
- cookie?: never;
- };
- /** Get user by ID */
- get: operations['UsersController_getUser'];
- /** Update user by ID */
- put: operations['UsersController_updateUser'];
- post?: never;
- /** Delete user by ID (Admin only) */
- delete: operations['UsersController_deleteUser'];
- options?: never;
- head?: never;
- patch?: never;
- trace?: never;
- };
- '/api/users/{id}/profile': {
- parameters: {
- query?: never;
- header?: never;
- path?: never;
- cookie?: never;
- };
- /** Get user profile by ID */
- get: operations['UsersController_getUserProfile'];
- put?: never;
- post?: never;
- delete?: never;
- options?: never;
- head?: never;
- patch?: never;
- trace?: never;
- };
- '/api/upload/single': {
- parameters: {
- query?: never;
- header?: never;
- path?: never;
- cookie?: never;
- };
- get?: never;
- put?: never;
- /**
- * Upload a single file
- * @description Upload a single file to Cloudinary with optional transformations and metadata
- */
- post: operations['UploadController_uploadSingle'];
- delete?: never;
- options?: never;
- head?: never;
- patch?: never;
- trace?: never;
- };
- '/api/upload/multiple': {
- parameters: {
- query?: never;
- header?: never;
- path?: never;
- cookie?: never;
- };
- get?: never;
- put?: never;
- /**
- * Upload multiple files
- * @description Upload multiple files to Cloudinary with optional folder and tags
- */
- post: operations['UploadController_uploadMultiple'];
- delete?: never;
- options?: never;
- head?: never;
- patch?: never;
- trace?: never;
- };
- '/api/upload/{publicId}/{resourceType}': {
- parameters: {
- query?: never;
- header?: never;
- path?: never;
- cookie?: never;
- };
- get?: never;
- put?: never;
- post?: never;
- /**
- * Delete a file
- * @description Delete a file from Cloudinary storage
- */
- delete: operations['UploadController_deleteFile'];
- options?: never;
- head?: never;
- patch?: never;
- trace?: never;
- };
- '/api/upload/info/{publicId}/{resourceType}': {
- parameters: {
- query?: never;
- header?: never;
- path?: never;
- cookie?: never;
- };
- /**
- * Get file information
- * @description Get detailed information about a file from Cloudinary
- */
- get: operations['UploadController_getFileInfo'];
- put?: never;
- post?: never;
- delete?: never;
- options?: never;
- head?: never;
- patch?: never;
- trace?: never;
- };
- '/api/upload/search': {
- parameters: {
- query?: never;
- header?: never;
- path?: never;
- cookie?: never;
- };
- /**
- * Search files
- * @description Search files in Cloudinary with optional filters
- */
- get: operations['UploadController_searchFiles'];
- put?: never;
- post?: never;
- delete?: never;
- options?: never;
- head?: never;
- patch?: never;
- trace?: never;
- };
- '/api/upload/optimize/{publicId}': {
- parameters: {
- query?: never;
- header?: never;
- path?: never;
- cookie?: never;
- };
- /**
- * Generate optimized URL
- * @description Generate an optimized URL with transformations for a file
- */
- get: operations['UploadController_generateOptimizedUrl'];
- put?: never;
- post?: never;
- delete?: never;
- options?: never;
- head?: never;
- patch?: never;
- trace?: never;
- };
- '/api/upload/responsive/{publicId}': {
- parameters: {
- query?: never;
- header?: never;
- path?: never;
- cookie?: never;
- };
- /**
- * Generate responsive URLs
- * @description Generate multiple URLs with different sizes for responsive images
- */
- get: operations['UploadController_generateResponsiveUrls'];
- put?: never;
- post?: never;
- delete?: never;
- options?: never;
- head?: never;
- patch?: never;
- trace?: never;
- };
- '/api/upload/avatar/{publicId}': {
- parameters: {
- query?: never;
- header?: never;
- path?: never;
- cookie?: never;
- };
- /**
- * Generate avatar URL
- * @description Generate a square cropped avatar URL with automatic optimizations
- */
- get: operations['UploadController_generateAvatarUrl'];
- put?: never;
- post?: never;
- delete?: never;
- options?: never;
- head?: never;
- patch?: never;
- trace?: never;
- };
- '/api/upload/logo/{publicId}': {
- parameters: {
- query?: never;
- header?: never;
- path?: never;
- cookie?: never;
- };
- /**
- * Generate logo URL
- * @description Generate a logo URL with fit cropping and automatic optimizations
- */
- get: operations['UploadController_generateLogoUrl'];
- put?: never;
- post?: never;
- delete?: never;
- options?: never;
- head?: never;
- patch?: never;
- trace?: never;
- };
- '/api/upload/banner/{publicId}': {
- parameters: {
- query?: never;
- header?: never;
- path?: never;
- cookie?: never;
- };
- /**
- * Generate banner URL
- * @description Generate a banner URL with fill cropping and automatic optimizations
- */
- get: operations['UploadController_generateBannerUrl'];
- put?: never;
- post?: never;
- delete?: never;
- options?: never;
- head?: never;
- patch?: never;
- trace?: never;
- };
- '/api/upload/stats': {
- parameters: {
- query?: never;
- header?: never;
- path?: never;
- cookie?: never;
- };
- /**
- * Get usage statistics
- * @description Get Cloudinary usage statistics for the account
- */
- get: operations['UploadController_getUsageStats'];
- put?: never;
- post?: never;
- delete?: never;
- options?: never;
- head?: never;
- patch?: never;
- trace?: never;
- };
- '/api/auth/register': {
- parameters: {
- query?: never;
- header?: never;
- path?: never;
- cookie?: never;
- };
- get?: never;
- put?: never;
- post: operations['AuthController_register'];
- delete?: never;
- options?: never;
- head?: never;
- patch?: never;
- trace?: never;
- };
- '/api/auth/login': {
- parameters: {
- query?: never;
- header?: never;
- path?: never;
- cookie?: never;
- };
- get?: never;
- put?: never;
- post: operations['AuthController_login'];
- delete?: never;
- options?: never;
- head?: never;
- patch?: never;
- trace?: never;
- };
- '/api/auth/refresh': {
- parameters: {
- query?: never;
- header?: never;
- path?: never;
- cookie?: never;
- };
- get?: never;
- put?: never;
- post: operations['AuthController_refreshToken'];
- delete?: never;
- options?: never;
- head?: never;
- patch?: never;
- trace?: never;
- };
- '/api/auth/logout': {
- parameters: {
- query?: never;
- header?: never;
- path?: never;
- cookie?: never;
- };
- get?: never;
- put?: never;
- post: operations['AuthController_logout'];
- delete?: never;
- options?: never;
- head?: never;
- patch?: never;
- trace?: never;
- };
- '/api/auth/me': {
- parameters: {
- query?: never;
- header?: never;
- path?: never;
- cookie?: never;
- };
- get: operations['AuthController_getProfile'];
- put?: never;
- post?: never;
- delete?: never;
- options?: never;
- head?: never;
- patch?: never;
- trace?: never;
- };
- '/api/auth/verify-stellar-signature': {
- parameters: {
- query?: never;
- header?: never;
- path?: never;
- cookie?: never;
- };
- get?: never;
- put?: never;
- post: operations['AuthController_verifyStellarSignature'];
- delete?: never;
- options?: never;
- head?: never;
- patch?: never;
- trace?: never;
- };
- '/api/auth/oauth/google': {
- parameters: {
- query?: never;
- header?: never;
- path?: never;
- cookie?: never;
- };
- get: operations['OAuthController_googleAuth'];
- put?: never;
- post?: never;
- delete?: never;
- options?: never;
- head?: never;
- patch?: never;
- trace?: never;
- };
- '/api/auth/oauth/google/callback': {
- parameters: {
- query?: never;
- header?: never;
- path?: never;
- cookie?: never;
- };
- get: operations['OAuthController_googleAuthCallback'];
- put?: never;
- post?: never;
- delete?: never;
- options?: never;
- head?: never;
- patch?: never;
- trace?: never;
- };
- '/api/auth/oauth/github': {
- parameters: {
- query?: never;
- header?: never;
- path?: never;
- cookie?: never;
- };
- get: operations['OAuthController_githubAuth'];
- put?: never;
- post?: never;
- delete?: never;
- options?: never;
- head?: never;
- patch?: never;
- trace?: never;
- };
- '/api/auth/oauth/github/callback': {
- parameters: {
- query?: never;
- header?: never;
- path?: never;
- cookie?: never;
- };
- get: operations['OAuthController_githubAuthCallback'];
- put?: never;
- post?: never;
- delete?: never;
- options?: never;
- head?: never;
- patch?: never;
- trace?: never;
- };
- '/api/auth/oauth/twitter': {
- parameters: {
- query?: never;
- header?: never;
- path?: never;
- cookie?: never;
- };
- get: operations['OAuthController_twitterAuth'];
- put?: never;
- post?: never;
- delete?: never;
- options?: never;
- head?: never;
- patch?: never;
- trace?: never;
- };
- '/api/auth/oauth/twitter/callback': {
- parameters: {
- query?: never;
- header?: never;
- path?: never;
- cookie?: never;
- };
- get: operations['OAuthController_twitterAuthCallback'];
- put?: never;
- post?: never;
- delete?: never;
- options?: never;
- head?: never;
- patch?: never;
- trace?: never;
- };
- '/api/follows/{entityType}/{entityId}': {
- parameters: {
- query?: never;
- header?: never;
- path?: never;
- cookie?: never;
- };
- get?: never;
- put?: never;
- post: operations['FollowsController_followEntity'];
- delete: operations['FollowsController_unfollowEntity'];
- options?: never;
- head?: never;
- patch?: never;
- trace?: never;
- };
- '/api/follows/user/{userId}/following': {
- parameters: {
- query?: never;
- header?: never;
- path?: never;
- cookie?: never;
- };
- get: operations['FollowsController_getUserFollowing'];
- put?: never;
- post?: never;
- delete?: never;
- options?: never;
- head?: never;
- patch?: never;
- trace?: never;
- };
- '/api/follows/entity/{entityType}/{entityId}/followers': {
- parameters: {
- query?: never;
- header?: never;
- path?: never;
- cookie?: never;
- };
- get: operations['FollowsController_getEntityFollowers'];
- put?: never;
- post?: never;
- delete?: never;
- options?: never;
- head?: never;
- patch?: never;
- trace?: never;
- };
- '/api/follows/user/{userId}/stats': {
- parameters: {
- query?: never;
- header?: never;
- path?: never;
- cookie?: never;
- };
- get: operations['FollowsController_getFollowStats'];
- put?: never;
- post?: never;
- delete?: never;
- options?: never;
- head?: never;
- patch?: never;
- trace?: never;
- };
- '/api/follows/{entityType}/{entityId}/check': {
- parameters: {
- query?: never;
- header?: never;
- path?: never;
- cookie?: never;
- };
- get: operations['FollowsController_isFollowing'];
- put?: never;
- post?: never;
- delete?: never;
- options?: never;
- head?: never;
- patch?: never;
- trace?: never;
- };
- '/api/chat/history': {
- parameters: {
- query?: never;
- header?: never;
- path?: never;
- cookie?: never;
- };
- /** Get chat message history */
- get: operations['ChatController_getMessages'];
- put?: never;
- post?: never;
- delete?: never;
- options?: never;
- head?: never;
- patch?: never;
- trace?: never;
- };
- '/api/messages/conversations': {
- parameters: {
- query?: never;
- header?: never;
- path?: never;
- cookie?: never;
- };
- /** List my conversations */
- get: operations['MessagesController_listConversations'];
- put?: never;
- /** Start or get existing conversation */
- post: operations['MessagesController_startOrGetConversation'];
- delete?: never;
- options?: never;
- head?: never;
- patch?: never;
- trace?: never;
- };
- '/api/messages/conversations/{id}': {
- parameters: {
- query?: never;
- header?: never;
- path?: never;
- cookie?: never;
- };
- /** Get one conversation (thread header) */
- get: operations['MessagesController_getConversation'];
- put?: never;
- post?: never;
- delete?: never;
- options?: never;
- head?: never;
- patch?: never;
- trace?: never;
- };
- '/api/messages/conversations/{id}/messages': {
- parameters: {
- query?: never;
- header?: never;
- path?: never;
- cookie?: never;
- };
- /** List messages in a conversation */
- get: operations['MessagesController_listMessages'];
- put?: never;
- /** Send a message */
- post: operations['MessagesController_sendMessage'];
- delete?: never;
- options?: never;
- head?: never;
- patch?: never;
- trace?: never;
- };
- '/api/messages/conversations/{id}/read': {
- parameters: {
- query?: never;
- header?: never;
- path?: never;
- cookie?: never;
- };
- get?: never;
- put?: never;
- post?: never;
- delete?: never;
- options?: never;
- head?: never;
- /** Mark conversation as read */
- patch: operations['MessagesController_markConversationRead'];
- trace?: never;
- };
- '/api/credits/me': {
- parameters: {
- query?: never;
- header?: never;
- path?: never;
- cookie?: never;
- };
- /** Current user credit balance, tier and next refill */
- get: operations['CreditsController_getMine'];
- put?: never;
- post?: never;
- delete?: never;
- options?: never;
- head?: never;
- patch?: never;
- trace?: never;
- };
- '/api/credits/history': {
- parameters: {
- query?: never;
- header?: never;
- path?: never;
- cookie?: never;
- };
- /** Paginated credit ledger for the current user */
- get: operations['CreditsController_getHistory'];
- put?: never;
- post?: never;
- delete?: never;
- options?: never;
- head?: never;
- patch?: never;
- trace?: never;
- };
- '/api/crowdfunding/validate': {
- parameters: {
- query?: never;
- header?: never;
- path?: never;
- cookie?: never;
- };
- get?: never;
- put?: never;
- /**
- * Validate campaign data
- * @description Validate campaign data before creation. returns 200 if valid, 400 if invalid.
- */
- post: operations['CampaignsController_validateCampaign'];
- delete?: never;
- options?: never;
- head?: never;
- patch?: never;
- trace?: never;
- };
- '/api/crowdfunding/draft': {
- parameters: {
- query?: never;
- header?: never;
- path?: never;
- cookie?: never;
- };
- get?: never;
- put?: never;
- /**
- * Create a draft campaign
- * @description Create a minimal DRAFT campaign (title only) for the creation wizard. Returns its id and slug so the wizard can save each step via PUT and submit for review at the end.
- */
- post: operations['CampaignsController_createDraft'];
- delete?: never;
- options?: never;
- head?: never;
- patch?: never;
- trace?: never;
- };
- '/api/crowdfunding': {
- parameters: {
- query?: never;
- header?: never;
- path?: never;
- cookie?: never;
- };
- /**
- * List crowdfunding campaigns
- * @description Get a paginated list of crowdfunding campaigns with optional filtering
- */
- get: operations['CampaignsController_getCampaigns'];
- put?: never;
- /**
- * Create a crowdfunding campaign
- * @description Create a new crowdfunding campaign. This will also create the associated project automatically.
- */
- post: operations['CampaignsController_createCampaign'];
- delete?: never;
- options?: never;
- head?: never;
- patch?: never;
- trace?: never;
- };
- '/api/crowdfunding/trigger-cron': {
- parameters: {
- query?: never;
- header?: never;
- path?: never;
- cookie?: never;
- };
- /**
- * Trigger campaign transition cron
- * @description Manually trigger the campaign transition cron job for testing purposes.
- */
- get: operations['CampaignsController_triggerCron'];
- put?: never;
- post?: never;
- delete?: never;
- options?: never;
- head?: never;
- patch?: never;
- trace?: never;
- };
- '/api/crowdfunding/me': {
- parameters: {
- query?: never;
- header?: never;
- path?: never;
- cookie?: never;
- };
- /**
- * List authenticated user's campaigns
- * @description Get a paginated list of crowdfunding campaigns created by the authenticated user
- */
- get: operations['CampaignsController_getMyCampaigns'];
- put?: never;
- post?: never;
- delete?: never;
- options?: never;
- head?: never;
- patch?: never;
- trace?: never;
- };
- '/api/crowdfunding/s/{slug}': {
- parameters: {
- query?: never;
- header?: never;
- path?: never;
- cookie?: never;
- };
- /**
- * Get campaign by slug
- * @description Get detailed information about a specific crowdfunding campaign by its URL slug
- */
- get: operations['CampaignsController_getCampaignBySlug'];
- put?: never;
- post?: never;
- delete?: never;
- options?: never;
- head?: never;
- patch?: never;
- trace?: never;
- };
- '/api/crowdfunding/{id}': {
- parameters: {
- query?: never;
- header?: never;
- path?: never;
- cookie?: never;
- };
- /**
- * Get campaign details
- * @description Get detailed information about a specific crowdfunding campaign
- */
- get: operations['CampaignsController_getCampaign'];
- /**
- * Update campaign
- * @description Update a crowdfunding campaign. Only campaign owners can update campaigns.
- */
- put: operations['CampaignsController_updateCampaign'];
- post?: never;
- /**
- * Delete campaign
- * @description Delete a crowdfunding campaign. Only campaign owners can delete campaigns that are in draft/reviewing phase and have no contributions.
- */
- delete: operations['CampaignsController_deleteCampaign'];
- options?: never;
- head?: never;
- patch?: never;
- trace?: never;
- };
- '/api/crowdfunding/{id}/statistics': {
- parameters: {
- query?: never;
- header?: never;
- path?: never;
- cookie?: never;
- };
- /**
- * Get campaign statistics
- * @description Get funding statistics and progress for a campaign
- */
- get: operations['CampaignsController_getCampaignStatistics'];
- put?: never;
- post?: never;
- delete?: never;
- options?: never;
- head?: never;
- patch?: never;
- trace?: never;
- };
- '/api/crowdfunding/{id}/invitations': {
- parameters: {
- query?: never;
- header?: never;
- path?: never;
- cookie?: never;
- };
- /** Get all invitations for a campaign */
- get: operations['CampaignsController_getInvitations'];
- put?: never;
- /** Invite a team member to the campaign */
- post: operations['CampaignsController_inviteTeamMember'];
- delete?: never;
- options?: never;
- head?: never;
- patch?: never;
- trace?: never;
- };
- '/api/crowdfunding/invitations/accept': {
- parameters: {
- query?: never;
- header?: never;
- path?: never;
- cookie?: never;
- };
- get?: never;
- put?: never;
- /** Accept a campaign team invitation */
- post: operations['CampaignsController_acceptInvitation'];
- delete?: never;
- options?: never;
- head?: never;
- patch?: never;
- trace?: never;
- };
- '/api/crowdfunding/{id}/contributions': {
- parameters: {
- query?: never;
- header?: never;
- path?: never;
- cookie?: never;
- };
- /**
- * Get campaign contributions
- * @description Get paginated list of contributions for a campaign
- */
- get: operations['ContributionsController_getCampaignContributions'];
- put?: never;
- post?: never;
- delete?: never;
- options?: never;
- head?: never;
- patch?: never;
- trace?: never;
- };
- '/api/crowdfunding/{id}/contributions/stats': {
- parameters: {
- query?: never;
- header?: never;
- path?: never;
- cookie?: never;
- };
- /**
- * Get contribution statistics
- * @description Get contribution statistics and analytics for a campaign
- */
- get: operations['ContributionsController_getContributionStats'];
- put?: never;
- post?: never;
- delete?: never;
- options?: never;
- head?: never;
- patch?: never;
- trace?: never;
- };
- '/api/crowdfunding/{id}/milestones': {
- parameters: {
- query?: never;
- header?: never;
- path?: never;
- cookie?: never;
- };
- /**
- * Get campaign milestones
- * @description Get all milestones for a crowdfunding campaign
- */
- get: operations['MilestonesController_getCampaignMilestones'];
- put?: never;
- post?: never;
- delete?: never;
- options?: never;
- head?: never;
- patch?: never;
- trace?: never;
- };
- '/api/crowdfunding/{id}/milestones/{milestoneId}': {
- parameters: {
- query?: never;
- header?: never;
- path?: never;
- cookie?: never;
- };
- /**
- * Get milestone details
- * @description Get detailed information about a specific milestone
- */
- get: operations['MilestonesController_getMilestone'];
- /**
- * Submit milestone for review
- * @description Submit milestone with proof of work for review. Creators: Provide proof of work files/links and optional notes. Data will be strictly validated. Milestone will be marked as SUBMITTED status for admin review.
- */
- put: operations['MilestonesController_updateMilestone'];
- post?: never;
- delete?: never;
- options?: never;
- head?: never;
- patch?: never;
- trace?: never;
- };
- '/api/crowdfunding/{id}/milestones/{milestoneId}/validate-submission': {
- parameters: {
- query?: never;
- header?: never;
- path?: never;
- cookie?: never;
- };
- get?: never;
- put?: never;
- /**
- * Validate milestone submission data
- * @description Strictly validate milestone submission data (proof of work files/links) for creator submissions without performing any side effects. Creators submit milestones for review with proof of work. Admin reviews and approves later. Returns validated data if successful, or detailed error messages if validation fails. Use this before blockchain interaction to ensure data integrity.
- */
- post: operations['MilestonesController_validateMilestoneSubmission'];
- delete?: never;
- options?: never;
- head?: never;
- patch?: never;
- trace?: never;
- };
- '/api/crowdfunding/{id}/milestones/stats': {
- parameters: {
- query?: never;
- header?: never;
- path?: never;
- cookie?: never;
- };
- /**
- * Get milestone statistics
- * @description Get milestone completion statistics for a campaign
- */
- get: operations['MilestonesController_getMilestoneStats'];
- put?: never;
- post?: never;
- delete?: never;
- options?: never;
- head?: never;
- patch?: never;
- trace?: never;
- };
- '/api/crowdfunding/campaigns/{id}/v2/submit-for-review': {
- parameters: {
- query?: never;
- header?: never;
- path?: never;
- cookie?: never;
- };
- get?: never;
- put?: never;
- /** Submit a DRAFT campaign to admin review */
- post: operations['BuilderCrowdfundingV2Controller_submitForReview'];
- delete?: never;
- options?: never;
- head?: never;
- patch?: never;
- trace?: never;
- };
- '/api/crowdfunding/campaigns/{id}/v2/withdraw-submission': {
- parameters: {
- query?: never;
- header?: never;
- path?: never;
- cookie?: never;
- };
- get?: never;
- put?: never;
- /** Withdraw a pending review back to DRAFT (D4) */
- post: operations['BuilderCrowdfundingV2Controller_withdrawSubmission'];
- delete?: never;
- options?: never;
- head?: never;
- patch?: never;
- trace?: never;
- };
- '/api/crowdfunding/campaigns/{id}/v2/revise-and-resubmit': {
- parameters: {
- query?: never;
- header?: never;
- path?: never;
- cookie?: never;
- };
- get?: never;
- put?: never;
- /** Resubmit a REVIEW_REJECTED campaign (D5: unlimited retries) */
- post: operations['BuilderCrowdfundingV2Controller_reviseAndResubmit'];
- delete?: never;
- options?: never;
- head?: never;
- patch?: never;
- trace?: never;
- };
- '/api/crowdfunding/campaigns/{id}/v2/escrow/publish': {
- parameters: {
- query?: never;
- header?: never;
- path?: never;
- cookie?: never;
- };
- get?: never;
- put?: never;
- /** Publish a VOTE_PASSED campaign to the events contract */
- post: operations['BuilderCrowdfundingV2Controller_publish'];
- delete?: never;
- options?: never;
- head?: never;
- patch?: never;
- trace?: never;
- };
- '/api/crowdfunding/campaigns/{id}/v2/escrow/cancel': {
- parameters: {
- query?: never;
- header?: never;
- path?: never;
- cookie?: never;
- };
- get?: never;
- put?: never;
- /** Cancel a campaign and refund backers */
- post: operations['BuilderCrowdfundingV2Controller_cancel'];
- delete?: never;
- options?: never;
- head?: never;
- patch?: never;
- trace?: never;
- };
- '/api/crowdfunding/campaigns/{id}/v2/escrow/contribute': {
- parameters: {
- query?: never;
- header?: never;
- path?: never;
- cookie?: never;
- };
- get?: never;
- put?: never;
- /** Build (and optionally submit) an add_funds op against the campaign */
- post: operations['BackerCrowdfundingV2Controller_contribute'];
- delete?: never;
- options?: never;
- head?: never;
- patch?: never;
- trace?: never;
- };
- '/api/crowdfunding/campaigns/{id}/v2/escrow/ops/{opRowId}/submit-signed': {
- parameters: {
- query?: never;
- header?: never;
- path?: never;
- cookie?: never;
- };
- get?: never;
- put?: never;
- /** Submit a wallet-signed contribution XDR (EXTERNAL path) */
- post: operations['BackerCrowdfundingV2Controller_submitSigned'];
- delete?: never;
- options?: never;
- head?: never;
- patch?: never;
- trace?: never;
- };
- '/api/crowdfunding/campaigns/{id}/v2/escrow/ops/{opRowId}': {
- parameters: {
- query?: never;
- header?: never;
- path?: never;
- cookie?: never;
- };
- /** Poll the state of a contribution escrow op */
- get: operations['BackerCrowdfundingV2Controller_getOp'];
- put?: never;
- post?: never;
- delete?: never;
- options?: never;
- head?: never;
- patch?: never;
- trace?: never;
- };
- '/api/crowdfunding/campaigns/{id}/v2/vote': {
- parameters: {
- query?: never;
- header?: never;
- path?: never;
- cookie?: never;
- };
- /** Read the campaign vote tally */
- get: operations['CommunityCrowdfundingV2Controller_getTally'];
- put?: never;
- /** Cast or change vote on a VOTING campaign */
- post: operations['CommunityCrowdfundingV2Controller_castVote'];
- delete?: never;
- options?: never;
- head?: never;
- patch?: never;
- trace?: never;
- };
- '/api/crowdfunding/campaigns/{id}/v2/vote/me': {
- parameters: {
- query?: never;
- header?: never;
- path?: never;
- cookie?: never;
- };
- /** Read the caller's current vote (or null) */
- get: operations['CommunityCrowdfundingV2Controller_getMyVote'];
- put?: never;
- post?: never;
- delete?: never;
- options?: never;
- head?: never;
- patch?: never;
- trace?: never;
- };
- '/api/crowdfunding/campaigns/{id}/v2/admin/approve': {
- parameters: {
- query?: never;
- header?: never;
- path?: never;
- cookie?: never;
- };
- get?: never;
- put?: never;
- /** Approve a submitted campaign; assigns reviewer */
- post: operations['AdminCrowdfundingV2Controller_approve'];
- delete?: never;
- options?: never;
- head?: never;
- patch?: never;
- trace?: never;
- };
- '/api/crowdfunding/campaigns/{id}/v2/admin/reject': {
- parameters: {
- query?: never;
- header?: never;
- path?: never;
- cookie?: never;
- };
- get?: never;
- put?: never;
- /** Reject a submitted campaign with optional reason */
- post: operations['AdminCrowdfundingV2Controller_reject'];
- delete?: never;
- options?: never;
- head?: never;
- patch?: never;
- trace?: never;
- };
- '/api/crowdfunding/campaigns/{id}/v2/admin/extend-funding': {
- parameters: {
- query?: never;
- header?: never;
- path?: never;
- cookie?: never;
- };
- get?: never;
- put?: never;
- /** Extend a live campaign funding deadline */
- post: operations['AdminCrowdfundingV2Controller_extendFunding'];
- delete?: never;
- options?: never;
- head?: never;
- patch?: never;
- trace?: never;
- };
- '/api/crowdfunding/campaigns/{id}/v2/admin/pause': {
- parameters: {
- query?: never;
- header?: never;
- path?: never;
- cookie?: never;
- };
- get?: never;
- put?: never;
- /** Pause a live campaign (D7) */
- post: operations['AdminCrowdfundingV2Controller_pause'];
- delete?: never;
- options?: never;
- head?: never;
- patch?: never;
- trace?: never;
- };
- '/api/crowdfunding/campaigns/{id}/v2/admin/unpause': {
- parameters: {
- query?: never;
- header?: never;
- path?: never;
- cookie?: never;
- };
- get?: never;
- put?: never;
- /** Unpause a campaign and restore previous status */
- post: operations['AdminCrowdfundingV2Controller_unpause'];
- delete?: never;
- options?: never;
- head?: never;
- patch?: never;
- trace?: never;
- };
- '/api/crowdfunding/campaigns/{id}/v2/admin/milestones/{milestoneId}/approve': {
- parameters: {
- query?: never;
- header?: never;
- path?: never;
- cookie?: never;
- };
- get?: never;
- put?: never;
- /** Approve a submitted milestone */
- post: operations['AdminCrowdfundingV2Controller_approveMilestone'];
- delete?: never;
- options?: never;
- head?: never;
- patch?: never;
- trace?: never;
- };
- '/api/crowdfunding/campaigns/{id}/v2/admin/milestones/{milestoneId}/reject': {
- parameters: {
- query?: never;
- header?: never;
- path?: never;
- cookie?: never;
- };
- get?: never;
- put?: never;
- /** Reject a submitted milestone with feedback */
- post: operations['AdminCrowdfundingV2Controller_rejectMilestone'];
- delete?: never;
- options?: never;
- head?: never;
- patch?: never;
- trace?: never;
- };
- '/api/crowdfunding/campaigns/{id}/v2/disputes': {
- parameters: {
- query?: never;
- header?: never;
- path?: never;
- cookie?: never;
- };
- get?: never;
- put?: never;
- /** Open a dispute on a campaign (backers only) */
- post: operations['CrowdfundingDisputesController_file'];
- delete?: never;
- options?: never;
- head?: never;
- patch?: never;
- trace?: never;
- };
- '/api/crowdfunding/campaigns/{id}/v2/disputes/mine': {
- parameters: {
- query?: never;
- header?: never;
- path?: never;
- cookie?: never;
- };
- /** List the caller’s disputes on a campaign */
- get: operations['CrowdfundingDisputesController_mine'];
- put?: never;
- post?: never;
- delete?: never;
- options?: never;
- head?: never;
- patch?: never;
- trace?: never;
- };
- '/api/wallet': {
- parameters: {
- query?: never;
- header?: never;
- path?: never;
- cookie?: never;
- };
- /** Get current user wallet */
- get: operations['WalletController_getWallet'];
- put?: never;
- post?: never;
- delete?: never;
- options?: never;
- head?: never;
- patch?: never;
- trace?: never;
- };
- '/api/wallet/details': {
- parameters: {
- query?: never;
- header?: never;
- path?: never;
- cookie?: never;
- };
- /** Get wallet details including balances and transactions */
- get: operations['WalletController_getWalletDetails'];
- put?: never;
- post?: never;
- delete?: never;
- options?: never;
- head?: never;
- patch?: never;
- trace?: never;
- };
- '/api/wallet/summary': {
- parameters: {
- query?: never;
- header?: never;
- path?: never;
- cookie?: never;
- };
- /** Total USD balance across the user wallet assets (nav chip) */
- get: operations['WalletController_getWalletSummary'];
- put?: never;
- post?: never;
- delete?: never;
- options?: never;
- head?: never;
- patch?: never;
- trace?: never;
- };
- '/api/wallet/balance/{address}': {
- parameters: {
- query?: never;
- header?: never;
- path?: never;
- cookie?: never;
- };
- /**
- * Get USDC + XLM balance for any Stellar address
- * @description Public on-chain balances for an arbitrary G-address. Used by funding flows to pre-check the selected wallet before submitting on-chain.
- */
- get: operations['WalletController_getAddressBalance'];
- put?: never;
- post?: never;
- delete?: never;
- options?: never;
- head?: never;
- patch?: never;
- trace?: never;
- };
- '/api/wallet/sync': {
- parameters: {
- query?: never;
- header?: never;
- path?: never;
- cookie?: never;
- };
- get?: never;
- put?: never;
- /** Sync wallet with blockchain */
- post: operations['WalletController_syncWallet'];
- delete?: never;
- options?: never;
- head?: never;
- patch?: never;
- trace?: never;
- };
- '/api/wallet/create': {
- parameters: {
- query?: never;
- header?: never;
- path?: never;
- cookie?: never;
- };
- get?: never;
- put?: never;
- /** Create a new wallet for the current user */
- post: operations['WalletController_createWallet'];
- delete?: never;
- options?: never;
- head?: never;
- patch?: never;
- trace?: never;
- };
- '/api/wallet/activate': {
- parameters: {
- query?: never;
- header?: never;
- path?: never;
- cookie?: never;
- };
- get?: never;
- put?: never;
- /**
- * Activate wallet on Stellar with sponsored reserves
- * @description Creates the on-chain account and configured trustlines (default: USDC) in a single sponsored transaction. The platform sponsor account pays all XLM reserves and the network fee. Idempotent: safe to retry if a prior call failed.
- */
- post: operations['WalletController_activate'];
- delete?: never;
- options?: never;
- head?: never;
- patch?: never;
- trace?: never;
- };
- '/api/wallet/admin/reclaim-dormant': {
- parameters: {
- query?: never;
- header?: never;
- path?: never;
- cookie?: never;
- };
- get?: never;
- put?: never;
- /**
- * Admin: reclaim sponsor XLM from dormant zero-balance wallets
- * @description Finds wallets that have been idle for the given window with zero on-chain balances, and merges each one back into the sponsor account. Frees ~1 XLM per account and ~0.5 XLM per trustline. Defaults to dryRun=true; set dryRun=false to actually submit. The wallet row is preserved (isActivated reset to false), so a returning user can re-activate at the same address.
- */
- post: operations['WalletController_reclaimDormant'];
- delete?: never;
- options?: never;
- head?: never;
- patch?: never;
- trace?: never;
- };
- '/api/wallet/trustline/supported': {
- parameters: {
- query?: never;
- header?: never;
- path?: never;
- cookie?: never;
- };
- /** List assets that can have a trustline added (e.g. USDC, EURC) */
- get: operations['WalletController_getSupportedTrustlines'];
- put?: never;
- post?: never;
- delete?: never;
- options?: never;
- head?: never;
- patch?: never;
- trace?: never;
- };
- '/api/wallet/trustline': {
- parameters: {
- query?: never;
- header?: never;
- path?: never;
- cookie?: never;
- };
- get?: never;
- put?: never;
- /** Add a trustline for a supported asset (e.g. USDC) */
- post: operations['WalletController_addTrustline'];
- delete?: never;
- options?: never;
- head?: never;
- patch?: never;
- trace?: never;
- };
- '/api/wallet/send/validate': {
- parameters: {
- query?: never;
- header?: never;
- path?: never;
- cookie?: never;
- };
- /**
- * Validate destination address before sending
- * @description Returns whether the destination is a valid Stellar address, activated on the network, has a trustline for the given asset (for non-XLM), and whether the address requires a memo (e.g. exchange shared deposit address).
- */
- get: operations['WalletController_validateSendDestination'];
- put?: never;
- post?: never;
- delete?: never;
- options?: never;
- head?: never;
- patch?: never;
- trace?: never;
- };
- '/api/wallet/send': {
- parameters: {
- query?: never;
- header?: never;
- path?: never;
- cookie?: never;
- };
- get?: never;
- put?: never;
- /**
- * Send funds from your wallet to a Stellar address
- * @description Sends funds from your Boundless wallet to a destination. Requires identity verification (KYC). Validates: your wallet is activated, destination is activated, destination has trustline for the asset (if not XLM), optional memo. Requires sufficient balance and XLM for network fee when sending non-XLM.
- */
- post: operations['WalletController_send'];
- delete?: never;
- options?: never;
- head?: never;
- patch?: never;
- trace?: never;
- };
- '/api/api/comments': {
- parameters: {
- query?: never;
- header?: never;
- path?: never;
- cookie?: never;
- };
- /** List comments with filters */
- get: operations['CommentsController_listComments'];
- put?: never;
- /** Create a comment */
- post: operations['CommentsController_createComment'];
- delete?: never;
- options?: never;
- head?: never;
- patch?: never;
- trace?: never;
- };
- '/api/api/comments/{id}': {
- parameters: {
- query?: never;
- header?: never;
- path?: never;
- cookie?: never;
- };
- /** Get comment by ID */
- get: operations['CommentsController_getComment'];
- /** Update comment (author only) */
- put: operations['CommentsController_updateComment'];
- post?: never;
- /** Delete comment (author or moderator only) */
- delete: operations['CommentsController_deleteComment'];
- options?: never;
- head?: never;
- patch?: never;
- trace?: never;
- };
- '/api/api/comments/entity/{entityType}/{entityId}': {
- parameters: {
- query?: never;
- header?: never;
- path?: never;
- cookie?: never;
- };
- /** Get comments for an entity */
- get: operations['CommentsController_getCommentsByEntity'];
- put?: never;
- post?: never;
- delete?: never;
- options?: never;
- head?: never;
- patch?: never;
- trace?: never;
- };
- '/api/api/comments/{id}/reactions': {
- parameters: {
- query?: never;
- header?: never;
- path?: never;
- cookie?: never;
- };
- /** Get reactions for comment */
- get: operations['CommentsController_getReactions'];
- put?: never;
- /** Add reaction to comment */
- post: operations['CommentsController_addReaction'];
- delete?: never;
- options?: never;
- head?: never;
- patch?: never;
- trace?: never;
- };
- '/api/api/comments/{id}/reactions/{reactionType}': {
- parameters: {
- query?: never;
- header?: never;
- path?: never;
- cookie?: never;
- };
- get?: never;
- put?: never;
- post?: never;
- /** Remove reaction from comment */
- delete: operations['CommentsController_removeReaction'];
- options?: never;
- head?: never;
- patch?: never;
- trace?: never;
- };
- '/api/api/comments/{id}/report': {
- parameters: {
- query?: never;
- header?: never;
- path?: never;
- cookie?: never;
- };
- get?: never;
- put?: never;
- /** Report a comment */
- post: operations['CommentsController_reportComment'];
- delete?: never;
- options?: never;
- head?: never;
- patch?: never;
- trace?: never;
- };
- '/api/api/comments/moderation/queue': {
- parameters: {
- query?: never;
- header?: never;
- path?: never;
- cookie?: never;
- };
- /** Get moderation queue (moderators only) */
- get: operations['CommentModerationController_getModerationQueue'];
- put?: never;
- post?: never;
- delete?: never;
- options?: never;
- head?: never;
- patch?: never;
- trace?: never;
- };
- '/api/api/comments/moderation/reports': {
- parameters: {
- query?: never;
- header?: never;
- path?: never;
- cookie?: never;
- };
- /** Get all reports (moderators only) */
- get: operations['CommentModerationController_getReports'];
- put?: never;
- post?: never;
- delete?: never;
- options?: never;
- head?: never;
- patch?: never;
- trace?: never;
- };
- '/api/api/comments/moderation/reports/{id}/resolve': {
- parameters: {
- query?: never;
- header?: never;
- path?: never;
- cookie?: never;
- };
- get?: never;
- put?: never;
- /** Resolve a report (moderators only) */
- post: operations['CommentModerationController_resolveReport'];
- delete?: never;
- options?: never;
- head?: never;
- patch?: never;
- trace?: never;
- };
- '/api/api/comments/moderation/{id}/approve': {
- parameters: {
- query?: never;
- header?: never;
- path?: never;
- cookie?: never;
- };
- get?: never;
- put?: never;
- /** Approve a comment (moderators only) */
- post: operations['CommentModerationController_approveComment'];
- delete?: never;
- options?: never;
- head?: never;
- patch?: never;
- trace?: never;
- };
- '/api/api/comments/moderation/{id}/reject': {
- parameters: {
- query?: never;
- header?: never;
- path?: never;
- cookie?: never;
- };
- get?: never;
- put?: never;
- /** Reject/Hide a comment (moderators only) */
- post: operations['CommentModerationController_rejectComment'];
- delete?: never;
- options?: never;
- head?: never;
- patch?: never;
- trace?: never;
- };
- '/api/api/comments/moderation/{id}/hide': {
- parameters: {
- query?: never;
- header?: never;
- path?: never;
- cookie?: never;
- };
- get?: never;
- put?: never;
- /** Hide a comment (moderators only) */
- post: operations['CommentModerationController_hideComment'];
- delete?: never;
- options?: never;
- head?: never;
- patch?: never;
- trace?: never;
- };
- '/api/api/comments/moderation/{id}/restore': {
- parameters: {
- query?: never;
- header?: never;
- path?: never;
- cookie?: never;
- };
- get?: never;
- put?: never;
- /** Restore a hidden comment (moderators only) */
- post: operations['CommentModerationController_restoreComment'];
- delete?: never;
- options?: never;
- head?: never;
- patch?: never;
- trace?: never;
- };
- '/api/api/comments/moderation/stats': {
- parameters: {
- query?: never;
- header?: never;
- path?: never;
- cookie?: never;
- };
- /** Get moderation statistics (moderators only) */
- get: operations['CommentModerationController_getModerationStats'];
- put?: never;
- post?: never;
- delete?: never;
- options?: never;
- head?: never;
- patch?: never;
- trace?: never;
- };
- '/api/hackathons': {
- parameters: {
- query?: never;
- header?: never;
- path?: never;
- cookie?: never;
- };
- /**
- * Get published hackathons
- * @description Retrieves a paginated list of published hackathons with optional filtering
- */
- get: operations['HackathonsController_getHackathons'];
- put?: never;
- post?: never;
- delete?: never;
- options?: never;
- head?: never;
- patch?: never;
- trace?: never;
- };
- '/api/hackathons/fee-estimate': {
- parameters: {
- query?: never;
- header?: never;
- path?: never;
- cookie?: never;
- };
- /**
- * Get fee estimate for prize pool
- * @description Returns platform fee breakdown for a given total prize pool (USDC). Used by the Rewards step when creating a hackathon.
- */
- get: operations['HackathonsController_getFeeEstimate'];
- put?: never;
- post?: never;
- delete?: never;
- options?: never;
- head?: never;
- patch?: never;
- trace?: never;
- };
- '/api/hackathons/{idOrSlug}/winners': {
- parameters: {
- query?: never;
- header?: never;
- path?: never;
- cookie?: never;
- };
- /**
- * Get hackathon winners
- * @description Retrieves ranked winners for a hackathon with prize details
- */
- get: operations['HackathonsController_getWinners'];
- put?: never;
- post?: never;
- delete?: never;
- options?: never;
- head?: never;
- patch?: never;
- trace?: never;
- };
- '/api/hackathons/{idOrSlug}/results': {
- parameters: {
- query?: never;
- header?: never;
- path?: never;
- cookie?: never;
- };
- /**
- * Get public judging results
- * @description Retrieves aggregated judging results after results are published
- */
- get: operations['HackathonsController_getPublicResults'];
- put?: never;
- post?: never;
- delete?: never;
- options?: never;
- head?: never;
- patch?: never;
- trace?: never;
- };
- '/api/hackathons/{idOrSlug}': {
- parameters: {
- query?: never;
- header?: never;
- path?: never;
- cookie?: never;
- };
- /**
- * Get hackathon by ID or slug
- * @description Retrieves a published hackathon by its ID or slug
- */
- get: operations['HackathonsController_getHackathon'];
- put?: never;
- post?: never;
- delete?: never;
- options?: never;
- head?: never;
- patch?: never;
- trace?: never;
- };
- '/api/hackathons/{idOrSlug}/access/verify': {
- parameters: {
- query?: never;
- header?: never;
- path?: never;
- cookie?: never;
- };
- get?: never;
- put?: never;
- /**
- * Verify a private hackathon access password
- * @description Checks the access password for a private hackathon and returns a short-lived token that unlocks the public page.
- */
- post: operations['HackathonsController_verifyHackathonAccess'];
- delete?: never;
- options?: never;
- head?: never;
- patch?: never;
- trace?: never;
- };
- '/api/hackathons/{slug}/contributors': {
- parameters: {
- query?: never;
- header?: never;
- path?: never;
- cookie?: never;
- };
- /**
- * List public partner contributors for a hackathon
- * @description Returns confirmed partner contributions where the partner opted in to be shown publicly, plus the total amount contributed.
- */
- get: operations['HackathonsController_getPublicContributors'];
- put?: never;
- post?: never;
- delete?: never;
- options?: never;
- head?: never;
- patch?: never;
- trace?: never;
- };
- '/api/hackathons/{idOrSlug}/follow': {
- parameters: {
- query?: never;
- header?: never;
- path?: never;
- cookie?: never;
- };
- get?: never;
- put?: never;
- /**
- * Follow or unfollow a hackathon
- * @description Toggles follow status for a published hackathon
- */
- post: operations['HackathonsController_followHackathon'];
- delete?: never;
- options?: never;
- head?: never;
- patch?: never;
- trace?: never;
- };
- '/api/hackathons/{idOrSlug}/join': {
- parameters: {
- query?: never;
- header?: never;
- path?: never;
- cookie?: never;
- };
- get?: never;
- put?: never;
- /**
- * Join a hackathon
- * @description Register as a participant for a published hackathon
- */
- post: operations['HackathonsController_joinHackathon'];
- delete?: never;
- options?: never;
- head?: never;
- patch?: never;
- trace?: never;
- };
- '/api/hackathons/{idOrSlug}/leave': {
- parameters: {
- query?: never;
- header?: never;
- path?: never;
- cookie?: never;
- };
- get?: never;
- put?: never;
- post?: never;
- /**
- * Leave a hackathon
- * @description Remove yourself as a participant from a hackathon
- */
- delete: operations['HackathonsController_leaveHackathon'];
- options?: never;
- head?: never;
- patch?: never;
- trace?: never;
- };
- '/api/hackathons/{idOrSlug}/participants': {
- parameters: {
- query?: never;
- header?: never;
- path?: never;
- cookie?: never;
- };
- /**
- * Get hackathon participants
- * @description Retrieve list of participants for a hackathon by ID or slug
- */
- get: operations['HackathonsController_getHackathonParticipants'];
- put?: never;
- post?: never;
- delete?: never;
- options?: never;
- head?: never;
- patch?: never;
- trace?: never;
- };
- '/api/hackathons/{idOrSlug}/submissions': {
- parameters: {
- query?: never;
- header?: never;
- path?: never;
- cookie?: never;
- };
- /**
- * Get hackathon submissions
- * @description Retrieves submissions for a hackathon (organizer only)
- */
- get: operations['HackathonsSubmissionsController_getHackathonSubmissions'];
- put?: never;
- /**
- * Create a hackathon submission
- * @description Submit a project to a hackathon
- */
- post: operations['HackathonsSubmissionsController_createSubmission'];
- delete?: never;
- options?: never;
- head?: never;
- patch?: never;
- trace?: never;
- };
- '/api/hackathons/{idOrSlug}/submissions/explore': {
- parameters: {
- query?: never;
- header?: never;
- path?: never;
- cookie?: never;
- };
- /**
- * Explore hackathon submissions
- * @description Retrieves all submissions for a hackathon for public viewing
- */
- get: operations['HackathonsSubmissionsController_exploreHackathonSubmissions'];
- put?: never;
- post?: never;
- delete?: never;
- options?: never;
- head?: never;
- patch?: never;
- trace?: never;
- };
- '/api/hackathons/{idOrSlug}/my-submission': {
- parameters: {
- query?: never;
- header?: never;
- path?: never;
- cookie?: never;
- };
- /**
- * Get my submission for a hackathon
- * @description Retrieve the current user's submission for a hackathon
- */
- get: operations['HackathonsSubmissionsController_getMySubmission'];
- put?: never;
- post?: never;
- delete?: never;
- options?: never;
- head?: never;
- patch?: never;
- trace?: never;
- };
- '/api/hackathons/submissions/{submissionId}': {
- parameters: {
- query?: never;
- header?: never;
- path?: never;
- cookie?: never;
- };
- /**
- * Get a submission by ID
- * @description Retrieve details of a specific submission
- */
- get: operations['HackathonsSubmissionsController_getSubmissionById'];
- put?: never;
- post?: never;
- /**
- * Withdraw a hackathon submission
- * @description Delete your submission before the deadline
- */
- delete: operations['HackathonsSubmissionsController_deleteSubmission'];
- options?: never;
- head?: never;
- /**
- * Update a hackathon submission
- * @description Update your submission before the deadline
- */
- patch: operations['HackathonsSubmissionsController_updateSubmission'];
- trace?: never;
- };
- '/api/hackathons/{id}/discussions': {
- parameters: {
- query?: never;
- header?: never;
- path?: never;
- cookie?: never;
- };
- /**
- * Get hackathon discussions
- * @description Retrieve real-time comments and discussions for a hackathon
- */
- get: operations['HackathonsDiscussionsController_getHackathonDiscussions'];
- put?: never;
- /**
- * Post a comment in hackathon discussion
- * @description Create a new comment in the hackathon discussion thread
- */
- post: operations['HackathonsDiscussionsController_createHackathonComment'];
- delete?: never;
- options?: never;
- head?: never;
- patch?: never;
- trace?: never;
- };
- '/api/hackathons/discussions/{commentId}': {
- parameters: {
- query?: never;
- header?: never;
- path?: never;
- cookie?: never;
- };
- get?: never;
- put?: never;
- post?: never;
- /**
- * Delete a discussion comment
- * @description Remove your own comment from the hackathon discussion
- */
- delete: operations['HackathonsDiscussionsController_deleteHackathonComment'];
- options?: never;
- head?: never;
- /**
- * Update a discussion comment
- * @description Edit your own comment in the hackathon discussion
- */
- patch: operations['HackathonsDiscussionsController_updateHackathonComment'];
- trace?: never;
- };
- '/api/hackathons/discussions/{commentId}/react': {
- parameters: {
- query?: never;
- header?: never;
- path?: never;
- cookie?: never;
- };
- get?: never;
- put?: never;
- /**
- * React to a comment
- * @description Add or toggle a reaction (like, love, etc.) to a discussion comment
- */
- post: operations['HackathonsDiscussionsController_reactToComment'];
- delete?: never;
- options?: never;
- head?: never;
- patch?: never;
- trace?: never;
- };
- '/api/hackathons/discussions/{commentId}/replies': {
- parameters: {
- query?: never;
- header?: never;
- path?: never;
- cookie?: never;
- };
- /**
- * Get comment replies
- * @description Retrieve replies to a specific comment
- */
- get: operations['HackathonsDiscussionsController_getCommentReplies'];
- put?: never;
- post?: never;
- delete?: never;
- options?: never;
- head?: never;
- patch?: never;
- trace?: never;
- };
- '/api/hackathons/{id}/teams': {
- parameters: {
- query?: never;
- header?: never;
- path?: never;
- cookie?: never;
- };
- /**
- * Get hackathon teams
- * @description Retrieve all teams for a hackathon with optional filtering
- */
- get: operations['HackathonsTeamsController_getHackathonTeams'];
- put?: never;
- /**
- * Create a team
- * @description Create a new team for the hackathon. Team is closed by default unless skills are specified.
- */
- post: operations['HackathonsTeamsController_createTeam'];
- delete?: never;
- options?: never;
- head?: never;
- patch?: never;
- trace?: never;
- };
- '/api/hackathons/{id}/teams/{teamId}': {
- parameters: {
- query?: never;
- header?: never;
- path?: never;
- cookie?: never;
- };
- /**
- * Get team details
- * @description Get detailed information about a specific team
- */
- get: operations['HackathonsTeamsController_getTeam'];
- put?: never;
- post?: never;
- /**
- * Disband a team (leader only)
- * @description Disband the team and remove all members. Refuses if the team has already submitted — withdraw the submission first.
- */
- delete: operations['HackathonsTeamsController_disbandTeam'];
- options?: never;
- head?: never;
- /**
- * Update team
- * @description Update team information (leader only). Team opens when skills are added, closes when removed.
- */
- patch: operations['HackathonsTeamsController_updateTeam'];
- trace?: never;
- };
- '/api/hackathons/{id}/teams/{teamId}/join': {
- parameters: {
- query?: never;
- header?: never;
- path?: never;
- cookie?: never;
- };
- get?: never;
- put?: never;
- /**
- * Join a team
- * @description Join an existing open team
- */
- post: operations['HackathonsTeamsController_joinTeam'];
- delete?: never;
- options?: never;
- head?: never;
- patch?: never;
- trace?: never;
- };
- '/api/hackathons/{id}/teams/{teamId}/members/{userId}': {
- parameters: {
- query?: never;
- header?: never;
- path?: never;
- cookie?: never;
- };
- get?: never;
- put?: never;
- post?: never;
- /**
- * Remove a member from the team (leader only)
- * @description Team leader removes a specific member. Leaders cannot remove themselves — they must transfer leadership first or disband the team.
- */
- delete: operations['HackathonsTeamsController_removeTeamMember'];
- options?: never;
- head?: never;
- patch?: never;
- trace?: never;
- };
- '/api/hackathons/{id}/teams/{teamId}/leave': {
- parameters: {
- query?: never;
- header?: never;
- path?: never;
- cookie?: never;
- };
- get?: never;
- put?: never;
- /**
- * Leave a team
- * @description Leave your current team. Leaders must transfer leadership first if team has other members.
- */
- post: operations['HackathonsTeamsController_leaveTeam'];
- delete?: never;
- options?: never;
- head?: never;
- patch?: never;
- trace?: never;
- };
- '/api/hackathons/{id}/my-team': {
- parameters: {
- query?: never;
- header?: never;
- path?: never;
- cookie?: never;
- };
- /**
- * Get my team
- * @description Get your team in this hackathon
- */
- get: operations['HackathonsTeamsController_getMyTeam'];
- put?: never;
- post?: never;
- delete?: never;
- options?: never;
- head?: never;
- patch?: never;
- trace?: never;
- };
- '/api/hackathons/{id}/teams/{teamId}/invite': {
- parameters: {
- query?: never;
- header?: never;
- path?: never;
- cookie?: never;
- };
- get?: never;
- put?: never;
- /**
- * Invite a user to join team
- * @description Team leader can invite hackathon participants to join the team. Invitation expires in 7 days.
- */
- post: operations['HackathonsTeamsController_inviteToTeam'];
- delete?: never;
- options?: never;
- head?: never;
- patch?: never;
- trace?: never;
- };
- '/api/hackathons/{id}/my-invitations': {
- parameters: {
- query?: never;
- header?: never;
- path?: never;
- cookie?: never;
- };
- /**
- * Get my team invitations
- * @description Get all team invitations received by the current user
- */
- get: operations['HackathonsTeamsController_getMyInvitations'];
- put?: never;
- post?: never;
- delete?: never;
- options?: never;
- head?: never;
- patch?: never;
- trace?: never;
- };
- '/api/hackathons/{id}/invitations/{inviteId}/accept': {
- parameters: {
- query?: never;
- header?: never;
- path?: never;
- cookie?: never;
- };
- get?: never;
- put?: never;
- /**
- * Accept team invitation
- * @description Accept a pending team invitation and join the team
- */
- post: operations['HackathonsTeamsController_acceptInvitation'];
- delete?: never;
- options?: never;
- head?: never;
- patch?: never;
- trace?: never;
- };
- '/api/hackathons/{id}/invitations/{inviteId}/reject': {
- parameters: {
- query?: never;
- header?: never;
- path?: never;
- cookie?: never;
- };
- get?: never;
- put?: never;
- /**
- * Reject team invitation
- * @description Reject a pending team invitation
- */
- post: operations['HackathonsTeamsController_rejectInvitation'];
- delete?: never;
- options?: never;
- head?: never;
- patch?: never;
- trace?: never;
- };
- '/api/hackathons/{id}/invitations/{inviteId}': {
- parameters: {
- query?: never;
- header?: never;
- path?: never;
- cookie?: never;
- };
- get?: never;
- put?: never;
- post?: never;
- /**
- * Cancel team invitation
- * @description Team leader can cancel a pending invitation
- */
- delete: operations['HackathonsTeamsController_cancelInvitation'];
- options?: never;
- head?: never;
- patch?: never;
- trace?: never;
- };
- '/api/hackathons/{id}/teams/{teamId}/invitations': {
- parameters: {
- query?: never;
- header?: never;
- path?: never;
- cookie?: never;
- };
- /**
- * Get team invitations
- * @description Team leader can view all invitations sent by the team (pending, accepted, rejected)
- */
- get: operations['HackathonsTeamsController_getTeamInvitations'];
- put?: never;
- post?: never;
- delete?: never;
- options?: never;
- head?: never;
- patch?: never;
- trace?: never;
- };
- '/api/hackathons/{id}/teams/{teamId}/roles/toggle-hired': {
- parameters: {
- query?: never;
- header?: never;
- path?: never;
- cookie?: never;
- };
- get?: never;
- put?: never;
- post?: never;
- delete?: never;
- options?: never;
- head?: never;
- /**
- * Toggle role hired status
- * @description Team leader can toggle whether a role has been filled (hired) or is still open
- */
- patch: operations['HackathonsTeamsController_toggleRoleHiredStatus'];
- trace?: never;
- };
- '/api/hackathons/{id}/teams/{teamId}/transfer-leadership': {
- parameters: {
- query?: never;
- header?: never;
- path?: never;
- cookie?: never;
- };
- get?: never;
- put?: never;
- /**
- * Transfer team leadership
- * @description Current team leader can transfer leadership to another team member. This action is logged in audit logs for accountability.
- */
- post: operations['HackathonsTeamsController_transferLeadership'];
- delete?: never;
- options?: never;
- head?: never;
- patch?: never;
- trace?: never;
- };
- '/api/organizations/{organizationId}/hackathons/draft/{id}': {
- parameters: {
- query?: never;
- header?: never;
- path?: never;
- cookie?: never;
- };
- /**
- * Get hackathon draft details
- * @description Retrieves the current state of a hackathon draft for editing
- */
- get: operations['OrganizationHackathonsDraftsController_getDraft'];
- put?: never;
- post?: never;
- /**
- * Delete hackathon draft
- * @description Deletes a hackathon draft by ID for an organization
- */
- delete: operations['OrganizationHackathonsDraftsController_deleteDraft'];
- options?: never;
- head?: never;
- /**
- * Update one or more sections of a hackathon draft
- * @description Applies any subset of wizard sections in a single PATCH. Send one section for a per-step "Continue", or several for "Save draft". Each present section is validated and transformed independently, then merged into one write.
- */
- patch: operations['OrganizationHackathonsDraftsController_updateDraft'];
- trace?: never;
- };
- '/api/organizations/{organizationId}/hackathons': {
- parameters: {
- query?: never;
- header?: never;
- path?: never;
- cookie?: never;
- };
- /**
- * Get organization's published hackathons
- * @description Retrieves all published hackathons for an organization with pagination
- */
- get: operations['OrganizationHackathonsDraftsController_getOrganizationHackathons'];
- put?: never;
- post?: never;
- delete?: never;
- options?: never;
- head?: never;
- patch?: never;
- trace?: never;
- };
- '/api/organizations/{organizationId}/hackathons/draft': {
- parameters: {
- query?: never;
- header?: never;
- path?: never;
- cookie?: never;
- };
- get?: never;
- put?: never;
- /**
- * Create a new hackathon draft for an organization
- * @description Creates a new hackathon in draft status that can be edited by organization members
- */
- post: operations['OrganizationHackathonsDraftsController_createDraft'];
- delete?: never;
- options?: never;
- head?: never;
- patch?: never;
- trace?: never;
- };
- '/api/organizations/{organizationId}/hackathons/drafts': {
- parameters: {
- query?: never;
- header?: never;
- path?: never;
- cookie?: never;
- };
- /**
- * Get organization's hackathon drafts
- * @description Retrieves all draft hackathons for an organization that the user has access to
- */
- get: operations['OrganizationHackathonsDraftsController_getOrganizationDrafts'];
- put?: never;
- post?: never;
- delete?: never;
- options?: never;
- head?: never;
- patch?: never;
- trace?: never;
- };
- '/api/organizations/{organizationId}/hackathons/hackathons/{id}/announcement-preview': {
- parameters: {
- query?: never;
- header?: never;
- path?: never;
- cookie?: never;
- };
- /**
- * Preview the marketing announcement audience size
- * @description Returns the number of recipients that would receive the launch announcement email if the hackathon were published right now. Useful for the publish UI.
- */
- get: operations['OrganizationHackathonsDraftsController_previewAnnouncementAudience'];
- put?: never;
- post?: never;
- delete?: never;
- options?: never;
- head?: never;
- patch?: never;
- trace?: never;
- };
- '/api/organizations/{organizationId}/hackathons/draft/clarify': {
- parameters: {
- query?: never;
- header?: never;
- path?: never;
- cookie?: never;
- };
- get?: never;
- put?: never;
- /**
- * Triage a hackathon brief for clarifying questions (Organizer Assist)
- * @description A cheap pre-draft gate: returns { ready: true } when the brief is specific enough, or 1-3 clarifying questions (duration / structure / participation) the organizer answers before drafting.
- */
- post: operations['OrganizationHackathonsAiController_clarify'];
- delete?: never;
- options?: never;
- head?: never;
- patch?: never;
- trace?: never;
- };
- '/api/organizations/{organizationId}/hackathons/draft/from-brief': {
- parameters: {
- query?: never;
- header?: never;
- path?: never;
- cookie?: never;
- };
- get?: never;
- put?: never;
- /**
- * Generate a hackathon draft from a brief (Organizer Assist)
- * @description Calls the AI service to turn a brief into a structured draft, persists a new hackathon draft pre-filled with the timeline, prizes, and judging criteria, and returns it together with the full AI suggestion for review. The organizer reviews, completes (banner, venue), and publishes.
- */
- post: operations['OrganizationHackathonsAiController_generateFromBrief'];
- delete?: never;
- options?: never;
- head?: never;
- patch?: never;
- trace?: never;
- };
- '/api/organizations/{organizationId}/hackathons/draft/from-brief/stream': {
- parameters: {
- query?: never;
- header?: never;
- path?: never;
- cookie?: never;
- };
- get?: never;
- put?: never;
- /**
- * Generate a hackathon draft from a brief, streaming (Organizer Assist)
- * @description Server-Sent Events: `partial` frames carry the draft taking shape for a live reveal, then a `done` frame carries { draftId, draft }. Errors arrive as an `error` frame (or a normal 4xx before the stream opens, e.g. quota).
- */
- post: operations['OrganizationHackathonsAiController_generateFromBriefStream'];
- delete?: never;
- options?: never;
- head?: never;
- patch?: never;
- trace?: never;
- };
- '/api/organizations/{organizationId}/hackathons/draft/{id}/regenerate-section': {
- parameters: {
- query?: never;
- header?: never;
- path?: never;
- cookie?: never;
- };
- get?: never;
- put?: never;
- /**
- * Regenerate one section of a draft (Organizer Assist)
- * @description Calls the AI service to regenerate a single section (criteria, prizes, tracks, timeline, or description) from the current draft and returns the new section for the organizer to accept or discard.
- */
- post: operations['OrganizationHackathonsAiController_regenerateSection'];
- delete?: never;
- options?: never;
- head?: never;
- patch?: never;
- trace?: never;
- };
- '/api/organizations/{organizationId}/hackathons/{id}/visibility': {
- parameters: {
- query?: never;
- header?: never;
- path?: never;
- cookie?: never;
- };
- get?: never;
- put?: never;
- post?: never;
- delete?: never;
- options?: never;
- head?: never;
- /**
- * Update hackathon submission visibility settings
- * @description Allows organizers to change who can view submissions and which statuses are visible.
- */
- patch: operations['OrganizationHackathonsSubmissionsController_updateVisibilitySettings'];
- trace?: never;
- };
- '/api/organizations/{organizationId}/hackathons/{hackathonId}/submissions/{submissionId}/review': {
- parameters: {
- query?: never;
- header?: never;
- path?: never;
- cookie?: never;
- };
- get?: never;
- put?: never;
- post?: never;
- delete?: never;
- options?: never;
- head?: never;
- /**
- * Review a submission
- * @description Update submission status (shortlist or move back to submitted). Organizer only.
- */
- patch: operations['OrganizationHackathonsSubmissionsController_reviewSubmission'];
- trace?: never;
- };
- '/api/organizations/{organizationId}/hackathons/{idOrSlug}/participants': {
- parameters: {
- query?: never;
- header?: never;
- path?: never;
- cookie?: never;
- };
- /**
- * Get hackathon participants (organization)
- * @description Returns detailed participant data for organizers, including submission details.
- */
- get: operations['OrganizationHackathonsSubmissionsController_getOrganizationHackathonParticipants'];
- put?: never;
- post?: never;
- delete?: never;
- options?: never;
- head?: never;
- patch?: never;
- trace?: never;
- };
- '/api/organizations/{organizationId}/hackathons/{hackathonId}/submissions/{submissionId}/score-override': {
- parameters: {
- query?: never;
- header?: never;
- path?: never;
- cookie?: never;
- };
- get?: never;
- put?: never;
- /**
- * Organizer: Override submission scoring
- * @description Organizer directly assigns criterion-based scores to a submission. Validates rubric compliance but bypasses judge assignment and conflict-of-interest checks. Use when correcting judge scores or assigning administrative evaluations. Organizer only.
- */
- post: operations['OrganizationHackathonsSubmissionsController_scoreSubmissionOverride'];
- delete?: never;
- options?: never;
- head?: never;
- patch?: never;
- trace?: never;
- };
- '/api/organizations/{organizationId}/hackathons/{hackathonId}/submissions/{submissionId}/disqualify': {
- parameters: {
- query?: never;
- header?: never;
- path?: never;
- cookie?: never;
- };
- get?: never;
- put?: never;
- /**
- * Disqualify a submission
- * @description Mark a submission as disqualified with a reason. Organizer only.
- */
- post: operations['OrganizationHackathonsSubmissionsController_disqualifySubmission'];
- delete?: never;
- options?: never;
- head?: never;
- patch?: never;
- trace?: never;
- };
- '/api/organizations/{organizationId}/hackathons/{hackathonId}/submissions/bulk-action': {
- parameters: {
- query?: never;
- header?: never;
- path?: never;
- cookie?: never;
- };
- get?: never;
- put?: never;
- /**
- * Perform bulk action on submissions
- * @description Update status of multiple submissions at once (shortlist, approve, disqualify). Organizer only.
- */
- post: operations['OrganizationHackathonsSubmissionsController_bulkSubmissionAction'];
- delete?: never;
- options?: never;
- head?: never;
- patch?: never;
- trace?: never;
- };
- '/api/organizations/{organizationId}/hackathons/{hackathonId}/submissions/{submissionId}/rank': {
- parameters: {
- query?: never;
- header?: never;
- path?: never;
- cookie?: never;
- };
- get?: never;
- put?: never;
- post?: never;
- delete?: never;
- options?: never;
- head?: never;
- /**
- * Set submission rank
- * @description Assign a rank to a submission for leaderboard positioning. Organizer only.
- */
- patch: operations['OrganizationHackathonsSubmissionsController_setSubmissionRank'];
- trace?: never;
- };
- '/api/organizations/{organizationId}/hackathons/{hackathonId}/analytics': {
- parameters: {
- query?: never;
- header?: never;
- path?: never;
- cookie?: never;
- };
- /**
- * Get hackathon analytics
- * @description Retrieves summary metrics, trend data, and timeline for a hackathon. Organizer only.
- */
- get: operations['OrganizationHackathonsSubmissionsController_getAnalytics'];
- put?: never;
- post?: never;
- delete?: never;
- options?: never;
- head?: never;
- patch?: never;
- trace?: never;
- };
- '/api/hackathons/{idOrSlug}/announcements': {
- parameters: {
- query?: never;
- header?: never;
- path?: never;
- cookie?: never;
- };
- /**
- * Get hackathon announcements
- * @description Retrieves all announcements for a hackathon. Drafts are only visible to organizers.
- */
- get: operations['HackathonsAnnouncementsController_getAnnouncements'];
- put?: never;
- post?: never;
- delete?: never;
- options?: never;
- head?: never;
- patch?: never;
- trace?: never;
- };
- '/api/hackathons/announcements/{announcementId}': {
- parameters: {
- query?: never;
- header?: never;
- path?: never;
- cookie?: never;
- };
- /**
- * Get announcement details
- * @description Retrieves details of a specific announcement
- */
- get: operations['HackathonsAnnouncementsController_getAnnouncement'];
- put?: never;
- post?: never;
- delete?: never;
- options?: never;
- head?: never;
- patch?: never;
- trace?: never;
- };
- '/api/organizations/{organizationId}/hackathons/{idOrSlug}/announcements': {
- parameters: {
- query?: never;
- header?: never;
- path?: never;
- cookie?: never;
- };
- get?: never;
- put?: never;
- /**
- * Create a hackathon announcement
- * @description Creates a new announcement for an organization hackathon
- */
- post: operations['OrganizationHackathonsAnnouncementsController_createAnnouncement'];
- delete?: never;
- options?: never;
- head?: never;
- patch?: never;
- trace?: never;
- };
- '/api/organizations/{organizationId}/hackathons/{idOrSlug}/announcements/{announcementId}': {
- parameters: {
- query?: never;
- header?: never;
- path?: never;
- cookie?: never;
- };
- get?: never;
- put?: never;
- post?: never;
- /**
- * Delete a hackathon announcement
- * @description Deletes an announcement for an organization hackathon
- */
- delete: operations['OrganizationHackathonsAnnouncementsController_deleteAnnouncement'];
- options?: never;
- head?: never;
- /**
- * Update a hackathon announcement
- * @description Updates an existing announcement for an organization hackathon
- */
- patch: operations['OrganizationHackathonsAnnouncementsController_updateAnnouncement'];
- trace?: never;
- };
- '/api/organizations/{organizationId}/hackathons/{idOrSlug}/announcements/{announcementId}/publish': {
- parameters: {
- query?: never;
- header?: never;
- path?: never;
- cookie?: never;
- };
- get?: never;
- put?: never;
- /**
- * Publish a draft announcement
- * @description Publishes a draft announcement for an organization hackathon
- */
- post: operations['OrganizationHackathonsAnnouncementsController_publishAnnouncement'];
- delete?: never;
- options?: never;
- head?: never;
- patch?: never;
- trace?: never;
- };
- '/api/hackathons/{idOrSlug}/judging/criteria': {
- parameters: {
- query?: never;
- header?: never;
- path?: never;
- cookie?: never;
- };
- /**
- * Get hackathon judging criteria
- * @description Retrieves the criteria used for judging this hackathon
- */
- get: operations['HackathonsJudgingController_getCriteria'];
- put?: never;
- post?: never;
- delete?: never;
- options?: never;
- head?: never;
- patch?: never;
- trace?: never;
- };
- '/api/hackathons/judging/score': {
- parameters: {
- query?: never;
- header?: never;
- path?: never;
- cookie?: never;
- };
- get?: never;
- put?: never;
- /**
- * Judge: Submit criterion-based scores
- * @description Allows an assigned judge to submit criterion-based scores for a submission. Enforces: (1) judge assignment verification, (2) conflict-of-interest checks, (3) rubric compliance validation.
- */
- post: operations['HackathonsJudgingController_submitScore'];
- delete?: never;
- options?: never;
- head?: never;
- patch?: never;
- trace?: never;
- };
- '/api/hackathons/{idOrSlug}/judging/submissions': {
- parameters: {
- query?: never;
- header?: never;
- path?: never;
- cookie?: never;
- };
- /**
- * Get submissions for judging
- * @description Retrieves shortlisted submissions with the current judge's scores and criteria
- */
- get: operations['HackathonsJudgingController_getJudgingSubmissions'];
- put?: never;
- post?: never;
- delete?: never;
- options?: never;
- head?: never;
- patch?: never;
- trace?: never;
- };
- '/api/organizations/{organizationId}/hackathons/{idOrSlug}/judging/judges': {
- parameters: {
- query?: never;
- header?: never;
- path?: never;
- cookie?: never;
- };
- /**
- * Get hackathon judges
- * @description Retrieves the list of judges assigned to the hackathon
- */
- get: operations['OrganizationHackathonsJudgingController_getJudges'];
- put?: never;
- /**
- * Add a judge to a hackathon
- * @description Assigns a user as a judge for the hackathon
- */
- post: operations['OrganizationHackathonsJudgingController_addJudge'];
- delete?: never;
- options?: never;
- head?: never;
- patch?: never;
- trace?: never;
- };
- '/api/organizations/{organizationId}/hackathons/{idOrSlug}/judging/judges/{userId}': {
- parameters: {
- query?: never;
- header?: never;
- path?: never;
- cookie?: never;
- };
- get?: never;
- put?: never;
- post?: never;
- /**
- * Remove a judge from a hackathon
- * @description Removes a user from the judging panel
- */
- delete: operations['OrganizationHackathonsJudgingController_removeJudge'];
- options?: never;
- head?: never;
- patch?: never;
- trace?: never;
- };
- '/api/organizations/{organizationId}/hackathons/{idOrSlug}/judging/results': {
- parameters: {
- query?: never;
- header?: never;
- path?: never;
- cookie?: never;
- };
- /**
- * Get aggregated judging results
- * @description Retrieves the ranked results for the hackathon based on judging scores
- */
- get: operations['OrganizationHackathonsJudgingController_getResults'];
- put?: never;
- post?: never;
- delete?: never;
- options?: never;
- head?: never;
- patch?: never;
- trace?: never;
- };
- '/api/organizations/{organizationId}/hackathons/{idOrSlug}/judging/submissions/{submissionId}/scores': {
- parameters: {
- query?: never;
- header?: never;
- path?: never;
- cookie?: never;
- };
- /**
- * Get individual judge scores for a submission
- * @description Retrieves all judge scores and comments for a project
- */
- get: operations['OrganizationHackathonsJudgingController_getIndividualScores'];
- put?: never;
- post?: never;
- delete?: never;
- options?: never;
- head?: never;
- patch?: never;
- trace?: never;
- };
- '/api/organizations/{organizationId}/hackathons/{idOrSlug}/judging/winners': {
- parameters: {
- query?: never;
- header?: never;
- path?: never;
- cookie?: never;
- };
- /**
- * Get winner ranking
- * @description Retrieves the ranked results sorted by average score
- */
- get: operations['OrganizationHackathonsJudgingController_getWinnerRanking'];
- put?: never;
- post?: never;
- delete?: never;
- options?: never;
- head?: never;
- patch?: never;
- trace?: never;
- };
- '/api/organizations/{organizationId}/hackathons/{idOrSlug}/judging/coverage': {
- parameters: {
- query?: never;
- header?: never;
- path?: never;
- cookie?: never;
- };
- /**
- * Full judges × submissions coverage matrix
- * @description Returns every shortlisted submission with the set of active judges who scored it, plus per-judge totals. Used by the organizer dashboard to render a heatmap that surfaces idle judges (columns of mostly empty cells) and orphan submissions (rows with 0-1 scores) at a glance — both block a defensible publish. The view-only `/completeness` endpoint stays unchanged for the publish-confirmation flow.
- */
- get: operations['OrganizationHackathonsJudgingController_judgingCoverage'];
- put?: never;
- post?: never;
- delete?: never;
- options?: never;
- head?: never;
- patch?: never;
- trace?: never;
- };
- '/api/organizations/{organizationId}/hackathons/{idOrSlug}/judging/preview-allocation': {
- parameters: {
- query?: never;
- header?: never;
- path?: never;
- cookie?: never;
- };
- /**
- * Preview the allocator outcome before publishing
- * @description Read-only dry run of the publish-results allocator. Returns the overall placements + per-track winners that would be stamped on publish, including EXCLUSIVE stacking effects (a track leader losing because they already claimed an overall placement). Also surfaces the publish gates (deadline, completeness, partner allocation) so the UI can render a "what is blocking publish?" panel without trying to publish.
- */
- get: operations['OrganizationHackathonsJudgingController_previewAllocation'];
- put?: never;
- post?: never;
- delete?: never;
- options?: never;
- head?: never;
- patch?: never;
- trace?: never;
- };
- '/api/organizations/{organizationId}/hackathons/{idOrSlug}/judging/allocation-parity': {
- parameters: {
- query?: never;
- header?: never;
- path?: never;
- cookie?: never;
- };
- /**
- * Phase 4 gate: new allocator vs legacy parity (compute-only)
- * @description Runs the new WinnerAssignment allocator and compares its (winner -> payout) map against the legacy rank/wonRank result. Persists nothing and never touches the on-chain path. match=true is the prerequisite for switching select_winners over to WinnerAssignment.
- */
- get: operations['OrganizationHackathonsJudgingController_allocationParity'];
- put?: never;
- post?: never;
- delete?: never;
- options?: never;
- head?: never;
- patch?: never;
- trace?: never;
- };
- '/api/organizations/{organizationId}/hackathons/{idOrSlug}/judging/completeness': {
- parameters: {
- query?: never;
- header?: never;
- path?: never;
- cookie?: never;
- };
- /**
- * Preview judging completeness
- * @description Returns which submissions are short any active judge, and which judges still have outstanding work. The frontend uses this to render the publish-results confirmation dialog before the organizer commits.
- */
- get: operations['OrganizationHackathonsJudgingController_judgingCompleteness'];
- put?: never;
- post?: never;
- delete?: never;
- options?: never;
- head?: never;
- patch?: never;
- trace?: never;
- };
- '/api/organizations/{organizationId}/hackathons/{idOrSlug}/judging/publish-results': {
- parameters: {
- query?: never;
- header?: never;
- path?: never;
- cookie?: never;
- };
- get?: never;
- put?: never;
- /**
- * Publish results
- * @description Finalizes the ranks and marks results as public. Rejects (400) if any active judge has not scored every shortlisted submission, unless the request body includes `acceptPartial: true`.
- */
- post: operations['OrganizationHackathonsJudgingController_publishResults'];
- delete?: never;
- options?: never;
- head?: never;
- patch?: never;
- trace?: never;
- };
- '/api/organizations/{organizationId}/hackathons/{idOrSlug}/judging/winners/board': {
- parameters: {
- query?: never;
- header?: never;
- path?: never;
- cookie?: never;
- };
- /**
- * Get the winners board
- * @description One row per prize placement (overall and per-track), each with the score-ranked default pick, the current selection, the candidate list to choose from, and a conflict flag when a project already holds another placement. Drives the organizer "review and pick winners" step.
- */
- get: operations['OrganizationHackathonsJudgingController_winnersBoard'];
- put?: never;
- post?: never;
- delete?: never;
- options?: never;
- head?: never;
- patch?: never;
- trace?: never;
- };
- '/api/organizations/{organizationId}/hackathons/{idOrSlug}/judging/winners/placements/{placementId}': {
- parameters: {
- query?: never;
- header?: never;
- path?: never;
- cookie?: never;
- };
- get?: never;
- /**
- * Pick the winner for a placement
- * @description Pins a submission to a prize placement as an organizer override (saved as a draft until results are published). A project already holding another placement is allowed; the UI confirms the stacking inline.
- */
- put: operations['OrganizationHackathonsJudgingController_setPlacementWinner'];
- post?: never;
- /**
- * Clear an organizer pick for a placement
- * @description Removes the organizer override draft for a placement, reverting it to the score-based default. Only valid before results are published.
- */
- delete: operations['OrganizationHackathonsJudgingController_clearPlacementWinner'];
- options?: never;
- head?: never;
- patch?: never;
- trace?: never;
- };
- '/api/organizations/{organizationId}/hackathons/{idOrSlug}/judging/winners/placements/{placementId}/withhold': {
- parameters: {
- query?: never;
- header?: never;
- path?: never;
- cookie?: never;
- };
- get?: never;
- put?: never;
- /**
- * Leave a placement unawarded
- * @description Deliberately leaves a prize placement vacant ("no submission earned this prize"). Clears any pick and marks it withheld so the allocator skips it. Distinct from clearing back to the score-based default. Only valid before results are published.
- */
- post: operations['OrganizationHackathonsJudgingController_withholdPlacement'];
- delete?: never;
- options?: never;
- head?: never;
- patch?: never;
- trace?: never;
- };
- '/api/organizations/{organizationId}/hackathons/{idOrSlug}/judging/invitations': {
- parameters: {
- query?: never;
- header?: never;
- path?: never;
- cookie?: never;
- };
- /** List judge invitations for this hackathon */
- get: operations['OrganizationHackathonsJudgingController_listInvitations'];
- put?: never;
- /**
- * Invite a judge by email
- * @description Sends an email-based invitation. The recipient is NOT added to the organization; on acceptance they become a hackathon-scoped judge only.
- */
- post: operations['OrganizationHackathonsJudgingController_inviteJudge'];
- delete?: never;
- options?: never;
- head?: never;
- patch?: never;
- trace?: never;
- };
- '/api/organizations/{organizationId}/hackathons/{idOrSlug}/judging/invitations/bulk': {
- parameters: {
- query?: never;
- header?: never;
- path?: never;
- cookie?: never;
- };
- get?: never;
- put?: never;
- /**
- * Bulk-invite judges (e.g. from a CSV import)
- * @description Invites up to 25 judges in one request. Each row is processed independently, so one bad row (duplicate, already accepted, rejected email) does not abort the rest. Returns a per-row result.
- */
- post: operations['OrganizationHackathonsJudgingController_bulkInviteJudges'];
- delete?: never;
- options?: never;
- head?: never;
- patch?: never;
- trace?: never;
- };
- '/api/organizations/{organizationId}/hackathons/{idOrSlug}/judging/invitations/{invitationId}': {
- parameters: {
- query?: never;
- header?: never;
- path?: never;
- cookie?: never;
- };
- get?: never;
- put?: never;
- post?: never;
- /** Cancel (revoke) a pending judge invitation */
- delete: operations['OrganizationHackathonsJudgingController_cancelInvitation'];
- options?: never;
- head?: never;
- patch?: never;
- trace?: never;
- };
- '/api/organizations/{organizationId}/hackathons/{idOrSlug}/judging/invitations/{invitationId}/resend': {
- parameters: {
- query?: never;
- header?: never;
- path?: never;
- cookie?: never;
- };
- get?: never;
- put?: never;
- /**
- * Resend a pending judge invitation
- * @description Rotates the invitation token so any previously-leaked link is invalidated, then re-emails the recipient.
- */
- post: operations['OrganizationHackathonsJudgingController_resendInvitation'];
- delete?: never;
- options?: never;
- head?: never;
- patch?: never;
- trace?: never;
- };
- '/api/organizations/{organizationId}/hackathons/{idOrSlug}/judging/recommendation-thresholds': {
- parameters: {
- query?: never;
- header?: never;
- path?: never;
- cookie?: never;
- };
- /** List recommendation thresholds */
- get: operations['OrganizationHackathonsJudgingController_listRecommendationThresholds'];
- /**
- * Set a recommendation threshold (overall or per-track)
- * @description Creates or updates the top-X% threshold for a scope. Omit trackId for the overall cut.
- */
- put: operations['OrganizationHackathonsJudgingController_setRecommendationThreshold'];
- post?: never;
- delete?: never;
- options?: never;
- head?: never;
- patch?: never;
- trace?: never;
- };
- '/api/organizations/{organizationId}/hackathons/{idOrSlug}/judging/recommendation-thresholds/{thresholdId}': {
- parameters: {
- query?: never;
- header?: never;
- path?: never;
- cookie?: never;
- };
- get?: never;
- put?: never;
- post?: never;
- /** Delete a recommendation threshold */
- delete: operations['OrganizationHackathonsJudgingController_deleteRecommendationThreshold'];
- options?: never;
- head?: never;
- patch?: never;
- trace?: never;
- };
- '/api/organizations/{organizationId}/hackathons/{idOrSlug}/judging/recommendation-thresholds/compute': {
- parameters: {
- query?: never;
- header?: never;
- path?: never;
- cookie?: never;
- };
- get?: never;
- put?: never;
- /**
- * Recompute recommended flags from the configured thresholds
- * @description Stamps recommendedOverall on submissions and recommended on track entries by the current aggregated scores. Advisory only.
- */
- post: operations['OrganizationHackathonsJudgingController_computeRecommendations'];
- delete?: never;
- options?: never;
- head?: never;
- patch?: never;
- trace?: never;
- };
- '/api/organizations/{organizationId}/hackathons/{idOrSlug}/judging/submissions/{submissionId}/ai-score': {
- parameters: {
- query?: never;
- header?: never;
- path?: never;
- cookie?: never;
- };
- get?: never;
- put?: never;
- /**
- * Run AI Judging Assist on a submission (advisory)
- * @description Generates an advisory scorecard against the rubric (per-prize criteria override the hackathon criteria via ?prizeId=). Stored as an AI_ASSIST score, excluded from ranking until promoted.
- */
- post: operations['OrganizationHackathonsJudgingController_aiScoreSubmission'];
- delete?: never;
- options?: never;
- head?: never;
- patch?: never;
- trace?: never;
- };
- '/api/organizations/{organizationId}/hackathons/{idOrSlug}/judging/ai-scorecards': {
- parameters: {
- query?: never;
- header?: never;
- path?: never;
- cookie?: never;
- };
- /**
- * List AI Judging Assist scorecards (advisory)
- * @description Returns the stored advisory AI scorecards for this hackathon. These do not count toward ranking until promoted.
- */
- get: operations['OrganizationHackathonsJudgingController_aiScorecards'];
- put?: never;
- post?: never;
- delete?: never;
- options?: never;
- head?: never;
- patch?: never;
- trace?: never;
- };
- '/api/organizations/{organizationId}/hackathons/{idOrSlug}/judging/submissions/{submissionId}/ai-score/promote': {
- parameters: {
- query?: never;
- header?: never;
- path?: never;
- cookie?: never;
- };
- get?: never;
- put?: never;
- /**
- * Promote an AI scorecard into a counting score
- * @description Rosters the AI as a judge and flips the scorecard off AI_ASSIST so it counts toward ranking. Reversible. The AI judge is excluded from the expected-judge count.
- */
- post: operations['OrganizationHackathonsJudgingController_promoteAiScore'];
- delete?: never;
- options?: never;
- head?: never;
- patch?: never;
- trace?: never;
- };
- '/api/organizations/{organizationId}/hackathons/{idOrSlug}/judging/submissions/{submissionId}/ai-score/unpromote': {
- parameters: {
- query?: never;
- header?: never;
- path?: never;
- cookie?: never;
- };
- get?: never;
- put?: never;
- /** Reverse a promotion (back to advisory-only) */
- post: operations['OrganizationHackathonsJudgingController_unpromoteAiScore'];
- delete?: never;
- options?: never;
- head?: never;
- patch?: never;
- trace?: never;
- };
- '/api/judge/invitations': {
- parameters: {
- query?: never;
- header?: never;
- path?: never;
- cookie?: never;
- };
- /**
- * List my pending judge invitations
- * @description Returns pending, non-expired invitations sent to the authenticated user's email.
- */
- get: operations['JudgeController_myInvitations'];
- put?: never;
- post?: never;
- delete?: never;
- options?: never;
- head?: never;
- patch?: never;
- trace?: never;
- };
- '/api/judge/invitations/{token}': {
- parameters: {
- query?: never;
- header?: never;
- path?: never;
- cookie?: never;
- };
- /**
- * Preview an invitation by token
- * @description Public endpoint so an invitee can see who invited them and which hackathon before signing in. Reveals only the invitation summary — never anything that requires auth.
- */
- get: operations['JudgeController_previewInvitation'];
- put?: never;
- post?: never;
- delete?: never;
- options?: never;
- head?: never;
- patch?: never;
- trace?: never;
- };
- '/api/judge/invitations/{token}/accept': {
- parameters: {
- query?: never;
- header?: never;
- path?: never;
- cookie?: never;
- };
- get?: never;
- put?: never;
- /**
- * Accept a judge invitation
- * @description Creates the HackathonJudge assignment. The authenticated user is NOT added to the hosting organization — judge access is hackathon-scoped only.
- */
- post: operations['JudgeController_acceptInvitation'];
- delete?: never;
- options?: never;
- head?: never;
- patch?: never;
- trace?: never;
- };
- '/api/judge/invitations/{token}/decline': {
- parameters: {
- query?: never;
- header?: never;
- path?: never;
- cookie?: never;
- };
- get?: never;
- put?: never;
- /** Decline a judge invitation */
- post: operations['JudgeController_declineInvitation'];
- delete?: never;
- options?: never;
- head?: never;
- patch?: never;
- trace?: never;
- };
- '/api/judge/hackathons': {
- parameters: {
- query?: never;
- header?: never;
- path?: never;
- cookie?: never;
- };
- /**
- * List hackathons I'm assigned to judge
- * @description Returns all hackathons where the authenticated user has an active judge assignment.
- */
- get: operations['JudgeController_myHackathons'];
- put?: never;
- post?: never;
- delete?: never;
- options?: never;
- head?: never;
- patch?: never;
- trace?: never;
- };
- '/api/judge/hackathons/{hackathonId}': {
- parameters: {
- query?: never;
- header?: never;
- path?: never;
- cookie?: never;
- };
- /**
- * Get judge-scoped hackathon overview
- * @description Returns hackathon overview tailored to a judge: dates, criteria, my progress. Never includes peer signals or organization-management data.
- */
- get: operations['JudgeController_overview'];
- put?: never;
- post?: never;
- delete?: never;
- options?: never;
- head?: never;
- patch?: never;
- trace?: never;
- };
- '/api/judge/hackathons/{hackathonId}/submissions': {
- parameters: {
- query?: never;
- header?: never;
- path?: never;
- cookie?: never;
- };
- /**
- * List submissions for scoring
- * @description Returns shortlisted submissions with only the calling judge's own scores. Peer-derived signals (averageScore, judgeCount) are intentionally omitted to preserve blind scoring.
- */
- get: operations['JudgeController_submissions'];
- put?: never;
- post?: never;
- delete?: never;
- options?: never;
- head?: never;
- patch?: never;
- trace?: never;
- };
- '/api/judge/hackathons/{hackathonId}/submissions/{submissionId}': {
- parameters: {
- query?: never;
- header?: never;
- path?: never;
- cookie?: never;
- };
- /**
- * Get one submission with my score
- * @description Returns a single submission plus the calling judge's own score (if any). Peer scores remain hidden until results are published.
- */
- get: operations['JudgeController_submission'];
- put?: never;
- post?: never;
- delete?: never;
- options?: never;
- head?: never;
- patch?: never;
- trace?: never;
- };
- '/api/judge/hackathons/{hackathonId}/submissions/{submissionId}/neighbors': {
- parameters: {
- query?: never;
- header?: never;
- path?: never;
- cookie?: never;
- };
- /**
- * Queue neighbors for the scoring page
- * @description Returns the previous and next submissions in the canonical queue, plus the next unscored one (wrapping to the start if needed), plus totals. Single round trip so the scoring page can render "X of N" and auto-advance without fetching the full queue.
- */
- get: operations['JudgeController_neighbors'];
- put?: never;
- post?: never;
- delete?: never;
- options?: never;
- head?: never;
- patch?: never;
- trace?: never;
- };
- '/api/judge/hackathons/{hackathonId}/criteria': {
- parameters: {
- query?: never;
- header?: never;
- path?: never;
- cookie?: never;
- };
- /** Get judging criteria for this hackathon */
- get: operations['JudgeController_criteria'];
- put?: never;
- post?: never;
- delete?: never;
- options?: never;
- head?: never;
- patch?: never;
- trace?: never;
- };
- '/api/judge/hackathons/{hackathonId}/results': {
- parameters: {
- query?: never;
- header?: never;
- path?: never;
- cookie?: never;
- };
- /**
- * Final results for this hackathon
- * @description Returns the published ranking. Returns `{ resultsPublished: false, results: [] }` until the organizer publishes — never leaks scores prematurely.
- */
- get: operations['JudgeController_results'];
- put?: never;
- post?: never;
- delete?: never;
- options?: never;
- head?: never;
- patch?: never;
- trace?: never;
- };
- '/api/judge/hackathons/{hackathonId}/submissions/{submissionId}/score': {
- parameters: {
- query?: never;
- header?: never;
- path?: never;
- cookie?: never;
- };
- get?: never;
- put?: never;
- /**
- * Submit (or update) my scores for a submission
- * @description Upserts the calling judge's scores for the given submission. Rubric validation and the judging window are enforced by the underlying service.
- */
- post: operations['JudgeController_score'];
- delete?: never;
- options?: never;
- head?: never;
- patch?: never;
- trace?: never;
- };
- '/api/judge/hackathons/{hackathonId}/submissions/{submissionId}/ai-score': {
- parameters: {
- query?: never;
- header?: never;
- path?: never;
- cookie?: never;
- };
- /**
- * AI advisory scorecard for a submission (judge view)
- * @description Returns the AI scorecard for the submission if one has been generated, else null. Advisory only; it never replaces the judge’s own score.
- */
- get: operations['JudgeController_aiScorecard'];
- put?: never;
- /**
- * Run AI scoring for a submission (judge assist)
- * @description Generates (or regenerates) the advisory AI scorecard against the rubric. Advisory only; the judge still enters and submits their own score.
- */
- post: operations['JudgeController_runAiScore'];
- delete?: never;
- options?: never;
- head?: never;
- patch?: never;
- trace?: never;
- };
- '/api/organizations/{organizationId}/hackathons/{id}/statistics': {
- parameters: {
- query?: never;
- header?: never;
- path?: never;
- cookie?: never;
- };
- /**
- * Get hackathon statistics (organizers only)
- * @description Retrieves participation and engagement statistics for a hackathon. Only organizers of the hackathon can access this.
- */
- get: operations['OrganizationHackathonsUpdatesController_getHackathonStatistics'];
- put?: never;
- post?: never;
- delete?: never;
- options?: never;
- head?: never;
- patch?: never;
- trace?: never;
- };
- '/api/organizations/{organizationId}/hackathons/{id}/content': {
- parameters: {
- query?: never;
- header?: never;
- path?: never;
- cookie?: never;
- };
- get?: never;
- put?: never;
- post?: never;
- delete?: never;
- options?: never;
- head?: never;
- /**
- * Update published hackathon content
- * @description Updates published hackathon information and/or collaboration data.
- */
- patch: operations['OrganizationHackathonsUpdatesController_updatePublishedContent'];
- trace?: never;
- };
- '/api/organizations/{organizationId}/hackathons/{id}/schedule': {
- parameters: {
- query?: never;
- header?: never;
- path?: never;
- cookie?: never;
- };
- get?: never;
- put?: never;
- post?: never;
- delete?: never;
- options?: never;
- head?: never;
- /**
- * Update published hackathon schedule
- * @description Updates published hackathon timeline and/or participation settings.
- */
- patch: operations['OrganizationHackathonsUpdatesController_updatePublishedSchedule'];
- trace?: never;
- };
- '/api/organizations/{organizationId}/hackathons/{id}/financial': {
- parameters: {
- query?: never;
- header?: never;
- path?: never;
- cookie?: never;
- };
- get?: never;
- put?: never;
- post?: never;
- delete?: never;
- options?: never;
- head?: never;
- /**
- * Update published hackathon financial settings
- * @description Updates published hackathon rewards data with escrow safety checks.
- */
- patch: operations['OrganizationHackathonsUpdatesController_updatePublishedFinancial'];
- trace?: never;
- };
- '/api/organizations/{organizationId}/hackathons/{id}/financial/preview': {
- parameters: {
- query?: never;
- header?: never;
- path?: never;
- cookie?: never;
- };
- get?: never;
- put?: never;
- /**
- * Preview financial update cost (dry-run)
- * @description Calculates the exact USDC cost of a proposed reward update without
- * making any changes to escrow state or the wallet.
- *
- * Returns a per-tier breakdown plus the total additional funding required,
- * the current wallet balance, and whether the balance is sufficient.
- *
- * Call this **before** `PATCH /financial` to power a confirmation step in
- * the UI and avoid surprising the organizer with an insufficient-balance error.
- */
- post: operations['OrganizationHackathonsUpdatesController_previewPublishedFinancial'];
- delete?: never;
- options?: never;
- head?: never;
- patch?: never;
- trace?: never;
- };
- '/api/organizations/{organizationId}/hackathons/{id}/advanced-settings': {
- parameters: {
- query?: never;
- header?: never;
- path?: never;
- cookie?: never;
- };
- get?: never;
- put?: never;
- post?: never;
- delete?: never;
- options?: never;
- head?: never;
- /**
- * Update published hackathon advanced settings
- * @description Updates published hackathon advanced settings in metadata for frontend behavior controls.
- */
- patch: operations['OrganizationHackathonsUpdatesController_updatePublishedAdvancedSettings'];
- trace?: never;
- };
- '/api/organizations/{organizationId}/hackathons/{id}/access': {
- parameters: {
- query?: never;
- header?: never;
- path?: never;
- cookie?: never;
- };
- get?: never;
- put?: never;
- post?: never;
- delete?: never;
- options?: never;
- head?: never;
- /**
- * Set hackathon visibility + access password (owner/admin)
- * @description PUBLIC lists the hackathon and opens the page to everyone. PRIVATE hides it from listings and gates the page behind a password.
- */
- patch: operations['OrganizationHackathonsUpdatesController_setHackathonAccess'];
- trace?: never;
- };
- '/api/organizations/{organizationId}/hackathons/{id}/export': {
- parameters: {
- query?: never;
- header?: never;
- path?: never;
- cookie?: never;
- };
- /**
- * Export hackathon data (organizer only)
- * @description Export hackathon data as a **CSV** or a **branded PDF**.
- *
- * **CSV** — A multi-section spreadsheet-compatible file with UTF-8 BOM for
- * Excel compatibility. Sections: Overview, Prize Tiers, Participants, Submissions, Winners, Judging.
- *
- * **PDF** — A professionally branded Boundless report including cover header,
- * key-metric stat cards, and data tables. Dark brand palette with mint accent.
- *
- * Use the `dataset` param to limit which sections are included.
- *
- * > Only hackathon organizers (organization managers) can use this endpoint.
- */
- get: operations['OrganizationHackathonsExportController_exportHackathon'];
- put?: never;
- post?: never;
- delete?: never;
- options?: never;
- head?: never;
- patch?: never;
- trace?: never;
- };
- '/api/organizations/{organizationId}/hackathons/{hackathonId}/partners/invite': {
- parameters: {
- query?: never;
- header?: never;
- path?: never;
- cookie?: never;
- };
- get?: never;
- put?: never;
- /** Invite a partner to contribute to the hackathon prize pool */
- post: operations['OrganizationHackathonsPartnersController_invite'];
- delete?: never;
- options?: never;
- head?: never;
- patch?: never;
- trace?: never;
- };
- '/api/organizations/{organizationId}/hackathons/{hackathonId}/partners/contributions': {
- parameters: {
- query?: never;
- header?: never;
- path?: never;
- cookie?: never;
- };
- /** List partner contributions for a hackathon */
- get: operations['OrganizationHackathonsPartnersController_list'];
- put?: never;
- post?: never;
- delete?: never;
- options?: never;
- head?: never;
- patch?: never;
- trace?: never;
- };
- '/api/organizations/{organizationId}/hackathons/{hackathonId}/partners/contributions/{contributionId}': {
- parameters: {
- query?: never;
- header?: never;
- path?: never;
- cookie?: never;
- };
- get?: never;
- put?: never;
- post?: never;
- /** Cancel a pending partner invitation */
- delete: operations['OrganizationHackathonsPartnersController_cancel'];
- options?: never;
- head?: never;
- patch?: never;
- trace?: never;
- };
- '/api/organizations/{organizationId}/hackathons/{hackathonId}/partners/contributions/{contributionId}/allocations': {
- parameters: {
- query?: never;
- header?: never;
- path?: never;
- cookie?: never;
- };
- /**
- * Get allocation summary for a contribution
- * @description Returns the pledged amount, allocatable (after platform fee), already allocated, remaining unallocated, and the list of individual allocations.
- */
- get: operations['OrganizationHackathonsPartnersController_getAllocations'];
- put?: never;
- post?: never;
- delete?: never;
- options?: never;
- head?: never;
- patch?: never;
- trace?: never;
- };
- '/api/organizations/{organizationId}/hackathons/{hackathonId}/partners/contributions/{contributionId}/allocate': {
- parameters: {
- query?: never;
- header?: never;
- path?: never;
- cookie?: never;
- };
- get?: never;
- put?: never;
- /**
- * Allocate a partner contribution into prize tiers
- * @description Distributes the contribution amount into one or more prize tiers — either inflating existing tiers or creating new ones. The sum of allocations cannot exceed the remaining allocatable amount.
- */
- post: operations['OrganizationHackathonsPartnersController_allocate'];
- delete?: never;
- options?: never;
- head?: never;
- patch?: never;
- trace?: never;
- };
- '/api/organizations/{organizationId}/hackathons/{hackathonId}/partners/prizes': {
- parameters: {
- query?: never;
- header?: never;
- path?: never;
- cookie?: never;
- };
- /**
- * List prizes + placements available for allocation
- * @description Returns the hackathon prizes with their placements (the fundable slots) so partner money can be allocated to a specific placement.
- */
- get: operations['OrganizationHackathonsPartnersController_prizes'];
- put?: never;
- post?: never;
- delete?: never;
- options?: never;
- head?: never;
- patch?: never;
- trace?: never;
- };
- '/api/organizations/{organizationId}/hackathons/{hackathonId}/partners/allocations/{allocationId}': {
- parameters: {
- query?: never;
- header?: never;
- path?: never;
- cookie?: never;
- };
- get?: never;
- put?: never;
- post?: never;
- /**
- * Undo a single allocation
- * @description Reverses an allocation, decrementing the prize tier amount and removing the tier if it was created by the allocation and no longer has any remaining amount.
- */
- delete: operations['OrganizationHackathonsPartnersController_undoAllocation'];
- options?: never;
- head?: never;
- patch?: never;
- trace?: never;
- };
- '/api/partners/contribute/{token}': {
- parameters: {
- query?: never;
- header?: never;
- path?: never;
- cookie?: never;
- };
- /** Get partner invitation details by token (public, tokenized) */
- get: operations['PartnersContributeController_getByToken'];
- put?: never;
- post?: never;
- delete?: never;
- options?: never;
- head?: never;
- patch?: never;
- trace?: never;
- };
- '/api/partners/contribute/{token}/prepare-fund-tx': {
- parameters: {
- query?: never;
- header?: never;
- path?: never;
- cookie?: never;
- };
- get?: never;
- put?: never;
- /**
- * Build an unsigned ADD_FUNDS escrow transaction
- * @description Validates the contribution window and on-chain readiness, begins an ADD_FUNDS op on the boundless-events contract, links it to the contribution, and returns the unsigned XDR (plus the op row id) for the partner wallet to sign locally.
- */
- post: operations['PartnersContributeController_prepareFundTx'];
- delete?: never;
- options?: never;
- head?: never;
- patch?: never;
- trace?: never;
- };
- '/api/partners/contribute/{token}/submit-tx': {
- parameters: {
- query?: never;
- header?: never;
- path?: never;
- cookie?: never;
- };
- get?: never;
- put?: never;
- /**
- * Submit a partner-signed ADD_FUNDS transaction
- * @description Submits the signed XDR through the escrow orchestrator. The op settles asynchronously; the contribution is confirmed by the hackathon escrow subscriber once ADD_FUNDS settles on-chain.
- */
- post: operations['PartnersContributeController_submitTx'];
- delete?: never;
- options?: never;
- head?: never;
- patch?: never;
- trace?: never;
- };
- '/api/hackathons/{idOrSlug}/tracks': {
- parameters: {
- query?: never;
- header?: never;
- path?: never;
- cookie?: never;
- };
- /**
- * List hackathon tracks
- * @description Returns the public list of tracks for a hackathon. Archived tracks are hidden by default; pass includeArchived=true to see them (useful for organizer dashboards).
- */
- get: operations['HackathonsTracksController_listTracks'];
- put?: never;
- post?: never;
- delete?: never;
- options?: never;
- head?: never;
- patch?: never;
- trace?: never;
- };
- '/api/hackathons/{idOrSlug}/custom-questions': {
- parameters: {
- query?: never;
- header?: never;
- path?: never;
- cookie?: never;
- };
- /**
- * List public custom questions
- * @description Returns a hackathon's custom questions for the public forms. Filter with ?scope=SUBMISSION|REGISTRATION (the submission form passes SUBMISSION).
- */
- get: operations['HackathonsCustomQuestionsController_list'];
- put?: never;
- post?: never;
- delete?: never;
- options?: never;
- head?: never;
- patch?: never;
- trace?: never;
- };
- '/api/organizations/{organizationId}/hackathons/{id}/tracks': {
- parameters: {
- query?: never;
- header?: never;
- path?: never;
- cookie?: never;
- };
- /**
- * List tracks (organizer view)
- * @description Returns the full set of tracks for this hackathon, including archived ones by default. Use ?includeArchived=false to hide them.
- */
- get: operations['OrganizationHackathonsTracksController_list'];
- put?: never;
- /** Create a track */
- post: operations['OrganizationHackathonsTracksController_create'];
- delete?: never;
- options?: never;
- head?: never;
- patch?: never;
- trace?: never;
- };
- '/api/organizations/{organizationId}/hackathons/{id}/tracks/config': {
- parameters: {
- query?: never;
- header?: never;
- path?: never;
- cookie?: never;
- };
- get?: never;
- put?: never;
- post?: never;
- delete?: never;
- options?: never;
- head?: never;
- /**
- * Update hackathon-level track config
- * @description Sets track settings stored on the hackathon (e.g. max tracks per submission), distinct from per-track CRUD. Declared before :trackId so the static path wins.
- */
- patch: operations['OrganizationHackathonsTracksController_updateConfig'];
- trace?: never;
- };
- '/api/organizations/{organizationId}/hackathons/{id}/tracks/{trackId}': {
- parameters: {
- query?: never;
- header?: never;
- path?: never;
- cookie?: never;
- };
- get?: never;
- put?: never;
- post?: never;
- /**
- * Delete a track
- * @description Hard-deletes the track if no submissions are entered. If submissions have already opted in, archives the track instead (preserves history).
- */
- delete: operations['OrganizationHackathonsTracksController_remove'];
- options?: never;
- head?: never;
- /** Update a track */
- patch: operations['OrganizationHackathonsTracksController_update'];
- trace?: never;
- };
- '/api/organizations/{organizationId}/hackathons/{id}/tracks/{trackId}/bulk-opt-in': {
- parameters: {
- query?: never;
- header?: never;
- path?: never;
- cookie?: never;
- };
- get?: never;
- put?: never;
- /**
- * Opt in every existing submission into this track
- * @description Retrofit tool for hackathons where tracks were added after submissions exist. Inserts a SubmissionTrackEntry for every non-disqualified submission. Idempotent. Auto-bumps `tracksMaxPerSubmission` if needed so submitters can still edit their submissions afterwards.
- */
- post: operations['OrganizationHackathonsTracksController_bulkOptIn'];
- delete?: never;
- options?: never;
- head?: never;
- patch?: never;
- trace?: never;
- };
- '/api/organizations/{organizationId}/hackathons/{id}/custom-questions': {
- parameters: {
- query?: never;
- header?: never;
- path?: never;
- cookie?: never;
- };
- /**
- * List custom questions (organizer view)
- * @description Returns the full question set for this hackathon. Filter to one scope with ?scope=REGISTRATION|SUBMISSION.
- */
- get: operations['OrganizationHackathonsCustomQuestionsController_list'];
- /**
- * Replace the full custom-question set
- * @description Delete-and-recreate: the submitted array becomes the complete question set across both scopes.
- */
- put: operations['OrganizationHackathonsCustomQuestionsController_replace'];
- post?: never;
- delete?: never;
- options?: never;
- head?: never;
- patch?: never;
- trace?: never;
- };
- '/api/organizations/{organizationId}/hackathons/{id}/escrow/funding-otp/request': {
- parameters: {
- query?: never;
- header?: never;
- path?: never;
- cookie?: never;
- };
- get?: never;
- put?: never;
- /**
- * Request a funding step-up code
- * @description Emails a one-time code the organizer must verify before funding. Reports required=false when step-up is disabled, or alreadyVerified=true when a recent verification still authorizes funding.
- */
- post: operations['OrganizationHackathonsEscrowController_requestFundingOtp'];
- delete?: never;
- options?: never;
- head?: never;
- patch?: never;
- trace?: never;
- };
- '/api/organizations/{organizationId}/hackathons/{id}/escrow/funding-otp/verify': {
- parameters: {
- query?: never;
- header?: never;
- path?: never;
- cookie?: never;
- };
- get?: never;
- put?: never;
- /**
- * Verify a funding step-up code
- * @description Verifies the emailed code and authorizes funding for a short window. Wrong or expired codes return 400; attempts are capped.
- */
- post: operations['OrganizationHackathonsEscrowController_verifyFundingOtp'];
- delete?: never;
- options?: never;
- head?: never;
- patch?: never;
- trace?: never;
- };
- '/api/organizations/{organizationId}/hackathons/{id}/escrow/publish': {
- parameters: {
- query?: never;
- header?: never;
- path?: never;
- cookie?: never;
- };
- get?: never;
- put?: never;
- /**
- * Publish a hackathon draft to the events contract
- * @description Validates the draft, transitions it to DRAFT_AWAITING_FUNDING, and returns an unsigned XDR transaction for the organizer to sign. After signing, post the result back to /escrow/ops/:opRowId/submit-signed. Requires a verified funding step-up when FUNDING_OTP_ENABLED is on.
- */
- post: operations['OrganizationHackathonsEscrowController_publish'];
- delete?: never;
- options?: never;
- head?: never;
- patch?: never;
- trace?: never;
- };
- '/api/organizations/{organizationId}/hackathons/{id}/escrow/cancel': {
- parameters: {
- query?: never;
- header?: never;
- path?: never;
- cookie?: never;
- };
- get?: never;
- put?: never;
- /**
- * Cancel an active hackathon
- * @description Builds a cancel_event contract op. The contract refunds partner contributions first then the owner residual. On settle, the subscriber transitions the hackathon to CANCELLED and stamps the cancel audit columns.
- */
- post: operations['OrganizationHackathonsEscrowController_cancel'];
- delete?: never;
- options?: never;
- head?: never;
- patch?: never;
- trace?: never;
- };
- '/api/organizations/{organizationId}/hackathons/{id}/escrow/select-winners': {
- parameters: {
- query?: never;
- header?: never;
- path?: never;
- cookie?: never;
- };
- get?: never;
- put?: never;
- /**
- * Select winners for a hackathon
- * @description Builds a select_winners contract op that pays out per the on-chain winner_distribution and bumps each winner's profile credits / reputation / earnings. On settle, the subscriber moves the hackathon to COMPLETED and sets rank on the winning HackathonSubmission rows.
- */
- post: operations['OrganizationHackathonsEscrowController_selectWinners'];
- delete?: never;
- options?: never;
- head?: never;
- patch?: never;
- trace?: never;
- };
- '/api/organizations/{organizationId}/hackathons/{id}/escrow/ops/{opRowId}/submit-signed': {
- parameters: {
- query?: never;
- header?: never;
- path?: never;
- cookie?: never;
- };
- get?: never;
- put?: never;
- /**
- * Submit signed XDR for a previously-built escrow op
- * @description Accepts the signed XDR returned by the wallet and posts it to Soroban RPC. Returns the op in PENDING_CONFIRM; the reconciliation worker drives the final transition to COMPLETED or FAILED.
- */
- post: operations['OrganizationHackathonsEscrowController_submitSigned'];
- delete?: never;
- options?: never;
- head?: never;
- patch?: never;
- trace?: never;
- };
- '/api/organizations/{organizationId}/hackathons/{id}/escrow/ops/{opRowId}': {
- parameters: {
- query?: never;
- header?: never;
- path?: never;
- cookie?: never;
- };
- /**
- * Read the current state of an escrow op
- * @description Polled by the webapp while waiting for the reconciliation worker to mark the op COMPLETED or FAILED.
- */
- get: operations['OrganizationHackathonsEscrowController_getOp'];
- put?: never;
- post?: never;
- delete?: never;
- options?: never;
- head?: never;
- patch?: never;
- trace?: never;
- };
- '/api/organizations/{organizationId}/hackathons/{id}/escrow/reset-to-draft': {
- parameters: {
- query?: never;
- header?: never;
- path?: never;
- cookie?: never;
- };
- get?: never;
- put?: never;
- /**
- * Reset a stranded hackathon back to DRAFT
- * @description Recovers a hackathon stuck in DRAFT_AWAITING_FUNDING (e.g. a failed managed sign/submit) back to DRAFT so the organizer can fix the cause and republish. Refuses while the publish op may still settle on-chain.
- */
- post: operations['OrganizationHackathonsEscrowController_resetToDraft'];
- delete?: never;
- options?: never;
- head?: never;
- patch?: never;
- trace?: never;
- };
- '/api/hackathons/{id}/escrow/submissions/{submissionId}/submit': {
- parameters: {
- query?: never;
- header?: never;
- path?: never;
- cookie?: never;
- };
- get?: never;
- put?: never;
- /**
- * Anchor a hackathon submission on chain
- * @description Builds the contract's submit op for an existing HackathonSubmission row. Hackathon has no prior-apply requirement; the contract simply stores the submission anchor with content_uri + submitted_at.
- */
- post: operations['HackathonParticipantEscrowController_submit'];
- delete?: never;
- options?: never;
- head?: never;
- patch?: never;
- trace?: never;
- };
- '/api/hackathons/{id}/escrow/submissions/{submissionId}/withdraw': {
- parameters: {
- query?: never;
- header?: never;
- path?: never;
- cookie?: never;
- };
- get?: never;
- put?: never;
- /** Withdraw a hackathon submission anchor */
- post: operations['HackathonParticipantEscrowController_withdrawSubmission'];
- delete?: never;
- options?: never;
- head?: never;
- patch?: never;
- trace?: never;
- };
- '/api/hackathons/{id}/escrow/contribute': {
- parameters: {
- query?: never;
- header?: never;
- path?: never;
- cookie?: never;
- };
- get?: never;
- put?: never;
- /**
- * Contribute funds to a hackathon pool
- * @description Builds an add_funds contract op signed by the caller. Contract enforces a 10 USDC minimum. Anyone authenticated can contribute; multiple top-ups from the same wallet are allowed (one row per attempt).
- */
- post: operations['HackathonParticipantEscrowController_contribute'];
- delete?: never;
- options?: never;
- head?: never;
- patch?: never;
- trace?: never;
- };
- '/api/hackathons/{id}/escrow/ops/{opRowId}/submit-signed': {
- parameters: {
- query?: never;
- header?: never;
- path?: never;
- cookie?: never;
- };
- get?: never;
- put?: never;
- /** Submit signed XDR for a participant op */
- post: operations['HackathonParticipantEscrowController_submitSigned'];
- delete?: never;
- options?: never;
- head?: never;
- patch?: never;
- trace?: never;
- };
- '/api/hackathons/{id}/escrow/ops/{opRowId}': {
- parameters: {
- query?: never;
- header?: never;
- path?: never;
- cookie?: never;
- };
- /** Read the state of a participant op */
- get: operations['HackathonParticipantEscrowController_getOp'];
- put?: never;
- post?: never;
- delete?: never;
- options?: never;
- head?: never;
- patch?: never;
- trace?: never;
- };
- '/api/organizations': {
- parameters: {
- query?: never;
- header?: never;
- path?: never;
- cookie?: never;
- };
- get: operations['OrganizationsController_getOrganizations'];
- put?: never;
- post: operations['OrganizationsController_createOrganization'];
- delete?: never;
- options?: never;
- head?: never;
- patch?: never;
- trace?: never;
- };
- '/api/organizations/my': {
- parameters: {
- query?: never;
- header?: never;
- path?: never;
- cookie?: never;
- };
- get: operations['OrganizationsController_getMyOrganizations'];
- put?: never;
- post?: never;
- delete?: never;
- options?: never;
- head?: never;
- patch?: never;
- trace?: never;
- };
- '/api/organizations/profile/{idOrSlug}': {
- parameters: {
- query?: never;
- header?: never;
- path?: never;
- cookie?: never;
- };
- /**
- * Get organization profile (public)
- * @description Returns public profile for the organization page: name, logo, description, and key stats. Resolve by organization ID or slug.
- */
- get: operations['OrganizationsController_getOrganizationProfile'];
- put?: never;
- post?: never;
- delete?: never;
- options?: never;
- head?: never;
- patch?: never;
- trace?: never;
- };
- '/api/organizations/search': {
- parameters: {
- query?: never;
- header?: never;
- path?: never;
- cookie?: never;
- };
- /** Search organizations */
- get: operations['OrganizationsController_searchOrganizations'];
- put?: never;
- post?: never;
- delete?: never;
- options?: never;
- head?: never;
- patch?: never;
- trace?: never;
- };
- '/api/organizations/{id}': {
- parameters: {
- query?: never;
- header?: never;
- path?: never;
- cookie?: never;
- };
- /**
- * Get organization by ID
- * @description Retrieve detailed information about a specific organization
- */
- get: operations['OrganizationsController_getOrganization'];
- put: operations['OrganizationsController_updateOrganization'];
- post?: never;
- delete: operations['OrganizationsController_deleteOrganization'];
- options?: never;
- head?: never;
- patch?: never;
- trace?: never;
- };
- '/api/organizations/{id}/members': {
- parameters: {
- query?: never;
- header?: never;
- path?: never;
- cookie?: never;
- };
- get: operations['OrganizationsController_getOrganizationMembers'];
- put?: never;
- post?: never;
- delete?: never;
- options?: never;
- head?: never;
- patch?: never;
- trace?: never;
- };
- '/api/organizations/{id}/permissions': {
- parameters: {
- query?: never;
- header?: never;
- path?: never;
- cookie?: never;
- };
- /** Get the org role-permission matrix */
- get: operations['OrganizationsController_getOrganizationPermissions'];
- put?: never;
- post?: never;
- delete?: never;
- options?: never;
- head?: never;
- /** Update the org role-permission matrix (owner only) */
- patch: operations['OrganizationsController_updateOrganizationPermissions'];
- trace?: never;
- };
- '/api/organizations/{id}/permissions/reset': {
- parameters: {
- query?: never;
- header?: never;
- path?: never;
- cookie?: never;
- };
- get?: never;
- put?: never;
- /** Reset the org role-permission matrix (owner only) */
- post: operations['OrganizationsController_resetOrganizationPermissions'];
- delete?: never;
- options?: never;
- head?: never;
- patch?: never;
- trace?: never;
- };
- '/api/organizations/{id}/stats': {
- parameters: {
- query?: never;
- header?: never;
- path?: never;
- cookie?: never;
- };
- get: operations['OrganizationsController_getOrganizationStats'];
- put?: never;
- post?: never;
- delete?: never;
- options?: never;
- head?: never;
- patch?: never;
- trace?: never;
- };
- '/api/organizations/{organizationId}/members': {
- parameters: {
- query?: never;
- header?: never;
- path?: never;
- cookie?: never;
- };
- get: operations['MembersController_getMembers'];
- put?: never;
- post?: never;
- delete?: never;
- options?: never;
- head?: never;
- patch?: never;
- trace?: never;
- };
- '/api/organizations/{organizationId}/members/{userId}': {
- parameters: {
- query?: never;
- header?: never;
- path?: never;
- cookie?: never;
- };
- get?: never;
- put?: never;
- post: operations['MembersController_addMember'];
- delete: operations['MembersController_removeMember'];
- options?: never;
- head?: never;
- patch?: never;
- trace?: never;
- };
- '/api/organizations/{organizationId}/members/{userId}/role': {
- parameters: {
- query?: never;
- header?: never;
- path?: never;
- cookie?: never;
- };
- get?: never;
- put: operations['MembersController_updateMemberRole'];
- post?: never;
- delete?: never;
- options?: never;
- head?: never;
- patch?: never;
- trace?: never;
- };
- '/api/organizations/{organizationId}/members/me': {
- parameters: {
- query?: never;
- header?: never;
- path?: never;
- cookie?: never;
- };
- get: operations['MembersController_getMyMembership'];
- put?: never;
- post?: never;
- delete?: never;
- options?: never;
- head?: never;
- patch?: never;
- trace?: never;
- };
- '/api/organizations/{organizationId}/invitations': {
- parameters: {
- query?: never;
- header?: never;
- path?: never;
- cookie?: never;
- };
- get: operations['InvitationsController_getInvitations'];
- put?: never;
- post: operations['InvitationsController_inviteMember'];
- delete?: never;
- options?: never;
- head?: never;
- patch?: never;
- trace?: never;
- };
- '/api/organizations/{organizationId}/invitations/{invitationId}/accept': {
- parameters: {
- query?: never;
- header?: never;
- path?: never;
- cookie?: never;
- };
- get?: never;
- put?: never;
- post: operations['InvitationsController_acceptInvitation'];
- delete?: never;
- options?: never;
- head?: never;
- patch?: never;
- trace?: never;
- };
- '/api/organizations/{organizationId}/invitations/{invitationId}/reject': {
- parameters: {
- query?: never;
- header?: never;
- path?: never;
- cookie?: never;
- };
- get?: never;
- put?: never;
- post: operations['InvitationsController_rejectInvitation'];
- delete?: never;
- options?: never;
- head?: never;
- patch?: never;
- trace?: never;
- };
- '/api/organizations/{organizationId}/invitations/{invitationId}': {
- parameters: {
- query?: never;
- header?: never;
- path?: never;
- cookie?: never;
- };
- get?: never;
- put?: never;
- post?: never;
- delete: operations['InvitationsController_cancelInvitation'];
- options?: never;
- head?: never;
- patch?: never;
- trace?: never;
- };
- '/api/organizations/{organizationId}/invitations/my': {
- parameters: {
- query?: never;
- header?: never;
- path?: never;
- cookie?: never;
- };
- get: operations['InvitationsController_getMyInvitations'];
- put?: never;
- post?: never;
- delete?: never;
- options?: never;
- head?: never;
- patch?: never;
- trace?: never;
- };
- '/api/organizations/{organizationId}/treasury/wallets': {
- parameters: {
- query?: never;
- header?: never;
- path?: never;
- cookie?: never;
- };
- /** List treasury wallets */
- get: operations['OrganizationTreasuryController_listWallets'];
- put?: never;
- post?: never;
- delete?: never;
- options?: never;
- head?: never;
- patch?: never;
- trace?: never;
- };
- '/api/organizations/{organizationId}/treasury/wallets/archived': {
- parameters: {
- query?: never;
- header?: never;
- path?: never;
- cookie?: never;
- };
- /**
- * List archived treasury wallets
- * @description Wallets are never deleted, only archived. This returns the archived set so they can be reviewed and restored.
- */
- get: operations['OrganizationTreasuryController_listArchivedWallets'];
- put?: never;
- post?: never;
- delete?: never;
- options?: never;
- head?: never;
- patch?: never;
- trace?: never;
- };
- '/api/organizations/{organizationId}/treasury/default-wallet': {
- parameters: {
- query?: never;
- header?: never;
- path?: never;
- cookie?: never;
- };
- /**
- * Get (or create) the organization default wallet
- * @description Returns the org canonical managed wallet, provisioning one if none exists. Owner/admin only (may create). Use this as the funding + contract-auth identity for organization events.
- */
- get: operations['OrganizationTreasuryController_getDefaultWallet'];
- put?: never;
- post?: never;
- delete?: never;
- options?: never;
- head?: never;
- patch?: never;
- trace?: never;
- };
- '/api/organizations/{organizationId}/treasury/wallets/managed': {
- parameters: {
- query?: never;
- header?: never;
- path?: never;
- cookie?: never;
- };
- get?: never;
- put?: never;
- /**
- * Create a Tier 1 managed treasury wallet
- * @description Provisions a platform-custodial Stellar account (sponsored activation + USDC trustline) owned by the organization. Owner/admin only.
- */
- post: operations['OrganizationTreasuryController_createManagedWallet'];
- delete?: never;
- options?: never;
- head?: never;
- patch?: never;
- trace?: never;
- };
- '/api/organizations/{organizationId}/treasury/wallets/connected': {
- parameters: {
- query?: never;
- header?: never;
- path?: never;
- cookie?: never;
- };
- get?: never;
- put?: never;
- /**
- * Register a connected (Tier 2/3) wallet
- * @description Verifies the external account exists + holds a USDC trustline, snapshots its multisig signer set, and records it. Owner/admin only.
- */
- post: operations['OrganizationTreasuryController_registerConnectedWallet'];
- delete?: never;
- options?: never;
- head?: never;
- patch?: never;
- trace?: never;
- };
- '/api/organizations/{organizationId}/treasury/wallets/{walletId}/refresh-signers': {
- parameters: {
- query?: never;
- header?: never;
- path?: never;
- cookie?: never;
- };
- get?: never;
- put?: never;
- /** Re-fetch a connected wallet signer set from Horizon */
- post: operations['OrganizationTreasuryController_refreshSigners'];
- delete?: never;
- options?: never;
- head?: never;
- patch?: never;
- trace?: never;
- };
- '/api/organizations/{organizationId}/treasury/wallets/{walletId}': {
- parameters: {
- query?: never;
- header?: never;
- path?: never;
- cookie?: never;
- };
- get?: never;
- put?: never;
- post?: never;
- delete?: never;
- options?: never;
- head?: never;
- /** Update a wallet label / default flag */
- patch: operations['OrganizationTreasuryController_updateWallet'];
- trace?: never;
- };
- '/api/organizations/{organizationId}/treasury/wallets/{walletId}/archive': {
- parameters: {
- query?: never;
- header?: never;
- path?: never;
- cookie?: never;
- };
- get?: never;
- put?: never;
- /** Archive a treasury wallet */
- post: operations['OrganizationTreasuryController_archiveWallet'];
- delete?: never;
- options?: never;
- head?: never;
- patch?: never;
- trace?: never;
- };
- '/api/organizations/{organizationId}/treasury/wallets/{walletId}/restore': {
- parameters: {
- query?: never;
- header?: never;
- path?: never;
- cookie?: never;
- };
- get?: never;
- put?: never;
- /**
- * Restore an archived treasury wallet
- * @description Wallets are never deleted; archiving is always reversible.
- */
- post: operations['OrganizationTreasuryController_restoreWallet'];
- delete?: never;
- options?: never;
- head?: never;
- patch?: never;
- trace?: never;
- };
- '/api/organizations/{organizationId}/treasury/wallets/{walletId}/balance': {
- parameters: {
- query?: never;
- header?: never;
- path?: never;
- cookie?: never;
- };
- /** Live USDC + XLM balance for a wallet */
- get: operations['OrganizationTreasuryController_walletBalance'];
- put?: never;
- post?: never;
- delete?: never;
- options?: never;
- head?: never;
- patch?: never;
- trace?: never;
- };
- '/api/organizations/{organizationId}/treasury/policy': {
- parameters: {
- query?: never;
- header?: never;
- path?: never;
- cookie?: never;
- };
- /** Get the treasury spend policy (defaults if unset) */
- get: operations['OrganizationTreasuryController_getPolicy'];
- /** Update the treasury spend policy (owner only) */
- put: operations['OrganizationTreasuryController_updatePolicy'];
- post?: never;
- delete?: never;
- options?: never;
- head?: never;
- patch?: never;
- trace?: never;
- };
- '/api/organizations/{organizationId}/treasury/spend': {
- parameters: {
- query?: never;
- header?: never;
- path?: never;
- cookie?: never;
- };
- /** List spend requests */
- get: operations['OrganizationTreasuryController_listSpend'];
- put?: never;
- /** Initiate a spend request */
- post: operations['OrganizationTreasuryController_initiateSpend'];
- delete?: never;
- options?: never;
- head?: never;
- patch?: never;
- trace?: never;
- };
- '/api/organizations/{organizationId}/treasury/spend/funding-otp/request': {
- parameters: {
- query?: never;
- header?: never;
- path?: never;
- cookie?: never;
- };
- get?: never;
- put?: never;
- /** Request an email verification code before sending funds */
- post: operations['OrganizationTreasuryController_requestSendOtp'];
- delete?: never;
- options?: never;
- head?: never;
- patch?: never;
- trace?: never;
- };
- '/api/organizations/{organizationId}/treasury/spend/funding-otp/verify': {
- parameters: {
- query?: never;
- header?: never;
- path?: never;
- cookie?: never;
- };
- get?: never;
- put?: never;
- /** Verify the email code to authorize sending funds */
- post: operations['OrganizationTreasuryController_verifySendOtp'];
- delete?: never;
- options?: never;
- head?: never;
- patch?: never;
- trace?: never;
- };
- '/api/organizations/{organizationId}/treasury/spend/send': {
- parameters: {
- query?: never;
- header?: never;
- path?: never;
- cookie?: never;
- };
- get?: never;
- put?: never;
- /**
- * Send funds from a managed treasury wallet
- * @description Owner/admin only. When email step-up is enabled, requires a recent verification (see spend/funding-otp/request + verify). Creates, authorizes, and executes the payment in a single call.
- */
- post: operations['OrganizationTreasuryController_sendFunds'];
- delete?: never;
- options?: never;
- head?: never;
- patch?: never;
- trace?: never;
- };
- '/api/organizations/{organizationId}/treasury/spend/destination-readiness': {
- parameters: {
- query?: never;
- header?: never;
- path?: never;
- cookie?: never;
- };
- /**
- * Check whether a destination can receive USDC
- * @description Returns whether the recipient account exists on-chain and has a USDC trustline, so the UI can warn before a send instead of failing on-chain.
- */
- get: operations['OrganizationTreasuryController_checkSendDestination'];
- put?: never;
- post?: never;
- delete?: never;
- options?: never;
- head?: never;
- patch?: never;
- trace?: never;
- };
- '/api/organizations/{organizationId}/treasury/spend/{requestId}': {
- parameters: {
- query?: never;
- header?: never;
- path?: never;
- cookie?: never;
- };
- /** Get a spend request */
- get: operations['OrganizationTreasuryController_getSpend'];
- put?: never;
- post?: never;
- delete?: never;
- options?: never;
- head?: never;
- patch?: never;
- trace?: never;
- };
- '/api/organizations/{organizationId}/treasury/spend/{requestId}/approve': {
- parameters: {
- query?: never;
- header?: never;
- path?: never;
- cookie?: never;
- };
- get?: never;
- put?: never;
- /** Approve a spend request (owner/admin) */
- post: operations['OrganizationTreasuryController_approveSpend'];
- delete?: never;
- options?: never;
- head?: never;
- patch?: never;
- trace?: never;
- };
- '/api/organizations/{organizationId}/treasury/spend/{requestId}/reject': {
- parameters: {
- query?: never;
- header?: never;
- path?: never;
- cookie?: never;
- };
- get?: never;
- put?: never;
- /** Reject a spend request (owner/admin) */
- post: operations['OrganizationTreasuryController_rejectSpend'];
- delete?: never;
- options?: never;
- head?: never;
- patch?: never;
- trace?: never;
- };
- '/api/organizations/{organizationId}/treasury/spend/{requestId}/cancel': {
- parameters: {
- query?: never;
- header?: never;
- path?: never;
- cookie?: never;
- };
- get?: never;
- put?: never;
- /** Cancel a spend request (initiator or owner) */
- post: operations['OrganizationTreasuryController_cancelSpend'];
- delete?: never;
- options?: never;
- head?: never;
- patch?: never;
- trace?: never;
- };
- '/api/organizations/{organizationId}/treasury/spend/{requestId}/execute': {
- parameters: {
- query?: never;
- header?: never;
- path?: never;
- cookie?: never;
- };
- get?: never;
- put?: never;
- /**
- * Execute an approved spend on-chain (managed wallets)
- * @description For a managed source wallet, signs + submits a USDC payment to the destination server-side. Owner/admin only.
- */
- post: operations['OrganizationTreasuryController_executeSpend'];
- delete?: never;
- options?: never;
- head?: never;
- patch?: never;
- trace?: never;
- };
- '/api/organizations/{organizationId}/treasury/spend/{requestId}/build-xdr': {
- parameters: {
- query?: never;
- header?: never;
- path?: never;
- cookie?: never;
- };
- get?: never;
- put?: never;
- /**
- * Build the unsigned XDR for a connected-wallet spend
- * @description For an approved connected (Tier 2/3) spend, returns the unsigned USDC payment XDR to sign in-browser and moves it to awaiting_signatures.
- */
- post: operations['OrganizationTreasuryController_buildSpendXdr'];
- delete?: never;
- options?: never;
- head?: never;
- patch?: never;
- trace?: never;
- };
- '/api/organizations/{organizationId}/treasury/spend/{requestId}/submit-signed-xdr': {
- parameters: {
- query?: never;
- header?: never;
- path?: never;
- cookie?: never;
- };
- get?: never;
- put?: never;
- /** Submit a browser-signed spend XDR (connected wallets) */
- post: operations['OrganizationTreasuryController_submitSpendSignedXdr'];
- delete?: never;
- options?: never;
- head?: never;
- patch?: never;
- trace?: never;
- };
- '/api/organizations/{organizationId}/treasury/audit-log': {
- parameters: {
- query?: never;
- header?: never;
- path?: never;
- cookie?: never;
- };
- /** Paginated treasury audit log */
- get: operations['OrganizationTreasuryController_auditLog'];
- put?: never;
- post?: never;
- delete?: never;
- options?: never;
- head?: never;
- patch?: never;
- trace?: never;
- };
- '/api/organizations/{organizationId}/receipts': {
- parameters: {
- query?: never;
- header?: never;
- path?: never;
- cookie?: never;
- };
- /** List money receipts (newest first) */
- get: operations['OrganizationReceiptsController_list'];
- put?: never;
- post?: never;
- delete?: never;
- options?: never;
- head?: never;
- patch?: never;
- trace?: never;
- };
- '/api/organizations/{organizationId}/receipts/{receiptId}': {
- parameters: {
- query?: never;
- header?: never;
- path?: never;
- cookie?: never;
- };
- /** Get a single receipt */
- get: operations['OrganizationReceiptsController_getOne'];
- put?: never;
- post?: never;
- delete?: never;
- options?: never;
- head?: never;
- patch?: never;
- trace?: never;
- };
- '/api/organizations/{organizationId}/receipts/{receiptId}/send': {
- parameters: {
- query?: never;
- header?: never;
- path?: never;
- cookie?: never;
- };
- get?: never;
- put?: never;
- /** Email a copy of the receipt */
- post: operations['OrganizationReceiptsController_send'];
- delete?: never;
- options?: never;
- head?: never;
- patch?: never;
- trace?: never;
- };
- '/api/organizations/{organizationId}/receipts/{receiptId}/void': {
- parameters: {
- query?: never;
- header?: never;
- path?: never;
- cookie?: never;
- };
- get?: never;
- put?: never;
- /** Void a receipt (owner/admin). Never deleted. */
- post: operations['OrganizationReceiptsController_void'];
- delete?: never;
- options?: never;
- head?: never;
- patch?: never;
- trace?: never;
- };
- '/api/votes': {
- parameters: {
- query?: never;
- header?: never;
- path?: never;
- cookie?: never;
- };
- get: operations['VotesController_getVotes'];
- put?: never;
- post: operations['VotesController_createVote'];
- delete?: never;
- options?: never;
- head?: never;
- patch?: never;
- trace?: never;
- };
- '/api/votes/{projectId}/{entityType}': {
- parameters: {
- query?: never;
- header?: never;
- path?: never;
- cookie?: never;
- };
- get?: never;
- put?: never;
- post?: never;
- delete: operations['VotesController_removeVote'];
- options?: never;
- head?: never;
- patch?: never;
- trace?: never;
- };
- '/api/votes/count/{projectId}/{entityType}': {
- parameters: {
- query?: never;
- header?: never;
- path?: never;
- cookie?: never;
- };
- get: operations['VotesController_getVoteCounts'];
- put?: never;
- post?: never;
- delete?: never;
- options?: never;
- head?: never;
- patch?: never;
- trace?: never;
- };
- '/api/votes/my-vote/{projectId}/{entityType}': {
- parameters: {
- query?: never;
- header?: never;
- path?: never;
- cookie?: never;
- };
- get: operations['VotesController_getUserVote'];
- put?: never;
- post?: never;
- delete?: never;
- options?: never;
- head?: never;
- patch?: never;
- trace?: never;
- };
- '/api/votes/project/{projectId}': {
- parameters: {
- query?: never;
- header?: never;
- path?: never;
- cookie?: never;
- };
- /**
- * Get project votes
- * @description Get project votes. Use includeVoters=true for comprehensive data including voter list and vote counts.
- */
- get: operations['VotesController_getProjectVotes'];
- put?: never;
- post?: never;
- delete?: never;
- options?: never;
- head?: never;
- patch?: never;
- trace?: never;
- };
- '/api/leaderboard': {
- parameters: {
- query?: never;
- header?: never;
- path?: never;
- cookie?: never;
- };
- /** Get community leaderboard entries */
- get: operations['LeaderboardController_getLeaderboard'];
- put?: never;
- post?: never;
- delete?: never;
- options?: never;
- head?: never;
- patch?: never;
- trace?: never;
- };
- '/api/blog-posts': {
- parameters: {
- query?: never;
- header?: never;
- path?: never;
- cookie?: never;
- };
- /** List all blog posts with pagination and filters */
- get: operations['BlogPostsController_listBlogPosts'];
- put?: never;
- /** Create a new blog post */
- post: operations['BlogPostsController_createBlogPost'];
- delete?: never;
- options?: never;
- head?: never;
- patch?: never;
- trace?: never;
- };
- '/api/blog-posts/id/{id}': {
- parameters: {
- query?: never;
- header?: never;
- path?: never;
- cookie?: never;
- };
- /** Get blog post by ID */
- get: operations['BlogPostsController_getBlogPostById'];
- put?: never;
- post?: never;
- delete?: never;
- options?: never;
- head?: never;
- patch?: never;
- trace?: never;
- };
- '/api/blog-posts/slug/{slug}': {
- parameters: {
- query?: never;
- header?: never;
- path?: never;
- cookie?: never;
- };
- /** Get blog post by slug */
- get: operations['BlogPostsController_getBlogPostBySlug'];
- put?: never;
- post?: never;
- delete?: never;
- options?: never;
- head?: never;
- patch?: never;
- trace?: never;
- };
- '/api/blog-posts/{id}/related': {
- parameters: {
- query?: never;
- header?: never;
- path?: never;
- cookie?: never;
- };
- /** Get related blog posts */
- get: operations['BlogPostsController_getRelatedPosts'];
- put?: never;
- post?: never;
- delete?: never;
- options?: never;
- head?: never;
- patch?: never;
- trace?: never;
- };
- '/api/blog-posts/{id}': {
- parameters: {
- query?: never;
- header?: never;
- path?: never;
- cookie?: never;
- };
- get?: never;
- /** Update a blog post */
- put: operations['BlogPostsController_updateBlogPost'];
- post?: never;
- /** Delete a blog post */
- delete: operations['BlogPostsController_deleteBlogPost'];
- options?: never;
- head?: never;
- patch?: never;
- trace?: never;
- };
- '/api/admin/ai/generate-excerpt': {
- parameters: {
- query?: never;
- header?: never;
- path?: never;
- cookie?: never;
- };
- get?: never;
- put?: never;
- /** Generate excerpt from content */
- post: operations['AiController_generateExcerpt'];
- delete?: never;
- options?: never;
- head?: never;
- patch?: never;
- trace?: never;
- };
- '/api/admin/ai/generate-reading-time': {
- parameters: {
- query?: never;
- header?: never;
- path?: never;
- cookie?: never;
- };
- get?: never;
- put?: never;
- /** Generate reading time estimate from content */
- post: operations['AiController_generateReadingTime'];
- delete?: never;
- options?: never;
- head?: never;
- patch?: never;
- trace?: never;
- };
- '/api/admin/ai/generate-seo': {
- parameters: {
- query?: never;
- header?: never;
- path?: never;
- cookie?: never;
- };
- get?: never;
- put?: never;
- /** Generate SEO settings from content */
- post: operations['AiController_generateSEO'];
- delete?: never;
- options?: never;
- head?: never;
- patch?: never;
- trace?: never;
- };
- '/api/admin/ai/generate-tags': {
- parameters: {
- query?: never;
- header?: never;
- path?: never;
- cookie?: never;
- };
- get?: never;
- put?: never;
- /** Generate tags from content */
- post: operations['AiController_generateTags'];
- delete?: never;
- options?: never;
- head?: never;
- patch?: never;
- trace?: never;
- };
- '/api/admin/ai/generate-category': {
- parameters: {
- query?: never;
- header?: never;
- path?: never;
- cookie?: never;
- };
- get?: never;
- put?: never;
- /** Generate category from content */
- post: operations['AiController_generateCategory'];
- delete?: never;
- options?: never;
- head?: never;
- patch?: never;
- trace?: never;
- };
- '/api/admin/overview': {
- parameters: {
- query?: never;
- header?: never;
- path?: never;
- cookie?: never;
- };
- /**
- * Get admin overview data (Admin only)
- * @description Retrieves comprehensive overview data including metrics and charts for the admin dashboard
- */
- get: operations['AdminController_getOverview'];
- put?: never;
- post?: never;
- delete?: never;
- options?: never;
- head?: never;
- patch?: never;
- trace?: never;
- };
- '/api/admin/users': {
- parameters: {
- query?: never;
- header?: never;
- path?: never;
- cookie?: never;
- };
- /**
- * Get all users (Admin only)
- * @description Retrieves a paginated list of all users with optional filtering
- */
- get: operations['AdminController_getUsers'];
- put?: never;
- post?: never;
- delete?: never;
- options?: never;
- head?: never;
- patch?: never;
- trace?: never;
- };
- '/api/admin/users/export': {
- parameters: {
- query?: never;
- header?: never;
- path?: never;
- cookie?: never;
- };
- /**
- * Export all users as CSV (Admin only)
- * @description Downloads a CSV file containing all platform users and newsletter-only subscribers
- */
- get: operations['AdminController_exportUsers'];
- put?: never;
- post?: never;
- delete?: never;
- options?: never;
- head?: never;
- patch?: never;
- trace?: never;
- };
- '/api/admin/users/{usernameOrId}': {
- parameters: {
- query?: never;
- header?: never;
- path?: never;
- cookie?: never;
- };
- /**
- * Get user details (Admin only)
- * @description Retrieves detailed information about a specific user by username or ID
- */
- get: operations['AdminController_getUserDetails'];
- put?: never;
- post?: never;
- delete?: never;
- options?: never;
- head?: never;
- patch?: never;
- trace?: never;
- };
- '/api/admin/users/{usernameOrId}/stats': {
- parameters: {
- query?: never;
- header?: never;
- path?: never;
- cookie?: never;
- };
- /**
- * Get user statistics (Admin only)
- * @description Retrieves comprehensive statistics for a specific user
- */
- get: operations['AdminController_getUserStats'];
- put?: never;
- post?: never;
- delete?: never;
- options?: never;
- head?: never;
- patch?: never;
- trace?: never;
- };
- '/api/admin/users/{usernameOrId}/activity': {
- parameters: {
- query?: never;
- header?: never;
- path?: never;
- cookie?: never;
- };
- /**
- * Get user activity (Admin only)
- * @description Retrieves activity history for a specific user
- */
- get: operations['AdminController_getUserActivity'];
- put?: never;
- post?: never;
- delete?: never;
- options?: never;
- head?: never;
- patch?: never;
- trace?: never;
- };
- '/api/admin/users/{usernameOrId}/projects': {
- parameters: {
- query?: never;
- header?: never;
- path?: never;
- cookie?: never;
- };
- /**
- * Get user projects (Admin only)
- * @description Retrieves all projects created by a specific user
- */
- get: operations['AdminController_getUserProjects'];
- put?: never;
- post?: never;
- delete?: never;
- options?: never;
- head?: never;
- patch?: never;
- trace?: never;
- };
- '/api/admin/organizations': {
- parameters: {
- query?: never;
- header?: never;
- path?: never;
- cookie?: never;
- };
- /**
- * Get all organizations (Admin only)
- * @description Retrieves a paginated list of all organizations with member counts
- */
- get: operations['AdminController_getOrganizations'];
- put?: never;
- post?: never;
- delete?: never;
- options?: never;
- head?: never;
- patch?: never;
- trace?: never;
- };
- '/api/admin/organizations/{orgId}': {
- parameters: {
- query?: never;
- header?: never;
- path?: never;
- cookie?: never;
- };
- /**
- * Get organization details (Admin only)
- * @description Retrieves detailed information about an organization including members and hackathons
- */
- get: operations['AdminController_getOrganizationDetails'];
- put?: never;
- post?: never;
- delete?: never;
- options?: never;
- head?: never;
- patch?: never;
- trace?: never;
- };
- '/api/admin/users/{usernameOrId}/organizations': {
- parameters: {
- query?: never;
- header?: never;
- path?: never;
- cookie?: never;
- };
- /**
- * Get user organizations (Admin only)
- * @description Retrieves all organizations a user is a member of
- */
- get: operations['AdminController_getUserOrganizations'];
- put?: never;
- post?: never;
- delete?: never;
- options?: never;
- head?: never;
- patch?: never;
- trace?: never;
- };
- '/api/admin/blog-posts': {
- parameters: {
- query?: never;
- header?: never;
- path?: never;
- cookie?: never;
- };
- /** List all blog posts including drafts (Admin only) */
- get: operations['AdminBlogsController_listAllBlogPosts'];
- put?: never;
- /** Create a new blog post (Admin only) */
- post: operations['AdminBlogsController_createBlogPost'];
- delete?: never;
- options?: never;
- head?: never;
- patch?: never;
- trace?: never;
- };
- '/api/admin/blog-posts/{id}': {
- parameters: {
- query?: never;
- header?: never;
- path?: never;
- cookie?: never;
- };
- /** Get blog post by ID (Admin only) */
- get: operations['AdminBlogsController_getBlogPostById'];
- /** Update a blog post (Admin only) */
- put: operations['AdminBlogsController_updateBlogPost'];
- post?: never;
- /**
- * Soft delete a blog post (Admin only)
- * @description Marks the blog post as deleted without removing it from database
- */
- delete: operations['AdminBlogsController_deleteBlogPost'];
- options?: never;
- head?: never;
- patch?: never;
- trace?: never;
- };
- '/api/admin/blog-posts/{id}/permanent': {
- parameters: {
- query?: never;
- header?: never;
- path?: never;
- cookie?: never;
- };
- get?: never;
- put?: never;
- post?: never;
- /**
- * Permanently delete a blog post (Admin only)
- * @description Permanently removes the blog post from database
- */
- delete: operations['AdminBlogsController_permanentlyDeleteBlogPost'];
- options?: never;
- head?: never;
- patch?: never;
- trace?: never;
- };
- '/api/admin/blog-posts/{id}/restore': {
- parameters: {
- query?: never;
- header?: never;
- path?: never;
- cookie?: never;
- };
- get?: never;
- put?: never;
- /** Restore a soft-deleted blog post (Admin only) */
- post: operations['AdminBlogsController_restoreBlogPost'];
- delete?: never;
- options?: never;
- head?: never;
- patch?: never;
- trace?: never;
- };
- '/api/admin/blog-posts/tags/all': {
- parameters: {
- query?: never;
- header?: never;
- path?: never;
- cookie?: never;
- };
- /** Get all tags with post counts (Admin only) */
- get: operations['AdminBlogsController_getAllTags'];
- put?: never;
- post?: never;
- delete?: never;
- options?: never;
- head?: never;
- patch?: never;
- trace?: never;
- };
- '/api/admin/blog-posts/tags/{slug}': {
- parameters: {
- query?: never;
- header?: never;
- path?: never;
- cookie?: never;
- };
- /** Get tag by slug (Admin only) */
- get: operations['AdminBlogsController_getTagBySlug'];
- put?: never;
- post?: never;
- delete?: never;
- options?: never;
- head?: never;
- patch?: never;
- trace?: never;
- };
- '/api/admin/blog-posts/tags/unused': {
- parameters: {
- query?: never;
- header?: never;
- path?: never;
- cookie?: never;
- };
- get?: never;
- put?: never;
- post?: never;
- /**
- * Delete all unused tags (Admin only)
- * @description Removes tags that are not associated with any blog posts
- */
- delete: operations['AdminBlogsController_deleteUnusedTags'];
- options?: never;
- head?: never;
- patch?: never;
- trace?: never;
- };
- '/api/admin/blog-posts/scheduled/publish': {
- parameters: {
- query?: never;
- header?: never;
- path?: never;
- cookie?: never;
- };
- get?: never;
- put?: never;
- /** Manually trigger publishing of scheduled posts (Admin only) */
- post: operations['AdminBlogsController_publishScheduledPosts'];
- delete?: never;
- options?: never;
- head?: never;
- patch?: never;
- trace?: never;
- };
- '/api/admin/crowdfunding': {
- parameters: {
- query?: never;
- header?: never;
- path?: never;
- cookie?: never;
- };
- /** List crowdfunding campaigns */
- get: operations['AdminCrowdfundingController_list'];
- put?: never;
- post?: never;
- delete?: never;
- options?: never;
- head?: never;
- patch?: never;
- trace?: never;
- };
- '/api/admin/crowdfunding/user/{usernameOrId}': {
- parameters: {
- query?: never;
- header?: never;
- path?: never;
- cookie?: never;
- };
- /** List crowdfunding campaigns by user */
- get: operations['AdminCrowdfundingController_listByUser'];
- put?: never;
- post?: never;
- delete?: never;
- options?: never;
- head?: never;
- patch?: never;
- trace?: never;
- };
- '/api/admin/crowdfunding/{campaignId}': {
- parameters: {
- query?: never;
- header?: never;
- path?: never;
- cookie?: never;
- };
- /** Get crowdfunding campaign by ID */
- get: operations['AdminCrowdfundingController_getCampaign'];
- put?: never;
- post?: never;
- delete?: never;
- options?: never;
- head?: never;
- patch?: never;
- trace?: never;
- };
- '/api/admin/crowdfunding/pending': {
- parameters: {
- query?: never;
- header?: never;
- path?: never;
- cookie?: never;
- };
- /** List crowdfunding campaigns pending admin review */
- get: operations['AdminCrowdfundingController_listPending'];
- put?: never;
- post?: never;
- delete?: never;
- options?: never;
- head?: never;
- patch?: never;
- trace?: never;
- };
- '/api/admin/crowdfunding/{campaignId}/approve': {
- parameters: {
- query?: never;
- header?: never;
- path?: never;
- cookie?: never;
- };
- get?: never;
- put?: never;
- /** Approve a crowdfunding campaign */
- post: operations['AdminCrowdfundingController_approve'];
- delete?: never;
- options?: never;
- head?: never;
- patch?: never;
- trace?: never;
- };
- '/api/admin/crowdfunding/{campaignId}/reject': {
- parameters: {
- query?: never;
- header?: never;
- path?: never;
- cookie?: never;
- };
- get?: never;
- put?: never;
- /** Reject a crowdfunding campaign */
- post: operations['AdminCrowdfundingController_reject'];
- delete?: never;
- options?: never;
- head?: never;
- patch?: never;
- trace?: never;
- };
- '/api/admin/crowdfunding/{campaignId}/request-revision': {
- parameters: {
- query?: never;
- header?: never;
- path?: never;
- cookie?: never;
- };
- get?: never;
- put?: never;
- /** Request revisions for a crowdfunding campaign */
- post: operations['AdminCrowdfundingController_requestRevision'];
- delete?: never;
- options?: never;
- head?: never;
- patch?: never;
- trace?: never;
- };
- '/api/admin/crowdfunding/{campaignId}/review-note': {
- parameters: {
- query?: never;
- header?: never;
- path?: never;
- cookie?: never;
- };
- get?: never;
- put?: never;
- /** Add an admin review note for a campaign */
- post: operations['AdminCrowdfundingController_addReviewNote'];
- delete?: never;
- options?: never;
- head?: never;
- patch?: never;
- trace?: never;
- };
- '/api/admin/crowdfunding/{campaignId}/assign-reviewer': {
- parameters: {
- query?: never;
- header?: never;
- path?: never;
- cookie?: never;
- };
- get?: never;
- put?: never;
- /** Assign a reviewer to a campaign */
- post: operations['AdminCrowdfundingController_assignReviewer'];
- delete?: never;
- options?: never;
- head?: never;
- patch?: never;
- trace?: never;
- };
- '/api/admin/milestones': {
- parameters: {
- query?: never;
- header?: never;
- path?: never;
- cookie?: never;
- };
- /**
- * List all milestones grouped by campaign
- * @description Retrieves all milestones organized by their campaigns with pagination
- */
- get: operations['AdminMilestonesController_listAllMilestonesByCampaign'];
- put?: never;
- post?: never;
- delete?: never;
- options?: never;
- head?: never;
- patch?: never;
- trace?: never;
- };
- '/api/admin/milestones/pending': {
- parameters: {
- query?: never;
- header?: never;
- path?: never;
- cookie?: never;
- };
- /** Get pending milestone review queue */
- get: operations['AdminMilestonesController_listPendingMilestones'];
- put?: never;
- post?: never;
- delete?: never;
- options?: never;
- head?: never;
- patch?: never;
- trace?: never;
- };
- '/api/admin/milestones/{milestoneId}': {
- parameters: {
- query?: never;
- header?: never;
- path?: never;
- cookie?: never;
- };
- /** Get milestone detail for review */
- get: operations['AdminMilestonesController_getMilestoneForReview'];
- put?: never;
- post?: never;
- delete?: never;
- options?: never;
- head?: never;
- patch?: never;
- trace?: never;
- };
- '/api/admin/milestones/{milestoneId}/approve': {
- parameters: {
- query?: never;
- header?: never;
- path?: never;
- cookie?: never;
- };
- get?: never;
- put?: never;
- /** Approve a milestone submission */
- post: operations['AdminMilestonesController_approveMilestone'];
- delete?: never;
- options?: never;
- head?: never;
- patch?: never;
- trace?: never;
- };
- '/api/admin/milestones/{milestoneId}/reject': {
- parameters: {
- query?: never;
- header?: never;
- path?: never;
- cookie?: never;
- };
- get?: never;
- put?: never;
- /** Reject a milestone submission */
- post: operations['AdminMilestonesController_rejectMilestone'];
- delete?: never;
- options?: never;
- head?: never;
- patch?: never;
- trace?: never;
- };
- '/api/admin/milestones/{milestoneId}/request-resubmission': {
- parameters: {
- query?: never;
- header?: never;
- path?: never;
- cookie?: never;
- };
- get?: never;
- put?: never;
- /** Request milestone resubmission with changes */
- post: operations['AdminMilestonesController_requestResubmission'];
- delete?: never;
- options?: never;
- head?: never;
- patch?: never;
- trace?: never;
- };
- '/api/admin/milestones/{milestoneId}/review-note': {
- parameters: {
- query?: never;
- header?: never;
- path?: never;
- cookie?: never;
- };
- get?: never;
- put?: never;
- /** Add a review note to milestone */
- post: operations['AdminMilestonesController_addReviewNote'];
- delete?: never;
- options?: never;
- head?: never;
- patch?: never;
- trace?: never;
- };
- '/api/admin/escrow/{campaignId}': {
- parameters: {
- query?: never;
- header?: never;
- path?: never;
- cookie?: never;
- };
- /** Get escrow information and transaction history for campaign */
- get: operations['AdminEscrowController_getEscrowInfo'];
- put?: never;
- post?: never;
- delete?: never;
- options?: never;
- head?: never;
- patch?: never;
- trace?: never;
- };
- '/api/admin/escrow/{campaignId}/action': {
- parameters: {
- query?: never;
- header?: never;
- path?: never;
- cookie?: never;
- };
- get?: never;
- put?: never;
- /**
- * Execute manual escrow action (testnet only)
- * @description Manually trigger escrow actions like release, refund, pause, or resume. This is intended for testnet use only.
- */
- post: operations['AdminEscrowController_executeEscrowAction'];
- delete?: never;
- options?: never;
- head?: never;
- patch?: never;
- trace?: never;
- };
- '/api/admin/disputes': {
- parameters: {
- query?: never;
- header?: never;
- path?: never;
- cookie?: never;
- };
- /** Get dispute dashboard with filtering */
- get: operations['AdminDisputesController_listDisputes'];
- put?: never;
- post?: never;
- delete?: never;
- options?: never;
- head?: never;
- patch?: never;
- trace?: never;
- };
- '/api/admin/disputes/{disputeId}': {
- parameters: {
- query?: never;
- header?: never;
- path?: never;
- cookie?: never;
- };
- /** Get detailed dispute information */
- get: operations['AdminDisputesController_getDisputeDetail'];
- put?: never;
- post?: never;
- delete?: never;
- options?: never;
- head?: never;
- patch?: never;
- trace?: never;
- };
- '/api/admin/disputes/{disputeId}/assign': {
- parameters: {
- query?: never;
- header?: never;
- path?: never;
- cookie?: never;
- };
- get?: never;
- put?: never;
- /** Assign dispute to an admin */
- post: operations['AdminDisputesController_assignDispute'];
- delete?: never;
- options?: never;
- head?: never;
- patch?: never;
- trace?: never;
- };
- '/api/admin/disputes/{disputeId}/note': {
- parameters: {
- query?: never;
- header?: never;
- path?: never;
- cookie?: never;
- };
- get?: never;
- put?: never;
- /**
- * Add note or message to dispute
- * @description Add a communication to the dispute. Can be internal (admin only) or external (visible to parties).
- */
- post: operations['AdminDisputesController_addDisputeNote'];
- delete?: never;
- options?: never;
- head?: never;
- patch?: never;
- trace?: never;
- };
- '/api/admin/disputes/{disputeId}/resolve': {
- parameters: {
- query?: never;
- header?: never;
- path?: never;
- cookie?: never;
- };
- get?: never;
- put?: never;
- /** Resolve a dispute with a final decision */
- post: operations['AdminDisputesController_resolveDispute'];
- delete?: never;
- options?: never;
- head?: never;
- patch?: never;
- trace?: never;
- };
- '/api/admin/disputes/{disputeId}/escalate': {
- parameters: {
- query?: never;
- header?: never;
- path?: never;
- cookie?: never;
- };
- get?: never;
- put?: never;
- /** Escalate dispute to arbitration */
- post: operations['AdminDisputesController_escalateDispute'];
- delete?: never;
- options?: never;
- head?: never;
- patch?: never;
- trace?: never;
- };
- '/api/admin/manual-projects/pending': {
- parameters: {
- query?: never;
- header?: never;
- path?: never;
- cookie?: never;
- };
- /** List pending manual project submissions */
- get: operations['AdminManualProjectsController_listPendingManualProjects'];
- put?: never;
- post?: never;
- delete?: never;
- options?: never;
- head?: never;
- patch?: never;
- trace?: never;
- };
- '/api/admin/manual-projects/{projectId}/approve': {
- parameters: {
- query?: never;
- header?: never;
- path?: never;
- cookie?: never;
- };
- get?: never;
- put?: never;
- /** Approve a pending manual project */
- post: operations['AdminManualProjectsController_approveManualProject'];
- delete?: never;
- options?: never;
- head?: never;
- patch?: never;
- trace?: never;
- };
- '/api/admin/manual-projects/{projectId}/reject': {
- parameters: {
- query?: never;
- header?: never;
- path?: never;
- cookie?: never;
- };
- get?: never;
- put?: never;
- /** Reject a pending manual project */
- post: operations['AdminManualProjectsController_rejectManualProject'];
- delete?: never;
- options?: never;
- head?: never;
- patch?: never;
- trace?: never;
- };
- '/api/admin/manual-projects/{projectId}/request-changes': {
- parameters: {
- query?: never;
- header?: never;
- path?: never;
- cookie?: never;
- };
- get?: never;
- put?: never;
- /** Request changes for a pending manual project */
- post: operations['AdminManualProjectsController_requestChanges'];
- delete?: never;
- options?: never;
- head?: never;
- patch?: never;
- trace?: never;
- };
- '/api/admin/project-edits/pending': {
- parameters: {
- query?: never;
- header?: never;
- path?: never;
- cookie?: never;
- };
- /** List pending major project edits */
- get: operations['AdminProjectEditsController_listPendingProjectEdits'];
- put?: never;
- post?: never;
- delete?: never;
- options?: never;
- head?: never;
- patch?: never;
- trace?: never;
- };
- '/api/admin/project-edits/{editId}/approve': {
- parameters: {
- query?: never;
- header?: never;
- path?: never;
- cookie?: never;
- };
- get?: never;
- put?: never;
- /** Approve a pending major project edit */
- post: operations['AdminProjectEditsController_approveProjectEdit'];
- delete?: never;
- options?: never;
- head?: never;
- patch?: never;
- trace?: never;
- };
- '/api/admin/project-edits/{editId}/reject': {
- parameters: {
- query?: never;
- header?: never;
- path?: never;
- cookie?: never;
- };
- get?: never;
- put?: never;
- /** Reject a pending major project edit */
- post: operations['AdminProjectEditsController_rejectProjectEdit'];
- delete?: never;
- options?: never;
- head?: never;
- patch?: never;
- trace?: never;
- };
- '/api/admin/wallets/stats': {
- parameters: {
- query?: never;
- header?: never;
- path?: never;
- cookie?: never;
- };
- /** Get wallet statistics */
- get: operations['AdminWalletsController_getStats'];
- put?: never;
- post?: never;
- delete?: never;
- options?: never;
- head?: never;
- patch?: never;
- trace?: never;
- };
- '/api/admin/wallets': {
- parameters: {
- query?: never;
- header?: never;
- path?: never;
- cookie?: never;
- };
- /** List user wallets */
- get: operations['AdminWalletsController_listWallets'];
- put?: never;
- post?: never;
- delete?: never;
- options?: never;
- head?: never;
- patch?: never;
- trace?: never;
- };
- '/api/admin/wallets/user/{userId}': {
- parameters: {
- query?: never;
- header?: never;
- path?: never;
- cookie?: never;
- };
- /** Get wallets for a specific user */
- get: operations['AdminWalletsController_getByUserId'];
- put?: never;
- post?: never;
- delete?: never;
- options?: never;
- head?: never;
- patch?: never;
- trace?: never;
- };
- '/api/admin/wallets/{id}': {
- parameters: {
- query?: never;
- header?: never;
- path?: never;
- cookie?: never;
- };
- /** Get detailed wallet info */
- get: operations['AdminWalletsController_getDetails'];
- put?: never;
- post?: never;
- delete?: never;
- options?: never;
- head?: never;
- patch?: never;
- trace?: never;
- };
- '/api/admin/wallets/{id}/activate': {
- parameters: {
- query?: never;
- header?: never;
- path?: never;
- cookie?: never;
- };
- get?: never;
- put?: never;
- /**
- * Sponsor-activate a wallet by ID (creates account + configured trustlines, default USDC)
- * @description All XLM reserves paid by the platform sponsor account. Idempotent: re-running on an already-activated wallet returns success without submitting. Used by the admin dashboard "Activate" button.
- */
- post: operations['AdminWalletsController_activateWallet'];
- delete?: never;
- options?: never;
- head?: never;
- patch?: never;
- trace?: never;
- };
- '/api/admin/wallets/users/{userId}/sponsor-activate': {
- parameters: {
- query?: never;
- header?: never;
- path?: never;
- cookie?: never;
- };
- get?: never;
- put?: never;
- /**
- * Sponsor-activate a single user (account + USDC trustline)
- * @description Uses the sponsor account to create the on-chain account and add the configured trustlines (default USDC). User pays no XLM. Idempotent: safe to retry. Use this for hackathon participants who need to receive USDC payouts.
- */
- post: operations['AdminWalletsController_sponsorActivateUser'];
- delete?: never;
- options?: never;
- head?: never;
- patch?: never;
- trace?: never;
- };
- '/api/admin/wallets/hackathons/{hackathonId}/sponsor-activate': {
- parameters: {
- query?: never;
- header?: never;
- path?: never;
- cookie?: never;
- };
- get?: never;
- put?: never;
- /**
- * Enqueue sponsor activation for every participant of a hackathon
- * @description Aggregates all distinct user IDs from HackathonSubmission.participantId and teamMembers[], then enqueues a BullMQ job that activates each wallet (account + USDC trustline). Returns immediately with a job ID. Poll the status URL for progress; idempotent re-runs are safe.
- */
- post: operations['AdminWalletsController_sponsorActivateHackathon'];
- delete?: never;
- options?: never;
- head?: never;
- patch?: never;
- trace?: never;
- };
- '/api/admin/wallets/jobs/sponsor-activation/{jobId}': {
- parameters: {
- query?: never;
- header?: never;
- path?: never;
- cookie?: never;
- };
- /**
- * Get status of a sponsor-activation job
- * @description Returns BullMQ job state (waiting | active | completed | failed | delayed | paused), progress {processed, total, activated, alreadyActivated, failed}, returnvalue (full summary when complete), and failedReason.
- */
- get: operations['AdminWalletsController_getSponsorActivationJobStatus'];
- put?: never;
- post?: never;
- delete?: never;
- options?: never;
- head?: never;
- patch?: never;
- trace?: never;
- };
- '/healthz': {
- parameters: {
- query?: never;
- header?: never;
- path?: never;
- cookie?: never;
- };
- /**
- * Liveness probe
- * @description Returns 200 if the process is alive. No downstream checks. Use for orchestrator restart decisions.
- */
- get: operations['HealthController_liveness'];
- put?: never;
- post?: never;
- delete?: never;
- options?: never;
- head?: never;
- patch?: never;
- trace?: never;
- };
- '/readyz': {
- parameters: {
- query?: never;
- header?: never;
- path?: never;
- cookie?: never;
- };
- /**
- * Readiness probe
- * @description Returns 200 only when Postgres and Redis are reachable. Use for orchestrator traffic-drain decisions, not for restart.
- */
- get: operations['HealthController_readiness'];
- put?: never;
- post?: never;
- delete?: never;
- options?: never;
- head?: never;
- patch?: never;
- trace?: never;
- };
- '/api/didit/status': {
- parameters: {
- query?: never;
- header?: never;
- path?: never;
- cookie?: never;
- };
- /**
- * Get current verification state for the authenticated user
- * @description Returns a normalized verification state the frontend uses to decide what to render: the verify button is shown only when `canStartNew` is true (states: not_started, declined, abandoned, expired). For `in_review` the response includes a `reviewWindow` with the SLA in business days.
- */
- get: operations['DiditController_getStatus'];
- put?: never;
- post?: never;
- delete?: never;
- options?: never;
- head?: never;
- patch?: never;
- trace?: never;
- };
- '/api/didit/callback': {
- parameters: {
- query?: never;
- header?: never;
- path?: never;
- cookie?: never;
- };
- /**
- * Didit redirect target (post-verification)
- * @description Didit redirects the user here after the hosted KYC flow. We resolve authoritative status from the DB (the query string from Didit is not trusted) and 302 to the frontend with `?state=...`. State maps directly to the values returned by GET /didit/status.
- */
- get: operations['DiditController_callback'];
- put?: never;
- post?: never;
- delete?: never;
- options?: never;
- head?: never;
- patch?: never;
- trace?: never;
- };
- '/api/didit/create-session': {
- parameters: {
- query?: never;
- header?: never;
- path?: never;
- cookie?: never;
- };
- get?: never;
- put?: never;
- /**
- * Create verification session
- * @description Creates a Didit verification session for the authenticated user. Returns session_token and verification_url for the frontend SDK.
- */
- post: operations['DiditController_createSession'];
- delete?: never;
- options?: never;
- head?: never;
- patch?: never;
- trace?: never;
- };
- '/api/didit/webhook': {
- parameters: {
- query?: never;
- header?: never;
- path?: never;
- cookie?: never;
- };
- get?: never;
- put?: never;
- /**
- * Didit webhook
- * @description Receives verification completion events from Didit. The signature is verified by DiditWebhookGuard. Updates user verification status and DiditVerificationSession.
- */
- post: operations['DiditController_webhook'];
- delete?: never;
- options?: never;
- head?: never;
- patch?: never;
- trace?: never;
- };
- '/api/pricing/preview': {
- parameters: {
- query?: never;
- header?: never;
- path?: never;
- cookie?: never;
- };
- /** Compute the financial preview for a publish wizard */
- get: operations['PricingController_preview'];
- put?: never;
- post?: never;
- delete?: never;
- options?: never;
- head?: never;
- patch?: never;
- trace?: never;
- };
- '/api/organizations/{organizationId}/ai/usage': {
- parameters: {
- query?: never;
- header?: never;
- path?: never;
- cookie?: never;
- };
- /** Get this organization’s monthly AI usage + cost */
- get: operations['AiUsageController_getUsage'];
- put?: never;
- post?: never;
- delete?: never;
- options?: never;
- head?: never;
- patch?: never;
- trace?: never;
- };
- '/api/admin/ops/pause': {
- parameters: {
- query?: never;
- header?: never;
- path?: never;
- cookie?: never;
- };
- get?: never;
- put?: never;
- post: operations['AdminOpsController_pause'];
- delete?: never;
- options?: never;
- head?: never;
- patch?: never;
- trace?: never;
- };
- '/api/admin/ops/unpause': {
- parameters: {
- query?: never;
- header?: never;
- path?: never;
- cookie?: never;
- };
- get?: never;
- put?: never;
- post: operations['AdminOpsController_unpause'];
- delete?: never;
- options?: never;
- head?: never;
- patch?: never;
- trace?: never;
- };
- '/api/admin/ops/set-fee-bps': {
- parameters: {
- query?: never;
- header?: never;
- path?: never;
- cookie?: never;
- };
- get?: never;
- put?: never;
- post: operations['AdminOpsController_setFeeBps'];
- delete?: never;
- options?: never;
- head?: never;
- patch?: never;
- trace?: never;
- };
- '/api/admin/v2/access/me': {
- parameters: {
- query?: never;
- header?: never;
- path?: never;
- cookie?: never;
- };
- /** The current staff principal and role */
- get: operations['AccessController_me'];
- put?: never;
- post?: never;
- delete?: never;
- options?: never;
- head?: never;
- patch?: never;
- trace?: never;
- };
- '/api/admin/v2/access/roles': {
- parameters: {
- query?: never;
- header?: never;
- path?: never;
- cookie?: never;
- };
- /** The role and permission matrix (Super Admin only) */
- get: operations['AccessController_roles'];
- put?: never;
- post?: never;
- delete?: never;
- options?: never;
- head?: never;
- patch?: never;
- trace?: never;
- };
- '/api/admin/v2/analytics': {
- parameters: {
- query?: never;
- header?: never;
- path?: never;
- cookie?: never;
- };
- /** Platform analytics (growth, breakdowns, trend) */
- get: operations['AnalyticsController_get'];
- put?: never;
- post?: never;
- delete?: never;
- options?: never;
- head?: never;
- patch?: never;
- trace?: never;
- };
- '/api/admin/v2/overview': {
- parameters: {
- query?: never;
- header?: never;
- path?: never;
- cookie?: never;
- };
- /** Platform overview counts */
- get: operations['OverviewController_get'];
- put?: never;
- post?: never;
- delete?: never;
- options?: never;
- head?: never;
- patch?: never;
- trace?: never;
- };
- '/api/admin/v2/users': {
- parameters: {
- query?: never;
- header?: never;
- path?: never;
- cookie?: never;
- };
- /** List users (paginated, searchable) */
- get: operations['UsersController_list'];
- put?: never;
- post?: never;
- delete?: never;
- options?: never;
- head?: never;
- patch?: never;
- trace?: never;
- };
- '/api/admin/v2/users/{id}': {
- parameters: {
- query?: never;
- header?: never;
- path?: never;
- cookie?: never;
- };
- /** Get one user */
- get: operations['UsersController_getById'];
- put?: never;
- post?: never;
- delete?: never;
- options?: never;
- head?: never;
- patch?: never;
- trace?: never;
- };
- '/api/admin/v2/users/{id}/earnings': {
- parameters: {
- query?: never;
- header?: never;
- path?: never;
- cookie?: never;
- };
- /** Get a user's earnings (summary, breakdown, activity) */
- get: operations['UsersController_getEarnings'];
- put?: never;
- post?: never;
- delete?: never;
- options?: never;
- head?: never;
- patch?: never;
- trace?: never;
- };
- '/api/admin/v2/users/{id}/organizations': {
- parameters: {
- query?: never;
- header?: never;
- path?: never;
- cookie?: never;
- };
- /** Get a user's organizations */
- get: operations['UsersController_getOrganizations'];
- put?: never;
- post?: never;
- delete?: never;
- options?: never;
- head?: never;
- patch?: never;
- trace?: never;
- };
- '/api/admin/v2/users/{id}/wallet': {
- parameters: {
- query?: never;
- header?: never;
- path?: never;
- cookie?: never;
- };
- /** Get a user's wallet and live balances */
- get: operations['UsersController_getWallet'];
- put?: never;
- post?: never;
- delete?: never;
- options?: never;
- head?: never;
- patch?: never;
- trace?: never;
- };
- '/api/admin/v2/users/{id}/ban': {
- parameters: {
- query?: never;
- header?: never;
- path?: never;
- cookie?: never;
- };
- get?: never;
- put?: never;
- post?: never;
- delete?: never;
- options?: never;
- head?: never;
- /** Ban or unban a user (Tier 2: requires step-up) */
- patch: operations['UsersController_setBanned'];
- trace?: never;
- };
- '/api/admin/v2/organizations': {
- parameters: {
- query?: never;
- header?: never;
- path?: never;
- cookie?: never;
- };
- /** List organizations (paginated, searchable) */
- get: operations['OrganizationsController_list'];
- put?: never;
- post?: never;
- delete?: never;
- options?: never;
- head?: never;
- patch?: never;
- trace?: never;
- };
- '/api/admin/v2/organizations/{id}': {
- parameters: {
- query?: never;
- header?: never;
- path?: never;
- cookie?: never;
- };
- /** Get one organization */
- get: operations['OrganizationsController_getById'];
- put?: never;
- post?: never;
- delete?: never;
- options?: never;
- head?: never;
- /** Update organization details (Tier 2: requires step-up) */
- patch: operations['OrganizationsController_update'];
- trace?: never;
- };
- '/api/admin/v2/organizations/{id}/suspend': {
- parameters: {
- query?: never;
- header?: never;
- path?: never;
- cookie?: never;
- };
- get?: never;
- put?: never;
- /**
- * Suspend an organization (Tier 2: requires step-up)
- * @description Freezes member-initiated mutations (treasury, member management, owner config). Reversible via reinstate.
- */
- post: operations['OrganizationsController_suspend'];
- delete?: never;
- options?: never;
- head?: never;
- patch?: never;
- trace?: never;
- };
- '/api/admin/v2/organizations/{id}/reinstate': {
- parameters: {
- query?: never;
- header?: never;
- path?: never;
- cookie?: never;
- };
- get?: never;
- put?: never;
- /** Reinstate a suspended organization (Tier 2: requires step-up) */
- post: operations['OrganizationsController_reinstate'];
- delete?: never;
- options?: never;
- head?: never;
- patch?: never;
- trace?: never;
- };
- '/api/admin/v2/programs': {
- parameters: {
- query?: never;
- header?: never;
- path?: never;
- cookie?: never;
- };
- /** List programs across a pillar (paginated, searchable) */
- get: operations['ProgramsController_list'];
- put?: never;
- post?: never;
- delete?: never;
- options?: never;
- head?: never;
- patch?: never;
- trace?: never;
- };
- '/api/admin/v2/programs/{id}': {
- parameters: {
- query?: never;
- header?: never;
- path?: never;
- cookie?: never;
- };
- /** Get one program (type selects the pillar) */
- get: operations['ProgramsController_getById'];
- put?: never;
- post?: never;
- delete?: never;
- options?: never;
- head?: never;
- patch?: never;
- trace?: never;
- };
- '/api/admin/v2/programs/{id}/feature': {
- parameters: {
- query?: never;
- header?: never;
- path?: never;
- cookie?: never;
- };
- get?: never;
- put?: never;
- post?: never;
- delete?: never;
- options?: never;
- head?: never;
- /** Feature or unfeature a program (Tier 1; hackathons & bounties) */
- patch: operations['ProgramsController_setFeatured'];
- trace?: never;
- };
- '/api/admin/v2/programs/{id}/status': {
- parameters: {
- query?: never;
- header?: never;
- path?: never;
- cookie?: never;
- };
- get?: never;
- put?: never;
- post?: never;
- delete?: never;
- options?: never;
- head?: never;
- /** Set an admin lifecycle status (Tier 2: requires step-up) */
- patch: operations['ProgramsController_setStatus'];
- trace?: never;
- };
- '/api/admin/v2/disputes': {
- parameters: {
- query?: never;
- header?: never;
- path?: never;
- cookie?: never;
- };
- /** List disputes (paginated, searchable) */
- get: operations['DisputesController_list'];
- put?: never;
- post?: never;
- delete?: never;
- options?: never;
- head?: never;
- patch?: never;
- trace?: never;
- };
- '/api/admin/v2/disputes/{id}': {
- parameters: {
- query?: never;
- header?: never;
- path?: never;
- cookie?: never;
- };
- /** Get one dispute */
- get: operations['DisputesController_getById'];
- put?: never;
- post?: never;
- delete?: never;
- options?: never;
- head?: never;
- patch?: never;
- trace?: never;
- };
- '/api/admin/v2/disputes/{id}/assign': {
- parameters: {
- query?: never;
- header?: never;
- path?: never;
- cookie?: never;
- };
- get?: never;
- put?: never;
- /** Assign a dispute to a staff handler, or unassign (Tier 1) */
- post: operations['DisputesController_assign'];
- delete?: never;
- options?: never;
- head?: never;
- patch?: never;
- trace?: never;
- };
- '/api/admin/v2/disputes/{id}/note': {
- parameters: {
- query?: never;
- header?: never;
- path?: never;
- cookie?: never;
- };
- get?: never;
- put?: never;
- /** Add an internal note to a dispute (Tier 1) */
- post: operations['DisputesController_note'];
- delete?: never;
- options?: never;
- head?: never;
- patch?: never;
- trace?: never;
- };
- '/api/admin/v2/disputes/{id}/resolve': {
- parameters: {
- query?: never;
- header?: never;
- path?: never;
- cookie?: never;
- };
- get?: never;
- put?: never;
- /** Resolve a dispute with an outcome (Tier 2: requires step-up) */
- post: operations['DisputesController_resolve'];
- delete?: never;
- options?: never;
- head?: never;
- patch?: never;
- trace?: never;
- };
- '/api/admin/v2/disputes/{id}/escalate': {
- parameters: {
- query?: never;
- header?: never;
- path?: never;
- cookie?: never;
- };
- get?: never;
- put?: never;
- /** Escalate a dispute to arbitration (Tier 2: requires step-up) */
- post: operations['DisputesController_escalate'];
- delete?: never;
- options?: never;
- head?: never;
- patch?: never;
- trace?: never;
- };
- '/api/admin/v2/escrow': {
- parameters: {
- query?: never;
- header?: never;
- path?: never;
- cookie?: never;
- };
- /** List escrow transactions (paginated, searchable) */
- get: operations['EscrowController_list'];
- put?: never;
- post?: never;
- delete?: never;
- options?: never;
- head?: never;
- patch?: never;
- trace?: never;
- };
- '/api/admin/v2/escrow/requests': {
- parameters: {
- query?: never;
- header?: never;
- path?: never;
- cookie?: never;
- };
- /** List escrow release/refund requests (maker-checker) */
- get: operations['EscrowController_listRequests'];
- put?: never;
- /** Propose an escrow release/refund (Tier 3: step-up) */
- post: operations['EscrowController_propose'];
- delete?: never;
- options?: never;
- head?: never;
- patch?: never;
- trace?: never;
- };
- '/api/admin/v2/escrow/requests/{id}/decision': {
- parameters: {
- query?: never;
- header?: never;
- path?: never;
- cookie?: never;
- };
- get?: never;
- put?: never;
- /** Approve or reject a request (Tier 3: step-up, maker-checker) */
- post: operations['EscrowController_decide'];
- delete?: never;
- options?: never;
- head?: never;
- patch?: never;
- trace?: never;
- };
- '/api/admin/v2/escrow/requests/{id}/execute': {
- parameters: {
- query?: never;
- header?: never;
- path?: never;
- cookie?: never;
- };
- get?: never;
- put?: never;
- /** Record an approved request as executed (Tier 3: step-up) */
- post: operations['EscrowController_execute'];
- delete?: never;
- options?: never;
- head?: never;
- patch?: never;
- trace?: never;
- };
- '/api/admin/v2/payouts': {
- parameters: {
- query?: never;
- header?: never;
- path?: never;
- cookie?: never;
- };
- /** List platform payouts (paginated, searchable) */
- get: operations['PayoutsController_list'];
- put?: never;
- post?: never;
- delete?: never;
- options?: never;
- head?: never;
- patch?: never;
- trace?: never;
- };
- '/api/admin/v2/payouts/requests': {
- parameters: {
- query?: never;
- header?: never;
- path?: never;
- cookie?: never;
- };
- /** List payout requests (maker-checker) */
- get: operations['PayoutsController_listRequests'];
- put?: never;
- /** Propose a payout (Tier 3: step-up) */
- post: operations['PayoutsController_propose'];
- delete?: never;
- options?: never;
- head?: never;
- patch?: never;
- trace?: never;
- };
- '/api/admin/v2/payouts/requests/{id}/decision': {
- parameters: {
- query?: never;
- header?: never;
- path?: never;
- cookie?: never;
- };
- get?: never;
- put?: never;
- /** Approve or reject a payout request (Tier 3: step-up, maker-checker) */
- post: operations['PayoutsController_decide'];
- delete?: never;
- options?: never;
- head?: never;
- patch?: never;
- trace?: never;
- };
- '/api/admin/v2/payouts/requests/{id}/build-xdr': {
- parameters: {
- query?: never;
- header?: never;
- path?: never;
- cookie?: never;
- };
- get?: never;
- put?: never;
- /** Build the unsigned payout XDR for offline signing (Tier 3: step-up) */
- post: operations['PayoutsController_buildXdr'];
- delete?: never;
- options?: never;
- head?: never;
- patch?: never;
- trace?: never;
- };
- '/api/admin/v2/payouts/requests/{id}/submit-signed': {
- parameters: {
- query?: never;
- header?: never;
- path?: never;
- cookie?: never;
- };
- get?: never;
- put?: never;
- /** Submit the offline-signed payout XDR; verifies + broadcasts (Tier 3: step-up) */
- post: operations['PayoutsController_submitSigned'];
- delete?: never;
- options?: never;
- head?: never;
- patch?: never;
- trace?: never;
- };
- '/api/admin/v2/payouts/requests/{id}/execute': {
- parameters: {
- query?: never;
- header?: never;
- path?: never;
- cookie?: never;
- };
- get?: never;
- put?: never;
- /** Fallback: record a payout signed + broadcast off-platform (Tier 3: step-up) */
- post: operations['PayoutsController_execute'];
- delete?: never;
- options?: never;
- head?: never;
- patch?: never;
- trace?: never;
- };
- '/api/admin/v2/content': {
- parameters: {
- query?: never;
- header?: never;
- path?: never;
- cookie?: never;
- };
- /** List blog posts (paginated, searchable; archived via ?archived) */
- get: operations['ContentController_list'];
- put?: never;
- /** Create a blog post (MDX body) (Tier 1) */
- post: operations['ContentController_create'];
- delete?: never;
- options?: never;
- head?: never;
- patch?: never;
- trace?: never;
- };
- '/api/admin/v2/content/{id}': {
- parameters: {
- query?: never;
- header?: never;
- path?: never;
- cookie?: never;
- };
- /** Get one post (full body + metadata, for editing) */
- get: operations['ContentController_getById'];
- put?: never;
- post?: never;
- delete?: never;
- options?: never;
- head?: never;
- /** Update a blog post (Tier 1) */
- patch: operations['ContentController_update'];
- trace?: never;
- };
- '/api/admin/v2/content/{id}/publish': {
- parameters: {
- query?: never;
- header?: never;
- path?: never;
- cookie?: never;
- };
- get?: never;
- put?: never;
- post?: never;
- delete?: never;
- options?: never;
- head?: never;
- /** Publish or unpublish a post (Tier 1) */
- patch: operations['ContentController_setPublished'];
- trace?: never;
- };
- '/api/admin/v2/content/{id}/archive': {
- parameters: {
- query?: never;
- header?: never;
- path?: never;
- cookie?: never;
- };
- get?: never;
- put?: never;
- /** Archive (soft-delete) a post (Tier 2: requires step-up) */
- post: operations['ContentController_archive'];
- delete?: never;
- options?: never;
- head?: never;
- patch?: never;
- trace?: never;
- };
- '/api/admin/v2/content/{id}/restore': {
- parameters: {
- query?: never;
- header?: never;
- path?: never;
- cookie?: never;
- };
- get?: never;
- put?: never;
- /** Restore an archived post (Tier 1) */
- post: operations['ContentController_restore'];
- delete?: never;
- options?: never;
- head?: never;
- patch?: never;
- trace?: never;
- };
- '/api/admin/v2/crowdfunding/review-checklist': {
- parameters: {
- query?: never;
- header?: never;
- path?: never;
- cookie?: never;
- };
- /** List active review checklist items (display order) */
- get: operations['CrowdfundingChecklistController_list'];
- put?: never;
- /** Add a checklist item (super_admin / operations) */
- post: operations['CrowdfundingChecklistController_create'];
- delete?: never;
- options?: never;
- head?: never;
- patch?: never;
- trace?: never;
- };
- '/api/admin/v2/crowdfunding/review-checklist/reorder': {
- parameters: {
- query?: never;
- header?: never;
- path?: never;
- cookie?: never;
- };
- get?: never;
- put?: never;
- /** Reorder checklist items (super_admin / operations) */
- post: operations['CrowdfundingChecklistController_reorder'];
- delete?: never;
- options?: never;
- head?: never;
- patch?: never;
- trace?: never;
- };
- '/api/admin/v2/crowdfunding/review-checklist/{itemId}': {
- parameters: {
- query?: never;
- header?: never;
- path?: never;
- cookie?: never;
- };
- get?: never;
- put?: never;
- post?: never;
- /** Archive a checklist item (super_admin / operations) */
- delete: operations['CrowdfundingChecklistController_archive'];
- options?: never;
- head?: never;
- /** Edit a checklist item (super_admin / operations) */
- patch: operations['CrowdfundingChecklistController_update'];
- trace?: never;
- };
- '/api/admin/v2/crowdfunding': {
- parameters: {
- query?: never;
- header?: never;
- path?: never;
- cookie?: never;
- };
- /** List crowdfunding campaigns (defaults to the review queue) */
- get: operations['CrowdfundingController_list'];
- put?: never;
- post?: never;
- delete?: never;
- options?: never;
- head?: never;
- patch?: never;
- trace?: never;
- };
- '/api/admin/v2/crowdfunding/{id}': {
- parameters: {
- query?: never;
- header?: never;
- path?: never;
- cookie?: never;
- };
- /** Get one campaign with its review history */
- get: operations['CrowdfundingController_getById'];
- put?: never;
- post?: never;
- delete?: never;
- options?: never;
- head?: never;
- patch?: never;
- trace?: never;
- };
- '/api/admin/v2/crowdfunding/{id}/approve': {
- parameters: {
- query?: never;
- header?: never;
- path?: never;
- cookie?: never;
- };
- get?: never;
- put?: never;
- /** Approve a submitted campaign; assigns a reviewer (Tier 2: step-up) */
- post: operations['CrowdfundingController_approve'];
- delete?: never;
- options?: never;
- head?: never;
- patch?: never;
- trace?: never;
- };
- '/api/admin/v2/crowdfunding/{id}/reject': {
- parameters: {
- query?: never;
- header?: never;
- path?: never;
- cookie?: never;
- };
- get?: never;
- put?: never;
- /** Reject a submitted campaign (Tier 2: step-up) */
- post: operations['CrowdfundingController_reject'];
- delete?: never;
- options?: never;
- head?: never;
- patch?: never;
- trace?: never;
- };
- '/api/admin/v2/crowdfunding/{id}/request-revision': {
- parameters: {
- query?: never;
- header?: never;
- path?: never;
- cookie?: never;
- };
- get?: never;
- put?: never;
- /** Send a submitted campaign back for revisions (Tier 1) */
- post: operations['CrowdfundingController_requestRevision'];
- delete?: never;
- options?: never;
- head?: never;
- patch?: never;
- trace?: never;
- };
- '/api/admin/v2/access/totp/enroll': {
- parameters: {
- query?: never;
- header?: never;
- path?: never;
- cookie?: never;
- };
- get?: never;
- put?: never;
- /** Begin TOTP enrollment (returns secret + QR URI) */
- post: operations['SecurityController_enroll'];
- delete?: never;
- options?: never;
- head?: never;
- patch?: never;
- trace?: never;
- };
- '/api/admin/v2/access/totp/activate': {
- parameters: {
- query?: never;
- header?: never;
- path?: never;
- cookie?: never;
- };
- get?: never;
- put?: never;
- /** Confirm TOTP enrollment with a code */
- post: operations['SecurityController_activate'];
- delete?: never;
- options?: never;
- head?: never;
- patch?: never;
- trace?: never;
- };
- '/api/admin/v2/access/step-up': {
- parameters: {
- query?: never;
- header?: never;
- path?: never;
- cookie?: never;
- };
- get?: never;
- put?: never;
- /** Step up: verify a fresh TOTP code for sensitive actions */
- post: operations['SecurityController_stepUp'];
- delete?: never;
- options?: never;
- head?: never;
- patch?: never;
- trace?: never;
- };
- '/api/admin/v2/audit': {
- parameters: {
- query?: never;
- header?: never;
- path?: never;
- cookie?: never;
- };
- /** List admin audit log entries (paginated, searchable) */
- get: operations['AuditController_list'];
- put?: never;
- post?: never;
- delete?: never;
- options?: never;
- head?: never;
- patch?: never;
- trace?: never;
- };
- '/api/admin/v2/audit/stream': {
- parameters: {
- query?: never;
- header?: never;
- path?: never;
- cookie?: never;
- };
- /** Live stream of new audit entries (Server-Sent Events) */
- get: operations['AuditController_stream'];
- put?: never;
- post?: never;
- delete?: never;
- options?: never;
- head?: never;
- patch?: never;
- trace?: never;
- };
- '/api/admin/v2/feature-flags': {
- parameters: {
- query?: never;
- header?: never;
- path?: never;
- cookie?: never;
- };
- /** List feature flags */
- get: operations['FeatureFlagsController_list'];
- put?: never;
- post?: never;
- delete?: never;
- options?: never;
- head?: never;
- patch?: never;
- trace?: never;
- };
- '/api/admin/v2/feature-flags/{key}': {
- parameters: {
- query?: never;
- header?: never;
- path?: never;
- cookie?: never;
- };
- get?: never;
- put?: never;
- post?: never;
- delete?: never;
- options?: never;
- head?: never;
- /** Toggle a feature flag (Tier 2: requires step-up) */
- patch: operations['FeatureFlagsController_toggle'];
- trace?: never;
- };
- '/api/admin/v2/staff': {
- parameters: {
- query?: never;
- header?: never;
- path?: never;
- cookie?: never;
- };
- /** List staff members and their roles */
- get: operations['StaffController_list'];
- put?: never;
- post?: never;
- delete?: never;
- options?: never;
- head?: never;
- patch?: never;
- trace?: never;
- };
- '/api/admin/v2/staff/{id}/role': {
- parameters: {
- query?: never;
- header?: never;
- path?: never;
- cookie?: never;
- };
- get?: never;
- put?: never;
- post?: never;
- delete?: never;
- options?: never;
- head?: never;
- /** Assign a staff role (Tier 2: requires step-up) */
- patch: operations['StaffController_setRole'];
- trace?: never;
- };
- '/api/admin/v2/governance': {
- parameters: {
- query?: never;
- header?: never;
- path?: never;
- cookie?: never;
- };
- /** List governance proposals (optionally by status) */
- get: operations['GovernanceController_list'];
- put?: never;
- /** Propose a governance action (Tier 4: step-up) */
- post: operations['GovernanceController_propose'];
- delete?: never;
- options?: never;
- head?: never;
- patch?: never;
- trace?: never;
- };
- '/api/admin/v2/governance/{id}/decision': {
- parameters: {
- query?: never;
- header?: never;
- path?: never;
- cookie?: never;
- };
- get?: never;
- put?: never;
- /** Approve or reject a proposal (Tier 3: step-up, maker-checker) */
- post: operations['GovernanceController_decide'];
- delete?: never;
- options?: never;
- head?: never;
- patch?: never;
- trace?: never;
- };
- '/api/admin/v2/governance/{id}/execute': {
- parameters: {
- query?: never;
- header?: never;
- path?: never;
- cookie?: never;
- };
- get?: never;
- put?: never;
- /** Record an approved proposal as executed (Tier 4: step-up) */
- post: operations['GovernanceController_execute'];
- delete?: never;
- options?: never;
- head?: never;
- patch?: never;
- trace?: never;
- };
- '/api/admin/v2/contract-governance/tokens': {
- parameters: {
- query?: never;
- header?: never;
- path?: never;
- cookie?: never;
- };
- /** List whitelisted tokens with live on-chain status */
- get: operations['GovernanceContractController_listTokens'];
- put?: never;
- post?: never;
- delete?: never;
- options?: never;
- head?: never;
- patch?: never;
- trace?: never;
- };
- '/api/admin/v2/contract-governance/tokens/sync': {
- parameters: {
- query?: never;
- header?: never;
- path?: never;
- cookie?: never;
- };
- get?: never;
- put?: never;
- /** Sync the whitelist from contract state (authoritative enumeration, any age); falls back to an event rescan on pre-enumeration contracts. */
- post: operations['GovernanceContractController_syncTokens'];
- delete?: never;
- options?: never;
- head?: never;
- patch?: never;
- trace?: never;
- };
- '/api/admin/v2/contract-governance/tokens/import': {
- parameters: {
- query?: never;
- header?: never;
- path?: never;
- cookie?: never;
- };
- get?: never;
- put?: never;
- /** Import a token already whitelisted on-chain into the portal (verified via is_supported_token; no signing). For recovering older tokens. */
- post: operations['GovernanceContractController_importToken'];
- delete?: never;
- options?: never;
- head?: never;
- patch?: never;
- trace?: never;
- };
- '/api/admin/v2/contract-governance/pause-state': {
- parameters: {
- query?: never;
- header?: never;
- path?: never;
- cookie?: never;
- };
- /** Live pause flag for the events contract */
- get: operations['GovernanceContractController_pauseState'];
- put?: never;
- post?: never;
- delete?: never;
- options?: never;
- head?: never;
- patch?: never;
- trace?: never;
- };
- '/api/admin/v2/contract-governance/tokens/build-xdr': {
- parameters: {
- query?: never;
- header?: never;
- path?: never;
- cookie?: never;
- };
- get?: never;
- put?: never;
- /** Build the unsigned register_supported_token transaction. Tier 3: step-up. */
- post: operations['GovernanceContractController_buildRegisterToken'];
- delete?: never;
- options?: never;
- head?: never;
- patch?: never;
- trace?: never;
- };
- '/api/admin/v2/contract-governance/tokens/deregister/build-xdr': {
- parameters: {
- query?: never;
- header?: never;
- path?: never;
- cookie?: never;
- };
- get?: never;
- put?: never;
- /** Build the unsigned deregister_supported_token transaction. Tier 3: step-up. */
- post: operations['GovernanceContractController_buildDeregisterToken'];
- delete?: never;
- options?: never;
- head?: never;
- patch?: never;
- trace?: never;
- };
- '/api/admin/v2/contract-governance/pause/build-xdr': {
- parameters: {
- query?: never;
- header?: never;
- path?: never;
- cookie?: never;
- };
- get?: never;
- put?: never;
- /** Build the unsigned pause transaction. Tier 3: step-up. */
- post: operations['GovernanceContractController_buildPause'];
- delete?: never;
- options?: never;
- head?: never;
- patch?: never;
- trace?: never;
- };
- '/api/admin/v2/contract-governance/unpause/build-xdr': {
- parameters: {
- query?: never;
- header?: never;
- path?: never;
- cookie?: never;
- };
- get?: never;
- put?: never;
- /** Build the unsigned unpause transaction. Tier 3: step-up. */
- post: operations['GovernanceContractController_buildUnpause'];
- delete?: never;
- options?: never;
- head?: never;
- patch?: never;
- trace?: never;
- };
- '/api/admin/v2/contract-governance/ops/{id}/submit-signed': {
- parameters: {
- query?: never;
- header?: never;
- path?: never;
- cookie?: never;
- };
- get?: never;
- put?: never;
- /** Submit the admin-signed transaction for a built op (verified against the built XDR). Tier 3: step-up. */
- post: operations['GovernanceContractController_submitSigned'];
- delete?: never;
- options?: never;
- head?: never;
- patch?: never;
- trace?: never;
- };
- '/api/admin/v2/kyc': {
- parameters: {
- query?: never;
- header?: never;
- path?: never;
- cookie?: never;
- };
- /** List identity-verification (KYC) records (paginated, filterable) */
- get: operations['KycController_list'];
- put?: never;
- post?: never;
- delete?: never;
- options?: never;
- head?: never;
- patch?: never;
- trace?: never;
- };
- '/api/admin/v2/kyc/connection': {
- parameters: {
- query?: never;
- header?: never;
- path?: never;
- cookie?: never;
- };
- /** Live Didit integration status (config presence) */
- get: operations['KycController_connection'];
- put?: never;
- post?: never;
- delete?: never;
- options?: never;
- head?: never;
- patch?: never;
- trace?: never;
- };
- '/api/admin/v2/kyc/{userId}/sync': {
- parameters: {
- query?: never;
- header?: never;
- path?: never;
- cookie?: never;
- };
- get?: never;
- put?: never;
- /** Pull the latest decision live from Didit and reconcile (Tier 1) */
- post: operations['KycController_sync'];
- delete?: never;
- options?: never;
- head?: never;
- patch?: never;
- trace?: never;
- };
- '/api/admin/v2/kyc/{userId}/retrigger': {
- parameters: {
- query?: never;
- header?: never;
- path?: never;
- cookie?: never;
- };
- get?: never;
- put?: never;
- /** Create a fresh Didit verification session for the user (Tier 1) */
- post: operations['KycController_retrigger'];
- delete?: never;
- options?: never;
- head?: never;
- patch?: never;
- trace?: never;
- };
- '/api/admin/v2/kyc/{userId}/override': {
- parameters: {
- query?: never;
- header?: never;
- path?: never;
- cookie?: never;
- };
- get?: never;
- put?: never;
- /** Manually force a KYC decision, overriding Didit (Tier 2: step-up) */
- post: operations['KycController_override'];
- delete?: never;
- options?: never;
- head?: never;
- patch?: never;
- trace?: never;
- };
- '/api/admin/v2/milestones': {
- parameters: {
- query?: never;
- header?: never;
- path?: never;
- cookie?: never;
- };
- /** List deliverable milestones across a pillar (paginated) */
- get: operations['MilestonesController_list'];
- put?: never;
- post?: never;
- delete?: never;
- options?: never;
- head?: never;
- patch?: never;
- trace?: never;
- };
- '/api/admin/v2/milestones/{id}': {
- parameters: {
- query?: never;
- header?: never;
- path?: never;
- cookie?: never;
- };
- /** Get full milestone detail for admin review */
- get: operations['MilestonesController_findOne'];
- put?: never;
- post?: never;
- delete?: never;
- options?: never;
- head?: never;
- patch?: never;
- trace?: never;
- };
- '/api/admin/v2/milestones/{id}/approve': {
- parameters: {
- query?: never;
- header?: never;
- path?: never;
- cookie?: never;
- };
- get?: never;
- put?: never;
- /** Approve a submitted crowdfunding milestone (Tier 3: step-up) */
- post: operations['MilestonesController_approve'];
- delete?: never;
- options?: never;
- head?: never;
- patch?: never;
- trace?: never;
- };
- '/api/admin/v2/milestones/{id}/reject': {
- parameters: {
- query?: never;
- header?: never;
- path?: never;
- cookie?: never;
- };
- get?: never;
- put?: never;
- /** Reject a submitted crowdfunding milestone (Tier 2: step-up) */
- post: operations['MilestonesController_reject'];
- delete?: never;
- options?: never;
- head?: never;
- patch?: never;
- trace?: never;
- };
- '/api/admin/v2/milestones/{id}/release/build-xdr': {
- parameters: {
- query?: never;
- header?: never;
- path?: never;
- cookie?: never;
- };
- get?: never;
- put?: never;
- /** Build the unsigned release transaction for an APPROVED milestone (admin signs the envelope offline at the Lab). Tier 3: step-up. */
- post: operations['MilestonesController_buildReleaseXdr'];
- delete?: never;
- options?: never;
- head?: never;
- patch?: never;
- trace?: never;
- };
- '/api/admin/v2/milestones/{id}/release/submit-signed': {
- parameters: {
- query?: never;
- header?: never;
- path?: never;
- cookie?: never;
- };
- get?: never;
- put?: never;
- /** Submit the admin-signed release transaction for a milestone (verified against the built XDR). Tier 3: step-up. */
- post: operations['MilestonesController_submitReleaseSigned'];
- delete?: never;
- options?: never;
- head?: never;
- patch?: never;
- trace?: never;
- };
- '/api/admin/v2/wallets': {
- parameters: {
- query?: never;
- header?: never;
- path?: never;
- cookie?: never;
- };
- /** List abstracted wallets (paginated, searchable) */
- get: operations['WalletsController_list'];
- put?: never;
- post?: never;
- delete?: never;
- options?: never;
- head?: never;
- patch?: never;
- trace?: never;
- };
- '/api/admin/v2/hackathon-brief-templates': {
- parameters: {
- query?: never;
- header?: never;
- path?: never;
- cookie?: never;
- };
- /** List all hackathon brief templates (including inactive) */
- get: operations['HackathonBriefTemplatesController_list'];
- put?: never;
- /** Create a hackathon brief template (Tier 1) */
- post: operations['HackathonBriefTemplatesController_create'];
- delete?: never;
- options?: never;
- head?: never;
- patch?: never;
- trace?: never;
- };
- '/api/admin/v2/hackathon-brief-templates/{id}': {
- parameters: {
- query?: never;
- header?: never;
- path?: never;
- cookie?: never;
- };
- get?: never;
- /** Update a hackathon brief template (Tier 1) */
- put: operations['HackathonBriefTemplatesController_update'];
- post?: never;
- /** Archive a hackathon brief template (soft-delete) */
- delete: operations['HackathonBriefTemplatesController_archive'];
- options?: never;
- head?: never;
- patch?: never;
- trace?: never;
- };
- '/api/hackathon-brief-templates': {
- parameters: {
- query?: never;
- header?: never;
- path?: never;
- cookie?: never;
- };
- /** List active hackathon brief templates */
- get: operations['HackathonBriefTemplatesPublicController_list'];
- put?: never;
- post?: never;
- delete?: never;
- options?: never;
- head?: never;
- patch?: never;
- trace?: never;
- };
- '/api/admin/v2/marketing/templates': {
- parameters: {
- query?: never;
- header?: never;
- path?: never;
- cookie?: never;
- };
- /** List all marketing templates */
- get: operations['MarketingTemplatesController_list'];
- put?: never;
- /** Create a marketing template (Tier 1) */
- post: operations['MarketingTemplatesController_create'];
- delete?: never;
- options?: never;
- head?: never;
- patch?: never;
- trace?: never;
- };
- '/api/admin/v2/marketing/templates/{id}': {
- parameters: {
- query?: never;
- header?: never;
- path?: never;
- cookie?: never;
- };
- get?: never;
- /** Update a marketing template (Tier 1) */
- put: operations['MarketingTemplatesController_update'];
- post?: never;
- /** Archive a marketing template (soft-delete) */
- delete: operations['MarketingTemplatesController_archive'];
- options?: never;
- head?: never;
- patch?: never;
- trace?: never;
- };
- '/api/admin/v2/marketing/campaigns': {
- parameters: {
- query?: never;
- header?: never;
- path?: never;
- cookie?: never;
- };
- /** List all marketing campaigns */
- get: operations['MarketingCampaignsController_list'];
- put?: never;
- /** Create a campaign draft (Tier 1) */
- post: operations['MarketingCampaignsController_create'];
- delete?: never;
- options?: never;
- head?: never;
- patch?: never;
- trace?: never;
- };
- '/api/admin/v2/marketing/campaigns/{id}': {
- parameters: {
- query?: never;
- header?: never;
- path?: never;
- cookie?: never;
- };
- get?: never;
- /** Update a campaign draft (Tier 1) */
- put: operations['MarketingCampaignsController_update'];
- post?: never;
- /** Cancel a campaign (soft-cancel) */
- delete: operations['MarketingCampaignsController_cancel'];
- options?: never;
- head?: never;
- patch?: never;
- trace?: never;
- };
- '/api/admin/v2/marketing/campaigns/audience-size': {
- parameters: {
- query?: never;
- header?: never;
- path?: never;
- cookie?: never;
- };
- get?: never;
- put?: never;
- /** Preview audience count for a filter */
- post: operations['MarketingCampaignsController_audienceSize'];
- delete?: never;
- options?: never;
- head?: never;
- patch?: never;
- trace?: never;
- };
- '/api/admin/v2/marketing/campaigns/{id}/send': {
- parameters: {
- query?: never;
- header?: never;
- path?: never;
- cookie?: never;
- };
- get?: never;
- put?: never;
- /** Send a campaign to its audience (Tier 2 step-up) */
- post: operations['MarketingCampaignsController_send'];
- delete?: never;
- options?: never;
- head?: never;
- patch?: never;
- trace?: never;
- };
- '/api/admin/v2/marketing/automations': {
- parameters: {
- query?: never;
- header?: never;
- path?: never;
- cookie?: never;
- };
- /** List all marketing automations */
- get: operations['MarketingAutomationsController_list'];
- put?: never;
- /** Create a marketing automation (Tier 1) */
- post: operations['MarketingAutomationsController_create'];
- delete?: never;
- options?: never;
- head?: never;
- patch?: never;
- trace?: never;
- };
- '/api/admin/v2/marketing/automations/{id}': {
- parameters: {
- query?: never;
- header?: never;
- path?: never;
- cookie?: never;
- };
- get?: never;
- /** Update a marketing automation (Tier 1) */
- put: operations['MarketingAutomationsController_update'];
- post?: never;
- /** Delete an automation (hard delete — no audit trail loss) */
- delete: operations['MarketingAutomationsController_remove'];
- options?: never;
- head?: never;
- patch?: never;
- trace?: never;
- };
- '/api/admin/v2/marketing/automations/{id}/toggle': {
- parameters: {
- query?: never;
- header?: never;
- path?: never;
- cookie?: never;
- };
- get?: never;
- put?: never;
- post?: never;
- delete?: never;
- options?: never;
- head?: never;
- /** Enable or disable an automation */
- patch: operations['MarketingAutomationsController_toggle'];
- trace?: never;
- };
- '/api/prices': {
- parameters: {
- query?: never;
- header?: never;
- path?: never;
- cookie?: never;
- };
- /**
- * Get USD prices for all supported assets
- * @description Returns per-unit USD prices for XLM, USDC, EURC and USDGLO. Resolved from the Reflector on-chain oracle, with CoinGecko and stablecoin-peg fallbacks. Cached for 5 minutes (matches Reflector update cadence).
- */
- get: operations['PricesController_getAll'];
- put?: never;
- post?: never;
- delete?: never;
- options?: never;
- head?: never;
- patch?: never;
- trace?: never;
- };
- '/api/prices/debug': {
- parameters: {
- query?: never;
- header?: never;
- path?: never;
- cookie?: never;
- };
- /**
- * Per-provider price resolution (diagnostic)
- * @description Bypasses the cache and pings Reflector + CoinGecko for every supported asset. Returns what each provider returned alongside which one the resolution chain would have picked. Use to verify both price paths are live.
- */
- get: operations['PricesController_getDebug'];
- put?: never;
- post?: never;
- delete?: never;
- options?: never;
- head?: never;
- patch?: never;
- trace?: never;
- };
- '/api/prices/{symbol}': {
- parameters: {
- query?: never;
- header?: never;
- path?: never;
- cookie?: never;
- };
- /**
- * Get USD price for a single asset
- * @description Convenience lookup — internally reads from the same cached map as the list endpoint.
- */
- get: operations['PricesController_getOne'];
- put?: never;
- post?: never;
- delete?: never;
- options?: never;
- head?: never;
- patch?: never;
- trace?: never;
- };
- '/api/projects/drafts': {
- parameters: {
- query?: never;
- header?: never;
- path?: never;
- cookie?: never;
- };
- get?: never;
- put?: never;
- /** Create a project draft (stepped form) */
- post: operations['ProjectsController_createDraft'];
- delete?: never;
- options?: never;
- head?: never;
- patch?: never;
- trace?: never;
- };
- '/api/projects/{id}/draft': {
- parameters: {
- query?: never;
- header?: never;
- path?: never;
- cookie?: never;
- };
- get?: never;
- put?: never;
- post?: never;
- delete?: never;
- options?: never;
- head?: never;
- /** Update a project draft (stepped form autosave) */
- patch: operations['ProjectsController_saveDraft'];
- trace?: never;
- };
- '/api/projects': {
- parameters: {
- query?: never;
- header?: never;
- path?: never;
- cookie?: never;
- };
- /** List public projects (PRD products directory) */
- get: operations['ProjectsController_listPublicProjects'];
- put?: never;
- post?: never;
- delete?: never;
- options?: never;
- head?: never;
- patch?: never;
- trace?: never;
- };
- '/api/projects/search': {
- parameters: {
- query?: never;
- header?: never;
- path?: never;
- cookie?: never;
- };
- /** Search public projects */
- get: operations['ProjectsController_searchPublicProjects'];
- put?: never;
- post?: never;
- delete?: never;
- options?: never;
- head?: never;
- patch?: never;
- trace?: never;
- };
- '/api/projects/featured': {
- parameters: {
- query?: never;
- header?: never;
- path?: never;
- cookie?: never;
- };
- /** List featured projects */
- get: operations['ProjectsController_listFeaturedProjects'];
- put?: never;
- post?: never;
- delete?: never;
- options?: never;
- head?: never;
- patch?: never;
- trace?: never;
- };
- '/api/projects/{id}/edits': {
- parameters: {
- query?: never;
- header?: never;
- path?: never;
- cookie?: never;
- };
- /** List edit history for your project */
- get: operations['ProjectsController_listProjectEdits'];
- put?: never;
- /** Submit a major/minor edit for your project */
- post: operations['ProjectsController_submitProjectEdit'];
- delete?: never;
- options?: never;
- head?: never;
- patch?: never;
- trace?: never;
- };
- '/api/projects/{id}/publish': {
- parameters: {
- query?: never;
- header?: never;
- path?: never;
- cookie?: never;
- };
- get?: never;
- put?: never;
- /** Publish/submit a project draft (Review & Submit) */
- post: operations['ProjectsController_publishProject'];
- delete?: never;
- options?: never;
- head?: never;
- patch?: never;
- trace?: never;
- };
- '/api/projects/me': {
- parameters: {
- query?: never;
- header?: never;
- path?: never;
- cookie?: never;
- };
- /** List my projects */
- get: operations['ProjectsController_getMyProjects'];
- put?: never;
- post?: never;
- delete?: never;
- options?: never;
- head?: never;
- patch?: never;
- trace?: never;
- };
- '/api/projects/{slug}': {
- parameters: {
- query?: never;
- header?: never;
- path?: never;
- cookie?: never;
- };
- /** Get public project by slug */
- get: operations['ProjectsController_getPublicProjectBySlug'];
- put?: never;
- post?: never;
- delete?: never;
- options?: never;
- head?: never;
- patch?: never;
- trace?: never;
- };
- '/api/projects/me/{id}': {
- parameters: {
- query?: never;
- header?: never;
- path?: never;
- cookie?: never;
- };
- /** Get my project by ID */
- get: operations['ProjectsController_getProject'];
- put?: never;
- post?: never;
- delete?: never;
- options?: never;
- head?: never;
- patch?: never;
- trace?: never;
- };
- '/api/organizations/{organizationId}/bounties/draft/{id}': {
- parameters: {
- query?: never;
- header?: never;
- path?: never;
- cookie?: never;
- };
- /**
- * Get a bounty draft for resume
- * @description Returns the current section-keyed state of a bounty draft.
- */
- get: operations['OrganizationBountiesDraftsController_getDraft'];
- put?: never;
- post?: never;
- /**
- * Delete a bounty draft
- * @description Deletes an unpublished bounty (draft / draft_awaiting_funding).
- */
- delete: operations['OrganizationBountiesDraftsController_deleteDraft'];
- options?: never;
- head?: never;
- /**
- * Update one or more sections of a bounty draft
- * @description Applies any subset of wizard sections in a single PATCH. Send one section for a per-step "Continue", or several for "Save draft". Each present section is validated and transformed independently, then merged into one write. The reward section replaces the prize tiers.
- */
- patch: operations['OrganizationBountiesDraftsController_updateDraft'];
- trace?: never;
- };
- '/api/organizations/{organizationId}/bounties': {
- parameters: {
- query?: never;
- header?: never;
- path?: never;
- cookie?: never;
- };
- /**
- * Get an organization's published bounties
- * @description Lists bounties for an organization, newest first.
- */
- get: operations['OrganizationBountiesDraftsController_getOrganizationBounties'];
- put?: never;
- post?: never;
- delete?: never;
- options?: never;
- head?: never;
- patch?: never;
- trace?: never;
- };
- '/api/organizations/{organizationId}/bounties/draft': {
- parameters: {
- query?: never;
- header?: never;
- path?: never;
- cookie?: never;
- };
- get?: never;
- put?: never;
- /**
- * Create a new bounty draft for an organization
- * @description Creates an empty bounty in draft status that organization members can edit section by section through the Configure wizard.
- */
- post: operations['OrganizationBountiesDraftsController_createDraft'];
- delete?: never;
- options?: never;
- head?: never;
- patch?: never;
- trace?: never;
- };
- '/api/organizations/{organizationId}/bounties/drafts': {
- parameters: {
- query?: never;
- header?: never;
- path?: never;
- cookie?: never;
- };
- /**
- * Get an organization's bounty drafts
- * @description Lists draft and draft_awaiting_funding bounties for an organization.
- */
- get: operations['OrganizationBountiesDraftsController_getOrganizationDrafts'];
- put?: never;
- post?: never;
- delete?: never;
- options?: never;
- head?: never;
- patch?: never;
- trace?: never;
- };
- '/api/organizations/{organizationId}/bounties/draft/clarify': {
- parameters: {
- query?: never;
- header?: never;
- path?: never;
- cookie?: never;
- };
- get?: never;
- put?: never;
- /**
- * Triage a bounty brief for clarifying questions (Organizer Assist)
- * @description A cheap pre-draft gate: returns { ready: true } when the brief is specific enough, or 1-3 clarifying questions (mode / winners / deadline) the organizer answers before drafting.
- */
- post: operations['OrganizationBountiesAiController_clarify'];
- delete?: never;
- options?: never;
- head?: never;
- patch?: never;
- trace?: never;
- };
- '/api/organizations/{organizationId}/bounties/draft/from-brief': {
- parameters: {
- query?: never;
- header?: never;
- path?: never;
- cookie?: never;
- };
- get?: never;
- put?: never;
- /**
- * Generate a bounty draft from a brief (Organizer Assist)
- * @description Calls the AI service to turn a brief into a structured draft, persists a new bounty draft pre-filled with scope, mode, submission settings, and prize tiers, and returns it together with cost metadata. The organizer reviews, edits, and publishes.
- */
- post: operations['OrganizationBountiesAiController_generateFromBrief'];
- delete?: never;
- options?: never;
- head?: never;
- patch?: never;
- trace?: never;
- };
- '/api/organizations/{organizationId}/bounties/draft/from-brief/stream': {
- parameters: {
- query?: never;
- header?: never;
- path?: never;
- cookie?: never;
- };
- get?: never;
- put?: never;
- /**
- * Generate a bounty draft from a brief, streaming (Organizer Assist)
- * @description Server-Sent Events: `partial` frames carry the draft taking shape for a live reveal, then a `done` frame carries { draftId, draft }. Errors arrive as an `error` frame (or a normal 4xx before the stream opens, e.g. quota).
- */
- post: operations['OrganizationBountiesAiController_generateFromBriefStream'];
- delete?: never;
- options?: never;
- head?: never;
- patch?: never;
- trace?: never;
- };
- '/api/organizations/{organizationId}/bounties/draft/{id}/regenerate-section': {
- parameters: {
- query?: never;
- header?: never;
- path?: never;
- cookie?: never;
- };
- get?: never;
- put?: never;
- /**
- * Regenerate one section of a bounty draft (Organizer Assist)
- * @description Calls the AI service to regenerate a single section (description, submission, or reward) from the current draft and returns the new section for the organizer to accept or discard.
- */
- post: operations['OrganizationBountiesAiController_regenerateSection'];
- delete?: never;
- options?: never;
- head?: never;
- patch?: never;
- trace?: never;
- };
- '/api/organizations/{organizationId}/bounties/{id}/escrow/funding-otp/request': {
- parameters: {
- query?: never;
- header?: never;
- path?: never;
- cookie?: never;
- };
- get?: never;
- put?: never;
- /** Request a funding step-up code for a bounty */
- post: operations['OrganizationBountiesEscrowController_requestFundingOtp'];
- delete?: never;
- options?: never;
- head?: never;
- patch?: never;
- trace?: never;
- };
- '/api/organizations/{organizationId}/bounties/{id}/escrow/funding-otp/verify': {
- parameters: {
- query?: never;
- header?: never;
- path?: never;
- cookie?: never;
- };
- get?: never;
- put?: never;
- /** Verify a funding step-up code for a bounty */
- post: operations['OrganizationBountiesEscrowController_verifyFundingOtp'];
- delete?: never;
- options?: never;
- head?: never;
- patch?: never;
- trace?: never;
- };
- '/api/organizations/{organizationId}/bounties/{id}/escrow/reset-to-draft': {
- parameters: {
- query?: never;
- header?: never;
- path?: never;
- cookie?: never;
- };
- get?: never;
- put?: never;
- /**
- * Return a stuck bounty to draft after a failed publish
- * @description Resets a bounty stranded in draft_awaiting_funding back to draft so the organizer can republish. Refuses while the publish op may still settle on-chain (PENDING_SUBMIT / PENDING_CONFIRM / COMPLETED).
- */
- post: operations['OrganizationBountiesEscrowController_resetToDraft'];
- delete?: never;
- options?: never;
- head?: never;
- patch?: never;
- trace?: never;
- };
- '/api/organizations/{organizationId}/bounties/{id}/escrow/publish': {
- parameters: {
- query?: never;
- header?: never;
- path?: never;
- cookie?: never;
- };
- get?: never;
- put?: never;
- /**
- * Publish a bounty draft to the events contract
- * @description Validates the draft, transitions it to draft_awaiting_funding, and returns an unsigned XDR (EXTERNAL) or the op in PENDING_CONFIRM (MANAGED). Reconciliation transitions the bounty to OPEN on success.
- */
- post: operations['OrganizationBountiesEscrowController_publish'];
- delete?: never;
- options?: never;
- head?: never;
- patch?: never;
- trace?: never;
- };
- '/api/organizations/{organizationId}/bounties/{id}/escrow/cancel': {
- parameters: {
- query?: never;
- header?: never;
- path?: never;
- cookie?: never;
- };
- get?: never;
- put?: never;
- /**
- * Cancel an active bounty
- * @description Builds a cancel_event contract op. The contract refunds partner contributions first (in full), then the owner residual; or pro-rates partners if escrow is short. On settle, BountyEscrowSubscriber moves the bounty to CANCELLED and stamps the cancel audit columns.
- */
- post: operations['OrganizationBountiesEscrowController_cancel'];
- delete?: never;
- options?: never;
- head?: never;
- patch?: never;
- trace?: never;
- };
- '/api/organizations/{organizationId}/bounties/{id}/escrow/select-winners': {
- parameters: {
- query?: never;
- header?: never;
- path?: never;
- cookie?: never;
- };
- get?: never;
- put?: never;
- /**
- * Select winners for a bounty
- * @description Builds a select_winners contract op that pays out per the on-chain winner_distribution and bumps each winner's profile credits / reputation / earnings. On settle, BountyEscrowSubscriber moves the bounty to COMPLETED and marks the winning BountySubmission rows accepted with the reward tx hash.
- */
- post: operations['OrganizationBountiesEscrowController_selectWinners'];
- delete?: never;
- options?: never;
- head?: never;
- patch?: never;
- trace?: never;
- };
- '/api/organizations/{organizationId}/bounties/{id}/escrow/ops/{opRowId}/submit-signed': {
- parameters: {
- query?: never;
- header?: never;
- path?: never;
- cookie?: never;
- };
- get?: never;
- put?: never;
- /** Submit signed XDR for a previously-built bounty escrow op */
- post: operations['OrganizationBountiesEscrowController_submitSigned'];
- delete?: never;
- options?: never;
- head?: never;
- patch?: never;
- trace?: never;
- };
- '/api/organizations/{organizationId}/bounties/{id}/escrow/ops/{opRowId}': {
- parameters: {
- query?: never;
- header?: never;
- path?: never;
- cookie?: never;
- };
- /** Read the current state of a bounty escrow op */
- get: operations['OrganizationBountiesEscrowController_getOp'];
- put?: never;
- post?: never;
- delete?: never;
- options?: never;
- head?: never;
- patch?: never;
- trace?: never;
- };
- '/api/bounties/{id}/escrow/apply': {
- parameters: {
- query?: never;
- header?: never;
- path?: never;
- cookie?: never;
- };
- get?: never;
- put?: never;
- /**
- * Apply to a bounty
- * @description Builds an apply_to_bounty contract op. EXTERNAL returns unsigned XDR; MANAGED signs and submits. The contract charges the bounty's application_credit_cost via the profile contract on settle.
- */
- post: operations['BountyParticipantEscrowController_apply'];
- delete?: never;
- options?: never;
- head?: never;
- patch?: never;
- trace?: never;
- };
- '/api/bounties/{id}/escrow/withdraw-application': {
- parameters: {
- query?: never;
- header?: never;
- path?: never;
- cookie?: never;
- };
- get?: never;
- put?: never;
- /**
- * Withdraw a bounty application
- * @description Builds a withdraw_application contract op. Contract refunds half the application_credit_cost via the profile contract on settle.
- */
- post: operations['BountyParticipantEscrowController_withdrawApplication'];
- delete?: never;
- options?: never;
- head?: never;
- patch?: never;
- trace?: never;
- };
- '/api/bounties/{id}/escrow/submit': {
- parameters: {
- query?: never;
- header?: never;
- path?: never;
- cookie?: never;
- };
- get?: never;
- put?: never;
- /**
- * Submit work for a bounty
- * @description Builds a submit contract op. Requires the applicant's prior apply_to_bounty to be in active status (contract enforces; the service pre-checks for a cleaner 4xx).
- */
- post: operations['BountyParticipantEscrowController_submit'];
- delete?: never;
- options?: never;
- head?: never;
- patch?: never;
- trace?: never;
- };
- '/api/bounties/{id}/escrow/withdraw-submission': {
- parameters: {
- query?: never;
- header?: never;
- path?: never;
- cookie?: never;
- };
- get?: never;
- put?: never;
- /** Withdraw a bounty submission anchor */
- post: operations['BountyParticipantEscrowController_withdrawSubmission'];
- delete?: never;
- options?: never;
- head?: never;
- patch?: never;
- trace?: never;
- };
- '/api/bounties/{id}/escrow/contribute': {
- parameters: {
- query?: never;
- header?: never;
- path?: never;
- cookie?: never;
- };
- get?: never;
- put?: never;
- /**
- * Contribute funds to a bounty pool
- * @description Builds an add_funds contract op signed by the caller. Contract enforces a 10 USDC minimum. Anyone with a funded wallet can contribute; this v1 surface requires Boundless auth, so multiple top-ups from the same wallet are allowed (one row per attempt).
- */
- post: operations['BountyParticipantEscrowController_contribute'];
- delete?: never;
- options?: never;
- head?: never;
- patch?: never;
- trace?: never;
- };
- '/api/bounties/{id}/escrow/ops/{opRowId}/submit-signed': {
- parameters: {
- query?: never;
- header?: never;
- path?: never;
- cookie?: never;
- };
- get?: never;
- put?: never;
- /** Submit signed XDR for a previously-built participant op */
- post: operations['BountyParticipantEscrowController_submitSigned'];
- delete?: never;
- options?: never;
- head?: never;
- patch?: never;
- trace?: never;
- };
- '/api/bounties/{id}/escrow/ops/{opRowId}': {
- parameters: {
- query?: never;
- header?: never;
- path?: never;
- cookie?: never;
- };
- /** Read the state of a participant op */
- get: operations['BountyParticipantEscrowController_getOp'];
- put?: never;
- post?: never;
- delete?: never;
- options?: never;
- head?: never;
- patch?: never;
- trace?: never;
- };
- '/api/bounties/{bountyId}/v2/applications': {
- parameters: {
- query?: never;
- header?: never;
- path?: never;
- cookie?: never;
- };
- get?: never;
- put?: never;
- /** Submit an application for a application bounty */
- post: operations['BountyApplicationController_create'];
- delete?: never;
- options?: never;
- head?: never;
- patch?: never;
- trace?: never;
- };
- '/api/bounties/{bountyId}/v2/applications/me': {
- parameters: {
- query?: never;
- header?: never;
- path?: never;
- cookie?: never;
- };
- /** Read the caller's application for this bounty */
- get: operations['BountyApplicationController_getMine'];
- put?: never;
- post?: never;
- delete?: never;
- options?: never;
- head?: never;
- patch?: never;
- trace?: never;
- };
- '/api/bounties/{bountyId}/v2/applications/{appId}': {
- parameters: {
- query?: never;
- header?: never;
- path?: never;
- cookie?: never;
- };
- get?: never;
- put?: never;
- post?: never;
- /** Withdraw a SUBMITTED application */
- delete: operations['BountyApplicationController_withdraw'];
- options?: never;
- head?: never;
- /** Edit a SUBMITTED application (before shortlist) */
- patch: operations['BountyApplicationController_edit'];
- trace?: never;
- };
- '/api/organizations/{organizationId}/bounties/{bountyId}/v2/applications': {
- parameters: {
- query?: never;
- header?: never;
- path?: never;
- cookie?: never;
- };
- /** List applications on a bounty */
- get: operations['OrganizationBountyShortlistController_list'];
- put?: never;
- post?: never;
- delete?: never;
- options?: never;
- head?: never;
- patch?: never;
- trace?: never;
- };
- '/api/organizations/{organizationId}/bounties/{bountyId}/v2/applications/select': {
- parameters: {
- query?: never;
- header?: never;
- path?: never;
- cookie?: never;
- };
- get?: never;
- put?: never;
- /** Select a single application (application (light) single claim / application (full) single claim) */
- post: operations['OrganizationBountyShortlistController_selectForSingleClaim'];
- delete?: never;
- options?: never;
- head?: never;
- patch?: never;
- trace?: never;
- };
- '/api/organizations/{organizationId}/bounties/{bountyId}/v2/applications/shortlist': {
- parameters: {
- query?: never;
- header?: never;
- path?: never;
- cookie?: never;
- };
- get?: never;
- put?: never;
- /** Approve a shortlist (application (light) competition / application (full) competition) */
- post: operations['OrganizationBountyShortlistController_createShortlist'];
- delete?: never;
- options?: never;
- head?: never;
- patch?: never;
- trace?: never;
- };
- '/api/organizations/{organizationId}/bounties/{bountyId}/v2/applications/{appId}/decline': {
- parameters: {
- query?: never;
- header?: never;
- path?: never;
- cookie?: never;
- };
- get?: never;
- put?: never;
- /** Decline an application with optional reason */
- post: operations['OrganizationBountyShortlistController_decline'];
- delete?: never;
- options?: never;
- head?: never;
- patch?: never;
- trace?: never;
- };
- '/api/bounties/{bountyId}/v2/competition/join': {
- parameters: {
- query?: never;
- header?: never;
- path?: never;
- cookie?: never;
- };
- get?: never;
- put?: never;
- /** Join an open competition bounty */
- post: operations['BountyCompetitionJoinController_join'];
- /** Leave an open competition before submitting */
- delete: operations['BountyCompetitionJoinController_leave'];
- options?: never;
- head?: never;
- patch?: never;
- trace?: never;
- };
- '/api/bounties/me/applications': {
- parameters: {
- query?: never;
- header?: never;
- path?: never;
- cookie?: never;
- };
- /** List the caller's applications across all bounties */
- get: operations['BountyParticipantDashboardController_myApplications'];
- put?: never;
- post?: never;
- delete?: never;
- options?: never;
- head?: never;
- patch?: never;
- trace?: never;
- };
- '/api/bounties/me/submissions': {
- parameters: {
- query?: never;
- header?: never;
- path?: never;
- cookie?: never;
- };
- /** List the caller's submissions across all bounties */
- get: operations['BountyParticipantDashboardController_mySubmissions'];
- put?: never;
- post?: never;
- delete?: never;
- options?: never;
- head?: never;
- patch?: never;
- trace?: never;
- };
- '/api/bounties/me/submissions/{bountyId}': {
- parameters: {
- query?: never;
- header?: never;
- path?: never;
- cookie?: never;
- };
- /** Read the caller's submission for one bounty */
- get: operations['BountyParticipantDashboardController_mySubmissionForBounty'];
- put?: never;
- post?: never;
- delete?: never;
- options?: never;
- head?: never;
- patch?: never;
- trace?: never;
- };
- '/api/bounties/{id}/results': {
- parameters: {
- query?: never;
- header?: never;
- path?: never;
- cookie?: never;
- };
- /** Public results / leaderboard (winners by tier) */
- get: operations['BountyResultsController_getResults'];
- put?: never;
- post?: never;
- delete?: never;
- options?: never;
- head?: never;
- patch?: never;
- trace?: never;
- };
- '/api/bounties/{id}/submissions': {
- parameters: {
- query?: never;
- header?: never;
- path?: never;
- cookie?: never;
- };
- /** Submissions the caller may see (respects submissionVisibility) */
- get: operations['BountyResultsController_getSubmissions'];
- put?: never;
- post?: never;
- delete?: never;
- options?: never;
- head?: never;
- patch?: never;
- trace?: never;
- };
- '/api/bounties': {
- parameters: {
- query?: never;
- header?: never;
- path?: never;
- cookie?: never;
- };
- /** Public bounty marketplace list */
- get: operations['BountyPublicController_list'];
- put?: never;
- post?: never;
- delete?: never;
- options?: never;
- head?: never;
- patch?: never;
- trace?: never;
- };
- '/api/bounties/{id}': {
- parameters: {
- query?: never;
- header?: never;
- path?: never;
- cookie?: never;
- };
- /** Public bounty detail */
- get: operations['BountyPublicController_findOne'];
- put?: never;
- post?: never;
- delete?: never;
- options?: never;
- head?: never;
- patch?: never;
- trace?: never;
- };
- '/api/organizations/{organizationId}/grants/{id}/escrow/publish': {
- parameters: {
- query?: never;
- header?: never;
- path?: never;
- cookie?: never;
- };
- get?: never;
- put?: never;
- /**
- * Publish a grant draft to the events contract
- * @description Validates the draft, transitions to DRAFT_AWAITING_FUNDING, and returns an unsigned XDR (EXTERNAL) or the op in PENDING_CONFIRM (MANAGED). Reconciliation transitions the grant to OPEN on success.
- */
- post: operations['OrganizationGrantsEscrowController_publish'];
- delete?: never;
- options?: never;
- head?: never;
- patch?: never;
- trace?: never;
- };
- '/api/organizations/{organizationId}/grants/{id}/escrow/cancel': {
- parameters: {
- query?: never;
- header?: never;
- path?: never;
- cookie?: never;
- };
- get?: never;
- put?: never;
- /** Cancel an active grant */
- post: operations['OrganizationGrantsEscrowController_cancel'];
- delete?: never;
- options?: never;
- head?: never;
- patch?: never;
- trace?: never;
- };
- '/api/organizations/{organizationId}/grants/{id}/escrow/select-winners': {
- parameters: {
- query?: never;
- header?: never;
- path?: never;
- cookie?: never;
- };
- get?: never;
- put?: never;
- /**
- * Select grant recipients
- * @description For Multi release_kind, select_winners records recipients with amount=0 — payouts happen per-milestone via claim_milestone.
- */
- post: operations['OrganizationGrantsEscrowController_selectWinners'];
- delete?: never;
- options?: never;
- head?: never;
- patch?: never;
- trace?: never;
- };
- '/api/organizations/{organizationId}/grants/{id}/escrow/claim-milestone': {
- parameters: {
- query?: never;
- header?: never;
- path?: never;
- cookie?: never;
- };
- get?: never;
- put?: never;
- /**
- * Pay out a specific milestone for a recipient
- * @description Builds a claim_milestone contract op. Contract pays the per-milestone amount to the recipient and bumps profile credits / reputation / earnings.
- */
- post: operations['OrganizationGrantsEscrowController_claimMilestone'];
- delete?: never;
- options?: never;
- head?: never;
- patch?: never;
- trace?: never;
- };
- '/api/organizations/{organizationId}/grants/{id}/escrow/ops/{opRowId}/submit-signed': {
- parameters: {
- query?: never;
- header?: never;
- path?: never;
- cookie?: never;
- };
- get?: never;
- put?: never;
- /** Submit signed XDR for a grant op */
- post: operations['OrganizationGrantsEscrowController_submitSigned'];
- delete?: never;
- options?: never;
- head?: never;
- patch?: never;
- trace?: never;
- };
- '/api/organizations/{organizationId}/grants/{id}/escrow/ops/{opRowId}': {
- parameters: {
- query?: never;
- header?: never;
- path?: never;
- cookie?: never;
- };
- /** Read the state of a grant op */
- get: operations['OrganizationGrantsEscrowController_getOp'];
- put?: never;
- post?: never;
- delete?: never;
- options?: never;
- head?: never;
- patch?: never;
- trace?: never;
- };
- '/api/grants/{id}/escrow/contribute': {
- parameters: {
- query?: never;
- header?: never;
- path?: never;
- cookie?: never;
- };
- get?: never;
- put?: never;
- /**
- * Contribute funds to a grant pool
- * @description Open add_funds op. Contract enforces a 10 USDC minimum. Anyone authenticated can contribute; multiple top-ups from the same wallet are allowed (one row per attempt).
- */
- post: operations['GrantContributeEscrowController_contribute'];
- delete?: never;
- options?: never;
- head?: never;
- patch?: never;
- trace?: never;
- };
- '/api/grants': {
- parameters: {
- query?: never;
- header?: never;
- path?: never;
- cookie?: never;
- };
- /**
- * List published grants
- * @description Public, page-based list of grant programs. Parallel to /bounties and /hackathons. For a multi-pillar feed (Bounty, Hackathon, Grant, Crowdfunding), use /opportunities instead.
- */
- get: operations['GrantsPublicController_list'];
- put?: never;
- post?: never;
- delete?: never;
- options?: never;
- head?: never;
- patch?: never;
- trace?: never;
- };
- '/api/opportunities': {
- parameters: {
- query?: never;
- header?: never;
- path?: never;
- cookie?: never;
- };
- /**
- * List opportunities across all pillars
- * @description Returns a unified, cursor-paginated feed across Bounty, Hackathon, Grant, and Crowdfunding. Pass type= to restrict to one. The cursor is opaque; pass it back as-is to fetch the next page.
- */
- get: operations['OpportunitiesController_list'];
- put?: never;
- post?: never;
- delete?: never;
- options?: never;
- head?: never;
- patch?: never;
- trace?: never;
- };
- '/api/newsletter/subscribe': {
- parameters: {
- query?: never;
- header?: never;
- path?: never;
- cookie?: never;
- };
- get?: never;
- put?: never;
- /**
- * Subscribe to the newsletter
- * @description Subscribe an email address to the newsletter. Sends a confirmation email (double opt-in). Rate limited to 5 requests per minute.
- */
- post: operations['NewsletterController_subscribe'];
- delete?: never;
- options?: never;
- head?: never;
- patch?: never;
- trace?: never;
- };
- '/api/newsletter/confirm/{token}': {
- parameters: {
- query?: never;
- header?: never;
- path?: never;
- cookie?: never;
- };
- /**
- * Confirm newsletter subscription
- * @description Confirm a newsletter subscription via the token sent in the confirmation email. Redirects to the frontend on success.
- */
- get: operations['NewsletterController_confirmSubscription'];
- put?: never;
- post?: never;
- delete?: never;
- options?: never;
- head?: never;
- patch?: never;
- trace?: never;
- };
- '/api/newsletter/unsubscribe/{token}': {
- parameters: {
- query?: never;
- header?: never;
- path?: never;
- cookie?: never;
- };
- /**
- * Unsubscribe by token
- * @description Unsubscribe from the newsletter using the one-click unsubscribe token from emails. Redirects to the frontend.
- */
- get: operations['NewsletterController_unsubscribeByToken'];
- put?: never;
- post?: never;
- delete?: never;
- options?: never;
- head?: never;
- patch?: never;
- trace?: never;
- };
- '/api/newsletter/unsubscribe': {
- parameters: {
- query?: never;
- header?: never;
- path?: never;
- cookie?: never;
- };
- get?: never;
- put?: never;
- /**
- * Unsubscribe by email
- * @description Legacy unsubscribe endpoint. Unsubscribe a subscriber by their email address.
- */
- post: operations['NewsletterController_unsubscribe'];
- delete?: never;
- options?: never;
- head?: never;
- patch?: never;
- trace?: never;
- };
- '/api/newsletter/preferences': {
- parameters: {
- query?: never;
- header?: never;
- path?: never;
- cookie?: never;
- };
- get?: never;
- put?: never;
- post?: never;
- delete?: never;
- options?: never;
- head?: never;
- /**
- * Update subscription preferences
- * @description Update topic tag preferences for a subscriber. Valid tags: bounties, hackathons, grants, updates.
- */
- patch: operations['NewsletterController_updatePreferences'];
- trace?: never;
- };
- '/api/newsletter/tracking/open/{campaignId}/{subscriberId}': {
- parameters: {
- query?: never;
- header?: never;
- path?: never;
- cookie?: never;
- };
- /**
- * Track email open
- * @description Open tracking pixel endpoint. Returns a 1x1 transparent GIF and records the open event. Used in campaign emails.
- */
- get: operations['NewsletterController_trackOpen'];
- put?: never;
- post?: never;
- delete?: never;
- options?: never;
- head?: never;
- patch?: never;
- trace?: never;
- };
- '/api/newsletter/tracking/click/{campaignId}/{subscriberId}': {
- parameters: {
- query?: never;
- header?: never;
- path?: never;
- cookie?: never;
- };
- /**
- * Track email link click
- * @description Click tracking endpoint. Records the click event and redirects the subscriber to the target URL.
- */
- get: operations['NewsletterController_trackClick'];
- put?: never;
- post?: never;
- delete?: never;
- options?: never;
- head?: never;
- patch?: never;
- trace?: never;
- };
- '/api/newsletter/subscribers': {
- parameters: {
- query?: never;
- header?: never;
- path?: never;
- cookie?: never;
- };
- /**
- * List newsletter subscribers
- * @description Get a paginated list of newsletter subscribers with optional filters by status, source, tags, and search.
- */
- get: operations['NewsletterController_getSubscribers'];
- put?: never;
- post?: never;
- delete?: never;
- options?: never;
- head?: never;
- patch?: never;
- trace?: never;
- };
- '/api/newsletter/stats': {
- parameters: {
- query?: never;
- header?: never;
- path?: never;
- cookie?: never;
- };
- /**
- * Get newsletter statistics
- * @description Get subscriber counts by status, subscription sources, and campaign statistics (sent, opens, clicks).
- */
- get: operations['NewsletterController_getStats'];
- put?: never;
- post?: never;
- delete?: never;
- options?: never;
- head?: never;
- patch?: never;
- trace?: never;
- };
- '/api/newsletter/export': {
- parameters: {
- query?: never;
- header?: never;
- path?: never;
- cookie?: never;
- };
- /**
- * Export subscribers as CSV
- * @description Download a CSV file of subscribers with optional status and tag filters.
- */
- get: operations['NewsletterController_exportSubscribers'];
- put?: never;
- post?: never;
- delete?: never;
- options?: never;
- head?: never;
- patch?: never;
- trace?: never;
- };
- '/api/newsletter/subscribers/{id}': {
- parameters: {
- query?: never;
- header?: never;
- path?: never;
- cookie?: never;
- };
- get?: never;
- put?: never;
- post?: never;
- /**
- * Delete a subscriber
- * @description Permanently delete a newsletter subscriber by ID.
- */
- delete: operations['NewsletterController_deleteSubscriber'];
- options?: never;
- head?: never;
- patch?: never;
- trace?: never;
- };
- '/api/newsletter/campaigns': {
- parameters: {
- query?: never;
- header?: never;
- path?: never;
- cookie?: never;
- };
- /**
- * List newsletter campaigns
- * @description Get a paginated list of newsletter campaigns, ordered by most recent first.
- */
- get: operations['NewsletterController_getCampaigns'];
- put?: never;
- /**
- * Create a new campaign
- * @description Create a new newsletter campaign draft. Use {{name}} placeholder in content for personalization. Target specific subscribers using tags.
- */
- post: operations['NewsletterController_createCampaign'];
- delete?: never;
- options?: never;
- head?: never;
- patch?: never;
- trace?: never;
- };
- '/api/newsletter/campaigns/{id}': {
- parameters: {
- query?: never;
- header?: never;
- path?: never;
- cookie?: never;
- };
- /**
- * Get campaign details
- * @description Get detailed information about a specific campaign, including the most recent 100 send logs.
- */
- get: operations['NewsletterController_getCampaign'];
- put?: never;
- post?: never;
- delete?: never;
- options?: never;
- head?: never;
- patch?: never;
- trace?: never;
- };
- '/api/newsletter/campaigns/{id}/send': {
- parameters: {
- query?: never;
- header?: never;
- path?: never;
- cookie?: never;
- };
- get?: never;
- put?: never;
- /**
- * Send a campaign
- * @description Send a campaign to all matching subscribers. Delivers in batches of 10 with 1-second delays. Cannot re-send an already sent campaign.
- */
- post: operations['NewsletterController_sendCampaign'];
- delete?: never;
- options?: never;
- head?: never;
- patch?: never;
- trace?: never;
- };
- '/api/admin/queues/dlq/depth': {
- parameters: {
- query?: never;
- header?: never;
- path?: never;
- cookie?: never;
- };
- /** Current DLQ depth (admin only) */
- get: operations['DlqAdminController_getDepth'];
- put?: never;
- post?: never;
- delete?: never;
- options?: never;
- head?: never;
- patch?: never;
- trace?: never;
- };
- '/api/admin/queues/dlq': {
- parameters: {
- query?: never;
- header?: never;
- path?: never;
- cookie?: never;
- };
- /** List parked DLQ entries (admin only) */
- get: operations['DlqAdminController_list'];
- put?: never;
- post?: never;
- delete?: never;
- options?: never;
- head?: never;
- patch?: never;
- trace?: never;
- };
- '/api/admin/queues/dlq/{jobId}': {
- parameters: {
- query?: never;
- header?: never;
- path?: never;
- cookie?: never;
- };
- /** Fetch a single parked DLQ entry (admin only) */
- get: operations['DlqAdminController_getOne'];
- put?: never;
- post?: never;
- delete?: never;
- options?: never;
- head?: never;
- patch?: never;
- trace?: never;
- };
- '/api/admin/queues/dlq/{jobId}/replay': {
- parameters: {
- query?: never;
- header?: never;
- path?: never;
- cookie?: never;
- };
- get?: never;
- put?: never;
- /**
- * Re-enqueue a parked DLQ entry on its original queue
- * @description The DLQ row is removed on success. Replay uses the original queue's normal retry budget, so a job that died after 3 retries gets another 3 retries on replay.
- */
- post: operations['DlqAdminController_replay'];
- delete?: never;
- options?: never;
- head?: never;
- patch?: never;
- trace?: never;
- };
- '/api/auth/sign-in/social': {
- parameters: {
- query?: never;
- header?: never;
- path?: never;
- cookie?: never;
- };
- get?: never;
- put?: never;
- /** @description Sign in with a social provider */
- post: operations['socialSignIn'];
- delete?: never;
- options?: never;
- head?: never;
- patch?: never;
- trace?: never;
- };
- '/api/auth/get-session': {
- parameters: {
- query?: never;
- header?: never;
- path?: never;
- cookie?: never;
- };
- /** @description Get the current session */
- get: operations['getSession'];
- put?: never;
- post?: never;
- delete?: never;
- options?: never;
- head?: never;
- patch?: never;
- trace?: never;
- };
- '/api/auth/sign-out': {
- parameters: {
- query?: never;
- header?: never;
- path?: never;
- cookie?: never;
- };
- get?: never;
- put?: never;
- /** @description Sign out the current user */
- post: operations['signOut'];
- delete?: never;
- options?: never;
- head?: never;
- patch?: never;
- trace?: never;
- };
- '/api/auth/sign-up/email': {
- parameters: {
- query?: never;
- header?: never;
- path?: never;
- cookie?: never;
- };
- get?: never;
- put?: never;
- /** @description Sign up a user using email and password */
- post: operations['signUpWithEmailAndPassword'];
- delete?: never;
- options?: never;
- head?: never;
- patch?: never;
- trace?: never;
- };
- '/api/auth/sign-in/email': {
- parameters: {
- query?: never;
- header?: never;
- path?: never;
- cookie?: never;
- };
- get?: never;
- put?: never;
- /** @description Sign in with email and password */
- post: operations['signInEmail'];
- delete?: never;
- options?: never;
- head?: never;
- patch?: never;
- trace?: never;
- };
- '/api/auth/reset-password': {
- parameters: {
- query?: never;
- header?: never;
- path?: never;
- cookie?: never;
- };
- get?: never;
- put?: never;
- /** @description Reset the password for a user */
- post: operations['resetPassword'];
- delete?: never;
- options?: never;
- head?: never;
- patch?: never;
- trace?: never;
- };
- '/api/auth/verify-password': {
- parameters: {
- query?: never;
- header?: never;
- path?: never;
- cookie?: never;
- };
- get?: never;
- put?: never;
- /** @description Verify the current user's password */
- post: operations['verifyPassword'];
- delete?: never;
- options?: never;
- head?: never;
- patch?: never;
- trace?: never;
- };
- '/api/auth/verify-email': {
- parameters: {
- query?: never;
- header?: never;
- path?: never;
- cookie?: never;
- };
- /** @description Verify the email of the user */
- get: {
- parameters: {
- query: {
- /** @description The token to verify the email */
- token: string;
- /** @description The URL to redirect to after email verification */
- callbackURL?: string;
- };
- header?: never;
- path?: never;
- cookie?: never;
- };
- requestBody?: never;
- responses: {
- /** @description Success */
- 200: {
- headers: {
- [name: string]: unknown;
- };
- content: {
- 'application/json': {
- user: components['schemas']['User'];
- /** @description Indicates if the email was verified successfully */
- status: boolean;
- };
- };
- };
- /** @description Bad Request. Usually due to missing parameters, or invalid parameters. */
- 400: {
- headers: {
- [name: string]: unknown;
- };
- content: {
- 'application/json': {
- message: string;
- };
- };
- };
- /** @description Unauthorized. Due to missing or invalid authentication. */
- 401: {
- headers: {
- [name: string]: unknown;
- };
- content: {
- 'application/json': {
- message: string;
- };
- };
- };
- /** @description Forbidden. You do not have permission to access this resource or to perform this action. */
- 403: {
- headers: {
- [name: string]: unknown;
- };
- content: {
- 'application/json': {
- message?: string;
- };
- };
- };
- /** @description Not Found. The requested resource was not found. */
- 404: {
- headers: {
- [name: string]: unknown;
- };
- content: {
- 'application/json': {
- message?: string;
- };
- };
- };
- /** @description Too Many Requests. You have exceeded the rate limit. Try again later. */
- 429: {
- headers: {
- [name: string]: unknown;
- };
- content: {
- 'application/json': {
- message?: string;
- };
- };
- };
- /** @description Internal Server Error. This is a problem with the server that you cannot fix. */
- 500: {
- headers: {
- [name: string]: unknown;
- };
- content: {
- 'application/json': {
- message?: string;
- };
- };
- };
- };
- };
- put?: never;
- post?: never;
- delete?: never;
- options?: never;
- head?: never;
- patch?: never;
- trace?: never;
- };
- '/api/auth/send-verification-email': {
- parameters: {
- query?: never;
- header?: never;
- path?: never;
- cookie?: never;
- };
- get?: never;
- put?: never;
- /** @description Send a verification email to the user */
- post: operations['sendVerificationEmail'];
- delete?: never;
- options?: never;
- head?: never;
- patch?: never;
- trace?: never;
- };
- '/api/auth/change-email': {
- parameters: {
- query?: never;
- header?: never;
- path?: never;
- cookie?: never;
- };
- get?: never;
- put?: never;
- post: operations['changeEmail'];
- delete?: never;
- options?: never;
- head?: never;
- patch?: never;
- trace?: never;
- };
- '/api/auth/change-password': {
- parameters: {
- query?: never;
- header?: never;
- path?: never;
- cookie?: never;
- };
- get?: never;
- put?: never;
- /** @description Change the password of the user */
- post: operations['changePassword'];
- delete?: never;
- options?: never;
- head?: never;
- patch?: never;
- trace?: never;
- };
- '/api/auth/update-user': {
- parameters: {
- query?: never;
- header?: never;
- path?: never;
- cookie?: never;
- };
- get?: never;
- put?: never;
- /** @description Update the current user */
- post: operations['updateUser'];
- delete?: never;
- options?: never;
- head?: never;
- patch?: never;
- trace?: never;
- };
- '/api/auth/delete-user': {
- parameters: {
- query?: never;
- header?: never;
- path?: never;
- cookie?: never;
- };
- get?: never;
- put?: never;
- /** @description Delete the user */
- post: operations['deleteUser'];
- delete?: never;
- options?: never;
- head?: never;
- patch?: never;
- trace?: never;
- };
- '/api/auth/request-password-reset': {
- parameters: {
- query?: never;
- header?: never;
- path?: never;
- cookie?: never;
- };
- get?: never;
- put?: never;
- /** @description Send a password reset email to the user */
- post: operations['requestPasswordReset'];
- delete?: never;
- options?: never;
- head?: never;
- patch?: never;
- trace?: never;
- };
- '/api/auth/reset-password/{token}': {
- parameters: {
- query?: never;
- header?: never;
- path?: never;
- cookie?: never;
- };
- /** @description Redirects the user to the callback URL with the token */
- get: operations['resetPasswordCallback'];
- put?: never;
- post?: never;
- delete?: never;
- options?: never;
- head?: never;
- patch?: never;
- trace?: never;
- };
- '/api/auth/list-sessions': {
- parameters: {
- query?: never;
- header?: never;
- path?: never;
- cookie?: never;
- };
- /** @description List all active sessions for the user */
- get: operations['listUserSessions'];
- put?: never;
- post?: never;
- delete?: never;
- options?: never;
- head?: never;
- patch?: never;
- trace?: never;
- };
- '/api/auth/revoke-session': {
- parameters: {
- query?: never;
- header?: never;
- path?: never;
- cookie?: never;
- };
- get?: never;
- put?: never;
- /** @description Revoke a single session */
- post: {
- parameters: {
- query?: never;
- header?: never;
- path?: never;
- cookie?: never;
- };
- requestBody?: {
- content: {
- 'application/json': {
- /** @description The token to revoke */
+ "/api": {
+ parameters: {
+ query?: never;
+ header?: never;
+ path?: never;
+ cookie?: never;
+ };
+ get: operations["AppController_getHello"];
+ put?: never;
+ post?: never;
+ delete?: never;
+ options?: never;
+ head?: never;
+ patch?: never;
+ trace?: never;
+ };
+ "/api/notifications": {
+ parameters: {
+ query?: never;
+ header?: never;
+ path?: never;
+ cookie?: never;
+ };
+ get: operations["NotificationsController_getNotifications"];
+ put?: never;
+ post?: never;
+ delete?: never;
+ options?: never;
+ head?: never;
+ patch?: never;
+ trace?: never;
+ };
+ "/api/notifications/unread-count": {
+ parameters: {
+ query?: never;
+ header?: never;
+ path?: never;
+ cookie?: never;
+ };
+ get: operations["NotificationsController_getUnreadCount"];
+ put?: never;
+ post?: never;
+ delete?: never;
+ options?: never;
+ head?: never;
+ patch?: never;
+ trace?: never;
+ };
+ "/api/notifications/{id}/read": {
+ parameters: {
+ query?: never;
+ header?: never;
+ path?: never;
+ cookie?: never;
+ };
+ get?: never;
+ put: operations["NotificationsController_markAsRead"];
+ post?: never;
+ delete?: never;
+ options?: never;
+ head?: never;
+ patch?: never;
+ trace?: never;
+ };
+ "/api/notifications/read-all": {
+ parameters: {
+ query?: never;
+ header?: never;
+ path?: never;
+ cookie?: never;
+ };
+ get?: never;
+ put: operations["NotificationsController_markAllAsRead"];
+ post?: never;
+ delete?: never;
+ options?: never;
+ head?: never;
+ patch?: never;
+ trace?: never;
+ };
+ "/api/notifications/{id}": {
+ parameters: {
+ query?: never;
+ header?: never;
+ path?: never;
+ cookie?: never;
+ };
+ get?: never;
+ put?: never;
+ post?: never;
+ delete: operations["NotificationsController_deleteNotification"];
+ options?: never;
+ head?: never;
+ patch?: never;
+ trace?: never;
+ };
+ "/api/notifications/preferences": {
+ parameters: {
+ query?: never;
+ header?: never;
+ path?: never;
+ cookie?: never;
+ };
+ get: operations["NotificationsController_getPreferences"];
+ put: operations["NotificationsController_updatePreferences"];
+ post?: never;
+ delete?: never;
+ options?: never;
+ head?: never;
+ patch?: never;
+ trace?: never;
+ };
+ "/api/notifications/test": {
+ parameters: {
+ query?: never;
+ header?: never;
+ path?: never;
+ cookie?: never;
+ };
+ get?: never;
+ put?: never;
+ post: operations["NotificationsController_sendTestNotification"];
+ delete?: never;
+ options?: never;
+ head?: never;
+ patch?: never;
+ trace?: never;
+ };
+ "/api/notifications/test-marketing-cron": {
+ parameters: {
+ query?: never;
+ header?: never;
+ path?: never;
+ cookie?: never;
+ };
+ get?: never;
+ put?: never;
+ post: operations["NotificationsController_triggerMarketingCron"];
+ delete?: never;
+ options?: never;
+ head?: never;
+ patch?: never;
+ trace?: never;
+ };
+ "/api/users/settings": {
+ parameters: {
+ query?: never;
+ header?: never;
+ path?: never;
+ cookie?: never;
+ };
+ /** Get user settings */
+ get: operations["SettingsController_getSettings"];
+ put?: never;
+ post?: never;
+ delete?: never;
+ options?: never;
+ head?: never;
+ patch?: never;
+ trace?: never;
+ };
+ "/api/users/settings/notifications": {
+ parameters: {
+ query?: never;
+ header?: never;
+ path?: never;
+ cookie?: never;
+ };
+ get?: never;
+ /** Update notification settings */
+ put: operations["SettingsController_updateNotificationSettings"];
+ post?: never;
+ delete?: never;
+ options?: never;
+ head?: never;
+ patch?: never;
+ trace?: never;
+ };
+ "/api/users/settings/privacy": {
+ parameters: {
+ query?: never;
+ header?: never;
+ path?: never;
+ cookie?: never;
+ };
+ get?: never;
+ /** Update privacy settings */
+ put: operations["SettingsController_updatePrivacySettings"];
+ post?: never;
+ delete?: never;
+ options?: never;
+ head?: never;
+ patch?: never;
+ trace?: never;
+ };
+ "/api/users/settings/appearance": {
+ parameters: {
+ query?: never;
+ header?: never;
+ path?: never;
+ cookie?: never;
+ };
+ get?: never;
+ /** Update appearance settings */
+ put: operations["SettingsController_updateAppearanceSettings"];
+ post?: never;
+ delete?: never;
+ options?: never;
+ head?: never;
+ patch?: never;
+ trace?: never;
+ };
+ "/api/users/earnings/public": {
+ parameters: {
+ query?: never;
+ header?: never;
+ path?: never;
+ cookie?: never;
+ };
+ /**
+ * Get public earnings for a user (profile page)
+ * @description Returns visibility-filtered earnings for the given username: total earned, breakdown by source, and completed activities only. No pending/claimable amounts or entityIds.
+ */
+ get: operations["EarningsController_getEarningsPublic"];
+ put?: never;
+ post?: never;
+ delete?: never;
+ options?: never;
+ head?: never;
+ patch?: never;
+ trace?: never;
+ };
+ "/api/users/earnings": {
+ parameters: {
+ query?: never;
+ header?: never;
+ path?: never;
+ cookie?: never;
+ };
+ /**
+ * Get current user earnings
+ * @description Returns summary (total earned, pending/completed withdrawal), breakdown by source (hackathons, grants, crowdfunding, bounties), and activity feed.
+ */
+ get: operations["EarningsController_getEarnings"];
+ put?: never;
+ post?: never;
+ delete?: never;
+ options?: never;
+ head?: never;
+ patch?: never;
+ trace?: never;
+ };
+ "/api/users/profile": {
+ parameters: {
+ query?: never;
+ header?: never;
+ path?: never;
+ cookie?: never;
+ };
+ /** Get current user profile */
+ get: operations["ProfileController_getProfile"];
+ /** Update current user profile */
+ put: operations["ProfileController_updateProfile"];
+ post?: never;
+ delete?: never;
+ options?: never;
+ head?: never;
+ patch?: never;
+ trace?: never;
+ };
+ "/api/users/profile/stats": {
+ parameters: {
+ query?: never;
+ header?: never;
+ path?: never;
+ cookie?: never;
+ };
+ /** Get user profile statistics */
+ get: operations["ProfileController_getProfileStats"];
+ put?: never;
+ post?: never;
+ delete?: never;
+ options?: never;
+ head?: never;
+ patch?: never;
+ trace?: never;
+ };
+ "/api/users/profile/activity": {
+ parameters: {
+ query?: never;
+ header?: never;
+ path?: never;
+ cookie?: never;
+ };
+ /** Get user activity */
+ get: operations["ProfileController_getActivity"];
+ put?: never;
+ post?: never;
+ delete?: never;
+ options?: never;
+ head?: never;
+ patch?: never;
+ trace?: never;
+ };
+ "/api/users/profile/avatar": {
+ parameters: {
+ query?: never;
+ header?: never;
+ path?: never;
+ cookie?: never;
+ };
+ get?: never;
+ put?: never;
+ /** Upload user avatar */
+ post: operations["ProfileController_uploadAvatar"];
+ delete?: never;
+ options?: never;
+ head?: never;
+ patch?: never;
+ trace?: never;
+ };
+ "/api/users/preferences": {
+ parameters: {
+ query?: never;
+ header?: never;
+ path?: never;
+ cookie?: never;
+ };
+ /** Get user preferences */
+ get: operations["PreferencesController_getPreferences"];
+ put?: never;
+ post?: never;
+ delete?: never;
+ options?: never;
+ head?: never;
+ patch?: never;
+ trace?: never;
+ };
+ "/api/users/preferences/language": {
+ parameters: {
+ query?: never;
+ header?: never;
+ path?: never;
+ cookie?: never;
+ };
+ get?: never;
+ /** Update language preference */
+ put: operations["PreferencesController_updateLanguage"];
+ post?: never;
+ delete?: never;
+ options?: never;
+ head?: never;
+ patch?: never;
+ trace?: never;
+ };
+ "/api/users/preferences/timezone": {
+ parameters: {
+ query?: never;
+ header?: never;
+ path?: never;
+ cookie?: never;
+ };
+ get?: never;
+ /** Update timezone preference */
+ put: operations["PreferencesController_updateTimezone"];
+ post?: never;
+ delete?: never;
+ options?: never;
+ head?: never;
+ patch?: never;
+ trace?: never;
+ };
+ "/api/users/preferences/categories": {
+ parameters: {
+ query?: never;
+ header?: never;
+ path?: never;
+ cookie?: never;
+ };
+ get?: never;
+ /** Update category preferences */
+ put: operations["PreferencesController_updateCategoryPreferences"];
+ post?: never;
+ delete?: never;
+ options?: never;
+ head?: never;
+ patch?: never;
+ trace?: never;
+ };
+ "/api/users/preferences/skills": {
+ parameters: {
+ query?: never;
+ header?: never;
+ path?: never;
+ cookie?: never;
+ };
+ get?: never;
+ /** Update skill preferences */
+ put: operations["PreferencesController_updateSkillPreferences"];
+ post?: never;
+ delete?: never;
+ options?: never;
+ head?: never;
+ patch?: never;
+ trace?: never;
+ };
+ "/api/users/me": {
+ parameters: {
+ query?: never;
+ header?: never;
+ path?: never;
+ cookie?: never;
+ };
+ /** Get the current user (lean identity payload) */
+ get: operations["UserController_getMe"];
+ put?: never;
+ post?: never;
+ delete?: never;
+ options?: never;
+ head?: never;
+ patch?: never;
+ trace?: never;
+ };
+ "/api/users/dashboard": {
+ parameters: {
+ query?: never;
+ header?: never;
+ path?: never;
+ cookie?: never;
+ };
+ /** Get the current user dashboard: stats, chart, activities graph, and recent activities */
+ get: operations["UserController_getDashboard"];
+ put?: never;
+ post?: never;
+ delete?: never;
+ options?: never;
+ head?: never;
+ patch?: never;
+ trace?: never;
+ };
+ "/api/users/onboarding": {
+ parameters: {
+ query?: never;
+ header?: never;
+ path?: never;
+ cookie?: never;
+ };
+ get?: never;
+ put?: never;
+ /** Complete onboarding (persona, referral source, skills, goals) */
+ post: operations["UserController_completeOnboarding"];
+ delete?: never;
+ options?: never;
+ head?: never;
+ patch?: never;
+ trace?: never;
+ };
+ "/api/users/public": {
+ parameters: {
+ query?: never;
+ header?: never;
+ path?: never;
+ cookie?: never;
+ };
+ /** Public test endpoint */
+ get: operations["UserController_getPublic"];
+ put?: never;
+ post?: never;
+ delete?: never;
+ options?: never;
+ head?: never;
+ patch?: never;
+ trace?: never;
+ };
+ "/api/users/optional": {
+ parameters: {
+ query?: never;
+ header?: never;
+ path?: never;
+ cookie?: never;
+ };
+ /** Optional authentication test endpoint */
+ get: operations["UserController_getOptional"];
+ put?: never;
+ post?: never;
+ delete?: never;
+ options?: never;
+ head?: never;
+ patch?: never;
+ trace?: never;
+ };
+ "/api/users/{username}": {
+ parameters: {
+ query?: never;
+ header?: never;
+ path?: never;
+ cookie?: never;
+ };
+ /**
+ * Get user profile by username
+ * @description Get a user profile by their username. Accessible to anyone without authentication.
+ */
+ get: operations["UserController_getUserByUsername"];
+ put?: never;
+ post?: never;
+ delete?: never;
+ options?: never;
+ head?: never;
+ patch?: never;
+ trace?: never;
+ };
+ "/api/users/{username}/followers": {
+ parameters: {
+ query?: never;
+ header?: never;
+ path?: never;
+ cookie?: never;
+ };
+ /**
+ * Get user followers
+ * @description Get a list of users who follow this profile
+ */
+ get: operations["UserController_getUserFollowers"];
+ put?: never;
+ post?: never;
+ delete?: never;
+ options?: never;
+ head?: never;
+ patch?: never;
+ trace?: never;
+ };
+ "/api/users/{username}/following": {
+ parameters: {
+ query?: never;
+ header?: never;
+ path?: never;
+ cookie?: never;
+ };
+ /**
+ * Get users followed by this profile
+ * @description Get a list of entities (users, projects, organizations) followed by this user
+ */
+ get: operations["UserController_getUserFollowing"];
+ put?: never;
+ post?: never;
+ delete?: never;
+ options?: never;
+ head?: never;
+ patch?: never;
+ trace?: never;
+ };
+ "/api/users": {
+ parameters: {
+ query?: never;
+ header?: never;
+ path?: never;
+ cookie?: never;
+ };
+ /** Get paginated list of users (Admin only) */
+ get: operations["UsersController_getUsers"];
+ put?: never;
+ post?: never;
+ delete?: never;
+ options?: never;
+ head?: never;
+ patch?: never;
+ trace?: never;
+ };
+ "/api/users/{id}": {
+ parameters: {
+ query?: never;
+ header?: never;
+ path?: never;
+ cookie?: never;
+ };
+ /** Get user by ID */
+ get: operations["UsersController_getUser"];
+ /** Update user by ID */
+ put: operations["UsersController_updateUser"];
+ post?: never;
+ /** Delete user by ID (Admin only) */
+ delete: operations["UsersController_deleteUser"];
+ options?: never;
+ head?: never;
+ patch?: never;
+ trace?: never;
+ };
+ "/api/users/{id}/profile": {
+ parameters: {
+ query?: never;
+ header?: never;
+ path?: never;
+ cookie?: never;
+ };
+ /** Get user profile by ID */
+ get: operations["UsersController_getUserProfile"];
+ put?: never;
+ post?: never;
+ delete?: never;
+ options?: never;
+ head?: never;
+ patch?: never;
+ trace?: never;
+ };
+ "/api/upload/single": {
+ parameters: {
+ query?: never;
+ header?: never;
+ path?: never;
+ cookie?: never;
+ };
+ get?: never;
+ put?: never;
+ /**
+ * Upload a single file
+ * @description Upload a single file to Cloudinary with optional transformations and metadata
+ */
+ post: operations["UploadController_uploadSingle"];
+ delete?: never;
+ options?: never;
+ head?: never;
+ patch?: never;
+ trace?: never;
+ };
+ "/api/upload/multiple": {
+ parameters: {
+ query?: never;
+ header?: never;
+ path?: never;
+ cookie?: never;
+ };
+ get?: never;
+ put?: never;
+ /**
+ * Upload multiple files
+ * @description Upload multiple files to Cloudinary with optional folder and tags
+ */
+ post: operations["UploadController_uploadMultiple"];
+ delete?: never;
+ options?: never;
+ head?: never;
+ patch?: never;
+ trace?: never;
+ };
+ "/api/upload/{publicId}/{resourceType}": {
+ parameters: {
+ query?: never;
+ header?: never;
+ path?: never;
+ cookie?: never;
+ };
+ get?: never;
+ put?: never;
+ post?: never;
+ /**
+ * Delete a file
+ * @description Delete a file from Cloudinary storage
+ */
+ delete: operations["UploadController_deleteFile"];
+ options?: never;
+ head?: never;
+ patch?: never;
+ trace?: never;
+ };
+ "/api/upload/info/{publicId}/{resourceType}": {
+ parameters: {
+ query?: never;
+ header?: never;
+ path?: never;
+ cookie?: never;
+ };
+ /**
+ * Get file information
+ * @description Get detailed information about a file from Cloudinary
+ */
+ get: operations["UploadController_getFileInfo"];
+ put?: never;
+ post?: never;
+ delete?: never;
+ options?: never;
+ head?: never;
+ patch?: never;
+ trace?: never;
+ };
+ "/api/upload/search": {
+ parameters: {
+ query?: never;
+ header?: never;
+ path?: never;
+ cookie?: never;
+ };
+ /**
+ * Search files
+ * @description Search files in Cloudinary with optional filters
+ */
+ get: operations["UploadController_searchFiles"];
+ put?: never;
+ post?: never;
+ delete?: never;
+ options?: never;
+ head?: never;
+ patch?: never;
+ trace?: never;
+ };
+ "/api/upload/optimize/{publicId}": {
+ parameters: {
+ query?: never;
+ header?: never;
+ path?: never;
+ cookie?: never;
+ };
+ /**
+ * Generate optimized URL
+ * @description Generate an optimized URL with transformations for a file
+ */
+ get: operations["UploadController_generateOptimizedUrl"];
+ put?: never;
+ post?: never;
+ delete?: never;
+ options?: never;
+ head?: never;
+ patch?: never;
+ trace?: never;
+ };
+ "/api/upload/responsive/{publicId}": {
+ parameters: {
+ query?: never;
+ header?: never;
+ path?: never;
+ cookie?: never;
+ };
+ /**
+ * Generate responsive URLs
+ * @description Generate multiple URLs with different sizes for responsive images
+ */
+ get: operations["UploadController_generateResponsiveUrls"];
+ put?: never;
+ post?: never;
+ delete?: never;
+ options?: never;
+ head?: never;
+ patch?: never;
+ trace?: never;
+ };
+ "/api/upload/avatar/{publicId}": {
+ parameters: {
+ query?: never;
+ header?: never;
+ path?: never;
+ cookie?: never;
+ };
+ /**
+ * Generate avatar URL
+ * @description Generate a square cropped avatar URL with automatic optimizations
+ */
+ get: operations["UploadController_generateAvatarUrl"];
+ put?: never;
+ post?: never;
+ delete?: never;
+ options?: never;
+ head?: never;
+ patch?: never;
+ trace?: never;
+ };
+ "/api/upload/logo/{publicId}": {
+ parameters: {
+ query?: never;
+ header?: never;
+ path?: never;
+ cookie?: never;
+ };
+ /**
+ * Generate logo URL
+ * @description Generate a logo URL with fit cropping and automatic optimizations
+ */
+ get: operations["UploadController_generateLogoUrl"];
+ put?: never;
+ post?: never;
+ delete?: never;
+ options?: never;
+ head?: never;
+ patch?: never;
+ trace?: never;
+ };
+ "/api/upload/banner/{publicId}": {
+ parameters: {
+ query?: never;
+ header?: never;
+ path?: never;
+ cookie?: never;
+ };
+ /**
+ * Generate banner URL
+ * @description Generate a banner URL with fill cropping and automatic optimizations
+ */
+ get: operations["UploadController_generateBannerUrl"];
+ put?: never;
+ post?: never;
+ delete?: never;
+ options?: never;
+ head?: never;
+ patch?: never;
+ trace?: never;
+ };
+ "/api/upload/stats": {
+ parameters: {
+ query?: never;
+ header?: never;
+ path?: never;
+ cookie?: never;
+ };
+ /**
+ * Get usage statistics
+ * @description Get Cloudinary usage statistics for the account
+ */
+ get: operations["UploadController_getUsageStats"];
+ put?: never;
+ post?: never;
+ delete?: never;
+ options?: never;
+ head?: never;
+ patch?: never;
+ trace?: never;
+ };
+ "/api/auth/register": {
+ parameters: {
+ query?: never;
+ header?: never;
+ path?: never;
+ cookie?: never;
+ };
+ get?: never;
+ put?: never;
+ post: operations["AuthController_register"];
+ delete?: never;
+ options?: never;
+ head?: never;
+ patch?: never;
+ trace?: never;
+ };
+ "/api/auth/login": {
+ parameters: {
+ query?: never;
+ header?: never;
+ path?: never;
+ cookie?: never;
+ };
+ get?: never;
+ put?: never;
+ post: operations["AuthController_login"];
+ delete?: never;
+ options?: never;
+ head?: never;
+ patch?: never;
+ trace?: never;
+ };
+ "/api/auth/refresh": {
+ parameters: {
+ query?: never;
+ header?: never;
+ path?: never;
+ cookie?: never;
+ };
+ get?: never;
+ put?: never;
+ post: operations["AuthController_refreshToken"];
+ delete?: never;
+ options?: never;
+ head?: never;
+ patch?: never;
+ trace?: never;
+ };
+ "/api/auth/logout": {
+ parameters: {
+ query?: never;
+ header?: never;
+ path?: never;
+ cookie?: never;
+ };
+ get?: never;
+ put?: never;
+ post: operations["AuthController_logout"];
+ delete?: never;
+ options?: never;
+ head?: never;
+ patch?: never;
+ trace?: never;
+ };
+ "/api/auth/me": {
+ parameters: {
+ query?: never;
+ header?: never;
+ path?: never;
+ cookie?: never;
+ };
+ get: operations["AuthController_getProfile"];
+ put?: never;
+ post?: never;
+ delete?: never;
+ options?: never;
+ head?: never;
+ patch?: never;
+ trace?: never;
+ };
+ "/api/auth/verify-stellar-signature": {
+ parameters: {
+ query?: never;
+ header?: never;
+ path?: never;
+ cookie?: never;
+ };
+ get?: never;
+ put?: never;
+ post: operations["AuthController_verifyStellarSignature"];
+ delete?: never;
+ options?: never;
+ head?: never;
+ patch?: never;
+ trace?: never;
+ };
+ "/api/auth/oauth/google": {
+ parameters: {
+ query?: never;
+ header?: never;
+ path?: never;
+ cookie?: never;
+ };
+ get: operations["OAuthController_googleAuth"];
+ put?: never;
+ post?: never;
+ delete?: never;
+ options?: never;
+ head?: never;
+ patch?: never;
+ trace?: never;
+ };
+ "/api/auth/oauth/google/callback": {
+ parameters: {
+ query?: never;
+ header?: never;
+ path?: never;
+ cookie?: never;
+ };
+ get: operations["OAuthController_googleAuthCallback"];
+ put?: never;
+ post?: never;
+ delete?: never;
+ options?: never;
+ head?: never;
+ patch?: never;
+ trace?: never;
+ };
+ "/api/auth/oauth/github": {
+ parameters: {
+ query?: never;
+ header?: never;
+ path?: never;
+ cookie?: never;
+ };
+ get: operations["OAuthController_githubAuth"];
+ put?: never;
+ post?: never;
+ delete?: never;
+ options?: never;
+ head?: never;
+ patch?: never;
+ trace?: never;
+ };
+ "/api/auth/oauth/github/callback": {
+ parameters: {
+ query?: never;
+ header?: never;
+ path?: never;
+ cookie?: never;
+ };
+ get: operations["OAuthController_githubAuthCallback"];
+ put?: never;
+ post?: never;
+ delete?: never;
+ options?: never;
+ head?: never;
+ patch?: never;
+ trace?: never;
+ };
+ "/api/auth/oauth/twitter": {
+ parameters: {
+ query?: never;
+ header?: never;
+ path?: never;
+ cookie?: never;
+ };
+ get: operations["OAuthController_twitterAuth"];
+ put?: never;
+ post?: never;
+ delete?: never;
+ options?: never;
+ head?: never;
+ patch?: never;
+ trace?: never;
+ };
+ "/api/auth/oauth/twitter/callback": {
+ parameters: {
+ query?: never;
+ header?: never;
+ path?: never;
+ cookie?: never;
+ };
+ get: operations["OAuthController_twitterAuthCallback"];
+ put?: never;
+ post?: never;
+ delete?: never;
+ options?: never;
+ head?: never;
+ patch?: never;
+ trace?: never;
+ };
+ "/api/follows/{entityType}/{entityId}": {
+ parameters: {
+ query?: never;
+ header?: never;
+ path?: never;
+ cookie?: never;
+ };
+ get?: never;
+ put?: never;
+ post: operations["FollowsController_followEntity"];
+ delete: operations["FollowsController_unfollowEntity"];
+ options?: never;
+ head?: never;
+ patch?: never;
+ trace?: never;
+ };
+ "/api/follows/user/{userId}/following": {
+ parameters: {
+ query?: never;
+ header?: never;
+ path?: never;
+ cookie?: never;
+ };
+ get: operations["FollowsController_getUserFollowing"];
+ put?: never;
+ post?: never;
+ delete?: never;
+ options?: never;
+ head?: never;
+ patch?: never;
+ trace?: never;
+ };
+ "/api/follows/entity/{entityType}/{entityId}/followers": {
+ parameters: {
+ query?: never;
+ header?: never;
+ path?: never;
+ cookie?: never;
+ };
+ get: operations["FollowsController_getEntityFollowers"];
+ put?: never;
+ post?: never;
+ delete?: never;
+ options?: never;
+ head?: never;
+ patch?: never;
+ trace?: never;
+ };
+ "/api/follows/user/{userId}/stats": {
+ parameters: {
+ query?: never;
+ header?: never;
+ path?: never;
+ cookie?: never;
+ };
+ get: operations["FollowsController_getFollowStats"];
+ put?: never;
+ post?: never;
+ delete?: never;
+ options?: never;
+ head?: never;
+ patch?: never;
+ trace?: never;
+ };
+ "/api/follows/{entityType}/{entityId}/check": {
+ parameters: {
+ query?: never;
+ header?: never;
+ path?: never;
+ cookie?: never;
+ };
+ get: operations["FollowsController_isFollowing"];
+ put?: never;
+ post?: never;
+ delete?: never;
+ options?: never;
+ head?: never;
+ patch?: never;
+ trace?: never;
+ };
+ "/api/chat/history": {
+ parameters: {
+ query?: never;
+ header?: never;
+ path?: never;
+ cookie?: never;
+ };
+ /** Get chat message history */
+ get: operations["ChatController_getMessages"];
+ put?: never;
+ post?: never;
+ delete?: never;
+ options?: never;
+ head?: never;
+ patch?: never;
+ trace?: never;
+ };
+ "/api/messages/conversations": {
+ parameters: {
+ query?: never;
+ header?: never;
+ path?: never;
+ cookie?: never;
+ };
+ /** List my conversations */
+ get: operations["MessagesController_listConversations"];
+ put?: never;
+ /** Start or get existing conversation */
+ post: operations["MessagesController_startOrGetConversation"];
+ delete?: never;
+ options?: never;
+ head?: never;
+ patch?: never;
+ trace?: never;
+ };
+ "/api/messages/conversations/{id}": {
+ parameters: {
+ query?: never;
+ header?: never;
+ path?: never;
+ cookie?: never;
+ };
+ /** Get one conversation (thread header) */
+ get: operations["MessagesController_getConversation"];
+ put?: never;
+ post?: never;
+ delete?: never;
+ options?: never;
+ head?: never;
+ patch?: never;
+ trace?: never;
+ };
+ "/api/messages/conversations/{id}/messages": {
+ parameters: {
+ query?: never;
+ header?: never;
+ path?: never;
+ cookie?: never;
+ };
+ /** List messages in a conversation */
+ get: operations["MessagesController_listMessages"];
+ put?: never;
+ /** Send a message */
+ post: operations["MessagesController_sendMessage"];
+ delete?: never;
+ options?: never;
+ head?: never;
+ patch?: never;
+ trace?: never;
+ };
+ "/api/messages/conversations/{id}/read": {
+ parameters: {
+ query?: never;
+ header?: never;
+ path?: never;
+ cookie?: never;
+ };
+ get?: never;
+ put?: never;
+ post?: never;
+ delete?: never;
+ options?: never;
+ head?: never;
+ /** Mark conversation as read */
+ patch: operations["MessagesController_markConversationRead"];
+ trace?: never;
+ };
+ "/api/credits/me": {
+ parameters: {
+ query?: never;
+ header?: never;
+ path?: never;
+ cookie?: never;
+ };
+ /** Current user credit balance, tier and next refill */
+ get: operations["CreditsController_getMine"];
+ put?: never;
+ post?: never;
+ delete?: never;
+ options?: never;
+ head?: never;
+ patch?: never;
+ trace?: never;
+ };
+ "/api/credits/history": {
+ parameters: {
+ query?: never;
+ header?: never;
+ path?: never;
+ cookie?: never;
+ };
+ /** Paginated credit ledger for the current user */
+ get: operations["CreditsController_getHistory"];
+ put?: never;
+ post?: never;
+ delete?: never;
+ options?: never;
+ head?: never;
+ patch?: never;
+ trace?: never;
+ };
+ "/api/crowdfunding/validate": {
+ parameters: {
+ query?: never;
+ header?: never;
+ path?: never;
+ cookie?: never;
+ };
+ get?: never;
+ put?: never;
+ /**
+ * Validate campaign data
+ * @description Validate campaign data before creation. returns 200 if valid, 400 if invalid.
+ */
+ post: operations["CampaignsController_validateCampaign"];
+ delete?: never;
+ options?: never;
+ head?: never;
+ patch?: never;
+ trace?: never;
+ };
+ "/api/crowdfunding/draft": {
+ parameters: {
+ query?: never;
+ header?: never;
+ path?: never;
+ cookie?: never;
+ };
+ get?: never;
+ put?: never;
+ /**
+ * Create a draft campaign
+ * @description Create a minimal DRAFT campaign (title only) for the creation wizard. Returns its id and slug so the wizard can save each step via PUT and submit for review at the end.
+ */
+ post: operations["CampaignsController_createDraft"];
+ delete?: never;
+ options?: never;
+ head?: never;
+ patch?: never;
+ trace?: never;
+ };
+ "/api/crowdfunding": {
+ parameters: {
+ query?: never;
+ header?: never;
+ path?: never;
+ cookie?: never;
+ };
+ /**
+ * List crowdfunding campaigns
+ * @description Get a paginated list of crowdfunding campaigns with optional filtering
+ */
+ get: operations["CampaignsController_getCampaigns"];
+ put?: never;
+ /**
+ * Create a crowdfunding campaign
+ * @description Create a new crowdfunding campaign. This will also create the associated project automatically.
+ */
+ post: operations["CampaignsController_createCampaign"];
+ delete?: never;
+ options?: never;
+ head?: never;
+ patch?: never;
+ trace?: never;
+ };
+ "/api/crowdfunding/trigger-cron": {
+ parameters: {
+ query?: never;
+ header?: never;
+ path?: never;
+ cookie?: never;
+ };
+ /**
+ * Trigger campaign transition cron
+ * @description Manually trigger the campaign transition cron job for testing purposes.
+ */
+ get: operations["CampaignsController_triggerCron"];
+ put?: never;
+ post?: never;
+ delete?: never;
+ options?: never;
+ head?: never;
+ patch?: never;
+ trace?: never;
+ };
+ "/api/crowdfunding/me": {
+ parameters: {
+ query?: never;
+ header?: never;
+ path?: never;
+ cookie?: never;
+ };
+ /**
+ * List authenticated user's campaigns
+ * @description Get a paginated list of crowdfunding campaigns created by the authenticated user
+ */
+ get: operations["CampaignsController_getMyCampaigns"];
+ put?: never;
+ post?: never;
+ delete?: never;
+ options?: never;
+ head?: never;
+ patch?: never;
+ trace?: never;
+ };
+ "/api/crowdfunding/s/{slug}": {
+ parameters: {
+ query?: never;
+ header?: never;
+ path?: never;
+ cookie?: never;
+ };
+ /**
+ * Get campaign by slug
+ * @description Get detailed information about a specific crowdfunding campaign by its URL slug
+ */
+ get: operations["CampaignsController_getCampaignBySlug"];
+ put?: never;
+ post?: never;
+ delete?: never;
+ options?: never;
+ head?: never;
+ patch?: never;
+ trace?: never;
+ };
+ "/api/crowdfunding/{id}": {
+ parameters: {
+ query?: never;
+ header?: never;
+ path?: never;
+ cookie?: never;
+ };
+ /**
+ * Get campaign details
+ * @description Get detailed information about a specific crowdfunding campaign
+ */
+ get: operations["CampaignsController_getCampaign"];
+ /**
+ * Update campaign
+ * @description Update a crowdfunding campaign. Only campaign owners can update campaigns.
+ */
+ put: operations["CampaignsController_updateCampaign"];
+ post?: never;
+ /**
+ * Delete campaign
+ * @description Delete a crowdfunding campaign. Only campaign owners can delete campaigns that are in draft/reviewing phase and have no contributions.
+ */
+ delete: operations["CampaignsController_deleteCampaign"];
+ options?: never;
+ head?: never;
+ patch?: never;
+ trace?: never;
+ };
+ "/api/crowdfunding/{id}/statistics": {
+ parameters: {
+ query?: never;
+ header?: never;
+ path?: never;
+ cookie?: never;
+ };
+ /**
+ * Get campaign statistics
+ * @description Get funding statistics and progress for a campaign
+ */
+ get: operations["CampaignsController_getCampaignStatistics"];
+ put?: never;
+ post?: never;
+ delete?: never;
+ options?: never;
+ head?: never;
+ patch?: never;
+ trace?: never;
+ };
+ "/api/crowdfunding/{id}/invitations": {
+ parameters: {
+ query?: never;
+ header?: never;
+ path?: never;
+ cookie?: never;
+ };
+ /** Get all invitations for a campaign */
+ get: operations["CampaignsController_getInvitations"];
+ put?: never;
+ /** Invite a team member to the campaign */
+ post: operations["CampaignsController_inviteTeamMember"];
+ delete?: never;
+ options?: never;
+ head?: never;
+ patch?: never;
+ trace?: never;
+ };
+ "/api/crowdfunding/invitations/accept": {
+ parameters: {
+ query?: never;
+ header?: never;
+ path?: never;
+ cookie?: never;
+ };
+ get?: never;
+ put?: never;
+ /** Accept a campaign team invitation */
+ post: operations["CampaignsController_acceptInvitation"];
+ delete?: never;
+ options?: never;
+ head?: never;
+ patch?: never;
+ trace?: never;
+ };
+ "/api/crowdfunding/{id}/contributions": {
+ parameters: {
+ query?: never;
+ header?: never;
+ path?: never;
+ cookie?: never;
+ };
+ /**
+ * Get campaign contributions
+ * @description Get paginated list of contributions for a campaign
+ */
+ get: operations["ContributionsController_getCampaignContributions"];
+ put?: never;
+ post?: never;
+ delete?: never;
+ options?: never;
+ head?: never;
+ patch?: never;
+ trace?: never;
+ };
+ "/api/crowdfunding/{id}/contributions/stats": {
+ parameters: {
+ query?: never;
+ header?: never;
+ path?: never;
+ cookie?: never;
+ };
+ /**
+ * Get contribution statistics
+ * @description Get contribution statistics and analytics for a campaign
+ */
+ get: operations["ContributionsController_getContributionStats"];
+ put?: never;
+ post?: never;
+ delete?: never;
+ options?: never;
+ head?: never;
+ patch?: never;
+ trace?: never;
+ };
+ "/api/crowdfunding/{id}/milestones": {
+ parameters: {
+ query?: never;
+ header?: never;
+ path?: never;
+ cookie?: never;
+ };
+ /**
+ * Get campaign milestones
+ * @description Get all milestones for a crowdfunding campaign
+ */
+ get: operations["MilestonesController_getCampaignMilestones"];
+ put?: never;
+ post?: never;
+ delete?: never;
+ options?: never;
+ head?: never;
+ patch?: never;
+ trace?: never;
+ };
+ "/api/crowdfunding/{id}/milestones/{milestoneId}": {
+ parameters: {
+ query?: never;
+ header?: never;
+ path?: never;
+ cookie?: never;
+ };
+ /**
+ * Get milestone details
+ * @description Get detailed information about a specific milestone
+ */
+ get: operations["MilestonesController_getMilestone"];
+ /**
+ * Submit milestone for review
+ * @description Submit milestone with proof of work for review. Creators: Provide proof of work files/links and optional notes. Data will be strictly validated. Milestone will be marked as SUBMITTED status for admin review.
+ */
+ put: operations["MilestonesController_updateMilestone"];
+ post?: never;
+ delete?: never;
+ options?: never;
+ head?: never;
+ patch?: never;
+ trace?: never;
+ };
+ "/api/crowdfunding/{id}/milestones/{milestoneId}/validate-submission": {
+ parameters: {
+ query?: never;
+ header?: never;
+ path?: never;
+ cookie?: never;
+ };
+ get?: never;
+ put?: never;
+ /**
+ * Validate milestone submission data
+ * @description Strictly validate milestone submission data (proof of work files/links) for creator submissions without performing any side effects. Creators submit milestones for review with proof of work. Admin reviews and approves later. Returns validated data if successful, or detailed error messages if validation fails. Use this before blockchain interaction to ensure data integrity.
+ */
+ post: operations["MilestonesController_validateMilestoneSubmission"];
+ delete?: never;
+ options?: never;
+ head?: never;
+ patch?: never;
+ trace?: never;
+ };
+ "/api/crowdfunding/{id}/milestones/stats": {
+ parameters: {
+ query?: never;
+ header?: never;
+ path?: never;
+ cookie?: never;
+ };
+ /**
+ * Get milestone statistics
+ * @description Get milestone completion statistics for a campaign
+ */
+ get: operations["MilestonesController_getMilestoneStats"];
+ put?: never;
+ post?: never;
+ delete?: never;
+ options?: never;
+ head?: never;
+ patch?: never;
+ trace?: never;
+ };
+ "/api/crowdfunding/campaigns/{id}/v2/submit-for-review": {
+ parameters: {
+ query?: never;
+ header?: never;
+ path?: never;
+ cookie?: never;
+ };
+ get?: never;
+ put?: never;
+ /** Submit a DRAFT campaign to admin review */
+ post: operations["BuilderCrowdfundingV2Controller_submitForReview"];
+ delete?: never;
+ options?: never;
+ head?: never;
+ patch?: never;
+ trace?: never;
+ };
+ "/api/crowdfunding/campaigns/{id}/v2/withdraw-submission": {
+ parameters: {
+ query?: never;
+ header?: never;
+ path?: never;
+ cookie?: never;
+ };
+ get?: never;
+ put?: never;
+ /** Withdraw a pending review back to DRAFT (D4) */
+ post: operations["BuilderCrowdfundingV2Controller_withdrawSubmission"];
+ delete?: never;
+ options?: never;
+ head?: never;
+ patch?: never;
+ trace?: never;
+ };
+ "/api/crowdfunding/campaigns/{id}/v2/revise-and-resubmit": {
+ parameters: {
+ query?: never;
+ header?: never;
+ path?: never;
+ cookie?: never;
+ };
+ get?: never;
+ put?: never;
+ /** Resubmit a REVIEW_REJECTED campaign (D5: unlimited retries) */
+ post: operations["BuilderCrowdfundingV2Controller_reviseAndResubmit"];
+ delete?: never;
+ options?: never;
+ head?: never;
+ patch?: never;
+ trace?: never;
+ };
+ "/api/crowdfunding/campaigns/{id}/v2/escrow/publish": {
+ parameters: {
+ query?: never;
+ header?: never;
+ path?: never;
+ cookie?: never;
+ };
+ get?: never;
+ put?: never;
+ /** Publish a VOTE_PASSED campaign to the events contract */
+ post: operations["BuilderCrowdfundingV2Controller_publish"];
+ delete?: never;
+ options?: never;
+ head?: never;
+ patch?: never;
+ trace?: never;
+ };
+ "/api/crowdfunding/campaigns/{id}/v2/escrow/cancel": {
+ parameters: {
+ query?: never;
+ header?: never;
+ path?: never;
+ cookie?: never;
+ };
+ get?: never;
+ put?: never;
+ /** Cancel a campaign and refund backers */
+ post: operations["BuilderCrowdfundingV2Controller_cancel"];
+ delete?: never;
+ options?: never;
+ head?: never;
+ patch?: never;
+ trace?: never;
+ };
+ "/api/crowdfunding/campaigns/{id}/v2/escrow/contribute": {
+ parameters: {
+ query?: never;
+ header?: never;
+ path?: never;
+ cookie?: never;
+ };
+ get?: never;
+ put?: never;
+ /** Build (and optionally submit) an add_funds op against the campaign */
+ post: operations["BackerCrowdfundingV2Controller_contribute"];
+ delete?: never;
+ options?: never;
+ head?: never;
+ patch?: never;
+ trace?: never;
+ };
+ "/api/crowdfunding/campaigns/{id}/v2/escrow/ops/{opRowId}/submit-signed": {
+ parameters: {
+ query?: never;
+ header?: never;
+ path?: never;
+ cookie?: never;
+ };
+ get?: never;
+ put?: never;
+ /** Submit a wallet-signed contribution XDR (EXTERNAL path) */
+ post: operations["BackerCrowdfundingV2Controller_submitSigned"];
+ delete?: never;
+ options?: never;
+ head?: never;
+ patch?: never;
+ trace?: never;
+ };
+ "/api/crowdfunding/campaigns/{id}/v2/escrow/ops/{opRowId}": {
+ parameters: {
+ query?: never;
+ header?: never;
+ path?: never;
+ cookie?: never;
+ };
+ /** Poll the state of a contribution escrow op */
+ get: operations["BackerCrowdfundingV2Controller_getOp"];
+ put?: never;
+ post?: never;
+ delete?: never;
+ options?: never;
+ head?: never;
+ patch?: never;
+ trace?: never;
+ };
+ "/api/crowdfunding/campaigns/{id}/v2/vote": {
+ parameters: {
+ query?: never;
+ header?: never;
+ path?: never;
+ cookie?: never;
+ };
+ /** Read the campaign vote tally */
+ get: operations["CommunityCrowdfundingV2Controller_getTally"];
+ put?: never;
+ /** Cast or change vote on a VOTING campaign */
+ post: operations["CommunityCrowdfundingV2Controller_castVote"];
+ delete?: never;
+ options?: never;
+ head?: never;
+ patch?: never;
+ trace?: never;
+ };
+ "/api/crowdfunding/campaigns/{id}/v2/vote/me": {
+ parameters: {
+ query?: never;
+ header?: never;
+ path?: never;
+ cookie?: never;
+ };
+ /** Read the caller's current vote (or null) */
+ get: operations["CommunityCrowdfundingV2Controller_getMyVote"];
+ put?: never;
+ post?: never;
+ delete?: never;
+ options?: never;
+ head?: never;
+ patch?: never;
+ trace?: never;
+ };
+ "/api/crowdfunding/campaigns/{id}/v2/admin/approve": {
+ parameters: {
+ query?: never;
+ header?: never;
+ path?: never;
+ cookie?: never;
+ };
+ get?: never;
+ put?: never;
+ /** Approve a submitted campaign; assigns reviewer */
+ post: operations["AdminCrowdfundingV2Controller_approve"];
+ delete?: never;
+ options?: never;
+ head?: never;
+ patch?: never;
+ trace?: never;
+ };
+ "/api/crowdfunding/campaigns/{id}/v2/admin/reject": {
+ parameters: {
+ query?: never;
+ header?: never;
+ path?: never;
+ cookie?: never;
+ };
+ get?: never;
+ put?: never;
+ /** Reject a submitted campaign with optional reason */
+ post: operations["AdminCrowdfundingV2Controller_reject"];
+ delete?: never;
+ options?: never;
+ head?: never;
+ patch?: never;
+ trace?: never;
+ };
+ "/api/crowdfunding/campaigns/{id}/v2/admin/extend-funding": {
+ parameters: {
+ query?: never;
+ header?: never;
+ path?: never;
+ cookie?: never;
+ };
+ get?: never;
+ put?: never;
+ /** Extend a live campaign funding deadline */
+ post: operations["AdminCrowdfundingV2Controller_extendFunding"];
+ delete?: never;
+ options?: never;
+ head?: never;
+ patch?: never;
+ trace?: never;
+ };
+ "/api/crowdfunding/campaigns/{id}/v2/admin/pause": {
+ parameters: {
+ query?: never;
+ header?: never;
+ path?: never;
+ cookie?: never;
+ };
+ get?: never;
+ put?: never;
+ /** Pause a live campaign (D7) */
+ post: operations["AdminCrowdfundingV2Controller_pause"];
+ delete?: never;
+ options?: never;
+ head?: never;
+ patch?: never;
+ trace?: never;
+ };
+ "/api/crowdfunding/campaigns/{id}/v2/admin/unpause": {
+ parameters: {
+ query?: never;
+ header?: never;
+ path?: never;
+ cookie?: never;
+ };
+ get?: never;
+ put?: never;
+ /** Unpause a campaign and restore previous status */
+ post: operations["AdminCrowdfundingV2Controller_unpause"];
+ delete?: never;
+ options?: never;
+ head?: never;
+ patch?: never;
+ trace?: never;
+ };
+ "/api/crowdfunding/campaigns/{id}/v2/admin/milestones/{milestoneId}/approve": {
+ parameters: {
+ query?: never;
+ header?: never;
+ path?: never;
+ cookie?: never;
+ };
+ get?: never;
+ put?: never;
+ /** Approve a submitted milestone */
+ post: operations["AdminCrowdfundingV2Controller_approveMilestone"];
+ delete?: never;
+ options?: never;
+ head?: never;
+ patch?: never;
+ trace?: never;
+ };
+ "/api/crowdfunding/campaigns/{id}/v2/admin/milestones/{milestoneId}/reject": {
+ parameters: {
+ query?: never;
+ header?: never;
+ path?: never;
+ cookie?: never;
+ };
+ get?: never;
+ put?: never;
+ /** Reject a submitted milestone with feedback */
+ post: operations["AdminCrowdfundingV2Controller_rejectMilestone"];
+ delete?: never;
+ options?: never;
+ head?: never;
+ patch?: never;
+ trace?: never;
+ };
+ "/api/crowdfunding/campaigns/{id}/v2/disputes": {
+ parameters: {
+ query?: never;
+ header?: never;
+ path?: never;
+ cookie?: never;
+ };
+ get?: never;
+ put?: never;
+ /** Open a dispute on a campaign (backers only) */
+ post: operations["CrowdfundingDisputesController_file"];
+ delete?: never;
+ options?: never;
+ head?: never;
+ patch?: never;
+ trace?: never;
+ };
+ "/api/crowdfunding/campaigns/{id}/v2/disputes/mine": {
+ parameters: {
+ query?: never;
+ header?: never;
+ path?: never;
+ cookie?: never;
+ };
+ /** List the caller’s disputes on a campaign */
+ get: operations["CrowdfundingDisputesController_mine"];
+ put?: never;
+ post?: never;
+ delete?: never;
+ options?: never;
+ head?: never;
+ patch?: never;
+ trace?: never;
+ };
+ "/api/wallet": {
+ parameters: {
+ query?: never;
+ header?: never;
+ path?: never;
+ cookie?: never;
+ };
+ /** Get current user wallet */
+ get: operations["WalletController_getWallet"];
+ put?: never;
+ post?: never;
+ delete?: never;
+ options?: never;
+ head?: never;
+ patch?: never;
+ trace?: never;
+ };
+ "/api/wallet/details": {
+ parameters: {
+ query?: never;
+ header?: never;
+ path?: never;
+ cookie?: never;
+ };
+ /** Get wallet details including balances and transactions */
+ get: operations["WalletController_getWalletDetails"];
+ put?: never;
+ post?: never;
+ delete?: never;
+ options?: never;
+ head?: never;
+ patch?: never;
+ trace?: never;
+ };
+ "/api/wallet/summary": {
+ parameters: {
+ query?: never;
+ header?: never;
+ path?: never;
+ cookie?: never;
+ };
+ /** Total USD balance across the user wallet assets (nav chip) */
+ get: operations["WalletController_getWalletSummary"];
+ put?: never;
+ post?: never;
+ delete?: never;
+ options?: never;
+ head?: never;
+ patch?: never;
+ trace?: never;
+ };
+ "/api/wallet/balance/{address}": {
+ parameters: {
+ query?: never;
+ header?: never;
+ path?: never;
+ cookie?: never;
+ };
+ /**
+ * Get USDC + XLM balance for any Stellar address
+ * @description Public on-chain balances for an arbitrary G-address. Used by funding flows to pre-check the selected wallet before submitting on-chain.
+ */
+ get: operations["WalletController_getAddressBalance"];
+ put?: never;
+ post?: never;
+ delete?: never;
+ options?: never;
+ head?: never;
+ patch?: never;
+ trace?: never;
+ };
+ "/api/wallet/sync": {
+ parameters: {
+ query?: never;
+ header?: never;
+ path?: never;
+ cookie?: never;
+ };
+ get?: never;
+ put?: never;
+ /** Sync wallet with blockchain */
+ post: operations["WalletController_syncWallet"];
+ delete?: never;
+ options?: never;
+ head?: never;
+ patch?: never;
+ trace?: never;
+ };
+ "/api/wallet/create": {
+ parameters: {
+ query?: never;
+ header?: never;
+ path?: never;
+ cookie?: never;
+ };
+ get?: never;
+ put?: never;
+ /** Create a new wallet for the current user */
+ post: operations["WalletController_createWallet"];
+ delete?: never;
+ options?: never;
+ head?: never;
+ patch?: never;
+ trace?: never;
+ };
+ "/api/wallet/activate": {
+ parameters: {
+ query?: never;
+ header?: never;
+ path?: never;
+ cookie?: never;
+ };
+ get?: never;
+ put?: never;
+ /**
+ * Activate wallet on Stellar with sponsored reserves
+ * @description Creates the on-chain account and configured trustlines (default: USDC) in a single sponsored transaction. The platform sponsor account pays all XLM reserves and the network fee. Idempotent: safe to retry if a prior call failed.
+ */
+ post: operations["WalletController_activate"];
+ delete?: never;
+ options?: never;
+ head?: never;
+ patch?: never;
+ trace?: never;
+ };
+ "/api/wallet/admin/reclaim-dormant": {
+ parameters: {
+ query?: never;
+ header?: never;
+ path?: never;
+ cookie?: never;
+ };
+ get?: never;
+ put?: never;
+ /**
+ * Admin: reclaim sponsor XLM from dormant zero-balance wallets
+ * @description Finds wallets that have been idle for the given window with zero on-chain balances, and merges each one back into the sponsor account. Frees ~1 XLM per account and ~0.5 XLM per trustline. Defaults to dryRun=true; set dryRun=false to actually submit. The wallet row is preserved (isActivated reset to false), so a returning user can re-activate at the same address.
+ */
+ post: operations["WalletController_reclaimDormant"];
+ delete?: never;
+ options?: never;
+ head?: never;
+ patch?: never;
+ trace?: never;
+ };
+ "/api/wallet/trustline/supported": {
+ parameters: {
+ query?: never;
+ header?: never;
+ path?: never;
+ cookie?: never;
+ };
+ /** List assets that can have a trustline added (e.g. USDC, EURC) */
+ get: operations["WalletController_getSupportedTrustlines"];
+ put?: never;
+ post?: never;
+ delete?: never;
+ options?: never;
+ head?: never;
+ patch?: never;
+ trace?: never;
+ };
+ "/api/wallet/trustline": {
+ parameters: {
+ query?: never;
+ header?: never;
+ path?: never;
+ cookie?: never;
+ };
+ get?: never;
+ put?: never;
+ /** Add a trustline for a supported asset (e.g. USDC) */
+ post: operations["WalletController_addTrustline"];
+ delete?: never;
+ options?: never;
+ head?: never;
+ patch?: never;
+ trace?: never;
+ };
+ "/api/wallet/send/validate": {
+ parameters: {
+ query?: never;
+ header?: never;
+ path?: never;
+ cookie?: never;
+ };
+ /**
+ * Validate destination address before sending
+ * @description Returns whether the destination is a valid Stellar address, activated on the network, has a trustline for the given asset (for non-XLM), and whether the address requires a memo (e.g. exchange shared deposit address).
+ */
+ get: operations["WalletController_validateSendDestination"];
+ put?: never;
+ post?: never;
+ delete?: never;
+ options?: never;
+ head?: never;
+ patch?: never;
+ trace?: never;
+ };
+ "/api/wallet/send": {
+ parameters: {
+ query?: never;
+ header?: never;
+ path?: never;
+ cookie?: never;
+ };
+ get?: never;
+ put?: never;
+ /**
+ * Send funds from your wallet to a Stellar address
+ * @description Sends funds from your Boundless wallet to a destination. Requires identity verification (KYC). Validates: your wallet is activated, destination is activated, destination has trustline for the asset (if not XLM), optional memo. Requires sufficient balance and XLM for network fee when sending non-XLM.
+ */
+ post: operations["WalletController_send"];
+ delete?: never;
+ options?: never;
+ head?: never;
+ patch?: never;
+ trace?: never;
+ };
+ "/api/api/comments": {
+ parameters: {
+ query?: never;
+ header?: never;
+ path?: never;
+ cookie?: never;
+ };
+ /** List comments with filters */
+ get: operations["CommentsController_listComments"];
+ put?: never;
+ /** Create a comment */
+ post: operations["CommentsController_createComment"];
+ delete?: never;
+ options?: never;
+ head?: never;
+ patch?: never;
+ trace?: never;
+ };
+ "/api/api/comments/{id}": {
+ parameters: {
+ query?: never;
+ header?: never;
+ path?: never;
+ cookie?: never;
+ };
+ /** Get comment by ID */
+ get: operations["CommentsController_getComment"];
+ /** Update comment (author only) */
+ put: operations["CommentsController_updateComment"];
+ post?: never;
+ /** Delete comment (author or moderator only) */
+ delete: operations["CommentsController_deleteComment"];
+ options?: never;
+ head?: never;
+ patch?: never;
+ trace?: never;
+ };
+ "/api/api/comments/entity/{entityType}/{entityId}": {
+ parameters: {
+ query?: never;
+ header?: never;
+ path?: never;
+ cookie?: never;
+ };
+ /** Get comments for an entity */
+ get: operations["CommentsController_getCommentsByEntity"];
+ put?: never;
+ post?: never;
+ delete?: never;
+ options?: never;
+ head?: never;
+ patch?: never;
+ trace?: never;
+ };
+ "/api/api/comments/{id}/reactions": {
+ parameters: {
+ query?: never;
+ header?: never;
+ path?: never;
+ cookie?: never;
+ };
+ /** Get reactions for comment */
+ get: operations["CommentsController_getReactions"];
+ put?: never;
+ /** Add reaction to comment */
+ post: operations["CommentsController_addReaction"];
+ delete?: never;
+ options?: never;
+ head?: never;
+ patch?: never;
+ trace?: never;
+ };
+ "/api/api/comments/{id}/reactions/{reactionType}": {
+ parameters: {
+ query?: never;
+ header?: never;
+ path?: never;
+ cookie?: never;
+ };
+ get?: never;
+ put?: never;
+ post?: never;
+ /** Remove reaction from comment */
+ delete: operations["CommentsController_removeReaction"];
+ options?: never;
+ head?: never;
+ patch?: never;
+ trace?: never;
+ };
+ "/api/api/comments/{id}/report": {
+ parameters: {
+ query?: never;
+ header?: never;
+ path?: never;
+ cookie?: never;
+ };
+ get?: never;
+ put?: never;
+ /** Report a comment */
+ post: operations["CommentsController_reportComment"];
+ delete?: never;
+ options?: never;
+ head?: never;
+ patch?: never;
+ trace?: never;
+ };
+ "/api/api/comments/moderation/queue": {
+ parameters: {
+ query?: never;
+ header?: never;
+ path?: never;
+ cookie?: never;
+ };
+ /** Get moderation queue (moderators only) */
+ get: operations["CommentModerationController_getModerationQueue"];
+ put?: never;
+ post?: never;
+ delete?: never;
+ options?: never;
+ head?: never;
+ patch?: never;
+ trace?: never;
+ };
+ "/api/api/comments/moderation/reports": {
+ parameters: {
+ query?: never;
+ header?: never;
+ path?: never;
+ cookie?: never;
+ };
+ /** Get all reports (moderators only) */
+ get: operations["CommentModerationController_getReports"];
+ put?: never;
+ post?: never;
+ delete?: never;
+ options?: never;
+ head?: never;
+ patch?: never;
+ trace?: never;
+ };
+ "/api/api/comments/moderation/reports/{id}/resolve": {
+ parameters: {
+ query?: never;
+ header?: never;
+ path?: never;
+ cookie?: never;
+ };
+ get?: never;
+ put?: never;
+ /** Resolve a report (moderators only) */
+ post: operations["CommentModerationController_resolveReport"];
+ delete?: never;
+ options?: never;
+ head?: never;
+ patch?: never;
+ trace?: never;
+ };
+ "/api/api/comments/moderation/{id}/approve": {
+ parameters: {
+ query?: never;
+ header?: never;
+ path?: never;
+ cookie?: never;
+ };
+ get?: never;
+ put?: never;
+ /** Approve a comment (moderators only) */
+ post: operations["CommentModerationController_approveComment"];
+ delete?: never;
+ options?: never;
+ head?: never;
+ patch?: never;
+ trace?: never;
+ };
+ "/api/api/comments/moderation/{id}/reject": {
+ parameters: {
+ query?: never;
+ header?: never;
+ path?: never;
+ cookie?: never;
+ };
+ get?: never;
+ put?: never;
+ /** Reject/Hide a comment (moderators only) */
+ post: operations["CommentModerationController_rejectComment"];
+ delete?: never;
+ options?: never;
+ head?: never;
+ patch?: never;
+ trace?: never;
+ };
+ "/api/api/comments/moderation/{id}/hide": {
+ parameters: {
+ query?: never;
+ header?: never;
+ path?: never;
+ cookie?: never;
+ };
+ get?: never;
+ put?: never;
+ /** Hide a comment (moderators only) */
+ post: operations["CommentModerationController_hideComment"];
+ delete?: never;
+ options?: never;
+ head?: never;
+ patch?: never;
+ trace?: never;
+ };
+ "/api/api/comments/moderation/{id}/restore": {
+ parameters: {
+ query?: never;
+ header?: never;
+ path?: never;
+ cookie?: never;
+ };
+ get?: never;
+ put?: never;
+ /** Restore a hidden comment (moderators only) */
+ post: operations["CommentModerationController_restoreComment"];
+ delete?: never;
+ options?: never;
+ head?: never;
+ patch?: never;
+ trace?: never;
+ };
+ "/api/api/comments/moderation/stats": {
+ parameters: {
+ query?: never;
+ header?: never;
+ path?: never;
+ cookie?: never;
+ };
+ /** Get moderation statistics (moderators only) */
+ get: operations["CommentModerationController_getModerationStats"];
+ put?: never;
+ post?: never;
+ delete?: never;
+ options?: never;
+ head?: never;
+ patch?: never;
+ trace?: never;
+ };
+ "/api/hackathons": {
+ parameters: {
+ query?: never;
+ header?: never;
+ path?: never;
+ cookie?: never;
+ };
+ /**
+ * Get published hackathons
+ * @description Retrieves a paginated list of published hackathons with optional filtering
+ */
+ get: operations["HackathonsController_getHackathons"];
+ put?: never;
+ post?: never;
+ delete?: never;
+ options?: never;
+ head?: never;
+ patch?: never;
+ trace?: never;
+ };
+ "/api/hackathons/fee-estimate": {
+ parameters: {
+ query?: never;
+ header?: never;
+ path?: never;
+ cookie?: never;
+ };
+ /**
+ * Get fee estimate for prize pool
+ * @description Returns platform fee breakdown for a given total prize pool (USDC). Used by the Rewards step when creating a hackathon.
+ */
+ get: operations["HackathonsController_getFeeEstimate"];
+ put?: never;
+ post?: never;
+ delete?: never;
+ options?: never;
+ head?: never;
+ patch?: never;
+ trace?: never;
+ };
+ "/api/hackathons/{idOrSlug}/winners": {
+ parameters: {
+ query?: never;
+ header?: never;
+ path?: never;
+ cookie?: never;
+ };
+ /**
+ * Get hackathon winners
+ * @description Retrieves ranked winners for a hackathon with prize details
+ */
+ get: operations["HackathonsController_getWinners"];
+ put?: never;
+ post?: never;
+ delete?: never;
+ options?: never;
+ head?: never;
+ patch?: never;
+ trace?: never;
+ };
+ "/api/hackathons/{idOrSlug}/results": {
+ parameters: {
+ query?: never;
+ header?: never;
+ path?: never;
+ cookie?: never;
+ };
+ /**
+ * Get public judging results
+ * @description Retrieves aggregated judging results after results are published
+ */
+ get: operations["HackathonsController_getPublicResults"];
+ put?: never;
+ post?: never;
+ delete?: never;
+ options?: never;
+ head?: never;
+ patch?: never;
+ trace?: never;
+ };
+ "/api/hackathons/{idOrSlug}": {
+ parameters: {
+ query?: never;
+ header?: never;
+ path?: never;
+ cookie?: never;
+ };
+ /**
+ * Get hackathon by ID or slug
+ * @description Retrieves a published hackathon by its ID or slug
+ */
+ get: operations["HackathonsController_getHackathon"];
+ put?: never;
+ post?: never;
+ delete?: never;
+ options?: never;
+ head?: never;
+ patch?: never;
+ trace?: never;
+ };
+ "/api/hackathons/{idOrSlug}/access/verify": {
+ parameters: {
+ query?: never;
+ header?: never;
+ path?: never;
+ cookie?: never;
+ };
+ get?: never;
+ put?: never;
+ /**
+ * Verify a private hackathon access password
+ * @description Checks the access password for a private hackathon and returns a short-lived token that unlocks the public page.
+ */
+ post: operations["HackathonsController_verifyHackathonAccess"];
+ delete?: never;
+ options?: never;
+ head?: never;
+ patch?: never;
+ trace?: never;
+ };
+ "/api/hackathons/{slug}/contributors": {
+ parameters: {
+ query?: never;
+ header?: never;
+ path?: never;
+ cookie?: never;
+ };
+ /**
+ * List public partner contributors for a hackathon
+ * @description Returns confirmed partner contributions where the partner opted in to be shown publicly, plus the total amount contributed.
+ */
+ get: operations["HackathonsController_getPublicContributors"];
+ put?: never;
+ post?: never;
+ delete?: never;
+ options?: never;
+ head?: never;
+ patch?: never;
+ trace?: never;
+ };
+ "/api/hackathons/{idOrSlug}/follow": {
+ parameters: {
+ query?: never;
+ header?: never;
+ path?: never;
+ cookie?: never;
+ };
+ get?: never;
+ put?: never;
+ /**
+ * Follow or unfollow a hackathon
+ * @description Toggles follow status for a published hackathon
+ */
+ post: operations["HackathonsController_followHackathon"];
+ delete?: never;
+ options?: never;
+ head?: never;
+ patch?: never;
+ trace?: never;
+ };
+ "/api/hackathons/{idOrSlug}/join": {
+ parameters: {
+ query?: never;
+ header?: never;
+ path?: never;
+ cookie?: never;
+ };
+ get?: never;
+ put?: never;
+ /**
+ * Join a hackathon
+ * @description Register as a participant for a published hackathon
+ */
+ post: operations["HackathonsController_joinHackathon"];
+ delete?: never;
+ options?: never;
+ head?: never;
+ patch?: never;
+ trace?: never;
+ };
+ "/api/hackathons/{idOrSlug}/leave": {
+ parameters: {
+ query?: never;
+ header?: never;
+ path?: never;
+ cookie?: never;
+ };
+ get?: never;
+ put?: never;
+ post?: never;
+ /**
+ * Leave a hackathon
+ * @description Remove yourself as a participant from a hackathon
+ */
+ delete: operations["HackathonsController_leaveHackathon"];
+ options?: never;
+ head?: never;
+ patch?: never;
+ trace?: never;
+ };
+ "/api/hackathons/{idOrSlug}/participants": {
+ parameters: {
+ query?: never;
+ header?: never;
+ path?: never;
+ cookie?: never;
+ };
+ /**
+ * Get hackathon participants
+ * @description Retrieve list of participants for a hackathon by ID or slug
+ */
+ get: operations["HackathonsController_getHackathonParticipants"];
+ put?: never;
+ post?: never;
+ delete?: never;
+ options?: never;
+ head?: never;
+ patch?: never;
+ trace?: never;
+ };
+ "/api/hackathons/{idOrSlug}/submissions": {
+ parameters: {
+ query?: never;
+ header?: never;
+ path?: never;
+ cookie?: never;
+ };
+ /**
+ * Get hackathon submissions
+ * @description Retrieves submissions for a hackathon (organizer only)
+ */
+ get: operations["HackathonsSubmissionsController_getHackathonSubmissions"];
+ put?: never;
+ /**
+ * Create a hackathon submission
+ * @description Submit a project to a hackathon
+ */
+ post: operations["HackathonsSubmissionsController_createSubmission"];
+ delete?: never;
+ options?: never;
+ head?: never;
+ patch?: never;
+ trace?: never;
+ };
+ "/api/hackathons/{idOrSlug}/submissions/explore": {
+ parameters: {
+ query?: never;
+ header?: never;
+ path?: never;
+ cookie?: never;
+ };
+ /**
+ * Explore hackathon submissions
+ * @description Retrieves all submissions for a hackathon for public viewing
+ */
+ get: operations["HackathonsSubmissionsController_exploreHackathonSubmissions"];
+ put?: never;
+ post?: never;
+ delete?: never;
+ options?: never;
+ head?: never;
+ patch?: never;
+ trace?: never;
+ };
+ "/api/hackathons/{idOrSlug}/my-submission": {
+ parameters: {
+ query?: never;
+ header?: never;
+ path?: never;
+ cookie?: never;
+ };
+ /**
+ * Get my submission for a hackathon
+ * @description Retrieve the current user's submission for a hackathon
+ */
+ get: operations["HackathonsSubmissionsController_getMySubmission"];
+ put?: never;
+ post?: never;
+ delete?: never;
+ options?: never;
+ head?: never;
+ patch?: never;
+ trace?: never;
+ };
+ "/api/hackathons/submissions/{submissionId}": {
+ parameters: {
+ query?: never;
+ header?: never;
+ path?: never;
+ cookie?: never;
+ };
+ /**
+ * Get a submission by ID
+ * @description Retrieve details of a specific submission
+ */
+ get: operations["HackathonsSubmissionsController_getSubmissionById"];
+ put?: never;
+ post?: never;
+ /**
+ * Withdraw a hackathon submission
+ * @description Delete your submission before the deadline
+ */
+ delete: operations["HackathonsSubmissionsController_deleteSubmission"];
+ options?: never;
+ head?: never;
+ /**
+ * Update a hackathon submission
+ * @description Update your submission before the deadline
+ */
+ patch: operations["HackathonsSubmissionsController_updateSubmission"];
+ trace?: never;
+ };
+ "/api/hackathons/{id}/discussions": {
+ parameters: {
+ query?: never;
+ header?: never;
+ path?: never;
+ cookie?: never;
+ };
+ /**
+ * Get hackathon discussions
+ * @description Retrieve real-time comments and discussions for a hackathon
+ */
+ get: operations["HackathonsDiscussionsController_getHackathonDiscussions"];
+ put?: never;
+ /**
+ * Post a comment in hackathon discussion
+ * @description Create a new comment in the hackathon discussion thread
+ */
+ post: operations["HackathonsDiscussionsController_createHackathonComment"];
+ delete?: never;
+ options?: never;
+ head?: never;
+ patch?: never;
+ trace?: never;
+ };
+ "/api/hackathons/discussions/{commentId}": {
+ parameters: {
+ query?: never;
+ header?: never;
+ path?: never;
+ cookie?: never;
+ };
+ get?: never;
+ put?: never;
+ post?: never;
+ /**
+ * Delete a discussion comment
+ * @description Remove your own comment from the hackathon discussion
+ */
+ delete: operations["HackathonsDiscussionsController_deleteHackathonComment"];
+ options?: never;
+ head?: never;
+ /**
+ * Update a discussion comment
+ * @description Edit your own comment in the hackathon discussion
+ */
+ patch: operations["HackathonsDiscussionsController_updateHackathonComment"];
+ trace?: never;
+ };
+ "/api/hackathons/discussions/{commentId}/react": {
+ parameters: {
+ query?: never;
+ header?: never;
+ path?: never;
+ cookie?: never;
+ };
+ get?: never;
+ put?: never;
+ /**
+ * React to a comment
+ * @description Add or toggle a reaction (like, love, etc.) to a discussion comment
+ */
+ post: operations["HackathonsDiscussionsController_reactToComment"];
+ delete?: never;
+ options?: never;
+ head?: never;
+ patch?: never;
+ trace?: never;
+ };
+ "/api/hackathons/discussions/{commentId}/replies": {
+ parameters: {
+ query?: never;
+ header?: never;
+ path?: never;
+ cookie?: never;
+ };
+ /**
+ * Get comment replies
+ * @description Retrieve replies to a specific comment
+ */
+ get: operations["HackathonsDiscussionsController_getCommentReplies"];
+ put?: never;
+ post?: never;
+ delete?: never;
+ options?: never;
+ head?: never;
+ patch?: never;
+ trace?: never;
+ };
+ "/api/hackathons/{id}/teams": {
+ parameters: {
+ query?: never;
+ header?: never;
+ path?: never;
+ cookie?: never;
+ };
+ /**
+ * Get hackathon teams
+ * @description Retrieve all teams for a hackathon with optional filtering
+ */
+ get: operations["HackathonsTeamsController_getHackathonTeams"];
+ put?: never;
+ /**
+ * Create a team
+ * @description Create a new team for the hackathon. Team is closed by default unless skills are specified.
+ */
+ post: operations["HackathonsTeamsController_createTeam"];
+ delete?: never;
+ options?: never;
+ head?: never;
+ patch?: never;
+ trace?: never;
+ };
+ "/api/hackathons/{id}/teams/{teamId}": {
+ parameters: {
+ query?: never;
+ header?: never;
+ path?: never;
+ cookie?: never;
+ };
+ /**
+ * Get team details
+ * @description Get detailed information about a specific team
+ */
+ get: operations["HackathonsTeamsController_getTeam"];
+ put?: never;
+ post?: never;
+ /**
+ * Disband a team (leader only)
+ * @description Disband the team and remove all members. Refuses if the team has already submitted — withdraw the submission first.
+ */
+ delete: operations["HackathonsTeamsController_disbandTeam"];
+ options?: never;
+ head?: never;
+ /**
+ * Update team
+ * @description Update team information (leader only). Team opens when skills are added, closes when removed.
+ */
+ patch: operations["HackathonsTeamsController_updateTeam"];
+ trace?: never;
+ };
+ "/api/hackathons/{id}/teams/{teamId}/join": {
+ parameters: {
+ query?: never;
+ header?: never;
+ path?: never;
+ cookie?: never;
+ };
+ get?: never;
+ put?: never;
+ /**
+ * Join a team
+ * @description Join an existing open team
+ */
+ post: operations["HackathonsTeamsController_joinTeam"];
+ delete?: never;
+ options?: never;
+ head?: never;
+ patch?: never;
+ trace?: never;
+ };
+ "/api/hackathons/{id}/teams/{teamId}/members/{userId}": {
+ parameters: {
+ query?: never;
+ header?: never;
+ path?: never;
+ cookie?: never;
+ };
+ get?: never;
+ put?: never;
+ post?: never;
+ /**
+ * Remove a member from the team (leader only)
+ * @description Team leader removes a specific member. Leaders cannot remove themselves — they must transfer leadership first or disband the team.
+ */
+ delete: operations["HackathonsTeamsController_removeTeamMember"];
+ options?: never;
+ head?: never;
+ patch?: never;
+ trace?: never;
+ };
+ "/api/hackathons/{id}/teams/{teamId}/leave": {
+ parameters: {
+ query?: never;
+ header?: never;
+ path?: never;
+ cookie?: never;
+ };
+ get?: never;
+ put?: never;
+ /**
+ * Leave a team
+ * @description Leave your current team. Leaders must transfer leadership first if team has other members.
+ */
+ post: operations["HackathonsTeamsController_leaveTeam"];
+ delete?: never;
+ options?: never;
+ head?: never;
+ patch?: never;
+ trace?: never;
+ };
+ "/api/hackathons/{id}/my-team": {
+ parameters: {
+ query?: never;
+ header?: never;
+ path?: never;
+ cookie?: never;
+ };
+ /**
+ * Get my team
+ * @description Get your team in this hackathon
+ */
+ get: operations["HackathonsTeamsController_getMyTeam"];
+ put?: never;
+ post?: never;
+ delete?: never;
+ options?: never;
+ head?: never;
+ patch?: never;
+ trace?: never;
+ };
+ "/api/hackathons/{id}/teams/{teamId}/invite": {
+ parameters: {
+ query?: never;
+ header?: never;
+ path?: never;
+ cookie?: never;
+ };
+ get?: never;
+ put?: never;
+ /**
+ * Invite a user to join team
+ * @description Team leader can invite hackathon participants to join the team. Invitation expires in 7 days.
+ */
+ post: operations["HackathonsTeamsController_inviteToTeam"];
+ delete?: never;
+ options?: never;
+ head?: never;
+ patch?: never;
+ trace?: never;
+ };
+ "/api/hackathons/{id}/my-invitations": {
+ parameters: {
+ query?: never;
+ header?: never;
+ path?: never;
+ cookie?: never;
+ };
+ /**
+ * Get my team invitations
+ * @description Get all team invitations received by the current user
+ */
+ get: operations["HackathonsTeamsController_getMyInvitations"];
+ put?: never;
+ post?: never;
+ delete?: never;
+ options?: never;
+ head?: never;
+ patch?: never;
+ trace?: never;
+ };
+ "/api/hackathons/{id}/invitations/{inviteId}/accept": {
+ parameters: {
+ query?: never;
+ header?: never;
+ path?: never;
+ cookie?: never;
+ };
+ get?: never;
+ put?: never;
+ /**
+ * Accept team invitation
+ * @description Accept a pending team invitation and join the team
+ */
+ post: operations["HackathonsTeamsController_acceptInvitation"];
+ delete?: never;
+ options?: never;
+ head?: never;
+ patch?: never;
+ trace?: never;
+ };
+ "/api/hackathons/{id}/invitations/{inviteId}/reject": {
+ parameters: {
+ query?: never;
+ header?: never;
+ path?: never;
+ cookie?: never;
+ };
+ get?: never;
+ put?: never;
+ /**
+ * Reject team invitation
+ * @description Reject a pending team invitation
+ */
+ post: operations["HackathonsTeamsController_rejectInvitation"];
+ delete?: never;
+ options?: never;
+ head?: never;
+ patch?: never;
+ trace?: never;
+ };
+ "/api/hackathons/{id}/invitations/{inviteId}": {
+ parameters: {
+ query?: never;
+ header?: never;
+ path?: never;
+ cookie?: never;
+ };
+ get?: never;
+ put?: never;
+ post?: never;
+ /**
+ * Cancel team invitation
+ * @description Team leader can cancel a pending invitation
+ */
+ delete: operations["HackathonsTeamsController_cancelInvitation"];
+ options?: never;
+ head?: never;
+ patch?: never;
+ trace?: never;
+ };
+ "/api/hackathons/{id}/teams/{teamId}/invitations": {
+ parameters: {
+ query?: never;
+ header?: never;
+ path?: never;
+ cookie?: never;
+ };
+ /**
+ * Get team invitations
+ * @description Team leader can view all invitations sent by the team (pending, accepted, rejected)
+ */
+ get: operations["HackathonsTeamsController_getTeamInvitations"];
+ put?: never;
+ post?: never;
+ delete?: never;
+ options?: never;
+ head?: never;
+ patch?: never;
+ trace?: never;
+ };
+ "/api/hackathons/{id}/teams/{teamId}/roles/toggle-hired": {
+ parameters: {
+ query?: never;
+ header?: never;
+ path?: never;
+ cookie?: never;
+ };
+ get?: never;
+ put?: never;
+ post?: never;
+ delete?: never;
+ options?: never;
+ head?: never;
+ /**
+ * Toggle role hired status
+ * @description Team leader can toggle whether a role has been filled (hired) or is still open
+ */
+ patch: operations["HackathonsTeamsController_toggleRoleHiredStatus"];
+ trace?: never;
+ };
+ "/api/hackathons/{id}/teams/{teamId}/transfer-leadership": {
+ parameters: {
+ query?: never;
+ header?: never;
+ path?: never;
+ cookie?: never;
+ };
+ get?: never;
+ put?: never;
+ /**
+ * Transfer team leadership
+ * @description Current team leader can transfer leadership to another team member. This action is logged in audit logs for accountability.
+ */
+ post: operations["HackathonsTeamsController_transferLeadership"];
+ delete?: never;
+ options?: never;
+ head?: never;
+ patch?: never;
+ trace?: never;
+ };
+ "/api/organizations/{organizationId}/hackathons/draft/{id}": {
+ parameters: {
+ query?: never;
+ header?: never;
+ path?: never;
+ cookie?: never;
+ };
+ /**
+ * Get hackathon draft details
+ * @description Retrieves the current state of a hackathon draft for editing
+ */
+ get: operations["OrganizationHackathonsDraftsController_getDraft"];
+ put?: never;
+ post?: never;
+ /**
+ * Delete hackathon draft
+ * @description Deletes a hackathon draft by ID for an organization
+ */
+ delete: operations["OrganizationHackathonsDraftsController_deleteDraft"];
+ options?: never;
+ head?: never;
+ /**
+ * Update one or more sections of a hackathon draft
+ * @description Applies any subset of wizard sections in a single PATCH. Send one section for a per-step "Continue", or several for "Save draft". Each present section is validated and transformed independently, then merged into one write.
+ */
+ patch: operations["OrganizationHackathonsDraftsController_updateDraft"];
+ trace?: never;
+ };
+ "/api/organizations/{organizationId}/hackathons": {
+ parameters: {
+ query?: never;
+ header?: never;
+ path?: never;
+ cookie?: never;
+ };
+ /**
+ * Get organization's published hackathons
+ * @description Retrieves all published hackathons for an organization with pagination
+ */
+ get: operations["OrganizationHackathonsDraftsController_getOrganizationHackathons"];
+ put?: never;
+ post?: never;
+ delete?: never;
+ options?: never;
+ head?: never;
+ patch?: never;
+ trace?: never;
+ };
+ "/api/organizations/{organizationId}/hackathons/draft": {
+ parameters: {
+ query?: never;
+ header?: never;
+ path?: never;
+ cookie?: never;
+ };
+ get?: never;
+ put?: never;
+ /**
+ * Create a new hackathon draft for an organization
+ * @description Creates a new hackathon in draft status that can be edited by organization members
+ */
+ post: operations["OrganizationHackathonsDraftsController_createDraft"];
+ delete?: never;
+ options?: never;
+ head?: never;
+ patch?: never;
+ trace?: never;
+ };
+ "/api/organizations/{organizationId}/hackathons/drafts": {
+ parameters: {
+ query?: never;
+ header?: never;
+ path?: never;
+ cookie?: never;
+ };
+ /**
+ * Get organization's hackathon drafts
+ * @description Retrieves all draft hackathons for an organization that the user has access to
+ */
+ get: operations["OrganizationHackathonsDraftsController_getOrganizationDrafts"];
+ put?: never;
+ post?: never;
+ delete?: never;
+ options?: never;
+ head?: never;
+ patch?: never;
+ trace?: never;
+ };
+ "/api/organizations/{organizationId}/hackathons/hackathons/{id}/announcement-preview": {
+ parameters: {
+ query?: never;
+ header?: never;
+ path?: never;
+ cookie?: never;
+ };
+ /**
+ * Preview the marketing announcement audience size
+ * @description Returns the number of recipients that would receive the launch announcement email if the hackathon were published right now. Useful for the publish UI.
+ */
+ get: operations["OrganizationHackathonsDraftsController_previewAnnouncementAudience"];
+ put?: never;
+ post?: never;
+ delete?: never;
+ options?: never;
+ head?: never;
+ patch?: never;
+ trace?: never;
+ };
+ "/api/organizations/{organizationId}/hackathons/draft/clarify": {
+ parameters: {
+ query?: never;
+ header?: never;
+ path?: never;
+ cookie?: never;
+ };
+ get?: never;
+ put?: never;
+ /**
+ * Triage a hackathon brief for clarifying questions (Organizer Assist)
+ * @description A cheap pre-draft gate: returns { ready: true } when the brief is specific enough, or 1-3 clarifying questions (duration / structure / participation) the organizer answers before drafting.
+ */
+ post: operations["OrganizationHackathonsAiController_clarify"];
+ delete?: never;
+ options?: never;
+ head?: never;
+ patch?: never;
+ trace?: never;
+ };
+ "/api/organizations/{organizationId}/hackathons/draft/from-brief": {
+ parameters: {
+ query?: never;
+ header?: never;
+ path?: never;
+ cookie?: never;
+ };
+ get?: never;
+ put?: never;
+ /**
+ * Generate a hackathon draft from a brief (Organizer Assist)
+ * @description Calls the AI service to turn a brief into a structured draft, persists a new hackathon draft pre-filled with the timeline, prizes, and judging criteria, and returns it together with the full AI suggestion for review. The organizer reviews, completes (banner, venue), and publishes.
+ */
+ post: operations["OrganizationHackathonsAiController_generateFromBrief"];
+ delete?: never;
+ options?: never;
+ head?: never;
+ patch?: never;
+ trace?: never;
+ };
+ "/api/organizations/{organizationId}/hackathons/draft/from-brief/stream": {
+ parameters: {
+ query?: never;
+ header?: never;
+ path?: never;
+ cookie?: never;
+ };
+ get?: never;
+ put?: never;
+ /**
+ * Generate a hackathon draft from a brief, streaming (Organizer Assist)
+ * @description Server-Sent Events: `partial` frames carry the draft taking shape for a live reveal, then a `done` frame carries { draftId, draft }. Errors arrive as an `error` frame (or a normal 4xx before the stream opens, e.g. quota).
+ */
+ post: operations["OrganizationHackathonsAiController_generateFromBriefStream"];
+ delete?: never;
+ options?: never;
+ head?: never;
+ patch?: never;
+ trace?: never;
+ };
+ "/api/organizations/{organizationId}/hackathons/draft/{id}/regenerate-section": {
+ parameters: {
+ query?: never;
+ header?: never;
+ path?: never;
+ cookie?: never;
+ };
+ get?: never;
+ put?: never;
+ /**
+ * Regenerate one section of a draft (Organizer Assist)
+ * @description Calls the AI service to regenerate a single section (criteria, prizes, tracks, timeline, or description) from the current draft and returns the new section for the organizer to accept or discard.
+ */
+ post: operations["OrganizationHackathonsAiController_regenerateSection"];
+ delete?: never;
+ options?: never;
+ head?: never;
+ patch?: never;
+ trace?: never;
+ };
+ "/api/organizations/{organizationId}/hackathons/{id}/visibility": {
+ parameters: {
+ query?: never;
+ header?: never;
+ path?: never;
+ cookie?: never;
+ };
+ get?: never;
+ put?: never;
+ post?: never;
+ delete?: never;
+ options?: never;
+ head?: never;
+ /**
+ * Update hackathon submission visibility settings
+ * @description Allows organizers to change who can view submissions and which statuses are visible.
+ */
+ patch: operations["OrganizationHackathonsSubmissionsController_updateVisibilitySettings"];
+ trace?: never;
+ };
+ "/api/organizations/{organizationId}/hackathons/{hackathonId}/submissions/{submissionId}/review": {
+ parameters: {
+ query?: never;
+ header?: never;
+ path?: never;
+ cookie?: never;
+ };
+ get?: never;
+ put?: never;
+ post?: never;
+ delete?: never;
+ options?: never;
+ head?: never;
+ /**
+ * Review a submission
+ * @description Update submission status (shortlist or move back to submitted). Organizer only.
+ */
+ patch: operations["OrganizationHackathonsSubmissionsController_reviewSubmission"];
+ trace?: never;
+ };
+ "/api/organizations/{organizationId}/hackathons/{idOrSlug}/participants": {
+ parameters: {
+ query?: never;
+ header?: never;
+ path?: never;
+ cookie?: never;
+ };
+ /**
+ * Get hackathon participants (organization)
+ * @description Returns detailed participant data for organizers, including submission details.
+ */
+ get: operations["OrganizationHackathonsSubmissionsController_getOrganizationHackathonParticipants"];
+ put?: never;
+ post?: never;
+ delete?: never;
+ options?: never;
+ head?: never;
+ patch?: never;
+ trace?: never;
+ };
+ "/api/organizations/{organizationId}/hackathons/{hackathonId}/submissions/{submissionId}/score-override": {
+ parameters: {
+ query?: never;
+ header?: never;
+ path?: never;
+ cookie?: never;
+ };
+ get?: never;
+ put?: never;
+ /**
+ * Organizer: Override submission scoring
+ * @description Organizer directly assigns criterion-based scores to a submission. Validates rubric compliance but bypasses judge assignment and conflict-of-interest checks. Use when correcting judge scores or assigning administrative evaluations. Organizer only.
+ */
+ post: operations["OrganizationHackathonsSubmissionsController_scoreSubmissionOverride"];
+ delete?: never;
+ options?: never;
+ head?: never;
+ patch?: never;
+ trace?: never;
+ };
+ "/api/organizations/{organizationId}/hackathons/{hackathonId}/submissions/{submissionId}/disqualify": {
+ parameters: {
+ query?: never;
+ header?: never;
+ path?: never;
+ cookie?: never;
+ };
+ get?: never;
+ put?: never;
+ /**
+ * Disqualify a submission
+ * @description Mark a submission as disqualified with a reason. Organizer only.
+ */
+ post: operations["OrganizationHackathonsSubmissionsController_disqualifySubmission"];
+ delete?: never;
+ options?: never;
+ head?: never;
+ patch?: never;
+ trace?: never;
+ };
+ "/api/organizations/{organizationId}/hackathons/{hackathonId}/submissions/bulk-action": {
+ parameters: {
+ query?: never;
+ header?: never;
+ path?: never;
+ cookie?: never;
+ };
+ get?: never;
+ put?: never;
+ /**
+ * Perform bulk action on submissions
+ * @description Update status of multiple submissions at once (shortlist, approve, disqualify). Organizer only.
+ */
+ post: operations["OrganizationHackathonsSubmissionsController_bulkSubmissionAction"];
+ delete?: never;
+ options?: never;
+ head?: never;
+ patch?: never;
+ trace?: never;
+ };
+ "/api/organizations/{organizationId}/hackathons/{hackathonId}/submissions/{submissionId}/rank": {
+ parameters: {
+ query?: never;
+ header?: never;
+ path?: never;
+ cookie?: never;
+ };
+ get?: never;
+ put?: never;
+ post?: never;
+ delete?: never;
+ options?: never;
+ head?: never;
+ /**
+ * Set submission rank
+ * @description Assign a rank to a submission for leaderboard positioning. Organizer only.
+ */
+ patch: operations["OrganizationHackathonsSubmissionsController_setSubmissionRank"];
+ trace?: never;
+ };
+ "/api/organizations/{organizationId}/hackathons/{hackathonId}/analytics": {
+ parameters: {
+ query?: never;
+ header?: never;
+ path?: never;
+ cookie?: never;
+ };
+ /**
+ * Get hackathon analytics
+ * @description Retrieves summary metrics, trend data, and timeline for a hackathon. Organizer only.
+ */
+ get: operations["OrganizationHackathonsSubmissionsController_getAnalytics"];
+ put?: never;
+ post?: never;
+ delete?: never;
+ options?: never;
+ head?: never;
+ patch?: never;
+ trace?: never;
+ };
+ "/api/hackathons/{idOrSlug}/announcements": {
+ parameters: {
+ query?: never;
+ header?: never;
+ path?: never;
+ cookie?: never;
+ };
+ /**
+ * Get hackathon announcements
+ * @description Retrieves all announcements for a hackathon. Drafts are only visible to organizers.
+ */
+ get: operations["HackathonsAnnouncementsController_getAnnouncements"];
+ put?: never;
+ post?: never;
+ delete?: never;
+ options?: never;
+ head?: never;
+ patch?: never;
+ trace?: never;
+ };
+ "/api/hackathons/announcements/{announcementId}": {
+ parameters: {
+ query?: never;
+ header?: never;
+ path?: never;
+ cookie?: never;
+ };
+ /**
+ * Get announcement details
+ * @description Retrieves details of a specific announcement
+ */
+ get: operations["HackathonsAnnouncementsController_getAnnouncement"];
+ put?: never;
+ post?: never;
+ delete?: never;
+ options?: never;
+ head?: never;
+ patch?: never;
+ trace?: never;
+ };
+ "/api/organizations/{organizationId}/hackathons/{idOrSlug}/announcements": {
+ parameters: {
+ query?: never;
+ header?: never;
+ path?: never;
+ cookie?: never;
+ };
+ get?: never;
+ put?: never;
+ /**
+ * Create a hackathon announcement
+ * @description Creates a new announcement for an organization hackathon
+ */
+ post: operations["OrganizationHackathonsAnnouncementsController_createAnnouncement"];
+ delete?: never;
+ options?: never;
+ head?: never;
+ patch?: never;
+ trace?: never;
+ };
+ "/api/organizations/{organizationId}/hackathons/{idOrSlug}/announcements/{announcementId}": {
+ parameters: {
+ query?: never;
+ header?: never;
+ path?: never;
+ cookie?: never;
+ };
+ get?: never;
+ put?: never;
+ post?: never;
+ /**
+ * Delete a hackathon announcement
+ * @description Deletes an announcement for an organization hackathon
+ */
+ delete: operations["OrganizationHackathonsAnnouncementsController_deleteAnnouncement"];
+ options?: never;
+ head?: never;
+ /**
+ * Update a hackathon announcement
+ * @description Updates an existing announcement for an organization hackathon
+ */
+ patch: operations["OrganizationHackathonsAnnouncementsController_updateAnnouncement"];
+ trace?: never;
+ };
+ "/api/organizations/{organizationId}/hackathons/{idOrSlug}/announcements/{announcementId}/publish": {
+ parameters: {
+ query?: never;
+ header?: never;
+ path?: never;
+ cookie?: never;
+ };
+ get?: never;
+ put?: never;
+ /**
+ * Publish a draft announcement
+ * @description Publishes a draft announcement for an organization hackathon
+ */
+ post: operations["OrganizationHackathonsAnnouncementsController_publishAnnouncement"];
+ delete?: never;
+ options?: never;
+ head?: never;
+ patch?: never;
+ trace?: never;
+ };
+ "/api/hackathons/{idOrSlug}/judging/criteria": {
+ parameters: {
+ query?: never;
+ header?: never;
+ path?: never;
+ cookie?: never;
+ };
+ /**
+ * Get hackathon judging criteria
+ * @description Retrieves the criteria used for judging this hackathon
+ */
+ get: operations["HackathonsJudgingController_getCriteria"];
+ put?: never;
+ post?: never;
+ delete?: never;
+ options?: never;
+ head?: never;
+ patch?: never;
+ trace?: never;
+ };
+ "/api/hackathons/judging/score": {
+ parameters: {
+ query?: never;
+ header?: never;
+ path?: never;
+ cookie?: never;
+ };
+ get?: never;
+ put?: never;
+ /**
+ * Judge: Submit criterion-based scores
+ * @description Allows an assigned judge to submit criterion-based scores for a submission. Enforces: (1) judge assignment verification, (2) conflict-of-interest checks, (3) rubric compliance validation.
+ */
+ post: operations["HackathonsJudgingController_submitScore"];
+ delete?: never;
+ options?: never;
+ head?: never;
+ patch?: never;
+ trace?: never;
+ };
+ "/api/hackathons/{idOrSlug}/judging/submissions": {
+ parameters: {
+ query?: never;
+ header?: never;
+ path?: never;
+ cookie?: never;
+ };
+ /**
+ * Get submissions for judging
+ * @description Retrieves shortlisted submissions with the current judge's scores and criteria
+ */
+ get: operations["HackathonsJudgingController_getJudgingSubmissions"];
+ put?: never;
+ post?: never;
+ delete?: never;
+ options?: never;
+ head?: never;
+ patch?: never;
+ trace?: never;
+ };
+ "/api/organizations/{organizationId}/hackathons/{idOrSlug}/judging/judges": {
+ parameters: {
+ query?: never;
+ header?: never;
+ path?: never;
+ cookie?: never;
+ };
+ /**
+ * Get hackathon judges
+ * @description Retrieves the list of judges assigned to the hackathon
+ */
+ get: operations["OrganizationHackathonsJudgingController_getJudges"];
+ put?: never;
+ /**
+ * Add a judge to a hackathon
+ * @description Assigns a user as a judge for the hackathon
+ */
+ post: operations["OrganizationHackathonsJudgingController_addJudge"];
+ delete?: never;
+ options?: never;
+ head?: never;
+ patch?: never;
+ trace?: never;
+ };
+ "/api/organizations/{organizationId}/hackathons/{idOrSlug}/judging/judges/{userId}": {
+ parameters: {
+ query?: never;
+ header?: never;
+ path?: never;
+ cookie?: never;
+ };
+ get?: never;
+ put?: never;
+ post?: never;
+ /**
+ * Remove a judge from a hackathon
+ * @description Removes a user from the judging panel
+ */
+ delete: operations["OrganizationHackathonsJudgingController_removeJudge"];
+ options?: never;
+ head?: never;
+ patch?: never;
+ trace?: never;
+ };
+ "/api/organizations/{organizationId}/hackathons/{idOrSlug}/judging/results": {
+ parameters: {
+ query?: never;
+ header?: never;
+ path?: never;
+ cookie?: never;
+ };
+ /**
+ * Get aggregated judging results
+ * @description Retrieves the ranked results for the hackathon based on judging scores
+ */
+ get: operations["OrganizationHackathonsJudgingController_getResults"];
+ put?: never;
+ post?: never;
+ delete?: never;
+ options?: never;
+ head?: never;
+ patch?: never;
+ trace?: never;
+ };
+ "/api/organizations/{organizationId}/hackathons/{idOrSlug}/judging/submissions/{submissionId}/scores": {
+ parameters: {
+ query?: never;
+ header?: never;
+ path?: never;
+ cookie?: never;
+ };
+ /**
+ * Get individual judge scores for a submission
+ * @description Retrieves all judge scores and comments for a project
+ */
+ get: operations["OrganizationHackathonsJudgingController_getIndividualScores"];
+ put?: never;
+ post?: never;
+ delete?: never;
+ options?: never;
+ head?: never;
+ patch?: never;
+ trace?: never;
+ };
+ "/api/organizations/{organizationId}/hackathons/{idOrSlug}/judging/winners": {
+ parameters: {
+ query?: never;
+ header?: never;
+ path?: never;
+ cookie?: never;
+ };
+ /**
+ * Get winner ranking
+ * @description Retrieves the ranked results sorted by average score
+ */
+ get: operations["OrganizationHackathonsJudgingController_getWinnerRanking"];
+ put?: never;
+ post?: never;
+ delete?: never;
+ options?: never;
+ head?: never;
+ patch?: never;
+ trace?: never;
+ };
+ "/api/organizations/{organizationId}/hackathons/{idOrSlug}/judging/coverage": {
+ parameters: {
+ query?: never;
+ header?: never;
+ path?: never;
+ cookie?: never;
+ };
+ /**
+ * Full judges × submissions coverage matrix
+ * @description Returns every shortlisted submission with the set of active judges who scored it, plus per-judge totals. Used by the organizer dashboard to render a heatmap that surfaces idle judges (columns of mostly empty cells) and orphan submissions (rows with 0-1 scores) at a glance — both block a defensible publish. The view-only `/completeness` endpoint stays unchanged for the publish-confirmation flow.
+ */
+ get: operations["OrganizationHackathonsJudgingController_judgingCoverage"];
+ put?: never;
+ post?: never;
+ delete?: never;
+ options?: never;
+ head?: never;
+ patch?: never;
+ trace?: never;
+ };
+ "/api/organizations/{organizationId}/hackathons/{idOrSlug}/judging/preview-allocation": {
+ parameters: {
+ query?: never;
+ header?: never;
+ path?: never;
+ cookie?: never;
+ };
+ /**
+ * Preview the allocator outcome before publishing
+ * @description Read-only dry run of the publish-results allocator. Returns the overall placements + per-track winners that would be stamped on publish, including EXCLUSIVE stacking effects (a track leader losing because they already claimed an overall placement). Also surfaces the publish gates (deadline, completeness, partner allocation) so the UI can render a "what is blocking publish?" panel without trying to publish.
+ */
+ get: operations["OrganizationHackathonsJudgingController_previewAllocation"];
+ put?: never;
+ post?: never;
+ delete?: never;
+ options?: never;
+ head?: never;
+ patch?: never;
+ trace?: never;
+ };
+ "/api/organizations/{organizationId}/hackathons/{idOrSlug}/judging/allocation-parity": {
+ parameters: {
+ query?: never;
+ header?: never;
+ path?: never;
+ cookie?: never;
+ };
+ /**
+ * Phase 4 gate: new allocator vs legacy parity (compute-only)
+ * @description Runs the new WinnerAssignment allocator and compares its (winner -> payout) map against the legacy rank/wonRank result. Persists nothing and never touches the on-chain path. match=true is the prerequisite for switching select_winners over to WinnerAssignment.
+ */
+ get: operations["OrganizationHackathonsJudgingController_allocationParity"];
+ put?: never;
+ post?: never;
+ delete?: never;
+ options?: never;
+ head?: never;
+ patch?: never;
+ trace?: never;
+ };
+ "/api/organizations/{organizationId}/hackathons/{idOrSlug}/judging/completeness": {
+ parameters: {
+ query?: never;
+ header?: never;
+ path?: never;
+ cookie?: never;
+ };
+ /**
+ * Preview judging completeness
+ * @description Returns which submissions are short any active judge, and which judges still have outstanding work. The frontend uses this to render the publish-results confirmation dialog before the organizer commits.
+ */
+ get: operations["OrganizationHackathonsJudgingController_judgingCompleteness"];
+ put?: never;
+ post?: never;
+ delete?: never;
+ options?: never;
+ head?: never;
+ patch?: never;
+ trace?: never;
+ };
+ "/api/organizations/{organizationId}/hackathons/{idOrSlug}/judging/publish-results": {
+ parameters: {
+ query?: never;
+ header?: never;
+ path?: never;
+ cookie?: never;
+ };
+ get?: never;
+ put?: never;
+ /**
+ * Publish results
+ * @description Finalizes the ranks and marks results as public. Rejects (400) if any active judge has not scored every shortlisted submission, unless the request body includes `acceptPartial: true`.
+ */
+ post: operations["OrganizationHackathonsJudgingController_publishResults"];
+ delete?: never;
+ options?: never;
+ head?: never;
+ patch?: never;
+ trace?: never;
+ };
+ "/api/organizations/{organizationId}/hackathons/{idOrSlug}/judging/winners/board": {
+ parameters: {
+ query?: never;
+ header?: never;
+ path?: never;
+ cookie?: never;
+ };
+ /**
+ * Get the winners board
+ * @description One row per prize placement (overall and per-track), each with the score-ranked default pick, the current selection, the candidate list to choose from, and a conflict flag when a project already holds another placement. Drives the organizer "review and pick winners" step.
+ */
+ get: operations["OrganizationHackathonsJudgingController_winnersBoard"];
+ put?: never;
+ post?: never;
+ delete?: never;
+ options?: never;
+ head?: never;
+ patch?: never;
+ trace?: never;
+ };
+ "/api/organizations/{organizationId}/hackathons/{idOrSlug}/judging/winners/placements/{placementId}": {
+ parameters: {
+ query?: never;
+ header?: never;
+ path?: never;
+ cookie?: never;
+ };
+ get?: never;
+ /**
+ * Pick the winner for a placement
+ * @description Pins a submission to a prize placement as an organizer override (saved as a draft until results are published). A project already holding another placement is allowed; the UI confirms the stacking inline.
+ */
+ put: operations["OrganizationHackathonsJudgingController_setPlacementWinner"];
+ post?: never;
+ /**
+ * Clear an organizer pick for a placement
+ * @description Removes the organizer override draft for a placement, reverting it to the score-based default. Only valid before results are published.
+ */
+ delete: operations["OrganizationHackathonsJudgingController_clearPlacementWinner"];
+ options?: never;
+ head?: never;
+ patch?: never;
+ trace?: never;
+ };
+ "/api/organizations/{organizationId}/hackathons/{idOrSlug}/judging/winners/placements/{placementId}/withhold": {
+ parameters: {
+ query?: never;
+ header?: never;
+ path?: never;
+ cookie?: never;
+ };
+ get?: never;
+ put?: never;
+ /**
+ * Leave a placement unawarded
+ * @description Deliberately leaves a prize placement vacant ("no submission earned this prize"). Clears any pick and marks it withheld so the allocator skips it. Distinct from clearing back to the score-based default. Only valid before results are published.
+ */
+ post: operations["OrganizationHackathonsJudgingController_withholdPlacement"];
+ delete?: never;
+ options?: never;
+ head?: never;
+ patch?: never;
+ trace?: never;
+ };
+ "/api/organizations/{organizationId}/hackathons/{idOrSlug}/judging/invitations": {
+ parameters: {
+ query?: never;
+ header?: never;
+ path?: never;
+ cookie?: never;
+ };
+ /** List judge invitations for this hackathon */
+ get: operations["OrganizationHackathonsJudgingController_listInvitations"];
+ put?: never;
+ /**
+ * Invite a judge by email
+ * @description Sends an email-based invitation. The recipient is NOT added to the organization; on acceptance they become a hackathon-scoped judge only.
+ */
+ post: operations["OrganizationHackathonsJudgingController_inviteJudge"];
+ delete?: never;
+ options?: never;
+ head?: never;
+ patch?: never;
+ trace?: never;
+ };
+ "/api/organizations/{organizationId}/hackathons/{idOrSlug}/judging/invitations/bulk": {
+ parameters: {
+ query?: never;
+ header?: never;
+ path?: never;
+ cookie?: never;
+ };
+ get?: never;
+ put?: never;
+ /**
+ * Bulk-invite judges (e.g. from a CSV import)
+ * @description Invites up to 25 judges in one request. Each row is processed independently, so one bad row (duplicate, already accepted, rejected email) does not abort the rest. Returns a per-row result.
+ */
+ post: operations["OrganizationHackathonsJudgingController_bulkInviteJudges"];
+ delete?: never;
+ options?: never;
+ head?: never;
+ patch?: never;
+ trace?: never;
+ };
+ "/api/organizations/{organizationId}/hackathons/{idOrSlug}/judging/invitations/{invitationId}": {
+ parameters: {
+ query?: never;
+ header?: never;
+ path?: never;
+ cookie?: never;
+ };
+ get?: never;
+ put?: never;
+ post?: never;
+ /** Cancel (revoke) a pending judge invitation */
+ delete: operations["OrganizationHackathonsJudgingController_cancelInvitation"];
+ options?: never;
+ head?: never;
+ patch?: never;
+ trace?: never;
+ };
+ "/api/organizations/{organizationId}/hackathons/{idOrSlug}/judging/invitations/{invitationId}/resend": {
+ parameters: {
+ query?: never;
+ header?: never;
+ path?: never;
+ cookie?: never;
+ };
+ get?: never;
+ put?: never;
+ /**
+ * Resend a pending judge invitation
+ * @description Rotates the invitation token so any previously-leaked link is invalidated, then re-emails the recipient.
+ */
+ post: operations["OrganizationHackathonsJudgingController_resendInvitation"];
+ delete?: never;
+ options?: never;
+ head?: never;
+ patch?: never;
+ trace?: never;
+ };
+ "/api/organizations/{organizationId}/hackathons/{idOrSlug}/judging/recommendation-thresholds": {
+ parameters: {
+ query?: never;
+ header?: never;
+ path?: never;
+ cookie?: never;
+ };
+ /** List recommendation thresholds */
+ get: operations["OrganizationHackathonsJudgingController_listRecommendationThresholds"];
+ /**
+ * Set a recommendation threshold (overall or per-track)
+ * @description Creates or updates the top-X% threshold for a scope. Omit trackId for the overall cut.
+ */
+ put: operations["OrganizationHackathonsJudgingController_setRecommendationThreshold"];
+ post?: never;
+ delete?: never;
+ options?: never;
+ head?: never;
+ patch?: never;
+ trace?: never;
+ };
+ "/api/organizations/{organizationId}/hackathons/{idOrSlug}/judging/recommendation-thresholds/{thresholdId}": {
+ parameters: {
+ query?: never;
+ header?: never;
+ path?: never;
+ cookie?: never;
+ };
+ get?: never;
+ put?: never;
+ post?: never;
+ /** Delete a recommendation threshold */
+ delete: operations["OrganizationHackathonsJudgingController_deleteRecommendationThreshold"];
+ options?: never;
+ head?: never;
+ patch?: never;
+ trace?: never;
+ };
+ "/api/organizations/{organizationId}/hackathons/{idOrSlug}/judging/recommendation-thresholds/compute": {
+ parameters: {
+ query?: never;
+ header?: never;
+ path?: never;
+ cookie?: never;
+ };
+ get?: never;
+ put?: never;
+ /**
+ * Recompute recommended flags from the configured thresholds
+ * @description Stamps recommendedOverall on submissions and recommended on track entries by the current aggregated scores. Advisory only.
+ */
+ post: operations["OrganizationHackathonsJudgingController_computeRecommendations"];
+ delete?: never;
+ options?: never;
+ head?: never;
+ patch?: never;
+ trace?: never;
+ };
+ "/api/organizations/{organizationId}/hackathons/{idOrSlug}/judging/submissions/{submissionId}/ai-score": {
+ parameters: {
+ query?: never;
+ header?: never;
+ path?: never;
+ cookie?: never;
+ };
+ get?: never;
+ put?: never;
+ /**
+ * Run AI Judging Assist on a submission (advisory)
+ * @description Generates an advisory scorecard against the rubric (per-prize criteria override the hackathon criteria via ?prizeId=). Stored as an AI_ASSIST score, excluded from ranking until promoted.
+ */
+ post: operations["OrganizationHackathonsJudgingController_aiScoreSubmission"];
+ delete?: never;
+ options?: never;
+ head?: never;
+ patch?: never;
+ trace?: never;
+ };
+ "/api/organizations/{organizationId}/hackathons/{idOrSlug}/judging/ai-scorecards": {
+ parameters: {
+ query?: never;
+ header?: never;
+ path?: never;
+ cookie?: never;
+ };
+ /**
+ * List AI Judging Assist scorecards (advisory)
+ * @description Returns the stored advisory AI scorecards for this hackathon. These do not count toward ranking until promoted.
+ */
+ get: operations["OrganizationHackathonsJudgingController_aiScorecards"];
+ put?: never;
+ post?: never;
+ delete?: never;
+ options?: never;
+ head?: never;
+ patch?: never;
+ trace?: never;
+ };
+ "/api/organizations/{organizationId}/hackathons/{idOrSlug}/judging/submissions/{submissionId}/ai-score/promote": {
+ parameters: {
+ query?: never;
+ header?: never;
+ path?: never;
+ cookie?: never;
+ };
+ get?: never;
+ put?: never;
+ /**
+ * Promote an AI scorecard into a counting score
+ * @description Rosters the AI as a judge and flips the scorecard off AI_ASSIST so it counts toward ranking. Reversible. The AI judge is excluded from the expected-judge count.
+ */
+ post: operations["OrganizationHackathonsJudgingController_promoteAiScore"];
+ delete?: never;
+ options?: never;
+ head?: never;
+ patch?: never;
+ trace?: never;
+ };
+ "/api/organizations/{organizationId}/hackathons/{idOrSlug}/judging/submissions/{submissionId}/ai-score/unpromote": {
+ parameters: {
+ query?: never;
+ header?: never;
+ path?: never;
+ cookie?: never;
+ };
+ get?: never;
+ put?: never;
+ /** Reverse a promotion (back to advisory-only) */
+ post: operations["OrganizationHackathonsJudgingController_unpromoteAiScore"];
+ delete?: never;
+ options?: never;
+ head?: never;
+ patch?: never;
+ trace?: never;
+ };
+ "/api/judge/invitations": {
+ parameters: {
+ query?: never;
+ header?: never;
+ path?: never;
+ cookie?: never;
+ };
+ /**
+ * List my pending judge invitations
+ * @description Returns pending, non-expired invitations sent to the authenticated user's email.
+ */
+ get: operations["JudgeController_myInvitations"];
+ put?: never;
+ post?: never;
+ delete?: never;
+ options?: never;
+ head?: never;
+ patch?: never;
+ trace?: never;
+ };
+ "/api/judge/invitations/{token}": {
+ parameters: {
+ query?: never;
+ header?: never;
+ path?: never;
+ cookie?: never;
+ };
+ /**
+ * Preview an invitation by token
+ * @description Public endpoint so an invitee can see who invited them and which hackathon before signing in. Reveals only the invitation summary — never anything that requires auth.
+ */
+ get: operations["JudgeController_previewInvitation"];
+ put?: never;
+ post?: never;
+ delete?: never;
+ options?: never;
+ head?: never;
+ patch?: never;
+ trace?: never;
+ };
+ "/api/judge/invitations/{token}/accept": {
+ parameters: {
+ query?: never;
+ header?: never;
+ path?: never;
+ cookie?: never;
+ };
+ get?: never;
+ put?: never;
+ /**
+ * Accept a judge invitation
+ * @description Creates the HackathonJudge assignment. The authenticated user is NOT added to the hosting organization — judge access is hackathon-scoped only.
+ */
+ post: operations["JudgeController_acceptInvitation"];
+ delete?: never;
+ options?: never;
+ head?: never;
+ patch?: never;
+ trace?: never;
+ };
+ "/api/judge/invitations/{token}/decline": {
+ parameters: {
+ query?: never;
+ header?: never;
+ path?: never;
+ cookie?: never;
+ };
+ get?: never;
+ put?: never;
+ /** Decline a judge invitation */
+ post: operations["JudgeController_declineInvitation"];
+ delete?: never;
+ options?: never;
+ head?: never;
+ patch?: never;
+ trace?: never;
+ };
+ "/api/judge/hackathons": {
+ parameters: {
+ query?: never;
+ header?: never;
+ path?: never;
+ cookie?: never;
+ };
+ /**
+ * List hackathons I'm assigned to judge
+ * @description Returns all hackathons where the authenticated user has an active judge assignment.
+ */
+ get: operations["JudgeController_myHackathons"];
+ put?: never;
+ post?: never;
+ delete?: never;
+ options?: never;
+ head?: never;
+ patch?: never;
+ trace?: never;
+ };
+ "/api/judge/hackathons/{hackathonId}": {
+ parameters: {
+ query?: never;
+ header?: never;
+ path?: never;
+ cookie?: never;
+ };
+ /**
+ * Get judge-scoped hackathon overview
+ * @description Returns hackathon overview tailored to a judge: dates, criteria, my progress. Never includes peer signals or organization-management data.
+ */
+ get: operations["JudgeController_overview"];
+ put?: never;
+ post?: never;
+ delete?: never;
+ options?: never;
+ head?: never;
+ patch?: never;
+ trace?: never;
+ };
+ "/api/judge/hackathons/{hackathonId}/submissions": {
+ parameters: {
+ query?: never;
+ header?: never;
+ path?: never;
+ cookie?: never;
+ };
+ /**
+ * List submissions for scoring
+ * @description Returns shortlisted submissions with only the calling judge's own scores. Peer-derived signals (averageScore, judgeCount) are intentionally omitted to preserve blind scoring.
+ */
+ get: operations["JudgeController_submissions"];
+ put?: never;
+ post?: never;
+ delete?: never;
+ options?: never;
+ head?: never;
+ patch?: never;
+ trace?: never;
+ };
+ "/api/judge/hackathons/{hackathonId}/submissions/{submissionId}": {
+ parameters: {
+ query?: never;
+ header?: never;
+ path?: never;
+ cookie?: never;
+ };
+ /**
+ * Get one submission with my score
+ * @description Returns a single submission plus the calling judge's own score (if any). Peer scores remain hidden until results are published.
+ */
+ get: operations["JudgeController_submission"];
+ put?: never;
+ post?: never;
+ delete?: never;
+ options?: never;
+ head?: never;
+ patch?: never;
+ trace?: never;
+ };
+ "/api/judge/hackathons/{hackathonId}/submissions/{submissionId}/neighbors": {
+ parameters: {
+ query?: never;
+ header?: never;
+ path?: never;
+ cookie?: never;
+ };
+ /**
+ * Queue neighbors for the scoring page
+ * @description Returns the previous and next submissions in the canonical queue, plus the next unscored one (wrapping to the start if needed), plus totals. Single round trip so the scoring page can render "X of N" and auto-advance without fetching the full queue.
+ */
+ get: operations["JudgeController_neighbors"];
+ put?: never;
+ post?: never;
+ delete?: never;
+ options?: never;
+ head?: never;
+ patch?: never;
+ trace?: never;
+ };
+ "/api/judge/hackathons/{hackathonId}/criteria": {
+ parameters: {
+ query?: never;
+ header?: never;
+ path?: never;
+ cookie?: never;
+ };
+ /** Get judging criteria for this hackathon */
+ get: operations["JudgeController_criteria"];
+ put?: never;
+ post?: never;
+ delete?: never;
+ options?: never;
+ head?: never;
+ patch?: never;
+ trace?: never;
+ };
+ "/api/judge/hackathons/{hackathonId}/results": {
+ parameters: {
+ query?: never;
+ header?: never;
+ path?: never;
+ cookie?: never;
+ };
+ /**
+ * Final results for this hackathon
+ * @description Returns the published ranking. Returns `{ resultsPublished: false, results: [] }` until the organizer publishes — never leaks scores prematurely.
+ */
+ get: operations["JudgeController_results"];
+ put?: never;
+ post?: never;
+ delete?: never;
+ options?: never;
+ head?: never;
+ patch?: never;
+ trace?: never;
+ };
+ "/api/judge/hackathons/{hackathonId}/submissions/{submissionId}/score": {
+ parameters: {
+ query?: never;
+ header?: never;
+ path?: never;
+ cookie?: never;
+ };
+ get?: never;
+ put?: never;
+ /**
+ * Submit (or update) my scores for a submission
+ * @description Upserts the calling judge's scores for the given submission. Rubric validation and the judging window are enforced by the underlying service.
+ */
+ post: operations["JudgeController_score"];
+ delete?: never;
+ options?: never;
+ head?: never;
+ patch?: never;
+ trace?: never;
+ };
+ "/api/judge/hackathons/{hackathonId}/submissions/{submissionId}/ai-score": {
+ parameters: {
+ query?: never;
+ header?: never;
+ path?: never;
+ cookie?: never;
+ };
+ /**
+ * AI advisory scorecard for a submission (judge view)
+ * @description Returns the AI scorecard for the submission if one has been generated, else null. Advisory only; it never replaces the judge’s own score.
+ */
+ get: operations["JudgeController_aiScorecard"];
+ put?: never;
+ /**
+ * Run AI scoring for a submission (judge assist)
+ * @description Generates (or regenerates) the advisory AI scorecard against the rubric. Advisory only; the judge still enters and submits their own score.
+ */
+ post: operations["JudgeController_runAiScore"];
+ delete?: never;
+ options?: never;
+ head?: never;
+ patch?: never;
+ trace?: never;
+ };
+ "/api/organizations/{organizationId}/hackathons/{id}/statistics": {
+ parameters: {
+ query?: never;
+ header?: never;
+ path?: never;
+ cookie?: never;
+ };
+ /**
+ * Get hackathon statistics (organizers only)
+ * @description Retrieves participation and engagement statistics for a hackathon. Only organizers of the hackathon can access this.
+ */
+ get: operations["OrganizationHackathonsUpdatesController_getHackathonStatistics"];
+ put?: never;
+ post?: never;
+ delete?: never;
+ options?: never;
+ head?: never;
+ patch?: never;
+ trace?: never;
+ };
+ "/api/organizations/{organizationId}/hackathons/{id}/content": {
+ parameters: {
+ query?: never;
+ header?: never;
+ path?: never;
+ cookie?: never;
+ };
+ get?: never;
+ put?: never;
+ post?: never;
+ delete?: never;
+ options?: never;
+ head?: never;
+ /**
+ * Update published hackathon content
+ * @description Updates published hackathon information and/or collaboration data.
+ */
+ patch: operations["OrganizationHackathonsUpdatesController_updatePublishedContent"];
+ trace?: never;
+ };
+ "/api/organizations/{organizationId}/hackathons/{id}/schedule": {
+ parameters: {
+ query?: never;
+ header?: never;
+ path?: never;
+ cookie?: never;
+ };
+ get?: never;
+ put?: never;
+ post?: never;
+ delete?: never;
+ options?: never;
+ head?: never;
+ /**
+ * Update published hackathon schedule
+ * @description Updates published hackathon timeline and/or participation settings.
+ */
+ patch: operations["OrganizationHackathonsUpdatesController_updatePublishedSchedule"];
+ trace?: never;
+ };
+ "/api/organizations/{organizationId}/hackathons/{id}/financial": {
+ parameters: {
+ query?: never;
+ header?: never;
+ path?: never;
+ cookie?: never;
+ };
+ get?: never;
+ put?: never;
+ post?: never;
+ delete?: never;
+ options?: never;
+ head?: never;
+ /**
+ * Update published hackathon financial settings
+ * @description Updates published hackathon rewards data with escrow safety checks.
+ */
+ patch: operations["OrganizationHackathonsUpdatesController_updatePublishedFinancial"];
+ trace?: never;
+ };
+ "/api/organizations/{organizationId}/hackathons/{id}/financial/preview": {
+ parameters: {
+ query?: never;
+ header?: never;
+ path?: never;
+ cookie?: never;
+ };
+ get?: never;
+ put?: never;
+ /**
+ * Preview financial update cost (dry-run)
+ * @description Calculates the exact USDC cost of a proposed reward update without
+ * making any changes to escrow state or the wallet.
+ *
+ * Returns a per-tier breakdown plus the total additional funding required,
+ * the current wallet balance, and whether the balance is sufficient.
+ *
+ * Call this **before** `PATCH /financial` to power a confirmation step in
+ * the UI and avoid surprising the organizer with an insufficient-balance error.
+ */
+ post: operations["OrganizationHackathonsUpdatesController_previewPublishedFinancial"];
+ delete?: never;
+ options?: never;
+ head?: never;
+ patch?: never;
+ trace?: never;
+ };
+ "/api/organizations/{organizationId}/hackathons/{id}/advanced-settings": {
+ parameters: {
+ query?: never;
+ header?: never;
+ path?: never;
+ cookie?: never;
+ };
+ get?: never;
+ put?: never;
+ post?: never;
+ delete?: never;
+ options?: never;
+ head?: never;
+ /**
+ * Update published hackathon advanced settings
+ * @description Updates published hackathon advanced settings in metadata for frontend behavior controls.
+ */
+ patch: operations["OrganizationHackathonsUpdatesController_updatePublishedAdvancedSettings"];
+ trace?: never;
+ };
+ "/api/organizations/{organizationId}/hackathons/{id}/access": {
+ parameters: {
+ query?: never;
+ header?: never;
+ path?: never;
+ cookie?: never;
+ };
+ get?: never;
+ put?: never;
+ post?: never;
+ delete?: never;
+ options?: never;
+ head?: never;
+ /**
+ * Set hackathon visibility + access password (owner/admin)
+ * @description PUBLIC lists the hackathon and opens the page to everyone. PRIVATE hides it from listings and gates the page behind a password.
+ */
+ patch: operations["OrganizationHackathonsUpdatesController_setHackathonAccess"];
+ trace?: never;
+ };
+ "/api/organizations/{organizationId}/hackathons/{id}/export": {
+ parameters: {
+ query?: never;
+ header?: never;
+ path?: never;
+ cookie?: never;
+ };
+ /**
+ * Export hackathon data (organizer only)
+ * @description Export hackathon data as a **CSV** or a **branded PDF**.
+ *
+ * **CSV** — A multi-section spreadsheet-compatible file with UTF-8 BOM for
+ * Excel compatibility. Sections: Overview, Prize Tiers, Participants, Submissions, Winners, Judging.
+ *
+ * **PDF** — A professionally branded Boundless report including cover header,
+ * key-metric stat cards, and data tables. Dark brand palette with mint accent.
+ *
+ * Use the `dataset` param to limit which sections are included.
+ *
+ * > Only hackathon organizers (organization managers) can use this endpoint.
+ */
+ get: operations["OrganizationHackathonsExportController_exportHackathon"];
+ put?: never;
+ post?: never;
+ delete?: never;
+ options?: never;
+ head?: never;
+ patch?: never;
+ trace?: never;
+ };
+ "/api/organizations/{organizationId}/hackathons/{hackathonId}/partners/invite": {
+ parameters: {
+ query?: never;
+ header?: never;
+ path?: never;
+ cookie?: never;
+ };
+ get?: never;
+ put?: never;
+ /** Invite a partner to contribute to the hackathon prize pool */
+ post: operations["OrganizationHackathonsPartnersController_invite"];
+ delete?: never;
+ options?: never;
+ head?: never;
+ patch?: never;
+ trace?: never;
+ };
+ "/api/organizations/{organizationId}/hackathons/{hackathonId}/partners/contributions": {
+ parameters: {
+ query?: never;
+ header?: never;
+ path?: never;
+ cookie?: never;
+ };
+ /** List partner contributions for a hackathon */
+ get: operations["OrganizationHackathonsPartnersController_list"];
+ put?: never;
+ post?: never;
+ delete?: never;
+ options?: never;
+ head?: never;
+ patch?: never;
+ trace?: never;
+ };
+ "/api/organizations/{organizationId}/hackathons/{hackathonId}/partners/contributions/{contributionId}": {
+ parameters: {
+ query?: never;
+ header?: never;
+ path?: never;
+ cookie?: never;
+ };
+ get?: never;
+ put?: never;
+ post?: never;
+ /** Cancel a pending partner invitation */
+ delete: operations["OrganizationHackathonsPartnersController_cancel"];
+ options?: never;
+ head?: never;
+ patch?: never;
+ trace?: never;
+ };
+ "/api/organizations/{organizationId}/hackathons/{hackathonId}/partners/contributions/{contributionId}/allocations": {
+ parameters: {
+ query?: never;
+ header?: never;
+ path?: never;
+ cookie?: never;
+ };
+ /**
+ * Get allocation summary for a contribution
+ * @description Returns the pledged amount, allocatable (after platform fee), already allocated, remaining unallocated, and the list of individual allocations.
+ */
+ get: operations["OrganizationHackathonsPartnersController_getAllocations"];
+ put?: never;
+ post?: never;
+ delete?: never;
+ options?: never;
+ head?: never;
+ patch?: never;
+ trace?: never;
+ };
+ "/api/organizations/{organizationId}/hackathons/{hackathonId}/partners/contributions/{contributionId}/allocate": {
+ parameters: {
+ query?: never;
+ header?: never;
+ path?: never;
+ cookie?: never;
+ };
+ get?: never;
+ put?: never;
+ /**
+ * Allocate a partner contribution into prize tiers
+ * @description Distributes the contribution amount into one or more prize tiers — either inflating existing tiers or creating new ones. The sum of allocations cannot exceed the remaining allocatable amount.
+ */
+ post: operations["OrganizationHackathonsPartnersController_allocate"];
+ delete?: never;
+ options?: never;
+ head?: never;
+ patch?: never;
+ trace?: never;
+ };
+ "/api/organizations/{organizationId}/hackathons/{hackathonId}/partners/prizes": {
+ parameters: {
+ query?: never;
+ header?: never;
+ path?: never;
+ cookie?: never;
+ };
+ /**
+ * List prizes + placements available for allocation
+ * @description Returns the hackathon prizes with their placements (the fundable slots) so partner money can be allocated to a specific placement.
+ */
+ get: operations["OrganizationHackathonsPartnersController_prizes"];
+ put?: never;
+ post?: never;
+ delete?: never;
+ options?: never;
+ head?: never;
+ patch?: never;
+ trace?: never;
+ };
+ "/api/organizations/{organizationId}/hackathons/{hackathonId}/partners/allocations/{allocationId}": {
+ parameters: {
+ query?: never;
+ header?: never;
+ path?: never;
+ cookie?: never;
+ };
+ get?: never;
+ put?: never;
+ post?: never;
+ /**
+ * Undo a single allocation
+ * @description Reverses an allocation, decrementing the prize tier amount and removing the tier if it was created by the allocation and no longer has any remaining amount.
+ */
+ delete: operations["OrganizationHackathonsPartnersController_undoAllocation"];
+ options?: never;
+ head?: never;
+ patch?: never;
+ trace?: never;
+ };
+ "/api/partners/contribute/{token}": {
+ parameters: {
+ query?: never;
+ header?: never;
+ path?: never;
+ cookie?: never;
+ };
+ /** Get partner invitation details by token (public, tokenized) */
+ get: operations["PartnersContributeController_getByToken"];
+ put?: never;
+ post?: never;
+ delete?: never;
+ options?: never;
+ head?: never;
+ patch?: never;
+ trace?: never;
+ };
+ "/api/partners/contribute/{token}/prepare-fund-tx": {
+ parameters: {
+ query?: never;
+ header?: never;
+ path?: never;
+ cookie?: never;
+ };
+ get?: never;
+ put?: never;
+ /**
+ * Build an unsigned ADD_FUNDS escrow transaction
+ * @description Validates the contribution window and on-chain readiness, begins an ADD_FUNDS op on the boundless-events contract, links it to the contribution, and returns the unsigned XDR (plus the op row id) for the partner wallet to sign locally.
+ */
+ post: operations["PartnersContributeController_prepareFundTx"];
+ delete?: never;
+ options?: never;
+ head?: never;
+ patch?: never;
+ trace?: never;
+ };
+ "/api/partners/contribute/{token}/submit-tx": {
+ parameters: {
+ query?: never;
+ header?: never;
+ path?: never;
+ cookie?: never;
+ };
+ get?: never;
+ put?: never;
+ /**
+ * Submit a partner-signed ADD_FUNDS transaction
+ * @description Submits the signed XDR through the escrow orchestrator. The op settles asynchronously; the contribution is confirmed by the hackathon escrow subscriber once ADD_FUNDS settles on-chain.
+ */
+ post: operations["PartnersContributeController_submitTx"];
+ delete?: never;
+ options?: never;
+ head?: never;
+ patch?: never;
+ trace?: never;
+ };
+ "/api/hackathons/{idOrSlug}/tracks": {
+ parameters: {
+ query?: never;
+ header?: never;
+ path?: never;
+ cookie?: never;
+ };
+ /**
+ * List hackathon tracks
+ * @description Returns the public list of tracks for a hackathon. Archived tracks are hidden by default; pass includeArchived=true to see them (useful for organizer dashboards).
+ */
+ get: operations["HackathonsTracksController_listTracks"];
+ put?: never;
+ post?: never;
+ delete?: never;
+ options?: never;
+ head?: never;
+ patch?: never;
+ trace?: never;
+ };
+ "/api/hackathons/{idOrSlug}/custom-questions": {
+ parameters: {
+ query?: never;
+ header?: never;
+ path?: never;
+ cookie?: never;
+ };
+ /**
+ * List public custom questions
+ * @description Returns a hackathon's custom questions for the public forms. Filter with ?scope=SUBMISSION|REGISTRATION (the submission form passes SUBMISSION).
+ */
+ get: operations["HackathonsCustomQuestionsController_list"];
+ put?: never;
+ post?: never;
+ delete?: never;
+ options?: never;
+ head?: never;
+ patch?: never;
+ trace?: never;
+ };
+ "/api/organizations/{organizationId}/hackathons/{id}/tracks": {
+ parameters: {
+ query?: never;
+ header?: never;
+ path?: never;
+ cookie?: never;
+ };
+ /**
+ * List tracks (organizer view)
+ * @description Returns the full set of tracks for this hackathon, including archived ones by default. Use ?includeArchived=false to hide them.
+ */
+ get: operations["OrganizationHackathonsTracksController_list"];
+ put?: never;
+ /** Create a track */
+ post: operations["OrganizationHackathonsTracksController_create"];
+ delete?: never;
+ options?: never;
+ head?: never;
+ patch?: never;
+ trace?: never;
+ };
+ "/api/organizations/{organizationId}/hackathons/{id}/tracks/config": {
+ parameters: {
+ query?: never;
+ header?: never;
+ path?: never;
+ cookie?: never;
+ };
+ get?: never;
+ put?: never;
+ post?: never;
+ delete?: never;
+ options?: never;
+ head?: never;
+ /**
+ * Update hackathon-level track config
+ * @description Sets track settings stored on the hackathon (e.g. max tracks per submission), distinct from per-track CRUD. Declared before :trackId so the static path wins.
+ */
+ patch: operations["OrganizationHackathonsTracksController_updateConfig"];
+ trace?: never;
+ };
+ "/api/organizations/{organizationId}/hackathons/{id}/tracks/{trackId}": {
+ parameters: {
+ query?: never;
+ header?: never;
+ path?: never;
+ cookie?: never;
+ };
+ get?: never;
+ put?: never;
+ post?: never;
+ /**
+ * Delete a track
+ * @description Hard-deletes the track if no submissions are entered. If submissions have already opted in, archives the track instead (preserves history).
+ */
+ delete: operations["OrganizationHackathonsTracksController_remove"];
+ options?: never;
+ head?: never;
+ /** Update a track */
+ patch: operations["OrganizationHackathonsTracksController_update"];
+ trace?: never;
+ };
+ "/api/organizations/{organizationId}/hackathons/{id}/tracks/{trackId}/bulk-opt-in": {
+ parameters: {
+ query?: never;
+ header?: never;
+ path?: never;
+ cookie?: never;
+ };
+ get?: never;
+ put?: never;
+ /**
+ * Opt in every existing submission into this track
+ * @description Retrofit tool for hackathons where tracks were added after submissions exist. Inserts a SubmissionTrackEntry for every non-disqualified submission. Idempotent. Auto-bumps `tracksMaxPerSubmission` if needed so submitters can still edit their submissions afterwards.
+ */
+ post: operations["OrganizationHackathonsTracksController_bulkOptIn"];
+ delete?: never;
+ options?: never;
+ head?: never;
+ patch?: never;
+ trace?: never;
+ };
+ "/api/organizations/{organizationId}/hackathons/{id}/custom-questions": {
+ parameters: {
+ query?: never;
+ header?: never;
+ path?: never;
+ cookie?: never;
+ };
+ /**
+ * List custom questions (organizer view)
+ * @description Returns the full question set for this hackathon. Filter to one scope with ?scope=REGISTRATION|SUBMISSION.
+ */
+ get: operations["OrganizationHackathonsCustomQuestionsController_list"];
+ /**
+ * Replace the full custom-question set
+ * @description Delete-and-recreate: the submitted array becomes the complete question set across both scopes.
+ */
+ put: operations["OrganizationHackathonsCustomQuestionsController_replace"];
+ post?: never;
+ delete?: never;
+ options?: never;
+ head?: never;
+ patch?: never;
+ trace?: never;
+ };
+ "/api/organizations/{organizationId}/hackathons/{id}/escrow/funding-otp/request": {
+ parameters: {
+ query?: never;
+ header?: never;
+ path?: never;
+ cookie?: never;
+ };
+ get?: never;
+ put?: never;
+ /**
+ * Request a funding step-up code
+ * @description Emails a one-time code the organizer must verify before funding. Reports required=false when step-up is disabled, or alreadyVerified=true when a recent verification still authorizes funding.
+ */
+ post: operations["OrganizationHackathonsEscrowController_requestFundingOtp"];
+ delete?: never;
+ options?: never;
+ head?: never;
+ patch?: never;
+ trace?: never;
+ };
+ "/api/organizations/{organizationId}/hackathons/{id}/escrow/funding-otp/verify": {
+ parameters: {
+ query?: never;
+ header?: never;
+ path?: never;
+ cookie?: never;
+ };
+ get?: never;
+ put?: never;
+ /**
+ * Verify a funding step-up code
+ * @description Verifies the emailed code and authorizes funding for a short window. Wrong or expired codes return 400; attempts are capped.
+ */
+ post: operations["OrganizationHackathonsEscrowController_verifyFundingOtp"];
+ delete?: never;
+ options?: never;
+ head?: never;
+ patch?: never;
+ trace?: never;
+ };
+ "/api/organizations/{organizationId}/hackathons/{id}/escrow/publish": {
+ parameters: {
+ query?: never;
+ header?: never;
+ path?: never;
+ cookie?: never;
+ };
+ get?: never;
+ put?: never;
+ /**
+ * Publish a hackathon draft to the events contract
+ * @description Validates the draft, transitions it to DRAFT_AWAITING_FUNDING, and returns an unsigned XDR transaction for the organizer to sign. After signing, post the result back to /escrow/ops/:opRowId/submit-signed. Requires a verified funding step-up when FUNDING_OTP_ENABLED is on.
+ */
+ post: operations["OrganizationHackathonsEscrowController_publish"];
+ delete?: never;
+ options?: never;
+ head?: never;
+ patch?: never;
+ trace?: never;
+ };
+ "/api/organizations/{organizationId}/hackathons/{id}/escrow/cancel": {
+ parameters: {
+ query?: never;
+ header?: never;
+ path?: never;
+ cookie?: never;
+ };
+ get?: never;
+ put?: never;
+ /**
+ * Cancel an active hackathon
+ * @description Builds a cancel_event contract op. The contract refunds partner contributions first then the owner residual. On settle, the subscriber transitions the hackathon to CANCELLED and stamps the cancel audit columns.
+ */
+ post: operations["OrganizationHackathonsEscrowController_cancel"];
+ delete?: never;
+ options?: never;
+ head?: never;
+ patch?: never;
+ trace?: never;
+ };
+ "/api/organizations/{organizationId}/hackathons/{id}/escrow/select-winners": {
+ parameters: {
+ query?: never;
+ header?: never;
+ path?: never;
+ cookie?: never;
+ };
+ get?: never;
+ put?: never;
+ /**
+ * Select winners for a hackathon
+ * @description Builds a select_winners contract op that pays out per the on-chain winner_distribution and bumps each winner's profile credits / reputation / earnings. On settle, the subscriber moves the hackathon to COMPLETED and sets rank on the winning HackathonSubmission rows.
+ */
+ post: operations["OrganizationHackathonsEscrowController_selectWinners"];
+ delete?: never;
+ options?: never;
+ head?: never;
+ patch?: never;
+ trace?: never;
+ };
+ "/api/organizations/{organizationId}/hackathons/{id}/escrow/ops/{opRowId}/submit-signed": {
+ parameters: {
+ query?: never;
+ header?: never;
+ path?: never;
+ cookie?: never;
+ };
+ get?: never;
+ put?: never;
+ /**
+ * Submit signed XDR for a previously-built escrow op
+ * @description Accepts the signed XDR returned by the wallet and posts it to Soroban RPC. Returns the op in PENDING_CONFIRM; the reconciliation worker drives the final transition to COMPLETED or FAILED.
+ */
+ post: operations["OrganizationHackathonsEscrowController_submitSigned"];
+ delete?: never;
+ options?: never;
+ head?: never;
+ patch?: never;
+ trace?: never;
+ };
+ "/api/organizations/{organizationId}/hackathons/{id}/escrow/ops/{opRowId}": {
+ parameters: {
+ query?: never;
+ header?: never;
+ path?: never;
+ cookie?: never;
+ };
+ /**
+ * Read the current state of an escrow op
+ * @description Polled by the webapp while waiting for the reconciliation worker to mark the op COMPLETED or FAILED.
+ */
+ get: operations["OrganizationHackathonsEscrowController_getOp"];
+ put?: never;
+ post?: never;
+ delete?: never;
+ options?: never;
+ head?: never;
+ patch?: never;
+ trace?: never;
+ };
+ "/api/organizations/{organizationId}/hackathons/{id}/escrow/reset-to-draft": {
+ parameters: {
+ query?: never;
+ header?: never;
+ path?: never;
+ cookie?: never;
+ };
+ get?: never;
+ put?: never;
+ /**
+ * Reset a stranded hackathon back to DRAFT
+ * @description Recovers a hackathon stuck in DRAFT_AWAITING_FUNDING (e.g. a failed managed sign/submit) back to DRAFT so the organizer can fix the cause and republish. Refuses while the publish op may still settle on-chain.
+ */
+ post: operations["OrganizationHackathonsEscrowController_resetToDraft"];
+ delete?: never;
+ options?: never;
+ head?: never;
+ patch?: never;
+ trace?: never;
+ };
+ "/api/hackathons/{id}/escrow/submissions/{submissionId}/submit": {
+ parameters: {
+ query?: never;
+ header?: never;
+ path?: never;
+ cookie?: never;
+ };
+ get?: never;
+ put?: never;
+ /**
+ * Anchor a hackathon submission on chain
+ * @description Builds the contract's submit op for an existing HackathonSubmission row. Hackathon has no prior-apply requirement; the contract simply stores the submission anchor with content_uri + submitted_at.
+ */
+ post: operations["HackathonParticipantEscrowController_submit"];
+ delete?: never;
+ options?: never;
+ head?: never;
+ patch?: never;
+ trace?: never;
+ };
+ "/api/hackathons/{id}/escrow/submissions/{submissionId}/withdraw": {
+ parameters: {
+ query?: never;
+ header?: never;
+ path?: never;
+ cookie?: never;
+ };
+ get?: never;
+ put?: never;
+ /** Withdraw a hackathon submission anchor */
+ post: operations["HackathonParticipantEscrowController_withdrawSubmission"];
+ delete?: never;
+ options?: never;
+ head?: never;
+ patch?: never;
+ trace?: never;
+ };
+ "/api/hackathons/{id}/escrow/contribute": {
+ parameters: {
+ query?: never;
+ header?: never;
+ path?: never;
+ cookie?: never;
+ };
+ get?: never;
+ put?: never;
+ /**
+ * Contribute funds to a hackathon pool
+ * @description Builds an add_funds contract op signed by the caller. Contract enforces a 10 USDC minimum. Anyone authenticated can contribute; multiple top-ups from the same wallet are allowed (one row per attempt).
+ */
+ post: operations["HackathonParticipantEscrowController_contribute"];
+ delete?: never;
+ options?: never;
+ head?: never;
+ patch?: never;
+ trace?: never;
+ };
+ "/api/hackathons/{id}/escrow/ops/{opRowId}/submit-signed": {
+ parameters: {
+ query?: never;
+ header?: never;
+ path?: never;
+ cookie?: never;
+ };
+ get?: never;
+ put?: never;
+ /** Submit signed XDR for a participant op */
+ post: operations["HackathonParticipantEscrowController_submitSigned"];
+ delete?: never;
+ options?: never;
+ head?: never;
+ patch?: never;
+ trace?: never;
+ };
+ "/api/hackathons/{id}/escrow/ops/{opRowId}": {
+ parameters: {
+ query?: never;
+ header?: never;
+ path?: never;
+ cookie?: never;
+ };
+ /** Read the state of a participant op */
+ get: operations["HackathonParticipantEscrowController_getOp"];
+ put?: never;
+ post?: never;
+ delete?: never;
+ options?: never;
+ head?: never;
+ patch?: never;
+ trace?: never;
+ };
+ "/api/organizations": {
+ parameters: {
+ query?: never;
+ header?: never;
+ path?: never;
+ cookie?: never;
+ };
+ get: operations["OrganizationsController_getOrganizations"];
+ put?: never;
+ post: operations["OrganizationsController_createOrganization"];
+ delete?: never;
+ options?: never;
+ head?: never;
+ patch?: never;
+ trace?: never;
+ };
+ "/api/organizations/my": {
+ parameters: {
+ query?: never;
+ header?: never;
+ path?: never;
+ cookie?: never;
+ };
+ get: operations["OrganizationsController_getMyOrganizations"];
+ put?: never;
+ post?: never;
+ delete?: never;
+ options?: never;
+ head?: never;
+ patch?: never;
+ trace?: never;
+ };
+ "/api/organizations/profile/{idOrSlug}": {
+ parameters: {
+ query?: never;
+ header?: never;
+ path?: never;
+ cookie?: never;
+ };
+ /**
+ * Get organization profile (public)
+ * @description Returns public profile for the organization page: name, logo, description, and key stats. Resolve by organization ID or slug.
+ */
+ get: operations["OrganizationsController_getOrganizationProfile"];
+ put?: never;
+ post?: never;
+ delete?: never;
+ options?: never;
+ head?: never;
+ patch?: never;
+ trace?: never;
+ };
+ "/api/organizations/search": {
+ parameters: {
+ query?: never;
+ header?: never;
+ path?: never;
+ cookie?: never;
+ };
+ /** Search organizations */
+ get: operations["OrganizationsController_searchOrganizations"];
+ put?: never;
+ post?: never;
+ delete?: never;
+ options?: never;
+ head?: never;
+ patch?: never;
+ trace?: never;
+ };
+ "/api/organizations/{id}": {
+ parameters: {
+ query?: never;
+ header?: never;
+ path?: never;
+ cookie?: never;
+ };
+ /**
+ * Get organization by ID
+ * @description Retrieve detailed information about a specific organization
+ */
+ get: operations["OrganizationsController_getOrganization"];
+ put: operations["OrganizationsController_updateOrganization"];
+ post?: never;
+ delete: operations["OrganizationsController_deleteOrganization"];
+ options?: never;
+ head?: never;
+ patch?: never;
+ trace?: never;
+ };
+ "/api/organizations/{id}/members": {
+ parameters: {
+ query?: never;
+ header?: never;
+ path?: never;
+ cookie?: never;
+ };
+ get: operations["OrganizationsController_getOrganizationMembers"];
+ put?: never;
+ post?: never;
+ delete?: never;
+ options?: never;
+ head?: never;
+ patch?: never;
+ trace?: never;
+ };
+ "/api/organizations/{id}/permissions": {
+ parameters: {
+ query?: never;
+ header?: never;
+ path?: never;
+ cookie?: never;
+ };
+ /** Get the org role-permission matrix */
+ get: operations["OrganizationsController_getOrganizationPermissions"];
+ put?: never;
+ post?: never;
+ delete?: never;
+ options?: never;
+ head?: never;
+ /** Update the org role-permission matrix (owner only) */
+ patch: operations["OrganizationsController_updateOrganizationPermissions"];
+ trace?: never;
+ };
+ "/api/organizations/{id}/permissions/reset": {
+ parameters: {
+ query?: never;
+ header?: never;
+ path?: never;
+ cookie?: never;
+ };
+ get?: never;
+ put?: never;
+ /** Reset the org role-permission matrix (owner only) */
+ post: operations["OrganizationsController_resetOrganizationPermissions"];
+ delete?: never;
+ options?: never;
+ head?: never;
+ patch?: never;
+ trace?: never;
+ };
+ "/api/organizations/{id}/stats": {
+ parameters: {
+ query?: never;
+ header?: never;
+ path?: never;
+ cookie?: never;
+ };
+ get: operations["OrganizationsController_getOrganizationStats"];
+ put?: never;
+ post?: never;
+ delete?: never;
+ options?: never;
+ head?: never;
+ patch?: never;
+ trace?: never;
+ };
+ "/api/organizations/{organizationId}/members": {
+ parameters: {
+ query?: never;
+ header?: never;
+ path?: never;
+ cookie?: never;
+ };
+ get: operations["MembersController_getMembers"];
+ put?: never;
+ post?: never;
+ delete?: never;
+ options?: never;
+ head?: never;
+ patch?: never;
+ trace?: never;
+ };
+ "/api/organizations/{organizationId}/members/{userId}": {
+ parameters: {
+ query?: never;
+ header?: never;
+ path?: never;
+ cookie?: never;
+ };
+ get?: never;
+ put?: never;
+ post: operations["MembersController_addMember"];
+ delete: operations["MembersController_removeMember"];
+ options?: never;
+ head?: never;
+ patch?: never;
+ trace?: never;
+ };
+ "/api/organizations/{organizationId}/members/{userId}/role": {
+ parameters: {
+ query?: never;
+ header?: never;
+ path?: never;
+ cookie?: never;
+ };
+ get?: never;
+ put: operations["MembersController_updateMemberRole"];
+ post?: never;
+ delete?: never;
+ options?: never;
+ head?: never;
+ patch?: never;
+ trace?: never;
+ };
+ "/api/organizations/{organizationId}/members/me": {
+ parameters: {
+ query?: never;
+ header?: never;
+ path?: never;
+ cookie?: never;
+ };
+ get: operations["MembersController_getMyMembership"];
+ put?: never;
+ post?: never;
+ delete?: never;
+ options?: never;
+ head?: never;
+ patch?: never;
+ trace?: never;
+ };
+ "/api/organizations/{organizationId}/invitations": {
+ parameters: {
+ query?: never;
+ header?: never;
+ path?: never;
+ cookie?: never;
+ };
+ get: operations["InvitationsController_getInvitations"];
+ put?: never;
+ post: operations["InvitationsController_inviteMember"];
+ delete?: never;
+ options?: never;
+ head?: never;
+ patch?: never;
+ trace?: never;
+ };
+ "/api/organizations/{organizationId}/invitations/{invitationId}/accept": {
+ parameters: {
+ query?: never;
+ header?: never;
+ path?: never;
+ cookie?: never;
+ };
+ get?: never;
+ put?: never;
+ post: operations["InvitationsController_acceptInvitation"];
+ delete?: never;
+ options?: never;
+ head?: never;
+ patch?: never;
+ trace?: never;
+ };
+ "/api/organizations/{organizationId}/invitations/{invitationId}/reject": {
+ parameters: {
+ query?: never;
+ header?: never;
+ path?: never;
+ cookie?: never;
+ };
+ get?: never;
+ put?: never;
+ post: operations["InvitationsController_rejectInvitation"];
+ delete?: never;
+ options?: never;
+ head?: never;
+ patch?: never;
+ trace?: never;
+ };
+ "/api/organizations/{organizationId}/invitations/{invitationId}": {
+ parameters: {
+ query?: never;
+ header?: never;
+ path?: never;
+ cookie?: never;
+ };
+ get?: never;
+ put?: never;
+ post?: never;
+ delete: operations["InvitationsController_cancelInvitation"];
+ options?: never;
+ head?: never;
+ patch?: never;
+ trace?: never;
+ };
+ "/api/organizations/{organizationId}/invitations/my": {
+ parameters: {
+ query?: never;
+ header?: never;
+ path?: never;
+ cookie?: never;
+ };
+ get: operations["InvitationsController_getMyInvitations"];
+ put?: never;
+ post?: never;
+ delete?: never;
+ options?: never;
+ head?: never;
+ patch?: never;
+ trace?: never;
+ };
+ "/api/organizations/{organizationId}/treasury/wallets": {
+ parameters: {
+ query?: never;
+ header?: never;
+ path?: never;
+ cookie?: never;
+ };
+ /** List treasury wallets */
+ get: operations["OrganizationTreasuryController_listWallets"];
+ put?: never;
+ post?: never;
+ delete?: never;
+ options?: never;
+ head?: never;
+ patch?: never;
+ trace?: never;
+ };
+ "/api/organizations/{organizationId}/treasury/wallets/archived": {
+ parameters: {
+ query?: never;
+ header?: never;
+ path?: never;
+ cookie?: never;
+ };
+ /**
+ * List archived treasury wallets
+ * @description Wallets are never deleted, only archived. This returns the archived set so they can be reviewed and restored.
+ */
+ get: operations["OrganizationTreasuryController_listArchivedWallets"];
+ put?: never;
+ post?: never;
+ delete?: never;
+ options?: never;
+ head?: never;
+ patch?: never;
+ trace?: never;
+ };
+ "/api/organizations/{organizationId}/treasury/default-wallet": {
+ parameters: {
+ query?: never;
+ header?: never;
+ path?: never;
+ cookie?: never;
+ };
+ /**
+ * Get (or create) the organization default wallet
+ * @description Returns the org canonical managed wallet, provisioning one if none exists. Owner/admin only (may create). Use this as the funding + contract-auth identity for organization events.
+ */
+ get: operations["OrganizationTreasuryController_getDefaultWallet"];
+ put?: never;
+ post?: never;
+ delete?: never;
+ options?: never;
+ head?: never;
+ patch?: never;
+ trace?: never;
+ };
+ "/api/organizations/{organizationId}/treasury/wallets/managed": {
+ parameters: {
+ query?: never;
+ header?: never;
+ path?: never;
+ cookie?: never;
+ };
+ get?: never;
+ put?: never;
+ /**
+ * Create a Tier 1 managed treasury wallet
+ * @description Provisions a platform-custodial Stellar account (sponsored activation + USDC trustline) owned by the organization. Owner/admin only.
+ */
+ post: operations["OrganizationTreasuryController_createManagedWallet"];
+ delete?: never;
+ options?: never;
+ head?: never;
+ patch?: never;
+ trace?: never;
+ };
+ "/api/organizations/{organizationId}/treasury/wallets/connected": {
+ parameters: {
+ query?: never;
+ header?: never;
+ path?: never;
+ cookie?: never;
+ };
+ get?: never;
+ put?: never;
+ /**
+ * Register a connected (Tier 2/3) wallet
+ * @description Verifies the external account exists + holds a USDC trustline, snapshots its multisig signer set, and records it. Owner/admin only.
+ */
+ post: operations["OrganizationTreasuryController_registerConnectedWallet"];
+ delete?: never;
+ options?: never;
+ head?: never;
+ patch?: never;
+ trace?: never;
+ };
+ "/api/organizations/{organizationId}/treasury/wallets/{walletId}/refresh-signers": {
+ parameters: {
+ query?: never;
+ header?: never;
+ path?: never;
+ cookie?: never;
+ };
+ get?: never;
+ put?: never;
+ /** Re-fetch a connected wallet signer set from Horizon */
+ post: operations["OrganizationTreasuryController_refreshSigners"];
+ delete?: never;
+ options?: never;
+ head?: never;
+ patch?: never;
+ trace?: never;
+ };
+ "/api/organizations/{organizationId}/treasury/wallets/{walletId}": {
+ parameters: {
+ query?: never;
+ header?: never;
+ path?: never;
+ cookie?: never;
+ };
+ get?: never;
+ put?: never;
+ post?: never;
+ delete?: never;
+ options?: never;
+ head?: never;
+ /** Update a wallet label / default flag */
+ patch: operations["OrganizationTreasuryController_updateWallet"];
+ trace?: never;
+ };
+ "/api/organizations/{organizationId}/treasury/wallets/{walletId}/archive": {
+ parameters: {
+ query?: never;
+ header?: never;
+ path?: never;
+ cookie?: never;
+ };
+ get?: never;
+ put?: never;
+ /** Archive a treasury wallet */
+ post: operations["OrganizationTreasuryController_archiveWallet"];
+ delete?: never;
+ options?: never;
+ head?: never;
+ patch?: never;
+ trace?: never;
+ };
+ "/api/organizations/{organizationId}/treasury/wallets/{walletId}/restore": {
+ parameters: {
+ query?: never;
+ header?: never;
+ path?: never;
+ cookie?: never;
+ };
+ get?: never;
+ put?: never;
+ /**
+ * Restore an archived treasury wallet
+ * @description Wallets are never deleted; archiving is always reversible.
+ */
+ post: operations["OrganizationTreasuryController_restoreWallet"];
+ delete?: never;
+ options?: never;
+ head?: never;
+ patch?: never;
+ trace?: never;
+ };
+ "/api/organizations/{organizationId}/treasury/wallets/{walletId}/balance": {
+ parameters: {
+ query?: never;
+ header?: never;
+ path?: never;
+ cookie?: never;
+ };
+ /** Live USDC + XLM balance for a wallet */
+ get: operations["OrganizationTreasuryController_walletBalance"];
+ put?: never;
+ post?: never;
+ delete?: never;
+ options?: never;
+ head?: never;
+ patch?: never;
+ trace?: never;
+ };
+ "/api/organizations/{organizationId}/treasury/policy": {
+ parameters: {
+ query?: never;
+ header?: never;
+ path?: never;
+ cookie?: never;
+ };
+ /** Get the treasury spend policy (defaults if unset) */
+ get: operations["OrganizationTreasuryController_getPolicy"];
+ /** Update the treasury spend policy (owner only) */
+ put: operations["OrganizationTreasuryController_updatePolicy"];
+ post?: never;
+ delete?: never;
+ options?: never;
+ head?: never;
+ patch?: never;
+ trace?: never;
+ };
+ "/api/organizations/{organizationId}/treasury/spend": {
+ parameters: {
+ query?: never;
+ header?: never;
+ path?: never;
+ cookie?: never;
+ };
+ /** List spend requests */
+ get: operations["OrganizationTreasuryController_listSpend"];
+ put?: never;
+ /** Initiate a spend request */
+ post: operations["OrganizationTreasuryController_initiateSpend"];
+ delete?: never;
+ options?: never;
+ head?: never;
+ patch?: never;
+ trace?: never;
+ };
+ "/api/organizations/{organizationId}/treasury/spend/funding-otp/request": {
+ parameters: {
+ query?: never;
+ header?: never;
+ path?: never;
+ cookie?: never;
+ };
+ get?: never;
+ put?: never;
+ /** Request an email verification code before sending funds */
+ post: operations["OrganizationTreasuryController_requestSendOtp"];
+ delete?: never;
+ options?: never;
+ head?: never;
+ patch?: never;
+ trace?: never;
+ };
+ "/api/organizations/{organizationId}/treasury/spend/funding-otp/verify": {
+ parameters: {
+ query?: never;
+ header?: never;
+ path?: never;
+ cookie?: never;
+ };
+ get?: never;
+ put?: never;
+ /** Verify the email code to authorize sending funds */
+ post: operations["OrganizationTreasuryController_verifySendOtp"];
+ delete?: never;
+ options?: never;
+ head?: never;
+ patch?: never;
+ trace?: never;
+ };
+ "/api/organizations/{organizationId}/treasury/spend/send": {
+ parameters: {
+ query?: never;
+ header?: never;
+ path?: never;
+ cookie?: never;
+ };
+ get?: never;
+ put?: never;
+ /**
+ * Send funds from a managed treasury wallet
+ * @description Owner/admin only. When email step-up is enabled, requires a recent verification (see spend/funding-otp/request + verify). Creates, authorizes, and executes the payment in a single call.
+ */
+ post: operations["OrganizationTreasuryController_sendFunds"];
+ delete?: never;
+ options?: never;
+ head?: never;
+ patch?: never;
+ trace?: never;
+ };
+ "/api/organizations/{organizationId}/treasury/spend/destination-readiness": {
+ parameters: {
+ query?: never;
+ header?: never;
+ path?: never;
+ cookie?: never;
+ };
+ /**
+ * Check whether a destination can receive USDC
+ * @description Returns whether the recipient account exists on-chain and has a USDC trustline, so the UI can warn before a send instead of failing on-chain.
+ */
+ get: operations["OrganizationTreasuryController_checkSendDestination"];
+ put?: never;
+ post?: never;
+ delete?: never;
+ options?: never;
+ head?: never;
+ patch?: never;
+ trace?: never;
+ };
+ "/api/organizations/{organizationId}/treasury/spend/{requestId}": {
+ parameters: {
+ query?: never;
+ header?: never;
+ path?: never;
+ cookie?: never;
+ };
+ /** Get a spend request */
+ get: operations["OrganizationTreasuryController_getSpend"];
+ put?: never;
+ post?: never;
+ delete?: never;
+ options?: never;
+ head?: never;
+ patch?: never;
+ trace?: never;
+ };
+ "/api/organizations/{organizationId}/treasury/spend/{requestId}/approve": {
+ parameters: {
+ query?: never;
+ header?: never;
+ path?: never;
+ cookie?: never;
+ };
+ get?: never;
+ put?: never;
+ /** Approve a spend request (owner/admin) */
+ post: operations["OrganizationTreasuryController_approveSpend"];
+ delete?: never;
+ options?: never;
+ head?: never;
+ patch?: never;
+ trace?: never;
+ };
+ "/api/organizations/{organizationId}/treasury/spend/{requestId}/reject": {
+ parameters: {
+ query?: never;
+ header?: never;
+ path?: never;
+ cookie?: never;
+ };
+ get?: never;
+ put?: never;
+ /** Reject a spend request (owner/admin) */
+ post: operations["OrganizationTreasuryController_rejectSpend"];
+ delete?: never;
+ options?: never;
+ head?: never;
+ patch?: never;
+ trace?: never;
+ };
+ "/api/organizations/{organizationId}/treasury/spend/{requestId}/cancel": {
+ parameters: {
+ query?: never;
+ header?: never;
+ path?: never;
+ cookie?: never;
+ };
+ get?: never;
+ put?: never;
+ /** Cancel a spend request (initiator or owner) */
+ post: operations["OrganizationTreasuryController_cancelSpend"];
+ delete?: never;
+ options?: never;
+ head?: never;
+ patch?: never;
+ trace?: never;
+ };
+ "/api/organizations/{organizationId}/treasury/spend/{requestId}/execute": {
+ parameters: {
+ query?: never;
+ header?: never;
+ path?: never;
+ cookie?: never;
+ };
+ get?: never;
+ put?: never;
+ /**
+ * Execute an approved spend on-chain (managed wallets)
+ * @description For a managed source wallet, signs + submits a USDC payment to the destination server-side. Owner/admin only.
+ */
+ post: operations["OrganizationTreasuryController_executeSpend"];
+ delete?: never;
+ options?: never;
+ head?: never;
+ patch?: never;
+ trace?: never;
+ };
+ "/api/organizations/{organizationId}/treasury/spend/{requestId}/build-xdr": {
+ parameters: {
+ query?: never;
+ header?: never;
+ path?: never;
+ cookie?: never;
+ };
+ get?: never;
+ put?: never;
+ /**
+ * Build the unsigned XDR for a connected-wallet spend
+ * @description For an approved connected (Tier 2/3) spend, returns the unsigned USDC payment XDR to sign in-browser and moves it to awaiting_signatures.
+ */
+ post: operations["OrganizationTreasuryController_buildSpendXdr"];
+ delete?: never;
+ options?: never;
+ head?: never;
+ patch?: never;
+ trace?: never;
+ };
+ "/api/organizations/{organizationId}/treasury/spend/{requestId}/submit-signed-xdr": {
+ parameters: {
+ query?: never;
+ header?: never;
+ path?: never;
+ cookie?: never;
+ };
+ get?: never;
+ put?: never;
+ /** Submit a browser-signed spend XDR (connected wallets) */
+ post: operations["OrganizationTreasuryController_submitSpendSignedXdr"];
+ delete?: never;
+ options?: never;
+ head?: never;
+ patch?: never;
+ trace?: never;
+ };
+ "/api/organizations/{organizationId}/treasury/audit-log": {
+ parameters: {
+ query?: never;
+ header?: never;
+ path?: never;
+ cookie?: never;
+ };
+ /** Paginated treasury audit log */
+ get: operations["OrganizationTreasuryController_auditLog"];
+ put?: never;
+ post?: never;
+ delete?: never;
+ options?: never;
+ head?: never;
+ patch?: never;
+ trace?: never;
+ };
+ "/api/organizations/{organizationId}/receipts": {
+ parameters: {
+ query?: never;
+ header?: never;
+ path?: never;
+ cookie?: never;
+ };
+ /** List money receipts (newest first) */
+ get: operations["OrganizationReceiptsController_list"];
+ put?: never;
+ post?: never;
+ delete?: never;
+ options?: never;
+ head?: never;
+ patch?: never;
+ trace?: never;
+ };
+ "/api/organizations/{organizationId}/receipts/{receiptId}": {
+ parameters: {
+ query?: never;
+ header?: never;
+ path?: never;
+ cookie?: never;
+ };
+ /** Get a single receipt */
+ get: operations["OrganizationReceiptsController_getOne"];
+ put?: never;
+ post?: never;
+ delete?: never;
+ options?: never;
+ head?: never;
+ patch?: never;
+ trace?: never;
+ };
+ "/api/organizations/{organizationId}/receipts/{receiptId}/send": {
+ parameters: {
+ query?: never;
+ header?: never;
+ path?: never;
+ cookie?: never;
+ };
+ get?: never;
+ put?: never;
+ /** Email a copy of the receipt */
+ post: operations["OrganizationReceiptsController_send"];
+ delete?: never;
+ options?: never;
+ head?: never;
+ patch?: never;
+ trace?: never;
+ };
+ "/api/organizations/{organizationId}/receipts/{receiptId}/void": {
+ parameters: {
+ query?: never;
+ header?: never;
+ path?: never;
+ cookie?: never;
+ };
+ get?: never;
+ put?: never;
+ /** Void a receipt (owner/admin). Never deleted. */
+ post: operations["OrganizationReceiptsController_void"];
+ delete?: never;
+ options?: never;
+ head?: never;
+ patch?: never;
+ trace?: never;
+ };
+ "/api/votes": {
+ parameters: {
+ query?: never;
+ header?: never;
+ path?: never;
+ cookie?: never;
+ };
+ get: operations["VotesController_getVotes"];
+ put?: never;
+ post: operations["VotesController_createVote"];
+ delete?: never;
+ options?: never;
+ head?: never;
+ patch?: never;
+ trace?: never;
+ };
+ "/api/votes/{projectId}/{entityType}": {
+ parameters: {
+ query?: never;
+ header?: never;
+ path?: never;
+ cookie?: never;
+ };
+ get?: never;
+ put?: never;
+ post?: never;
+ delete: operations["VotesController_removeVote"];
+ options?: never;
+ head?: never;
+ patch?: never;
+ trace?: never;
+ };
+ "/api/votes/count/{projectId}/{entityType}": {
+ parameters: {
+ query?: never;
+ header?: never;
+ path?: never;
+ cookie?: never;
+ };
+ get: operations["VotesController_getVoteCounts"];
+ put?: never;
+ post?: never;
+ delete?: never;
+ options?: never;
+ head?: never;
+ patch?: never;
+ trace?: never;
+ };
+ "/api/votes/my-vote/{projectId}/{entityType}": {
+ parameters: {
+ query?: never;
+ header?: never;
+ path?: never;
+ cookie?: never;
+ };
+ get: operations["VotesController_getUserVote"];
+ put?: never;
+ post?: never;
+ delete?: never;
+ options?: never;
+ head?: never;
+ patch?: never;
+ trace?: never;
+ };
+ "/api/votes/project/{projectId}": {
+ parameters: {
+ query?: never;
+ header?: never;
+ path?: never;
+ cookie?: never;
+ };
+ /**
+ * Get project votes
+ * @description Get project votes. Use includeVoters=true for comprehensive data including voter list and vote counts.
+ */
+ get: operations["VotesController_getProjectVotes"];
+ put?: never;
+ post?: never;
+ delete?: never;
+ options?: never;
+ head?: never;
+ patch?: never;
+ trace?: never;
+ };
+ "/api/leaderboard": {
+ parameters: {
+ query?: never;
+ header?: never;
+ path?: never;
+ cookie?: never;
+ };
+ /** Get community leaderboard entries */
+ get: operations["LeaderboardController_getLeaderboard"];
+ put?: never;
+ post?: never;
+ delete?: never;
+ options?: never;
+ head?: never;
+ patch?: never;
+ trace?: never;
+ };
+ "/api/blog-posts": {
+ parameters: {
+ query?: never;
+ header?: never;
+ path?: never;
+ cookie?: never;
+ };
+ /** List all blog posts with pagination and filters */
+ get: operations["BlogPostsController_listBlogPosts"];
+ put?: never;
+ /** Create a new blog post */
+ post: operations["BlogPostsController_createBlogPost"];
+ delete?: never;
+ options?: never;
+ head?: never;
+ patch?: never;
+ trace?: never;
+ };
+ "/api/blog-posts/id/{id}": {
+ parameters: {
+ query?: never;
+ header?: never;
+ path?: never;
+ cookie?: never;
+ };
+ /** Get blog post by ID */
+ get: operations["BlogPostsController_getBlogPostById"];
+ put?: never;
+ post?: never;
+ delete?: never;
+ options?: never;
+ head?: never;
+ patch?: never;
+ trace?: never;
+ };
+ "/api/blog-posts/slug/{slug}": {
+ parameters: {
+ query?: never;
+ header?: never;
+ path?: never;
+ cookie?: never;
+ };
+ /** Get blog post by slug */
+ get: operations["BlogPostsController_getBlogPostBySlug"];
+ put?: never;
+ post?: never;
+ delete?: never;
+ options?: never;
+ head?: never;
+ patch?: never;
+ trace?: never;
+ };
+ "/api/blog-posts/{id}/related": {
+ parameters: {
+ query?: never;
+ header?: never;
+ path?: never;
+ cookie?: never;
+ };
+ /** Get related blog posts */
+ get: operations["BlogPostsController_getRelatedPosts"];
+ put?: never;
+ post?: never;
+ delete?: never;
+ options?: never;
+ head?: never;
+ patch?: never;
+ trace?: never;
+ };
+ "/api/blog-posts/{id}": {
+ parameters: {
+ query?: never;
+ header?: never;
+ path?: never;
+ cookie?: never;
+ };
+ get?: never;
+ /** Update a blog post */
+ put: operations["BlogPostsController_updateBlogPost"];
+ post?: never;
+ /** Delete a blog post */
+ delete: operations["BlogPostsController_deleteBlogPost"];
+ options?: never;
+ head?: never;
+ patch?: never;
+ trace?: never;
+ };
+ "/api/admin/ai/generate-excerpt": {
+ parameters: {
+ query?: never;
+ header?: never;
+ path?: never;
+ cookie?: never;
+ };
+ get?: never;
+ put?: never;
+ /** Generate excerpt from content */
+ post: operations["AiController_generateExcerpt"];
+ delete?: never;
+ options?: never;
+ head?: never;
+ patch?: never;
+ trace?: never;
+ };
+ "/api/admin/ai/generate-reading-time": {
+ parameters: {
+ query?: never;
+ header?: never;
+ path?: never;
+ cookie?: never;
+ };
+ get?: never;
+ put?: never;
+ /** Generate reading time estimate from content */
+ post: operations["AiController_generateReadingTime"];
+ delete?: never;
+ options?: never;
+ head?: never;
+ patch?: never;
+ trace?: never;
+ };
+ "/api/admin/ai/generate-seo": {
+ parameters: {
+ query?: never;
+ header?: never;
+ path?: never;
+ cookie?: never;
+ };
+ get?: never;
+ put?: never;
+ /** Generate SEO settings from content */
+ post: operations["AiController_generateSEO"];
+ delete?: never;
+ options?: never;
+ head?: never;
+ patch?: never;
+ trace?: never;
+ };
+ "/api/admin/ai/generate-tags": {
+ parameters: {
+ query?: never;
+ header?: never;
+ path?: never;
+ cookie?: never;
+ };
+ get?: never;
+ put?: never;
+ /** Generate tags from content */
+ post: operations["AiController_generateTags"];
+ delete?: never;
+ options?: never;
+ head?: never;
+ patch?: never;
+ trace?: never;
+ };
+ "/api/admin/ai/generate-category": {
+ parameters: {
+ query?: never;
+ header?: never;
+ path?: never;
+ cookie?: never;
+ };
+ get?: never;
+ put?: never;
+ /** Generate category from content */
+ post: operations["AiController_generateCategory"];
+ delete?: never;
+ options?: never;
+ head?: never;
+ patch?: never;
+ trace?: never;
+ };
+ "/api/admin/overview": {
+ parameters: {
+ query?: never;
+ header?: never;
+ path?: never;
+ cookie?: never;
+ };
+ /**
+ * Get admin overview data (Admin only)
+ * @description Retrieves comprehensive overview data including metrics and charts for the admin dashboard
+ */
+ get: operations["AdminController_getOverview"];
+ put?: never;
+ post?: never;
+ delete?: never;
+ options?: never;
+ head?: never;
+ patch?: never;
+ trace?: never;
+ };
+ "/api/admin/users": {
+ parameters: {
+ query?: never;
+ header?: never;
+ path?: never;
+ cookie?: never;
+ };
+ /**
+ * Get all users (Admin only)
+ * @description Retrieves a paginated list of all users with optional filtering
+ */
+ get: operations["AdminController_getUsers"];
+ put?: never;
+ post?: never;
+ delete?: never;
+ options?: never;
+ head?: never;
+ patch?: never;
+ trace?: never;
+ };
+ "/api/admin/users/export": {
+ parameters: {
+ query?: never;
+ header?: never;
+ path?: never;
+ cookie?: never;
+ };
+ /**
+ * Export all users as CSV (Admin only)
+ * @description Downloads a CSV file containing all platform users and newsletter-only subscribers
+ */
+ get: operations["AdminController_exportUsers"];
+ put?: never;
+ post?: never;
+ delete?: never;
+ options?: never;
+ head?: never;
+ patch?: never;
+ trace?: never;
+ };
+ "/api/admin/users/{usernameOrId}": {
+ parameters: {
+ query?: never;
+ header?: never;
+ path?: never;
+ cookie?: never;
+ };
+ /**
+ * Get user details (Admin only)
+ * @description Retrieves detailed information about a specific user by username or ID
+ */
+ get: operations["AdminController_getUserDetails"];
+ put?: never;
+ post?: never;
+ delete?: never;
+ options?: never;
+ head?: never;
+ patch?: never;
+ trace?: never;
+ };
+ "/api/admin/users/{usernameOrId}/stats": {
+ parameters: {
+ query?: never;
+ header?: never;
+ path?: never;
+ cookie?: never;
+ };
+ /**
+ * Get user statistics (Admin only)
+ * @description Retrieves comprehensive statistics for a specific user
+ */
+ get: operations["AdminController_getUserStats"];
+ put?: never;
+ post?: never;
+ delete?: never;
+ options?: never;
+ head?: never;
+ patch?: never;
+ trace?: never;
+ };
+ "/api/admin/users/{usernameOrId}/activity": {
+ parameters: {
+ query?: never;
+ header?: never;
+ path?: never;
+ cookie?: never;
+ };
+ /**
+ * Get user activity (Admin only)
+ * @description Retrieves activity history for a specific user
+ */
+ get: operations["AdminController_getUserActivity"];
+ put?: never;
+ post?: never;
+ delete?: never;
+ options?: never;
+ head?: never;
+ patch?: never;
+ trace?: never;
+ };
+ "/api/admin/users/{usernameOrId}/projects": {
+ parameters: {
+ query?: never;
+ header?: never;
+ path?: never;
+ cookie?: never;
+ };
+ /**
+ * Get user projects (Admin only)
+ * @description Retrieves all projects created by a specific user
+ */
+ get: operations["AdminController_getUserProjects"];
+ put?: never;
+ post?: never;
+ delete?: never;
+ options?: never;
+ head?: never;
+ patch?: never;
+ trace?: never;
+ };
+ "/api/admin/organizations": {
+ parameters: {
+ query?: never;
+ header?: never;
+ path?: never;
+ cookie?: never;
+ };
+ /**
+ * Get all organizations (Admin only)
+ * @description Retrieves a paginated list of all organizations with member counts
+ */
+ get: operations["AdminController_getOrganizations"];
+ put?: never;
+ post?: never;
+ delete?: never;
+ options?: never;
+ head?: never;
+ patch?: never;
+ trace?: never;
+ };
+ "/api/admin/organizations/{orgId}": {
+ parameters: {
+ query?: never;
+ header?: never;
+ path?: never;
+ cookie?: never;
+ };
+ /**
+ * Get organization details (Admin only)
+ * @description Retrieves detailed information about an organization including members and hackathons
+ */
+ get: operations["AdminController_getOrganizationDetails"];
+ put?: never;
+ post?: never;
+ delete?: never;
+ options?: never;
+ head?: never;
+ patch?: never;
+ trace?: never;
+ };
+ "/api/admin/users/{usernameOrId}/organizations": {
+ parameters: {
+ query?: never;
+ header?: never;
+ path?: never;
+ cookie?: never;
+ };
+ /**
+ * Get user organizations (Admin only)
+ * @description Retrieves all organizations a user is a member of
+ */
+ get: operations["AdminController_getUserOrganizations"];
+ put?: never;
+ post?: never;
+ delete?: never;
+ options?: never;
+ head?: never;
+ patch?: never;
+ trace?: never;
+ };
+ "/api/admin/blog-posts": {
+ parameters: {
+ query?: never;
+ header?: never;
+ path?: never;
+ cookie?: never;
+ };
+ /** List all blog posts including drafts (Admin only) */
+ get: operations["AdminBlogsController_listAllBlogPosts"];
+ put?: never;
+ /** Create a new blog post (Admin only) */
+ post: operations["AdminBlogsController_createBlogPost"];
+ delete?: never;
+ options?: never;
+ head?: never;
+ patch?: never;
+ trace?: never;
+ };
+ "/api/admin/blog-posts/{id}": {
+ parameters: {
+ query?: never;
+ header?: never;
+ path?: never;
+ cookie?: never;
+ };
+ /** Get blog post by ID (Admin only) */
+ get: operations["AdminBlogsController_getBlogPostById"];
+ /** Update a blog post (Admin only) */
+ put: operations["AdminBlogsController_updateBlogPost"];
+ post?: never;
+ /**
+ * Soft delete a blog post (Admin only)
+ * @description Marks the blog post as deleted without removing it from database
+ */
+ delete: operations["AdminBlogsController_deleteBlogPost"];
+ options?: never;
+ head?: never;
+ patch?: never;
+ trace?: never;
+ };
+ "/api/admin/blog-posts/{id}/permanent": {
+ parameters: {
+ query?: never;
+ header?: never;
+ path?: never;
+ cookie?: never;
+ };
+ get?: never;
+ put?: never;
+ post?: never;
+ /**
+ * Permanently delete a blog post (Admin only)
+ * @description Permanently removes the blog post from database
+ */
+ delete: operations["AdminBlogsController_permanentlyDeleteBlogPost"];
+ options?: never;
+ head?: never;
+ patch?: never;
+ trace?: never;
+ };
+ "/api/admin/blog-posts/{id}/restore": {
+ parameters: {
+ query?: never;
+ header?: never;
+ path?: never;
+ cookie?: never;
+ };
+ get?: never;
+ put?: never;
+ /** Restore a soft-deleted blog post (Admin only) */
+ post: operations["AdminBlogsController_restoreBlogPost"];
+ delete?: never;
+ options?: never;
+ head?: never;
+ patch?: never;
+ trace?: never;
+ };
+ "/api/admin/blog-posts/tags/all": {
+ parameters: {
+ query?: never;
+ header?: never;
+ path?: never;
+ cookie?: never;
+ };
+ /** Get all tags with post counts (Admin only) */
+ get: operations["AdminBlogsController_getAllTags"];
+ put?: never;
+ post?: never;
+ delete?: never;
+ options?: never;
+ head?: never;
+ patch?: never;
+ trace?: never;
+ };
+ "/api/admin/blog-posts/tags/{slug}": {
+ parameters: {
+ query?: never;
+ header?: never;
+ path?: never;
+ cookie?: never;
+ };
+ /** Get tag by slug (Admin only) */
+ get: operations["AdminBlogsController_getTagBySlug"];
+ put?: never;
+ post?: never;
+ delete?: never;
+ options?: never;
+ head?: never;
+ patch?: never;
+ trace?: never;
+ };
+ "/api/admin/blog-posts/tags/unused": {
+ parameters: {
+ query?: never;
+ header?: never;
+ path?: never;
+ cookie?: never;
+ };
+ get?: never;
+ put?: never;
+ post?: never;
+ /**
+ * Delete all unused tags (Admin only)
+ * @description Removes tags that are not associated with any blog posts
+ */
+ delete: operations["AdminBlogsController_deleteUnusedTags"];
+ options?: never;
+ head?: never;
+ patch?: never;
+ trace?: never;
+ };
+ "/api/admin/blog-posts/scheduled/publish": {
+ parameters: {
+ query?: never;
+ header?: never;
+ path?: never;
+ cookie?: never;
+ };
+ get?: never;
+ put?: never;
+ /** Manually trigger publishing of scheduled posts (Admin only) */
+ post: operations["AdminBlogsController_publishScheduledPosts"];
+ delete?: never;
+ options?: never;
+ head?: never;
+ patch?: never;
+ trace?: never;
+ };
+ "/api/admin/crowdfunding": {
+ parameters: {
+ query?: never;
+ header?: never;
+ path?: never;
+ cookie?: never;
+ };
+ /** List crowdfunding campaigns */
+ get: operations["AdminCrowdfundingController_list"];
+ put?: never;
+ post?: never;
+ delete?: never;
+ options?: never;
+ head?: never;
+ patch?: never;
+ trace?: never;
+ };
+ "/api/admin/crowdfunding/user/{usernameOrId}": {
+ parameters: {
+ query?: never;
+ header?: never;
+ path?: never;
+ cookie?: never;
+ };
+ /** List crowdfunding campaigns by user */
+ get: operations["AdminCrowdfundingController_listByUser"];
+ put?: never;
+ post?: never;
+ delete?: never;
+ options?: never;
+ head?: never;
+ patch?: never;
+ trace?: never;
+ };
+ "/api/admin/crowdfunding/{campaignId}": {
+ parameters: {
+ query?: never;
+ header?: never;
+ path?: never;
+ cookie?: never;
+ };
+ /** Get crowdfunding campaign by ID */
+ get: operations["AdminCrowdfundingController_getCampaign"];
+ put?: never;
+ post?: never;
+ delete?: never;
+ options?: never;
+ head?: never;
+ patch?: never;
+ trace?: never;
+ };
+ "/api/admin/crowdfunding/pending": {
+ parameters: {
+ query?: never;
+ header?: never;
+ path?: never;
+ cookie?: never;
+ };
+ /** List crowdfunding campaigns pending admin review */
+ get: operations["AdminCrowdfundingController_listPending"];
+ put?: never;
+ post?: never;
+ delete?: never;
+ options?: never;
+ head?: never;
+ patch?: never;
+ trace?: never;
+ };
+ "/api/admin/crowdfunding/{campaignId}/approve": {
+ parameters: {
+ query?: never;
+ header?: never;
+ path?: never;
+ cookie?: never;
+ };
+ get?: never;
+ put?: never;
+ /** Approve a crowdfunding campaign */
+ post: operations["AdminCrowdfundingController_approve"];
+ delete?: never;
+ options?: never;
+ head?: never;
+ patch?: never;
+ trace?: never;
+ };
+ "/api/admin/crowdfunding/{campaignId}/reject": {
+ parameters: {
+ query?: never;
+ header?: never;
+ path?: never;
+ cookie?: never;
+ };
+ get?: never;
+ put?: never;
+ /** Reject a crowdfunding campaign */
+ post: operations["AdminCrowdfundingController_reject"];
+ delete?: never;
+ options?: never;
+ head?: never;
+ patch?: never;
+ trace?: never;
+ };
+ "/api/admin/crowdfunding/{campaignId}/request-revision": {
+ parameters: {
+ query?: never;
+ header?: never;
+ path?: never;
+ cookie?: never;
+ };
+ get?: never;
+ put?: never;
+ /** Request revisions for a crowdfunding campaign */
+ post: operations["AdminCrowdfundingController_requestRevision"];
+ delete?: never;
+ options?: never;
+ head?: never;
+ patch?: never;
+ trace?: never;
+ };
+ "/api/admin/crowdfunding/{campaignId}/review-note": {
+ parameters: {
+ query?: never;
+ header?: never;
+ path?: never;
+ cookie?: never;
+ };
+ get?: never;
+ put?: never;
+ /** Add an admin review note for a campaign */
+ post: operations["AdminCrowdfundingController_addReviewNote"];
+ delete?: never;
+ options?: never;
+ head?: never;
+ patch?: never;
+ trace?: never;
+ };
+ "/api/admin/crowdfunding/{campaignId}/assign-reviewer": {
+ parameters: {
+ query?: never;
+ header?: never;
+ path?: never;
+ cookie?: never;
+ };
+ get?: never;
+ put?: never;
+ /** Assign a reviewer to a campaign */
+ post: operations["AdminCrowdfundingController_assignReviewer"];
+ delete?: never;
+ options?: never;
+ head?: never;
+ patch?: never;
+ trace?: never;
+ };
+ "/api/admin/milestones": {
+ parameters: {
+ query?: never;
+ header?: never;
+ path?: never;
+ cookie?: never;
+ };
+ /**
+ * List all milestones grouped by campaign
+ * @description Retrieves all milestones organized by their campaigns with pagination
+ */
+ get: operations["AdminMilestonesController_listAllMilestonesByCampaign"];
+ put?: never;
+ post?: never;
+ delete?: never;
+ options?: never;
+ head?: never;
+ patch?: never;
+ trace?: never;
+ };
+ "/api/admin/milestones/pending": {
+ parameters: {
+ query?: never;
+ header?: never;
+ path?: never;
+ cookie?: never;
+ };
+ /** Get pending milestone review queue */
+ get: operations["AdminMilestonesController_listPendingMilestones"];
+ put?: never;
+ post?: never;
+ delete?: never;
+ options?: never;
+ head?: never;
+ patch?: never;
+ trace?: never;
+ };
+ "/api/admin/milestones/{milestoneId}": {
+ parameters: {
+ query?: never;
+ header?: never;
+ path?: never;
+ cookie?: never;
+ };
+ /** Get milestone detail for review */
+ get: operations["AdminMilestonesController_getMilestoneForReview"];
+ put?: never;
+ post?: never;
+ delete?: never;
+ options?: never;
+ head?: never;
+ patch?: never;
+ trace?: never;
+ };
+ "/api/admin/milestones/{milestoneId}/approve": {
+ parameters: {
+ query?: never;
+ header?: never;
+ path?: never;
+ cookie?: never;
+ };
+ get?: never;
+ put?: never;
+ /** Approve a milestone submission */
+ post: operations["AdminMilestonesController_approveMilestone"];
+ delete?: never;
+ options?: never;
+ head?: never;
+ patch?: never;
+ trace?: never;
+ };
+ "/api/admin/milestones/{milestoneId}/reject": {
+ parameters: {
+ query?: never;
+ header?: never;
+ path?: never;
+ cookie?: never;
+ };
+ get?: never;
+ put?: never;
+ /** Reject a milestone submission */
+ post: operations["AdminMilestonesController_rejectMilestone"];
+ delete?: never;
+ options?: never;
+ head?: never;
+ patch?: never;
+ trace?: never;
+ };
+ "/api/admin/milestones/{milestoneId}/request-resubmission": {
+ parameters: {
+ query?: never;
+ header?: never;
+ path?: never;
+ cookie?: never;
+ };
+ get?: never;
+ put?: never;
+ /** Request milestone resubmission with changes */
+ post: operations["AdminMilestonesController_requestResubmission"];
+ delete?: never;
+ options?: never;
+ head?: never;
+ patch?: never;
+ trace?: never;
+ };
+ "/api/admin/milestones/{milestoneId}/review-note": {
+ parameters: {
+ query?: never;
+ header?: never;
+ path?: never;
+ cookie?: never;
+ };
+ get?: never;
+ put?: never;
+ /** Add a review note to milestone */
+ post: operations["AdminMilestonesController_addReviewNote"];
+ delete?: never;
+ options?: never;
+ head?: never;
+ patch?: never;
+ trace?: never;
+ };
+ "/api/admin/escrow/{campaignId}": {
+ parameters: {
+ query?: never;
+ header?: never;
+ path?: never;
+ cookie?: never;
+ };
+ /** Get escrow information and transaction history for campaign */
+ get: operations["AdminEscrowController_getEscrowInfo"];
+ put?: never;
+ post?: never;
+ delete?: never;
+ options?: never;
+ head?: never;
+ patch?: never;
+ trace?: never;
+ };
+ "/api/admin/escrow/{campaignId}/action": {
+ parameters: {
+ query?: never;
+ header?: never;
+ path?: never;
+ cookie?: never;
+ };
+ get?: never;
+ put?: never;
+ /**
+ * Execute manual escrow action (testnet only)
+ * @description Manually trigger escrow actions like release, refund, pause, or resume. This is intended for testnet use only.
+ */
+ post: operations["AdminEscrowController_executeEscrowAction"];
+ delete?: never;
+ options?: never;
+ head?: never;
+ patch?: never;
+ trace?: never;
+ };
+ "/api/admin/disputes": {
+ parameters: {
+ query?: never;
+ header?: never;
+ path?: never;
+ cookie?: never;
+ };
+ /** Get dispute dashboard with filtering */
+ get: operations["AdminDisputesController_listDisputes"];
+ put?: never;
+ post?: never;
+ delete?: never;
+ options?: never;
+ head?: never;
+ patch?: never;
+ trace?: never;
+ };
+ "/api/admin/disputes/{disputeId}": {
+ parameters: {
+ query?: never;
+ header?: never;
+ path?: never;
+ cookie?: never;
+ };
+ /** Get detailed dispute information */
+ get: operations["AdminDisputesController_getDisputeDetail"];
+ put?: never;
+ post?: never;
+ delete?: never;
+ options?: never;
+ head?: never;
+ patch?: never;
+ trace?: never;
+ };
+ "/api/admin/disputes/{disputeId}/assign": {
+ parameters: {
+ query?: never;
+ header?: never;
+ path?: never;
+ cookie?: never;
+ };
+ get?: never;
+ put?: never;
+ /** Assign dispute to an admin */
+ post: operations["AdminDisputesController_assignDispute"];
+ delete?: never;
+ options?: never;
+ head?: never;
+ patch?: never;
+ trace?: never;
+ };
+ "/api/admin/disputes/{disputeId}/note": {
+ parameters: {
+ query?: never;
+ header?: never;
+ path?: never;
+ cookie?: never;
+ };
+ get?: never;
+ put?: never;
+ /**
+ * Add note or message to dispute
+ * @description Add a communication to the dispute. Can be internal (admin only) or external (visible to parties).
+ */
+ post: operations["AdminDisputesController_addDisputeNote"];
+ delete?: never;
+ options?: never;
+ head?: never;
+ patch?: never;
+ trace?: never;
+ };
+ "/api/admin/disputes/{disputeId}/resolve": {
+ parameters: {
+ query?: never;
+ header?: never;
+ path?: never;
+ cookie?: never;
+ };
+ get?: never;
+ put?: never;
+ /** Resolve a dispute with a final decision */
+ post: operations["AdminDisputesController_resolveDispute"];
+ delete?: never;
+ options?: never;
+ head?: never;
+ patch?: never;
+ trace?: never;
+ };
+ "/api/admin/disputes/{disputeId}/escalate": {
+ parameters: {
+ query?: never;
+ header?: never;
+ path?: never;
+ cookie?: never;
+ };
+ get?: never;
+ put?: never;
+ /** Escalate dispute to arbitration */
+ post: operations["AdminDisputesController_escalateDispute"];
+ delete?: never;
+ options?: never;
+ head?: never;
+ patch?: never;
+ trace?: never;
+ };
+ "/api/admin/manual-projects/pending": {
+ parameters: {
+ query?: never;
+ header?: never;
+ path?: never;
+ cookie?: never;
+ };
+ /** List pending manual project submissions */
+ get: operations["AdminManualProjectsController_listPendingManualProjects"];
+ put?: never;
+ post?: never;
+ delete?: never;
+ options?: never;
+ head?: never;
+ patch?: never;
+ trace?: never;
+ };
+ "/api/admin/manual-projects/{projectId}/approve": {
+ parameters: {
+ query?: never;
+ header?: never;
+ path?: never;
+ cookie?: never;
+ };
+ get?: never;
+ put?: never;
+ /** Approve a pending manual project */
+ post: operations["AdminManualProjectsController_approveManualProject"];
+ delete?: never;
+ options?: never;
+ head?: never;
+ patch?: never;
+ trace?: never;
+ };
+ "/api/admin/manual-projects/{projectId}/reject": {
+ parameters: {
+ query?: never;
+ header?: never;
+ path?: never;
+ cookie?: never;
+ };
+ get?: never;
+ put?: never;
+ /** Reject a pending manual project */
+ post: operations["AdminManualProjectsController_rejectManualProject"];
+ delete?: never;
+ options?: never;
+ head?: never;
+ patch?: never;
+ trace?: never;
+ };
+ "/api/admin/manual-projects/{projectId}/request-changes": {
+ parameters: {
+ query?: never;
+ header?: never;
+ path?: never;
+ cookie?: never;
+ };
+ get?: never;
+ put?: never;
+ /** Request changes for a pending manual project */
+ post: operations["AdminManualProjectsController_requestChanges"];
+ delete?: never;
+ options?: never;
+ head?: never;
+ patch?: never;
+ trace?: never;
+ };
+ "/api/admin/project-edits/pending": {
+ parameters: {
+ query?: never;
+ header?: never;
+ path?: never;
+ cookie?: never;
+ };
+ /** List pending major project edits */
+ get: operations["AdminProjectEditsController_listPendingProjectEdits"];
+ put?: never;
+ post?: never;
+ delete?: never;
+ options?: never;
+ head?: never;
+ patch?: never;
+ trace?: never;
+ };
+ "/api/admin/project-edits/{editId}/approve": {
+ parameters: {
+ query?: never;
+ header?: never;
+ path?: never;
+ cookie?: never;
+ };
+ get?: never;
+ put?: never;
+ /** Approve a pending major project edit */
+ post: operations["AdminProjectEditsController_approveProjectEdit"];
+ delete?: never;
+ options?: never;
+ head?: never;
+ patch?: never;
+ trace?: never;
+ };
+ "/api/admin/project-edits/{editId}/reject": {
+ parameters: {
+ query?: never;
+ header?: never;
+ path?: never;
+ cookie?: never;
+ };
+ get?: never;
+ put?: never;
+ /** Reject a pending major project edit */
+ post: operations["AdminProjectEditsController_rejectProjectEdit"];
+ delete?: never;
+ options?: never;
+ head?: never;
+ patch?: never;
+ trace?: never;
+ };
+ "/api/admin/wallets/stats": {
+ parameters: {
+ query?: never;
+ header?: never;
+ path?: never;
+ cookie?: never;
+ };
+ /** Get wallet statistics */
+ get: operations["AdminWalletsController_getStats"];
+ put?: never;
+ post?: never;
+ delete?: never;
+ options?: never;
+ head?: never;
+ patch?: never;
+ trace?: never;
+ };
+ "/api/admin/wallets": {
+ parameters: {
+ query?: never;
+ header?: never;
+ path?: never;
+ cookie?: never;
+ };
+ /** List user wallets */
+ get: operations["AdminWalletsController_listWallets"];
+ put?: never;
+ post?: never;
+ delete?: never;
+ options?: never;
+ head?: never;
+ patch?: never;
+ trace?: never;
+ };
+ "/api/admin/wallets/user/{userId}": {
+ parameters: {
+ query?: never;
+ header?: never;
+ path?: never;
+ cookie?: never;
+ };
+ /** Get wallets for a specific user */
+ get: operations["AdminWalletsController_getByUserId"];
+ put?: never;
+ post?: never;
+ delete?: never;
+ options?: never;
+ head?: never;
+ patch?: never;
+ trace?: never;
+ };
+ "/api/admin/wallets/{id}": {
+ parameters: {
+ query?: never;
+ header?: never;
+ path?: never;
+ cookie?: never;
+ };
+ /** Get detailed wallet info */
+ get: operations["AdminWalletsController_getDetails"];
+ put?: never;
+ post?: never;
+ delete?: never;
+ options?: never;
+ head?: never;
+ patch?: never;
+ trace?: never;
+ };
+ "/api/admin/wallets/{id}/activate": {
+ parameters: {
+ query?: never;
+ header?: never;
+ path?: never;
+ cookie?: never;
+ };
+ get?: never;
+ put?: never;
+ /**
+ * Sponsor-activate a wallet by ID (creates account + configured trustlines, default USDC)
+ * @description All XLM reserves paid by the platform sponsor account. Idempotent: re-running on an already-activated wallet returns success without submitting. Used by the admin dashboard "Activate" button.
+ */
+ post: operations["AdminWalletsController_activateWallet"];
+ delete?: never;
+ options?: never;
+ head?: never;
+ patch?: never;
+ trace?: never;
+ };
+ "/api/admin/wallets/users/{userId}/sponsor-activate": {
+ parameters: {
+ query?: never;
+ header?: never;
+ path?: never;
+ cookie?: never;
+ };
+ get?: never;
+ put?: never;
+ /**
+ * Sponsor-activate a single user (account + USDC trustline)
+ * @description Uses the sponsor account to create the on-chain account and add the configured trustlines (default USDC). User pays no XLM. Idempotent: safe to retry. Use this for hackathon participants who need to receive USDC payouts.
+ */
+ post: operations["AdminWalletsController_sponsorActivateUser"];
+ delete?: never;
+ options?: never;
+ head?: never;
+ patch?: never;
+ trace?: never;
+ };
+ "/api/admin/wallets/hackathons/{hackathonId}/sponsor-activate": {
+ parameters: {
+ query?: never;
+ header?: never;
+ path?: never;
+ cookie?: never;
+ };
+ get?: never;
+ put?: never;
+ /**
+ * Enqueue sponsor activation for every participant of a hackathon
+ * @description Aggregates all distinct user IDs from HackathonSubmission.participantId and teamMembers[], then enqueues a BullMQ job that activates each wallet (account + USDC trustline). Returns immediately with a job ID. Poll the status URL for progress; idempotent re-runs are safe.
+ */
+ post: operations["AdminWalletsController_sponsorActivateHackathon"];
+ delete?: never;
+ options?: never;
+ head?: never;
+ patch?: never;
+ trace?: never;
+ };
+ "/api/admin/wallets/jobs/sponsor-activation/{jobId}": {
+ parameters: {
+ query?: never;
+ header?: never;
+ path?: never;
+ cookie?: never;
+ };
+ /**
+ * Get status of a sponsor-activation job
+ * @description Returns BullMQ job state (waiting | active | completed | failed | delayed | paused), progress {processed, total, activated, alreadyActivated, failed}, returnvalue (full summary when complete), and failedReason.
+ */
+ get: operations["AdminWalletsController_getSponsorActivationJobStatus"];
+ put?: never;
+ post?: never;
+ delete?: never;
+ options?: never;
+ head?: never;
+ patch?: never;
+ trace?: never;
+ };
+ "/healthz": {
+ parameters: {
+ query?: never;
+ header?: never;
+ path?: never;
+ cookie?: never;
+ };
+ /**
+ * Liveness probe
+ * @description Returns 200 if the process is alive. No downstream checks. Use for orchestrator restart decisions.
+ */
+ get: operations["HealthController_liveness"];
+ put?: never;
+ post?: never;
+ delete?: never;
+ options?: never;
+ head?: never;
+ patch?: never;
+ trace?: never;
+ };
+ "/readyz": {
+ parameters: {
+ query?: never;
+ header?: never;
+ path?: never;
+ cookie?: never;
+ };
+ /**
+ * Readiness probe
+ * @description Returns 200 only when Postgres and Redis are reachable. Use for orchestrator traffic-drain decisions, not for restart.
+ */
+ get: operations["HealthController_readiness"];
+ put?: never;
+ post?: never;
+ delete?: never;
+ options?: never;
+ head?: never;
+ patch?: never;
+ trace?: never;
+ };
+ "/api/didit/status": {
+ parameters: {
+ query?: never;
+ header?: never;
+ path?: never;
+ cookie?: never;
+ };
+ /**
+ * Get current verification state for the authenticated user
+ * @description Returns a normalized verification state the frontend uses to decide what to render: the verify button is shown only when `canStartNew` is true (states: not_started, declined, abandoned, expired). For `in_review` the response includes a `reviewWindow` with the SLA in business days.
+ */
+ get: operations["DiditController_getStatus"];
+ put?: never;
+ post?: never;
+ delete?: never;
+ options?: never;
+ head?: never;
+ patch?: never;
+ trace?: never;
+ };
+ "/api/didit/callback": {
+ parameters: {
+ query?: never;
+ header?: never;
+ path?: never;
+ cookie?: never;
+ };
+ /**
+ * Didit redirect target (post-verification)
+ * @description Didit redirects the user here after the hosted KYC flow. We resolve authoritative status from the DB (the query string from Didit is not trusted) and 302 to the frontend with `?state=...`. State maps directly to the values returned by GET /didit/status.
+ */
+ get: operations["DiditController_callback"];
+ put?: never;
+ post?: never;
+ delete?: never;
+ options?: never;
+ head?: never;
+ patch?: never;
+ trace?: never;
+ };
+ "/api/didit/create-session": {
+ parameters: {
+ query?: never;
+ header?: never;
+ path?: never;
+ cookie?: never;
+ };
+ get?: never;
+ put?: never;
+ /**
+ * Create verification session
+ * @description Creates a Didit verification session for the authenticated user. Returns session_token and verification_url for the frontend SDK.
+ */
+ post: operations["DiditController_createSession"];
+ delete?: never;
+ options?: never;
+ head?: never;
+ patch?: never;
+ trace?: never;
+ };
+ "/api/didit/webhook": {
+ parameters: {
+ query?: never;
+ header?: never;
+ path?: never;
+ cookie?: never;
+ };
+ get?: never;
+ put?: never;
+ /**
+ * Didit webhook
+ * @description Receives verification completion events from Didit. The signature is verified by DiditWebhookGuard. Updates user verification status and DiditVerificationSession.
+ */
+ post: operations["DiditController_webhook"];
+ delete?: never;
+ options?: never;
+ head?: never;
+ patch?: never;
+ trace?: never;
+ };
+ "/api/pricing/preview": {
+ parameters: {
+ query?: never;
+ header?: never;
+ path?: never;
+ cookie?: never;
+ };
+ /** Compute the financial preview for a publish wizard */
+ get: operations["PricingController_preview"];
+ put?: never;
+ post?: never;
+ delete?: never;
+ options?: never;
+ head?: never;
+ patch?: never;
+ trace?: never;
+ };
+ "/api/organizations/{organizationId}/ai/usage": {
+ parameters: {
+ query?: never;
+ header?: never;
+ path?: never;
+ cookie?: never;
+ };
+ /** Get this organization’s monthly AI usage + cost */
+ get: operations["AiUsageController_getUsage"];
+ put?: never;
+ post?: never;
+ delete?: never;
+ options?: never;
+ head?: never;
+ patch?: never;
+ trace?: never;
+ };
+ "/api/admin/ops/pause": {
+ parameters: {
+ query?: never;
+ header?: never;
+ path?: never;
+ cookie?: never;
+ };
+ get?: never;
+ put?: never;
+ post: operations["AdminOpsController_pause"];
+ delete?: never;
+ options?: never;
+ head?: never;
+ patch?: never;
+ trace?: never;
+ };
+ "/api/admin/ops/unpause": {
+ parameters: {
+ query?: never;
+ header?: never;
+ path?: never;
+ cookie?: never;
+ };
+ get?: never;
+ put?: never;
+ post: operations["AdminOpsController_unpause"];
+ delete?: never;
+ options?: never;
+ head?: never;
+ patch?: never;
+ trace?: never;
+ };
+ "/api/admin/ops/set-fee-bps": {
+ parameters: {
+ query?: never;
+ header?: never;
+ path?: never;
+ cookie?: never;
+ };
+ get?: never;
+ put?: never;
+ post: operations["AdminOpsController_setFeeBps"];
+ delete?: never;
+ options?: never;
+ head?: never;
+ patch?: never;
+ trace?: never;
+ };
+ "/api/admin/v2/access/me": {
+ parameters: {
+ query?: never;
+ header?: never;
+ path?: never;
+ cookie?: never;
+ };
+ /** The current staff principal and role */
+ get: operations["AccessController_me"];
+ put?: never;
+ post?: never;
+ delete?: never;
+ options?: never;
+ head?: never;
+ patch?: never;
+ trace?: never;
+ };
+ "/api/admin/v2/access/roles": {
+ parameters: {
+ query?: never;
+ header?: never;
+ path?: never;
+ cookie?: never;
+ };
+ /** The role and permission matrix (Super Admin only) */
+ get: operations["AccessController_roles"];
+ put?: never;
+ post?: never;
+ delete?: never;
+ options?: never;
+ head?: never;
+ patch?: never;
+ trace?: never;
+ };
+ "/api/admin/v2/analytics": {
+ parameters: {
+ query?: never;
+ header?: never;
+ path?: never;
+ cookie?: never;
+ };
+ /** Platform analytics (growth, breakdowns, trend) */
+ get: operations["AnalyticsController_get"];
+ put?: never;
+ post?: never;
+ delete?: never;
+ options?: never;
+ head?: never;
+ patch?: never;
+ trace?: never;
+ };
+ "/api/admin/v2/overview": {
+ parameters: {
+ query?: never;
+ header?: never;
+ path?: never;
+ cookie?: never;
+ };
+ /** Platform overview counts */
+ get: operations["OverviewController_get"];
+ put?: never;
+ post?: never;
+ delete?: never;
+ options?: never;
+ head?: never;
+ patch?: never;
+ trace?: never;
+ };
+ "/api/admin/v2/users": {
+ parameters: {
+ query?: never;
+ header?: never;
+ path?: never;
+ cookie?: never;
+ };
+ /** List users (paginated, searchable) */
+ get: operations["UsersController_list"];
+ put?: never;
+ post?: never;
+ delete?: never;
+ options?: never;
+ head?: never;
+ patch?: never;
+ trace?: never;
+ };
+ "/api/admin/v2/users/{id}": {
+ parameters: {
+ query?: never;
+ header?: never;
+ path?: never;
+ cookie?: never;
+ };
+ /** Get one user */
+ get: operations["UsersController_getById"];
+ put?: never;
+ post?: never;
+ delete?: never;
+ options?: never;
+ head?: never;
+ patch?: never;
+ trace?: never;
+ };
+ "/api/admin/v2/users/{id}/earnings": {
+ parameters: {
+ query?: never;
+ header?: never;
+ path?: never;
+ cookie?: never;
+ };
+ /** Get a user's earnings (summary, breakdown, activity) */
+ get: operations["UsersController_getEarnings"];
+ put?: never;
+ post?: never;
+ delete?: never;
+ options?: never;
+ head?: never;
+ patch?: never;
+ trace?: never;
+ };
+ "/api/admin/v2/users/{id}/organizations": {
+ parameters: {
+ query?: never;
+ header?: never;
+ path?: never;
+ cookie?: never;
+ };
+ /** Get a user's organizations */
+ get: operations["UsersController_getOrganizations"];
+ put?: never;
+ post?: never;
+ delete?: never;
+ options?: never;
+ head?: never;
+ patch?: never;
+ trace?: never;
+ };
+ "/api/admin/v2/users/{id}/wallet": {
+ parameters: {
+ query?: never;
+ header?: never;
+ path?: never;
+ cookie?: never;
+ };
+ /** Get a user's wallet and live balances */
+ get: operations["UsersController_getWallet"];
+ put?: never;
+ post?: never;
+ delete?: never;
+ options?: never;
+ head?: never;
+ patch?: never;
+ trace?: never;
+ };
+ "/api/admin/v2/users/{id}/ban": {
+ parameters: {
+ query?: never;
+ header?: never;
+ path?: never;
+ cookie?: never;
+ };
+ get?: never;
+ put?: never;
+ post?: never;
+ delete?: never;
+ options?: never;
+ head?: never;
+ /** Ban or unban a user (Tier 2: requires step-up) */
+ patch: operations["UsersController_setBanned"];
+ trace?: never;
+ };
+ "/api/admin/v2/organizations": {
+ parameters: {
+ query?: never;
+ header?: never;
+ path?: never;
+ cookie?: never;
+ };
+ /** List organizations (paginated, searchable) */
+ get: operations["OrganizationsController_list"];
+ put?: never;
+ post?: never;
+ delete?: never;
+ options?: never;
+ head?: never;
+ patch?: never;
+ trace?: never;
+ };
+ "/api/admin/v2/organizations/{id}": {
+ parameters: {
+ query?: never;
+ header?: never;
+ path?: never;
+ cookie?: never;
+ };
+ /** Get one organization */
+ get: operations["OrganizationsController_getById"];
+ put?: never;
+ post?: never;
+ delete?: never;
+ options?: never;
+ head?: never;
+ /** Update organization details (Tier 2: requires step-up) */
+ patch: operations["OrganizationsController_update"];
+ trace?: never;
+ };
+ "/api/admin/v2/organizations/{id}/suspend": {
+ parameters: {
+ query?: never;
+ header?: never;
+ path?: never;
+ cookie?: never;
+ };
+ get?: never;
+ put?: never;
+ /**
+ * Suspend an organization (Tier 2: requires step-up)
+ * @description Freezes member-initiated mutations (treasury, member management, owner config). Reversible via reinstate.
+ */
+ post: operations["OrganizationsController_suspend"];
+ delete?: never;
+ options?: never;
+ head?: never;
+ patch?: never;
+ trace?: never;
+ };
+ "/api/admin/v2/organizations/{id}/reinstate": {
+ parameters: {
+ query?: never;
+ header?: never;
+ path?: never;
+ cookie?: never;
+ };
+ get?: never;
+ put?: never;
+ /** Reinstate a suspended organization (Tier 2: requires step-up) */
+ post: operations["OrganizationsController_reinstate"];
+ delete?: never;
+ options?: never;
+ head?: never;
+ patch?: never;
+ trace?: never;
+ };
+ "/api/admin/v2/programs": {
+ parameters: {
+ query?: never;
+ header?: never;
+ path?: never;
+ cookie?: never;
+ };
+ /** List programs across a pillar (paginated, searchable) */
+ get: operations["ProgramsController_list"];
+ put?: never;
+ post?: never;
+ delete?: never;
+ options?: never;
+ head?: never;
+ patch?: never;
+ trace?: never;
+ };
+ "/api/admin/v2/programs/{id}": {
+ parameters: {
+ query?: never;
+ header?: never;
+ path?: never;
+ cookie?: never;
+ };
+ /** Get one program (type selects the pillar) */
+ get: operations["ProgramsController_getById"];
+ put?: never;
+ post?: never;
+ delete?: never;
+ options?: never;
+ head?: never;
+ patch?: never;
+ trace?: never;
+ };
+ "/api/admin/v2/programs/{id}/feature": {
+ parameters: {
+ query?: never;
+ header?: never;
+ path?: never;
+ cookie?: never;
+ };
+ get?: never;
+ put?: never;
+ post?: never;
+ delete?: never;
+ options?: never;
+ head?: never;
+ /** Feature or unfeature a program (Tier 1; hackathons & bounties) */
+ patch: operations["ProgramsController_setFeatured"];
+ trace?: never;
+ };
+ "/api/admin/v2/programs/{id}/status": {
+ parameters: {
+ query?: never;
+ header?: never;
+ path?: never;
+ cookie?: never;
+ };
+ get?: never;
+ put?: never;
+ post?: never;
+ delete?: never;
+ options?: never;
+ head?: never;
+ /** Set an admin lifecycle status (Tier 2: requires step-up) */
+ patch: operations["ProgramsController_setStatus"];
+ trace?: never;
+ };
+ "/api/admin/v2/disputes": {
+ parameters: {
+ query?: never;
+ header?: never;
+ path?: never;
+ cookie?: never;
+ };
+ /** List disputes (paginated, searchable) */
+ get: operations["DisputesController_list"];
+ put?: never;
+ post?: never;
+ delete?: never;
+ options?: never;
+ head?: never;
+ patch?: never;
+ trace?: never;
+ };
+ "/api/admin/v2/disputes/{id}": {
+ parameters: {
+ query?: never;
+ header?: never;
+ path?: never;
+ cookie?: never;
+ };
+ /** Get one dispute */
+ get: operations["DisputesController_getById"];
+ put?: never;
+ post?: never;
+ delete?: never;
+ options?: never;
+ head?: never;
+ patch?: never;
+ trace?: never;
+ };
+ "/api/admin/v2/disputes/{id}/assign": {
+ parameters: {
+ query?: never;
+ header?: never;
+ path?: never;
+ cookie?: never;
+ };
+ get?: never;
+ put?: never;
+ /** Assign a dispute to a staff handler, or unassign (Tier 1) */
+ post: operations["DisputesController_assign"];
+ delete?: never;
+ options?: never;
+ head?: never;
+ patch?: never;
+ trace?: never;
+ };
+ "/api/admin/v2/disputes/{id}/note": {
+ parameters: {
+ query?: never;
+ header?: never;
+ path?: never;
+ cookie?: never;
+ };
+ get?: never;
+ put?: never;
+ /** Add an internal note to a dispute (Tier 1) */
+ post: operations["DisputesController_note"];
+ delete?: never;
+ options?: never;
+ head?: never;
+ patch?: never;
+ trace?: never;
+ };
+ "/api/admin/v2/disputes/{id}/resolve": {
+ parameters: {
+ query?: never;
+ header?: never;
+ path?: never;
+ cookie?: never;
+ };
+ get?: never;
+ put?: never;
+ /** Resolve a dispute with an outcome (Tier 2: requires step-up) */
+ post: operations["DisputesController_resolve"];
+ delete?: never;
+ options?: never;
+ head?: never;
+ patch?: never;
+ trace?: never;
+ };
+ "/api/admin/v2/disputes/{id}/escalate": {
+ parameters: {
+ query?: never;
+ header?: never;
+ path?: never;
+ cookie?: never;
+ };
+ get?: never;
+ put?: never;
+ /** Escalate a dispute to arbitration (Tier 2: requires step-up) */
+ post: operations["DisputesController_escalate"];
+ delete?: never;
+ options?: never;
+ head?: never;
+ patch?: never;
+ trace?: never;
+ };
+ "/api/admin/v2/escrow": {
+ parameters: {
+ query?: never;
+ header?: never;
+ path?: never;
+ cookie?: never;
+ };
+ /** List escrow transactions (paginated, searchable) */
+ get: operations["EscrowController_list"];
+ put?: never;
+ post?: never;
+ delete?: never;
+ options?: never;
+ head?: never;
+ patch?: never;
+ trace?: never;
+ };
+ "/api/admin/v2/escrow/requests": {
+ parameters: {
+ query?: never;
+ header?: never;
+ path?: never;
+ cookie?: never;
+ };
+ /** List escrow release/refund requests (maker-checker) */
+ get: operations["EscrowController_listRequests"];
+ put?: never;
+ /** Propose an escrow release/refund (Tier 3: step-up) */
+ post: operations["EscrowController_propose"];
+ delete?: never;
+ options?: never;
+ head?: never;
+ patch?: never;
+ trace?: never;
+ };
+ "/api/admin/v2/escrow/requests/{id}/decision": {
+ parameters: {
+ query?: never;
+ header?: never;
+ path?: never;
+ cookie?: never;
+ };
+ get?: never;
+ put?: never;
+ /** Approve or reject a request (Tier 3: step-up, maker-checker) */
+ post: operations["EscrowController_decide"];
+ delete?: never;
+ options?: never;
+ head?: never;
+ patch?: never;
+ trace?: never;
+ };
+ "/api/admin/v2/escrow/requests/{id}/execute": {
+ parameters: {
+ query?: never;
+ header?: never;
+ path?: never;
+ cookie?: never;
+ };
+ get?: never;
+ put?: never;
+ /** Record an approved request as executed (Tier 3: step-up) */
+ post: operations["EscrowController_execute"];
+ delete?: never;
+ options?: never;
+ head?: never;
+ patch?: never;
+ trace?: never;
+ };
+ "/api/admin/v2/payouts": {
+ parameters: {
+ query?: never;
+ header?: never;
+ path?: never;
+ cookie?: never;
+ };
+ /** List platform payouts (paginated, searchable) */
+ get: operations["PayoutsController_list"];
+ put?: never;
+ post?: never;
+ delete?: never;
+ options?: never;
+ head?: never;
+ patch?: never;
+ trace?: never;
+ };
+ "/api/admin/v2/payouts/requests": {
+ parameters: {
+ query?: never;
+ header?: never;
+ path?: never;
+ cookie?: never;
+ };
+ /** List payout requests (maker-checker) */
+ get: operations["PayoutsController_listRequests"];
+ put?: never;
+ /** Propose a payout (Tier 3: step-up) */
+ post: operations["PayoutsController_propose"];
+ delete?: never;
+ options?: never;
+ head?: never;
+ patch?: never;
+ trace?: never;
+ };
+ "/api/admin/v2/payouts/requests/{id}/decision": {
+ parameters: {
+ query?: never;
+ header?: never;
+ path?: never;
+ cookie?: never;
+ };
+ get?: never;
+ put?: never;
+ /** Approve or reject a payout request (Tier 3: step-up, maker-checker) */
+ post: operations["PayoutsController_decide"];
+ delete?: never;
+ options?: never;
+ head?: never;
+ patch?: never;
+ trace?: never;
+ };
+ "/api/admin/v2/payouts/requests/{id}/build-xdr": {
+ parameters: {
+ query?: never;
+ header?: never;
+ path?: never;
+ cookie?: never;
+ };
+ get?: never;
+ put?: never;
+ /** Build the unsigned payout XDR for offline signing (Tier 3: step-up) */
+ post: operations["PayoutsController_buildXdr"];
+ delete?: never;
+ options?: never;
+ head?: never;
+ patch?: never;
+ trace?: never;
+ };
+ "/api/admin/v2/payouts/requests/{id}/submit-signed": {
+ parameters: {
+ query?: never;
+ header?: never;
+ path?: never;
+ cookie?: never;
+ };
+ get?: never;
+ put?: never;
+ /** Submit the offline-signed payout XDR; verifies + broadcasts (Tier 3: step-up) */
+ post: operations["PayoutsController_submitSigned"];
+ delete?: never;
+ options?: never;
+ head?: never;
+ patch?: never;
+ trace?: never;
+ };
+ "/api/admin/v2/payouts/requests/{id}/execute": {
+ parameters: {
+ query?: never;
+ header?: never;
+ path?: never;
+ cookie?: never;
+ };
+ get?: never;
+ put?: never;
+ /** Fallback: record a payout signed + broadcast off-platform (Tier 3: step-up) */
+ post: operations["PayoutsController_execute"];
+ delete?: never;
+ options?: never;
+ head?: never;
+ patch?: never;
+ trace?: never;
+ };
+ "/api/admin/v2/content": {
+ parameters: {
+ query?: never;
+ header?: never;
+ path?: never;
+ cookie?: never;
+ };
+ /** List blog posts (paginated, searchable; archived via ?archived) */
+ get: operations["ContentController_list"];
+ put?: never;
+ /** Create a blog post (MDX body) (Tier 1) */
+ post: operations["ContentController_create"];
+ delete?: never;
+ options?: never;
+ head?: never;
+ patch?: never;
+ trace?: never;
+ };
+ "/api/admin/v2/content/{id}": {
+ parameters: {
+ query?: never;
+ header?: never;
+ path?: never;
+ cookie?: never;
+ };
+ /** Get one post (full body + metadata, for editing) */
+ get: operations["ContentController_getById"];
+ put?: never;
+ post?: never;
+ delete?: never;
+ options?: never;
+ head?: never;
+ /** Update a blog post (Tier 1) */
+ patch: operations["ContentController_update"];
+ trace?: never;
+ };
+ "/api/admin/v2/content/{id}/publish": {
+ parameters: {
+ query?: never;
+ header?: never;
+ path?: never;
+ cookie?: never;
+ };
+ get?: never;
+ put?: never;
+ post?: never;
+ delete?: never;
+ options?: never;
+ head?: never;
+ /** Publish or unpublish a post (Tier 1) */
+ patch: operations["ContentController_setPublished"];
+ trace?: never;
+ };
+ "/api/admin/v2/content/{id}/archive": {
+ parameters: {
+ query?: never;
+ header?: never;
+ path?: never;
+ cookie?: never;
+ };
+ get?: never;
+ put?: never;
+ /** Archive (soft-delete) a post (Tier 2: requires step-up) */
+ post: operations["ContentController_archive"];
+ delete?: never;
+ options?: never;
+ head?: never;
+ patch?: never;
+ trace?: never;
+ };
+ "/api/admin/v2/content/{id}/restore": {
+ parameters: {
+ query?: never;
+ header?: never;
+ path?: never;
+ cookie?: never;
+ };
+ get?: never;
+ put?: never;
+ /** Restore an archived post (Tier 1) */
+ post: operations["ContentController_restore"];
+ delete?: never;
+ options?: never;
+ head?: never;
+ patch?: never;
+ trace?: never;
+ };
+ "/api/admin/v2/crowdfunding/review-checklist": {
+ parameters: {
+ query?: never;
+ header?: never;
+ path?: never;
+ cookie?: never;
+ };
+ /** List active review checklist items (display order) */
+ get: operations["CrowdfundingChecklistController_list"];
+ put?: never;
+ /** Add a checklist item (super_admin / operations) */
+ post: operations["CrowdfundingChecklistController_create"];
+ delete?: never;
+ options?: never;
+ head?: never;
+ patch?: never;
+ trace?: never;
+ };
+ "/api/admin/v2/crowdfunding/review-checklist/reorder": {
+ parameters: {
+ query?: never;
+ header?: never;
+ path?: never;
+ cookie?: never;
+ };
+ get?: never;
+ put?: never;
+ /** Reorder checklist items (super_admin / operations) */
+ post: operations["CrowdfundingChecklistController_reorder"];
+ delete?: never;
+ options?: never;
+ head?: never;
+ patch?: never;
+ trace?: never;
+ };
+ "/api/admin/v2/crowdfunding/review-checklist/{itemId}": {
+ parameters: {
+ query?: never;
+ header?: never;
+ path?: never;
+ cookie?: never;
+ };
+ get?: never;
+ put?: never;
+ post?: never;
+ /** Archive a checklist item (super_admin / operations) */
+ delete: operations["CrowdfundingChecklistController_archive"];
+ options?: never;
+ head?: never;
+ /** Edit a checklist item (super_admin / operations) */
+ patch: operations["CrowdfundingChecklistController_update"];
+ trace?: never;
+ };
+ "/api/admin/v2/crowdfunding": {
+ parameters: {
+ query?: never;
+ header?: never;
+ path?: never;
+ cookie?: never;
+ };
+ /** List crowdfunding campaigns (defaults to the review queue) */
+ get: operations["CrowdfundingController_list"];
+ put?: never;
+ post?: never;
+ delete?: never;
+ options?: never;
+ head?: never;
+ patch?: never;
+ trace?: never;
+ };
+ "/api/admin/v2/crowdfunding/{id}": {
+ parameters: {
+ query?: never;
+ header?: never;
+ path?: never;
+ cookie?: never;
+ };
+ /** Get one campaign with its review history */
+ get: operations["CrowdfundingController_getById"];
+ put?: never;
+ post?: never;
+ delete?: never;
+ options?: never;
+ head?: never;
+ patch?: never;
+ trace?: never;
+ };
+ "/api/admin/v2/crowdfunding/{id}/approve": {
+ parameters: {
+ query?: never;
+ header?: never;
+ path?: never;
+ cookie?: never;
+ };
+ get?: never;
+ put?: never;
+ /** Approve a submitted campaign; assigns a reviewer (Tier 2: step-up) */
+ post: operations["CrowdfundingController_approve"];
+ delete?: never;
+ options?: never;
+ head?: never;
+ patch?: never;
+ trace?: never;
+ };
+ "/api/admin/v2/crowdfunding/{id}/reject": {
+ parameters: {
+ query?: never;
+ header?: never;
+ path?: never;
+ cookie?: never;
+ };
+ get?: never;
+ put?: never;
+ /** Reject a submitted campaign (Tier 2: step-up) */
+ post: operations["CrowdfundingController_reject"];
+ delete?: never;
+ options?: never;
+ head?: never;
+ patch?: never;
+ trace?: never;
+ };
+ "/api/admin/v2/crowdfunding/{id}/request-revision": {
+ parameters: {
+ query?: never;
+ header?: never;
+ path?: never;
+ cookie?: never;
+ };
+ get?: never;
+ put?: never;
+ /** Send a submitted campaign back for revisions (Tier 1) */
+ post: operations["CrowdfundingController_requestRevision"];
+ delete?: never;
+ options?: never;
+ head?: never;
+ patch?: never;
+ trace?: never;
+ };
+ "/api/admin/v2/access/totp/enroll": {
+ parameters: {
+ query?: never;
+ header?: never;
+ path?: never;
+ cookie?: never;
+ };
+ get?: never;
+ put?: never;
+ /** Begin TOTP enrollment (returns secret + QR URI) */
+ post: operations["SecurityController_enroll"];
+ delete?: never;
+ options?: never;
+ head?: never;
+ patch?: never;
+ trace?: never;
+ };
+ "/api/admin/v2/access/totp/activate": {
+ parameters: {
+ query?: never;
+ header?: never;
+ path?: never;
+ cookie?: never;
+ };
+ get?: never;
+ put?: never;
+ /** Confirm TOTP enrollment with a code */
+ post: operations["SecurityController_activate"];
+ delete?: never;
+ options?: never;
+ head?: never;
+ patch?: never;
+ trace?: never;
+ };
+ "/api/admin/v2/access/step-up": {
+ parameters: {
+ query?: never;
+ header?: never;
+ path?: never;
+ cookie?: never;
+ };
+ get?: never;
+ put?: never;
+ /** Step up: verify a fresh TOTP code for sensitive actions */
+ post: operations["SecurityController_stepUp"];
+ delete?: never;
+ options?: never;
+ head?: never;
+ patch?: never;
+ trace?: never;
+ };
+ "/api/admin/v2/audit": {
+ parameters: {
+ query?: never;
+ header?: never;
+ path?: never;
+ cookie?: never;
+ };
+ /** List admin audit log entries (paginated, searchable) */
+ get: operations["AuditController_list"];
+ put?: never;
+ post?: never;
+ delete?: never;
+ options?: never;
+ head?: never;
+ patch?: never;
+ trace?: never;
+ };
+ "/api/admin/v2/audit/stream": {
+ parameters: {
+ query?: never;
+ header?: never;
+ path?: never;
+ cookie?: never;
+ };
+ /** Live stream of new audit entries (Server-Sent Events) */
+ get: operations["AuditController_stream"];
+ put?: never;
+ post?: never;
+ delete?: never;
+ options?: never;
+ head?: never;
+ patch?: never;
+ trace?: never;
+ };
+ "/api/admin/v2/feature-flags": {
+ parameters: {
+ query?: never;
+ header?: never;
+ path?: never;
+ cookie?: never;
+ };
+ /** List feature flags */
+ get: operations["FeatureFlagsController_list"];
+ put?: never;
+ post?: never;
+ delete?: never;
+ options?: never;
+ head?: never;
+ patch?: never;
+ trace?: never;
+ };
+ "/api/admin/v2/feature-flags/{key}": {
+ parameters: {
+ query?: never;
+ header?: never;
+ path?: never;
+ cookie?: never;
+ };
+ get?: never;
+ put?: never;
+ post?: never;
+ delete?: never;
+ options?: never;
+ head?: never;
+ /** Toggle a feature flag (Tier 2: requires step-up) */
+ patch: operations["FeatureFlagsController_toggle"];
+ trace?: never;
+ };
+ "/api/admin/v2/staff": {
+ parameters: {
+ query?: never;
+ header?: never;
+ path?: never;
+ cookie?: never;
+ };
+ /** List staff members and their roles */
+ get: operations["StaffController_list"];
+ put?: never;
+ post?: never;
+ delete?: never;
+ options?: never;
+ head?: never;
+ patch?: never;
+ trace?: never;
+ };
+ "/api/admin/v2/staff/{id}/role": {
+ parameters: {
+ query?: never;
+ header?: never;
+ path?: never;
+ cookie?: never;
+ };
+ get?: never;
+ put?: never;
+ post?: never;
+ delete?: never;
+ options?: never;
+ head?: never;
+ /** Assign a staff role (Tier 2: requires step-up) */
+ patch: operations["StaffController_setRole"];
+ trace?: never;
+ };
+ "/api/admin/v2/governance": {
+ parameters: {
+ query?: never;
+ header?: never;
+ path?: never;
+ cookie?: never;
+ };
+ /** List governance proposals (optionally by status) */
+ get: operations["GovernanceController_list"];
+ put?: never;
+ /** Propose a governance action (Tier 4: step-up) */
+ post: operations["GovernanceController_propose"];
+ delete?: never;
+ options?: never;
+ head?: never;
+ patch?: never;
+ trace?: never;
+ };
+ "/api/admin/v2/governance/{id}/decision": {
+ parameters: {
+ query?: never;
+ header?: never;
+ path?: never;
+ cookie?: never;
+ };
+ get?: never;
+ put?: never;
+ /** Approve or reject a proposal (Tier 3: step-up, maker-checker) */
+ post: operations["GovernanceController_decide"];
+ delete?: never;
+ options?: never;
+ head?: never;
+ patch?: never;
+ trace?: never;
+ };
+ "/api/admin/v2/governance/{id}/execute": {
+ parameters: {
+ query?: never;
+ header?: never;
+ path?: never;
+ cookie?: never;
+ };
+ get?: never;
+ put?: never;
+ /** Record an approved proposal as executed (Tier 4: step-up) */
+ post: operations["GovernanceController_execute"];
+ delete?: never;
+ options?: never;
+ head?: never;
+ patch?: never;
+ trace?: never;
+ };
+ "/api/admin/v2/contract-governance/tokens": {
+ parameters: {
+ query?: never;
+ header?: never;
+ path?: never;
+ cookie?: never;
+ };
+ /** List whitelisted tokens with live on-chain status */
+ get: operations["GovernanceContractController_listTokens"];
+ put?: never;
+ post?: never;
+ delete?: never;
+ options?: never;
+ head?: never;
+ patch?: never;
+ trace?: never;
+ };
+ "/api/admin/v2/contract-governance/tokens/sync": {
+ parameters: {
+ query?: never;
+ header?: never;
+ path?: never;
+ cookie?: never;
+ };
+ get?: never;
+ put?: never;
+ /** Sync the whitelist from contract state (authoritative enumeration, any age); falls back to an event rescan on pre-enumeration contracts. */
+ post: operations["GovernanceContractController_syncTokens"];
+ delete?: never;
+ options?: never;
+ head?: never;
+ patch?: never;
+ trace?: never;
+ };
+ "/api/admin/v2/contract-governance/tokens/import": {
+ parameters: {
+ query?: never;
+ header?: never;
+ path?: never;
+ cookie?: never;
+ };
+ get?: never;
+ put?: never;
+ /** Import a token already whitelisted on-chain into the portal (verified via is_supported_token; no signing). For recovering older tokens. */
+ post: operations["GovernanceContractController_importToken"];
+ delete?: never;
+ options?: never;
+ head?: never;
+ patch?: never;
+ trace?: never;
+ };
+ "/api/admin/v2/contract-governance/pause-state": {
+ parameters: {
+ query?: never;
+ header?: never;
+ path?: never;
+ cookie?: never;
+ };
+ /** Live pause flag for the events contract */
+ get: operations["GovernanceContractController_pauseState"];
+ put?: never;
+ post?: never;
+ delete?: never;
+ options?: never;
+ head?: never;
+ patch?: never;
+ trace?: never;
+ };
+ "/api/admin/v2/contract-governance/tokens/build-xdr": {
+ parameters: {
+ query?: never;
+ header?: never;
+ path?: never;
+ cookie?: never;
+ };
+ get?: never;
+ put?: never;
+ /** Build the unsigned register_supported_token transaction. Tier 3: step-up. */
+ post: operations["GovernanceContractController_buildRegisterToken"];
+ delete?: never;
+ options?: never;
+ head?: never;
+ patch?: never;
+ trace?: never;
+ };
+ "/api/admin/v2/contract-governance/tokens/deregister/build-xdr": {
+ parameters: {
+ query?: never;
+ header?: never;
+ path?: never;
+ cookie?: never;
+ };
+ get?: never;
+ put?: never;
+ /** Build the unsigned deregister_supported_token transaction. Tier 3: step-up. */
+ post: operations["GovernanceContractController_buildDeregisterToken"];
+ delete?: never;
+ options?: never;
+ head?: never;
+ patch?: never;
+ trace?: never;
+ };
+ "/api/admin/v2/contract-governance/pause/build-xdr": {
+ parameters: {
+ query?: never;
+ header?: never;
+ path?: never;
+ cookie?: never;
+ };
+ get?: never;
+ put?: never;
+ /** Build the unsigned pause transaction. Tier 3: step-up. */
+ post: operations["GovernanceContractController_buildPause"];
+ delete?: never;
+ options?: never;
+ head?: never;
+ patch?: never;
+ trace?: never;
+ };
+ "/api/admin/v2/contract-governance/unpause/build-xdr": {
+ parameters: {
+ query?: never;
+ header?: never;
+ path?: never;
+ cookie?: never;
+ };
+ get?: never;
+ put?: never;
+ /** Build the unsigned unpause transaction. Tier 3: step-up. */
+ post: operations["GovernanceContractController_buildUnpause"];
+ delete?: never;
+ options?: never;
+ head?: never;
+ patch?: never;
+ trace?: never;
+ };
+ "/api/admin/v2/contract-governance/ops/{id}/submit-signed": {
+ parameters: {
+ query?: never;
+ header?: never;
+ path?: never;
+ cookie?: never;
+ };
+ get?: never;
+ put?: never;
+ /** Submit the admin-signed transaction for a built op (verified against the built XDR). Tier 3: step-up. */
+ post: operations["GovernanceContractController_submitSigned"];
+ delete?: never;
+ options?: never;
+ head?: never;
+ patch?: never;
+ trace?: never;
+ };
+ "/api/admin/v2/kyc": {
+ parameters: {
+ query?: never;
+ header?: never;
+ path?: never;
+ cookie?: never;
+ };
+ /** List identity-verification (KYC) records (paginated, filterable) */
+ get: operations["KycController_list"];
+ put?: never;
+ post?: never;
+ delete?: never;
+ options?: never;
+ head?: never;
+ patch?: never;
+ trace?: never;
+ };
+ "/api/admin/v2/kyc/connection": {
+ parameters: {
+ query?: never;
+ header?: never;
+ path?: never;
+ cookie?: never;
+ };
+ /** Live Didit integration status (config presence) */
+ get: operations["KycController_connection"];
+ put?: never;
+ post?: never;
+ delete?: never;
+ options?: never;
+ head?: never;
+ patch?: never;
+ trace?: never;
+ };
+ "/api/admin/v2/kyc/{userId}/sync": {
+ parameters: {
+ query?: never;
+ header?: never;
+ path?: never;
+ cookie?: never;
+ };
+ get?: never;
+ put?: never;
+ /** Pull the latest decision live from Didit and reconcile (Tier 1) */
+ post: operations["KycController_sync"];
+ delete?: never;
+ options?: never;
+ head?: never;
+ patch?: never;
+ trace?: never;
+ };
+ "/api/admin/v2/kyc/{userId}/retrigger": {
+ parameters: {
+ query?: never;
+ header?: never;
+ path?: never;
+ cookie?: never;
+ };
+ get?: never;
+ put?: never;
+ /** Create a fresh Didit verification session for the user (Tier 1) */
+ post: operations["KycController_retrigger"];
+ delete?: never;
+ options?: never;
+ head?: never;
+ patch?: never;
+ trace?: never;
+ };
+ "/api/admin/v2/kyc/{userId}/override": {
+ parameters: {
+ query?: never;
+ header?: never;
+ path?: never;
+ cookie?: never;
+ };
+ get?: never;
+ put?: never;
+ /** Manually force a KYC decision, overriding Didit (Tier 2: step-up) */
+ post: operations["KycController_override"];
+ delete?: never;
+ options?: never;
+ head?: never;
+ patch?: never;
+ trace?: never;
+ };
+ "/api/admin/v2/milestones": {
+ parameters: {
+ query?: never;
+ header?: never;
+ path?: never;
+ cookie?: never;
+ };
+ /** List deliverable milestones across a pillar (paginated) */
+ get: operations["MilestonesController_list"];
+ put?: never;
+ post?: never;
+ delete?: never;
+ options?: never;
+ head?: never;
+ patch?: never;
+ trace?: never;
+ };
+ "/api/admin/v2/milestones/{id}": {
+ parameters: {
+ query?: never;
+ header?: never;
+ path?: never;
+ cookie?: never;
+ };
+ /** Get full milestone detail for admin review */
+ get: operations["MilestonesController_findOne"];
+ put?: never;
+ post?: never;
+ delete?: never;
+ options?: never;
+ head?: never;
+ patch?: never;
+ trace?: never;
+ };
+ "/api/admin/v2/milestones/{id}/approve": {
+ parameters: {
+ query?: never;
+ header?: never;
+ path?: never;
+ cookie?: never;
+ };
+ get?: never;
+ put?: never;
+ /** Approve a submitted crowdfunding milestone (Tier 3: step-up) */
+ post: operations["MilestonesController_approve"];
+ delete?: never;
+ options?: never;
+ head?: never;
+ patch?: never;
+ trace?: never;
+ };
+ "/api/admin/v2/milestones/{id}/reject": {
+ parameters: {
+ query?: never;
+ header?: never;
+ path?: never;
+ cookie?: never;
+ };
+ get?: never;
+ put?: never;
+ /** Reject a submitted crowdfunding milestone (Tier 2: step-up) */
+ post: operations["MilestonesController_reject"];
+ delete?: never;
+ options?: never;
+ head?: never;
+ patch?: never;
+ trace?: never;
+ };
+ "/api/admin/v2/milestones/{id}/release/build-xdr": {
+ parameters: {
+ query?: never;
+ header?: never;
+ path?: never;
+ cookie?: never;
+ };
+ get?: never;
+ put?: never;
+ /** Build the unsigned release transaction for an APPROVED milestone (admin signs the envelope offline at the Lab). Tier 3: step-up. */
+ post: operations["MilestonesController_buildReleaseXdr"];
+ delete?: never;
+ options?: never;
+ head?: never;
+ patch?: never;
+ trace?: never;
+ };
+ "/api/admin/v2/milestones/{id}/release/submit-signed": {
+ parameters: {
+ query?: never;
+ header?: never;
+ path?: never;
+ cookie?: never;
+ };
+ get?: never;
+ put?: never;
+ /** Submit the admin-signed release transaction for a milestone (verified against the built XDR). Tier 3: step-up. */
+ post: operations["MilestonesController_submitReleaseSigned"];
+ delete?: never;
+ options?: never;
+ head?: never;
+ patch?: never;
+ trace?: never;
+ };
+ "/api/admin/v2/wallets": {
+ parameters: {
+ query?: never;
+ header?: never;
+ path?: never;
+ cookie?: never;
+ };
+ /** List abstracted wallets (paginated, searchable) */
+ get: operations["WalletsController_list"];
+ put?: never;
+ post?: never;
+ delete?: never;
+ options?: never;
+ head?: never;
+ patch?: never;
+ trace?: never;
+ };
+ "/api/admin/v2/hackathon-brief-templates": {
+ parameters: {
+ query?: never;
+ header?: never;
+ path?: never;
+ cookie?: never;
+ };
+ /** List all hackathon brief templates (including inactive) */
+ get: operations["HackathonBriefTemplatesController_list"];
+ put?: never;
+ /** Create a hackathon brief template (Tier 1) */
+ post: operations["HackathonBriefTemplatesController_create"];
+ delete?: never;
+ options?: never;
+ head?: never;
+ patch?: never;
+ trace?: never;
+ };
+ "/api/admin/v2/hackathon-brief-templates/{id}": {
+ parameters: {
+ query?: never;
+ header?: never;
+ path?: never;
+ cookie?: never;
+ };
+ get?: never;
+ /** Update a hackathon brief template (Tier 1) */
+ put: operations["HackathonBriefTemplatesController_update"];
+ post?: never;
+ /** Archive a hackathon brief template (soft-delete) */
+ delete: operations["HackathonBriefTemplatesController_archive"];
+ options?: never;
+ head?: never;
+ patch?: never;
+ trace?: never;
+ };
+ "/api/hackathon-brief-templates": {
+ parameters: {
+ query?: never;
+ header?: never;
+ path?: never;
+ cookie?: never;
+ };
+ /** List active hackathon brief templates */
+ get: operations["HackathonBriefTemplatesPublicController_list"];
+ put?: never;
+ post?: never;
+ delete?: never;
+ options?: never;
+ head?: never;
+ patch?: never;
+ trace?: never;
+ };
+ "/api/admin/v2/marketing/templates": {
+ parameters: {
+ query?: never;
+ header?: never;
+ path?: never;
+ cookie?: never;
+ };
+ /** List all marketing templates */
+ get: operations["MarketingTemplatesController_list"];
+ put?: never;
+ /** Create a marketing template (Tier 1) */
+ post: operations["MarketingTemplatesController_create"];
+ delete?: never;
+ options?: never;
+ head?: never;
+ patch?: never;
+ trace?: never;
+ };
+ "/api/admin/v2/marketing/templates/{id}": {
+ parameters: {
+ query?: never;
+ header?: never;
+ path?: never;
+ cookie?: never;
+ };
+ get?: never;
+ /** Update a marketing template (Tier 1) */
+ put: operations["MarketingTemplatesController_update"];
+ post?: never;
+ /** Archive a marketing template (soft-delete) */
+ delete: operations["MarketingTemplatesController_archive"];
+ options?: never;
+ head?: never;
+ patch?: never;
+ trace?: never;
+ };
+ "/api/admin/v2/marketing/campaigns": {
+ parameters: {
+ query?: never;
+ header?: never;
+ path?: never;
+ cookie?: never;
+ };
+ /** List all marketing campaigns */
+ get: operations["MarketingCampaignsController_list"];
+ put?: never;
+ /** Create a campaign draft (Tier 1) */
+ post: operations["MarketingCampaignsController_create"];
+ delete?: never;
+ options?: never;
+ head?: never;
+ patch?: never;
+ trace?: never;
+ };
+ "/api/admin/v2/marketing/campaigns/{id}": {
+ parameters: {
+ query?: never;
+ header?: never;
+ path?: never;
+ cookie?: never;
+ };
+ get?: never;
+ /** Update a campaign draft (Tier 1) */
+ put: operations["MarketingCampaignsController_update"];
+ post?: never;
+ /** Cancel a campaign (soft-cancel) */
+ delete: operations["MarketingCampaignsController_cancel"];
+ options?: never;
+ head?: never;
+ patch?: never;
+ trace?: never;
+ };
+ "/api/admin/v2/marketing/campaigns/audience-size": {
+ parameters: {
+ query?: never;
+ header?: never;
+ path?: never;
+ cookie?: never;
+ };
+ get?: never;
+ put?: never;
+ /** Preview audience count for a filter */
+ post: operations["MarketingCampaignsController_audienceSize"];
+ delete?: never;
+ options?: never;
+ head?: never;
+ patch?: never;
+ trace?: never;
+ };
+ "/api/admin/v2/marketing/campaigns/{id}/send": {
+ parameters: {
+ query?: never;
+ header?: never;
+ path?: never;
+ cookie?: never;
+ };
+ get?: never;
+ put?: never;
+ /** Send a campaign to its audience (Tier 2 step-up) */
+ post: operations["MarketingCampaignsController_send"];
+ delete?: never;
+ options?: never;
+ head?: never;
+ patch?: never;
+ trace?: never;
+ };
+ "/api/admin/v2/marketing/automations": {
+ parameters: {
+ query?: never;
+ header?: never;
+ path?: never;
+ cookie?: never;
+ };
+ /** List all marketing automations */
+ get: operations["MarketingAutomationsController_list"];
+ put?: never;
+ /** Create a marketing automation (Tier 1) */
+ post: operations["MarketingAutomationsController_create"];
+ delete?: never;
+ options?: never;
+ head?: never;
+ patch?: never;
+ trace?: never;
+ };
+ "/api/admin/v2/marketing/automations/{id}": {
+ parameters: {
+ query?: never;
+ header?: never;
+ path?: never;
+ cookie?: never;
+ };
+ get?: never;
+ /** Update a marketing automation (Tier 1) */
+ put: operations["MarketingAutomationsController_update"];
+ post?: never;
+ /** Delete an automation (hard delete — no audit trail loss) */
+ delete: operations["MarketingAutomationsController_remove"];
+ options?: never;
+ head?: never;
+ patch?: never;
+ trace?: never;
+ };
+ "/api/admin/v2/marketing/automations/{id}/toggle": {
+ parameters: {
+ query?: never;
+ header?: never;
+ path?: never;
+ cookie?: never;
+ };
+ get?: never;
+ put?: never;
+ post?: never;
+ delete?: never;
+ options?: never;
+ head?: never;
+ /** Enable or disable an automation */
+ patch: operations["MarketingAutomationsController_toggle"];
+ trace?: never;
+ };
+ "/api/prices": {
+ parameters: {
+ query?: never;
+ header?: never;
+ path?: never;
+ cookie?: never;
+ };
+ /**
+ * Get USD prices for all supported assets
+ * @description Returns per-unit USD prices for XLM, USDC, EURC and USDGLO. Resolved from the Reflector on-chain oracle, with CoinGecko and stablecoin-peg fallbacks. Cached for 5 minutes (matches Reflector update cadence).
+ */
+ get: operations["PricesController_getAll"];
+ put?: never;
+ post?: never;
+ delete?: never;
+ options?: never;
+ head?: never;
+ patch?: never;
+ trace?: never;
+ };
+ "/api/prices/debug": {
+ parameters: {
+ query?: never;
+ header?: never;
+ path?: never;
+ cookie?: never;
+ };
+ /**
+ * Per-provider price resolution (diagnostic)
+ * @description Bypasses the cache and pings Reflector + CoinGecko for every supported asset. Returns what each provider returned alongside which one the resolution chain would have picked. Use to verify both price paths are live.
+ */
+ get: operations["PricesController_getDebug"];
+ put?: never;
+ post?: never;
+ delete?: never;
+ options?: never;
+ head?: never;
+ patch?: never;
+ trace?: never;
+ };
+ "/api/prices/{symbol}": {
+ parameters: {
+ query?: never;
+ header?: never;
+ path?: never;
+ cookie?: never;
+ };
+ /**
+ * Get USD price for a single asset
+ * @description Convenience lookup — internally reads from the same cached map as the list endpoint.
+ */
+ get: operations["PricesController_getOne"];
+ put?: never;
+ post?: never;
+ delete?: never;
+ options?: never;
+ head?: never;
+ patch?: never;
+ trace?: never;
+ };
+ "/api/projects/drafts": {
+ parameters: {
+ query?: never;
+ header?: never;
+ path?: never;
+ cookie?: never;
+ };
+ get?: never;
+ put?: never;
+ /** Create a project draft (stepped form) */
+ post: operations["ProjectsController_createDraft"];
+ delete?: never;
+ options?: never;
+ head?: never;
+ patch?: never;
+ trace?: never;
+ };
+ "/api/projects/{id}/draft": {
+ parameters: {
+ query?: never;
+ header?: never;
+ path?: never;
+ cookie?: never;
+ };
+ get?: never;
+ put?: never;
+ post?: never;
+ delete?: never;
+ options?: never;
+ head?: never;
+ /** Update a project draft (stepped form autosave) */
+ patch: operations["ProjectsController_saveDraft"];
+ trace?: never;
+ };
+ "/api/projects": {
+ parameters: {
+ query?: never;
+ header?: never;
+ path?: never;
+ cookie?: never;
+ };
+ /** List public projects (PRD products directory) */
+ get: operations["ProjectsController_listPublicProjects"];
+ put?: never;
+ post?: never;
+ delete?: never;
+ options?: never;
+ head?: never;
+ patch?: never;
+ trace?: never;
+ };
+ "/api/projects/search": {
+ parameters: {
+ query?: never;
+ header?: never;
+ path?: never;
+ cookie?: never;
+ };
+ /** Search public projects */
+ get: operations["ProjectsController_searchPublicProjects"];
+ put?: never;
+ post?: never;
+ delete?: never;
+ options?: never;
+ head?: never;
+ patch?: never;
+ trace?: never;
+ };
+ "/api/projects/featured": {
+ parameters: {
+ query?: never;
+ header?: never;
+ path?: never;
+ cookie?: never;
+ };
+ /** List featured projects */
+ get: operations["ProjectsController_listFeaturedProjects"];
+ put?: never;
+ post?: never;
+ delete?: never;
+ options?: never;
+ head?: never;
+ patch?: never;
+ trace?: never;
+ };
+ "/api/projects/{id}/edits": {
+ parameters: {
+ query?: never;
+ header?: never;
+ path?: never;
+ cookie?: never;
+ };
+ /** List edit history for your project */
+ get: operations["ProjectsController_listProjectEdits"];
+ put?: never;
+ /** Submit a major/minor edit for your project */
+ post: operations["ProjectsController_submitProjectEdit"];
+ delete?: never;
+ options?: never;
+ head?: never;
+ patch?: never;
+ trace?: never;
+ };
+ "/api/projects/{id}/publish": {
+ parameters: {
+ query?: never;
+ header?: never;
+ path?: never;
+ cookie?: never;
+ };
+ get?: never;
+ put?: never;
+ /** Publish/submit a project draft (Review & Submit) */
+ post: operations["ProjectsController_publishProject"];
+ delete?: never;
+ options?: never;
+ head?: never;
+ patch?: never;
+ trace?: never;
+ };
+ "/api/projects/me": {
+ parameters: {
+ query?: never;
+ header?: never;
+ path?: never;
+ cookie?: never;
+ };
+ /** List my projects */
+ get: operations["ProjectsController_getMyProjects"];
+ put?: never;
+ post?: never;
+ delete?: never;
+ options?: never;
+ head?: never;
+ patch?: never;
+ trace?: never;
+ };
+ "/api/projects/{slug}": {
+ parameters: {
+ query?: never;
+ header?: never;
+ path?: never;
+ cookie?: never;
+ };
+ /** Get public project by slug */
+ get: operations["ProjectsController_getPublicProjectBySlug"];
+ put?: never;
+ post?: never;
+ delete?: never;
+ options?: never;
+ head?: never;
+ patch?: never;
+ trace?: never;
+ };
+ "/api/projects/me/{id}": {
+ parameters: {
+ query?: never;
+ header?: never;
+ path?: never;
+ cookie?: never;
+ };
+ /** Get my project by ID */
+ get: operations["ProjectsController_getProject"];
+ put?: never;
+ post?: never;
+ delete?: never;
+ options?: never;
+ head?: never;
+ patch?: never;
+ trace?: never;
+ };
+ "/api/organizations/{organizationId}/bounties/draft/{id}": {
+ parameters: {
+ query?: never;
+ header?: never;
+ path?: never;
+ cookie?: never;
+ };
+ /**
+ * Get a bounty draft for resume
+ * @description Returns the current section-keyed state of a bounty draft.
+ */
+ get: operations["OrganizationBountiesDraftsController_getDraft"];
+ put?: never;
+ post?: never;
+ /**
+ * Delete a bounty draft
+ * @description Deletes an unpublished bounty (draft / draft_awaiting_funding).
+ */
+ delete: operations["OrganizationBountiesDraftsController_deleteDraft"];
+ options?: never;
+ head?: never;
+ /**
+ * Update one or more sections of a bounty draft
+ * @description Applies any subset of wizard sections in a single PATCH. Send one section for a per-step "Continue", or several for "Save draft". Each present section is validated and transformed independently, then merged into one write. The reward section replaces the prize tiers.
+ */
+ patch: operations["OrganizationBountiesDraftsController_updateDraft"];
+ trace?: never;
+ };
+ "/api/organizations/{organizationId}/bounties": {
+ parameters: {
+ query?: never;
+ header?: never;
+ path?: never;
+ cookie?: never;
+ };
+ /**
+ * Get an organization's published bounties
+ * @description Lists bounties for an organization, newest first.
+ */
+ get: operations["OrganizationBountiesDraftsController_getOrganizationBounties"];
+ put?: never;
+ post?: never;
+ delete?: never;
+ options?: never;
+ head?: never;
+ patch?: never;
+ trace?: never;
+ };
+ "/api/organizations/{organizationId}/bounties/draft": {
+ parameters: {
+ query?: never;
+ header?: never;
+ path?: never;
+ cookie?: never;
+ };
+ get?: never;
+ put?: never;
+ /**
+ * Create a new bounty draft for an organization
+ * @description Creates an empty bounty in draft status that organization members can edit section by section through the Configure wizard.
+ */
+ post: operations["OrganizationBountiesDraftsController_createDraft"];
+ delete?: never;
+ options?: never;
+ head?: never;
+ patch?: never;
+ trace?: never;
+ };
+ "/api/organizations/{organizationId}/bounties/drafts": {
+ parameters: {
+ query?: never;
+ header?: never;
+ path?: never;
+ cookie?: never;
+ };
+ /**
+ * Get an organization's bounty drafts
+ * @description Lists draft and draft_awaiting_funding bounties for an organization.
+ */
+ get: operations["OrganizationBountiesDraftsController_getOrganizationDrafts"];
+ put?: never;
+ post?: never;
+ delete?: never;
+ options?: never;
+ head?: never;
+ patch?: never;
+ trace?: never;
+ };
+ "/api/organizations/{organizationId}/bounties/draft/clarify": {
+ parameters: {
+ query?: never;
+ header?: never;
+ path?: never;
+ cookie?: never;
+ };
+ get?: never;
+ put?: never;
+ /**
+ * Triage a bounty brief for clarifying questions (Organizer Assist)
+ * @description A cheap pre-draft gate: returns { ready: true } when the brief is specific enough, or 1-3 clarifying questions (mode / winners / deadline) the organizer answers before drafting.
+ */
+ post: operations["OrganizationBountiesAiController_clarify"];
+ delete?: never;
+ options?: never;
+ head?: never;
+ patch?: never;
+ trace?: never;
+ };
+ "/api/organizations/{organizationId}/bounties/draft/from-brief": {
+ parameters: {
+ query?: never;
+ header?: never;
+ path?: never;
+ cookie?: never;
+ };
+ get?: never;
+ put?: never;
+ /**
+ * Generate a bounty draft from a brief (Organizer Assist)
+ * @description Calls the AI service to turn a brief into a structured draft, persists a new bounty draft pre-filled with scope, mode, submission settings, and prize tiers, and returns it together with cost metadata. The organizer reviews, edits, and publishes.
+ */
+ post: operations["OrganizationBountiesAiController_generateFromBrief"];
+ delete?: never;
+ options?: never;
+ head?: never;
+ patch?: never;
+ trace?: never;
+ };
+ "/api/organizations/{organizationId}/bounties/draft/from-brief/stream": {
+ parameters: {
+ query?: never;
+ header?: never;
+ path?: never;
+ cookie?: never;
+ };
+ get?: never;
+ put?: never;
+ /**
+ * Generate a bounty draft from a brief, streaming (Organizer Assist)
+ * @description Server-Sent Events: `partial` frames carry the draft taking shape for a live reveal, then a `done` frame carries { draftId, draft }. Errors arrive as an `error` frame (or a normal 4xx before the stream opens, e.g. quota).
+ */
+ post: operations["OrganizationBountiesAiController_generateFromBriefStream"];
+ delete?: never;
+ options?: never;
+ head?: never;
+ patch?: never;
+ trace?: never;
+ };
+ "/api/organizations/{organizationId}/bounties/draft/{id}/regenerate-section": {
+ parameters: {
+ query?: never;
+ header?: never;
+ path?: never;
+ cookie?: never;
+ };
+ get?: never;
+ put?: never;
+ /**
+ * Regenerate one section of a bounty draft (Organizer Assist)
+ * @description Calls the AI service to regenerate a single section (description, submission, or reward) from the current draft and returns the new section for the organizer to accept or discard.
+ */
+ post: operations["OrganizationBountiesAiController_regenerateSection"];
+ delete?: never;
+ options?: never;
+ head?: never;
+ patch?: never;
+ trace?: never;
+ };
+ "/api/organizations/{organizationId}/bounties/{id}/escrow/funding-otp/request": {
+ parameters: {
+ query?: never;
+ header?: never;
+ path?: never;
+ cookie?: never;
+ };
+ get?: never;
+ put?: never;
+ /** Request a funding step-up code for a bounty */
+ post: operations["OrganizationBountiesEscrowController_requestFundingOtp"];
+ delete?: never;
+ options?: never;
+ head?: never;
+ patch?: never;
+ trace?: never;
+ };
+ "/api/organizations/{organizationId}/bounties/{id}/escrow/funding-otp/verify": {
+ parameters: {
+ query?: never;
+ header?: never;
+ path?: never;
+ cookie?: never;
+ };
+ get?: never;
+ put?: never;
+ /** Verify a funding step-up code for a bounty */
+ post: operations["OrganizationBountiesEscrowController_verifyFundingOtp"];
+ delete?: never;
+ options?: never;
+ head?: never;
+ patch?: never;
+ trace?: never;
+ };
+ "/api/organizations/{organizationId}/bounties/{id}/escrow/reset-to-draft": {
+ parameters: {
+ query?: never;
+ header?: never;
+ path?: never;
+ cookie?: never;
+ };
+ get?: never;
+ put?: never;
+ /**
+ * Return a stuck bounty to draft after a failed publish
+ * @description Resets a bounty stranded in draft_awaiting_funding back to draft so the organizer can republish. Refuses while the publish op may still settle on-chain (PENDING_SUBMIT / PENDING_CONFIRM / COMPLETED).
+ */
+ post: operations["OrganizationBountiesEscrowController_resetToDraft"];
+ delete?: never;
+ options?: never;
+ head?: never;
+ patch?: never;
+ trace?: never;
+ };
+ "/api/organizations/{organizationId}/bounties/{id}/escrow/publish": {
+ parameters: {
+ query?: never;
+ header?: never;
+ path?: never;
+ cookie?: never;
+ };
+ get?: never;
+ put?: never;
+ /**
+ * Publish a bounty draft to the events contract
+ * @description Validates the draft, transitions it to draft_awaiting_funding, and returns an unsigned XDR (EXTERNAL) or the op in PENDING_CONFIRM (MANAGED). Reconciliation transitions the bounty to OPEN on success.
+ */
+ post: operations["OrganizationBountiesEscrowController_publish"];
+ delete?: never;
+ options?: never;
+ head?: never;
+ patch?: never;
+ trace?: never;
+ };
+ "/api/organizations/{organizationId}/bounties/{id}/escrow/cancel": {
+ parameters: {
+ query?: never;
+ header?: never;
+ path?: never;
+ cookie?: never;
+ };
+ get?: never;
+ put?: never;
+ /**
+ * Cancel an active bounty
+ * @description Builds a cancel_event contract op. The contract refunds partner contributions first (in full), then the owner residual; or pro-rates partners if escrow is short. On settle, BountyEscrowSubscriber moves the bounty to CANCELLED and stamps the cancel audit columns.
+ */
+ post: operations["OrganizationBountiesEscrowController_cancel"];
+ delete?: never;
+ options?: never;
+ head?: never;
+ patch?: never;
+ trace?: never;
+ };
+ "/api/organizations/{organizationId}/bounties/{id}/escrow/select-winners": {
+ parameters: {
+ query?: never;
+ header?: never;
+ path?: never;
+ cookie?: never;
+ };
+ get?: never;
+ put?: never;
+ /**
+ * Select winners for a bounty
+ * @description Builds a select_winners contract op that pays out per the on-chain winner_distribution and bumps each winner's profile credits / reputation / earnings. On settle, BountyEscrowSubscriber moves the bounty to COMPLETED and marks the winning BountySubmission rows accepted with the reward tx hash.
+ */
+ post: operations["OrganizationBountiesEscrowController_selectWinners"];
+ delete?: never;
+ options?: never;
+ head?: never;
+ patch?: never;
+ trace?: never;
+ };
+ "/api/organizations/{organizationId}/bounties/{id}/escrow/ops/{opRowId}/submit-signed": {
+ parameters: {
+ query?: never;
+ header?: never;
+ path?: never;
+ cookie?: never;
+ };
+ get?: never;
+ put?: never;
+ /** Submit signed XDR for a previously-built bounty escrow op */
+ post: operations["OrganizationBountiesEscrowController_submitSigned"];
+ delete?: never;
+ options?: never;
+ head?: never;
+ patch?: never;
+ trace?: never;
+ };
+ "/api/organizations/{organizationId}/bounties/{id}/escrow/ops/{opRowId}": {
+ parameters: {
+ query?: never;
+ header?: never;
+ path?: never;
+ cookie?: never;
+ };
+ /** Read the current state of a bounty escrow op */
+ get: operations["OrganizationBountiesEscrowController_getOp"];
+ put?: never;
+ post?: never;
+ delete?: never;
+ options?: never;
+ head?: never;
+ patch?: never;
+ trace?: never;
+ };
+ "/api/bounties/{id}/escrow/apply": {
+ parameters: {
+ query?: never;
+ header?: never;
+ path?: never;
+ cookie?: never;
+ };
+ get?: never;
+ put?: never;
+ /**
+ * Apply to a bounty
+ * @description Builds an apply_to_bounty contract op. EXTERNAL returns unsigned XDR; MANAGED signs and submits. The contract charges the bounty's application_credit_cost via the profile contract on settle.
+ */
+ post: operations["BountyParticipantEscrowController_apply"];
+ delete?: never;
+ options?: never;
+ head?: never;
+ patch?: never;
+ trace?: never;
+ };
+ "/api/bounties/{id}/escrow/withdraw-application": {
+ parameters: {
+ query?: never;
+ header?: never;
+ path?: never;
+ cookie?: never;
+ };
+ get?: never;
+ put?: never;
+ /**
+ * Withdraw a bounty application
+ * @description Builds a withdraw_application contract op. Contract refunds half the application_credit_cost via the profile contract on settle.
+ */
+ post: operations["BountyParticipantEscrowController_withdrawApplication"];
+ delete?: never;
+ options?: never;
+ head?: never;
+ patch?: never;
+ trace?: never;
+ };
+ "/api/bounties/{id}/escrow/submit": {
+ parameters: {
+ query?: never;
+ header?: never;
+ path?: never;
+ cookie?: never;
+ };
+ get?: never;
+ put?: never;
+ /**
+ * Submit work for a bounty
+ * @description Builds a submit contract op. Requires the applicant's prior apply_to_bounty to be in active status (contract enforces; the service pre-checks for a cleaner 4xx).
+ */
+ post: operations["BountyParticipantEscrowController_submit"];
+ delete?: never;
+ options?: never;
+ head?: never;
+ patch?: never;
+ trace?: never;
+ };
+ "/api/bounties/{id}/escrow/withdraw-submission": {
+ parameters: {
+ query?: never;
+ header?: never;
+ path?: never;
+ cookie?: never;
+ };
+ get?: never;
+ put?: never;
+ /** Withdraw a bounty submission anchor */
+ post: operations["BountyParticipantEscrowController_withdrawSubmission"];
+ delete?: never;
+ options?: never;
+ head?: never;
+ patch?: never;
+ trace?: never;
+ };
+ "/api/bounties/{id}/escrow/contribute": {
+ parameters: {
+ query?: never;
+ header?: never;
+ path?: never;
+ cookie?: never;
+ };
+ get?: never;
+ put?: never;
+ /**
+ * Contribute funds to a bounty pool
+ * @description Builds an add_funds contract op signed by the caller. Contract enforces a 10 USDC minimum. Anyone with a funded wallet can contribute; this v1 surface requires Boundless auth, so multiple top-ups from the same wallet are allowed (one row per attempt).
+ */
+ post: operations["BountyParticipantEscrowController_contribute"];
+ delete?: never;
+ options?: never;
+ head?: never;
+ patch?: never;
+ trace?: never;
+ };
+ "/api/bounties/{id}/escrow/ops/{opRowId}/submit-signed": {
+ parameters: {
+ query?: never;
+ header?: never;
+ path?: never;
+ cookie?: never;
+ };
+ get?: never;
+ put?: never;
+ /** Submit signed XDR for a previously-built participant op */
+ post: operations["BountyParticipantEscrowController_submitSigned"];
+ delete?: never;
+ options?: never;
+ head?: never;
+ patch?: never;
+ trace?: never;
+ };
+ "/api/bounties/{id}/escrow/ops/{opRowId}": {
+ parameters: {
+ query?: never;
+ header?: never;
+ path?: never;
+ cookie?: never;
+ };
+ /** Read the state of a participant op */
+ get: operations["BountyParticipantEscrowController_getOp"];
+ put?: never;
+ post?: never;
+ delete?: never;
+ options?: never;
+ head?: never;
+ patch?: never;
+ trace?: never;
+ };
+ "/api/bounties/{bountyId}/v2/applications": {
+ parameters: {
+ query?: never;
+ header?: never;
+ path?: never;
+ cookie?: never;
+ };
+ get?: never;
+ put?: never;
+ /** Submit an application for a application bounty */
+ post: operations["BountyApplicationController_create"];
+ delete?: never;
+ options?: never;
+ head?: never;
+ patch?: never;
+ trace?: never;
+ };
+ "/api/bounties/{bountyId}/v2/applications/me": {
+ parameters: {
+ query?: never;
+ header?: never;
+ path?: never;
+ cookie?: never;
+ };
+ /** Read the caller's application for this bounty */
+ get: operations["BountyApplicationController_getMine"];
+ put?: never;
+ post?: never;
+ delete?: never;
+ options?: never;
+ head?: never;
+ patch?: never;
+ trace?: never;
+ };
+ "/api/bounties/{bountyId}/v2/applications/{appId}": {
+ parameters: {
+ query?: never;
+ header?: never;
+ path?: never;
+ cookie?: never;
+ };
+ get?: never;
+ put?: never;
+ post?: never;
+ /** Withdraw a SUBMITTED application */
+ delete: operations["BountyApplicationController_withdraw"];
+ options?: never;
+ head?: never;
+ /** Edit a SUBMITTED application (before shortlist) */
+ patch: operations["BountyApplicationController_edit"];
+ trace?: never;
+ };
+ "/api/organizations/{organizationId}/bounties/{bountyId}/v2/applications": {
+ parameters: {
+ query?: never;
+ header?: never;
+ path?: never;
+ cookie?: never;
+ };
+ /** List applications on a bounty */
+ get: operations["OrganizationBountyShortlistController_list"];
+ put?: never;
+ post?: never;
+ delete?: never;
+ options?: never;
+ head?: never;
+ patch?: never;
+ trace?: never;
+ };
+ "/api/organizations/{organizationId}/bounties/{bountyId}/v2/applications/select": {
+ parameters: {
+ query?: never;
+ header?: never;
+ path?: never;
+ cookie?: never;
+ };
+ get?: never;
+ put?: never;
+ /** Select a single application (application (light) single claim / application (full) single claim) */
+ post: operations["OrganizationBountyShortlistController_selectForSingleClaim"];
+ delete?: never;
+ options?: never;
+ head?: never;
+ patch?: never;
+ trace?: never;
+ };
+ "/api/organizations/{organizationId}/bounties/{bountyId}/v2/applications/shortlist": {
+ parameters: {
+ query?: never;
+ header?: never;
+ path?: never;
+ cookie?: never;
+ };
+ get?: never;
+ put?: never;
+ /** Approve a shortlist (application (light) competition / application (full) competition) */
+ post: operations["OrganizationBountyShortlistController_createShortlist"];
+ delete?: never;
+ options?: never;
+ head?: never;
+ patch?: never;
+ trace?: never;
+ };
+ "/api/organizations/{organizationId}/bounties/{bountyId}/v2/applications/{appId}/decline": {
+ parameters: {
+ query?: never;
+ header?: never;
+ path?: never;
+ cookie?: never;
+ };
+ get?: never;
+ put?: never;
+ /** Decline an application with optional reason */
+ post: operations["OrganizationBountyShortlistController_decline"];
+ delete?: never;
+ options?: never;
+ head?: never;
+ patch?: never;
+ trace?: never;
+ };
+ "/api/organizations/{organizationId}/bounties/{bountyId}/submissions": {
+ parameters: {
+ query?: never;
+ header?: never;
+ path?: never;
+ cookie?: never;
+ };
+ /** List submitted work on a bounty (organizer) */
+ get: operations["OrganizationBountySubmissionsController_list"];
+ put?: never;
+ post?: never;
+ delete?: never;
+ options?: never;
+ head?: never;
+ patch?: never;
+ trace?: never;
+ };
+ "/api/organizations/{organizationId}/bounties/{bountyId}/submissions/{submissionId}": {
+ parameters: {
+ query?: never;
+ header?: never;
+ path?: never;
+ cookie?: never;
+ };
+ /** Read a single submission (organizer) */
+ get: operations["OrganizationBountySubmissionsController_get"];
+ put?: never;
+ post?: never;
+ delete?: never;
+ options?: never;
+ head?: never;
+ patch?: never;
+ trace?: never;
+ };
+ "/api/organizations/{organizationId}/bounties/{bountyId}/overview": {
+ parameters: {
+ query?: never;
+ header?: never;
+ path?: never;
+ cookie?: never;
+ };
+ /** Operate dashboard overview + intake stats */
+ get: operations["OrganizationBountyOverviewController_overview"];
+ put?: never;
+ post?: never;
+ delete?: never;
+ options?: never;
+ head?: never;
+ patch?: never;
+ trace?: never;
+ };
+ "/api/organizations/{organizationId}/bounties/{bountyId}/archive": {
+ parameters: {
+ query?: never;
+ header?: never;
+ path?: never;
+ cookie?: never;
+ };
+ get?: never;
+ put?: never;
+ /** Archive a completed/cancelled bounty */
+ post: operations["OrganizationBountyArchiveController_archive"];
+ delete?: never;
+ options?: never;
+ head?: never;
+ patch?: never;
+ trace?: never;
+ };
+ "/api/organizations/{organizationId}/bounties/{bountyId}/restore": {
+ parameters: {
+ query?: never;
+ header?: never;
+ path?: never;
+ cookie?: never;
+ };
+ get?: never;
+ put?: never;
+ /** Restore an archived bounty */
+ post: operations["OrganizationBountyArchiveController_restore"];
+ delete?: never;
+ options?: never;
+ head?: never;
+ patch?: never;
+ trace?: never;
+ };
+ "/api/organizations/{organizationId}/bounties/{bountyId}/publish-results": {
+ parameters: {
+ query?: never;
+ header?: never;
+ path?: never;
+ cookie?: never;
+ };
+ get?: never;
+ put?: never;
+ /** Publish the results/winner announcement */
+ post: operations["OrganizationBountyResultsController_publish"];
+ delete?: never;
+ options?: never;
+ head?: never;
+ patch?: never;
+ trace?: never;
+ };
+ "/api/bounties/{bountyId}/announcement": {
+ parameters: {
+ query?: never;
+ header?: never;
+ path?: never;
+ cookie?: never;
+ };
+ /** Public results/winner announcement for a bounty */
+ get: operations["BountyAnnouncementPublicController_get"];
+ put?: never;
+ post?: never;
+ delete?: never;
+ options?: never;
+ head?: never;
+ patch?: never;
+ trace?: never;
+ };
+ "/api/bounties/{bountyId}/v2/competition/join": {
+ parameters: {
+ query?: never;
+ header?: never;
+ path?: never;
+ cookie?: never;
+ };
+ get?: never;
+ put?: never;
+ /** Join an open competition bounty */
+ post: operations["BountyCompetitionJoinController_join"];
+ /** Leave an open competition before submitting */
+ delete: operations["BountyCompetitionJoinController_leave"];
+ options?: never;
+ head?: never;
+ patch?: never;
+ trace?: never;
+ };
+ "/api/bounties/me/applications": {
+ parameters: {
+ query?: never;
+ header?: never;
+ path?: never;
+ cookie?: never;
+ };
+ /** List the caller's applications across all bounties */
+ get: operations["BountyParticipantDashboardController_myApplications"];
+ put?: never;
+ post?: never;
+ delete?: never;
+ options?: never;
+ head?: never;
+ patch?: never;
+ trace?: never;
+ };
+ "/api/bounties/me/submissions": {
+ parameters: {
+ query?: never;
+ header?: never;
+ path?: never;
+ cookie?: never;
+ };
+ /** List the caller's submissions across all bounties */
+ get: operations["BountyParticipantDashboardController_mySubmissions"];
+ put?: never;
+ post?: never;
+ delete?: never;
+ options?: never;
+ head?: never;
+ patch?: never;
+ trace?: never;
+ };
+ "/api/bounties/me/submissions/{bountyId}": {
+ parameters: {
+ query?: never;
+ header?: never;
+ path?: never;
+ cookie?: never;
+ };
+ /** Read the caller's submission for one bounty */
+ get: operations["BountyParticipantDashboardController_mySubmissionForBounty"];
+ put?: never;
+ post?: never;
+ delete?: never;
+ options?: never;
+ head?: never;
+ patch?: never;
+ trace?: never;
+ };
+ "/api/bounties/{id}/results": {
+ parameters: {
+ query?: never;
+ header?: never;
+ path?: never;
+ cookie?: never;
+ };
+ /** Public results / leaderboard (winners by tier) */
+ get: operations["BountyResultsController_getResults"];
+ put?: never;
+ post?: never;
+ delete?: never;
+ options?: never;
+ head?: never;
+ patch?: never;
+ trace?: never;
+ };
+ "/api/bounties/{id}/submissions": {
+ parameters: {
+ query?: never;
+ header?: never;
+ path?: never;
+ cookie?: never;
+ };
+ /** Submissions the caller may see (respects submissionVisibility) */
+ get: operations["BountyResultsController_getSubmissions"];
+ put?: never;
+ post?: never;
+ delete?: never;
+ options?: never;
+ head?: never;
+ patch?: never;
+ trace?: never;
+ };
+ "/api/bounties": {
+ parameters: {
+ query?: never;
+ header?: never;
+ path?: never;
+ cookie?: never;
+ };
+ /** Public bounty marketplace list */
+ get: operations["BountyPublicController_list"];
+ put?: never;
+ post?: never;
+ delete?: never;
+ options?: never;
+ head?: never;
+ patch?: never;
+ trace?: never;
+ };
+ "/api/bounties/{id}": {
+ parameters: {
+ query?: never;
+ header?: never;
+ path?: never;
+ cookie?: never;
+ };
+ /** Public bounty detail */
+ get: operations["BountyPublicController_findOne"];
+ put?: never;
+ post?: never;
+ delete?: never;
+ options?: never;
+ head?: never;
+ patch?: never;
+ trace?: never;
+ };
+ "/api/organizations/{organizationId}/grants/{id}/escrow/publish": {
+ parameters: {
+ query?: never;
+ header?: never;
+ path?: never;
+ cookie?: never;
+ };
+ get?: never;
+ put?: never;
+ /**
+ * Publish a grant draft to the events contract
+ * @description Validates the draft, transitions to DRAFT_AWAITING_FUNDING, and returns an unsigned XDR (EXTERNAL) or the op in PENDING_CONFIRM (MANAGED). Reconciliation transitions the grant to OPEN on success.
+ */
+ post: operations["OrganizationGrantsEscrowController_publish"];
+ delete?: never;
+ options?: never;
+ head?: never;
+ patch?: never;
+ trace?: never;
+ };
+ "/api/organizations/{organizationId}/grants/{id}/escrow/cancel": {
+ parameters: {
+ query?: never;
+ header?: never;
+ path?: never;
+ cookie?: never;
+ };
+ get?: never;
+ put?: never;
+ /** Cancel an active grant */
+ post: operations["OrganizationGrantsEscrowController_cancel"];
+ delete?: never;
+ options?: never;
+ head?: never;
+ patch?: never;
+ trace?: never;
+ };
+ "/api/organizations/{organizationId}/grants/{id}/escrow/select-winners": {
+ parameters: {
+ query?: never;
+ header?: never;
+ path?: never;
+ cookie?: never;
+ };
+ get?: never;
+ put?: never;
+ /**
+ * Select grant recipients
+ * @description For Multi release_kind, select_winners records recipients with amount=0 — payouts happen per-milestone via claim_milestone.
+ */
+ post: operations["OrganizationGrantsEscrowController_selectWinners"];
+ delete?: never;
+ options?: never;
+ head?: never;
+ patch?: never;
+ trace?: never;
+ };
+ "/api/organizations/{organizationId}/grants/{id}/escrow/claim-milestone": {
+ parameters: {
+ query?: never;
+ header?: never;
+ path?: never;
+ cookie?: never;
+ };
+ get?: never;
+ put?: never;
+ /**
+ * Pay out a specific milestone for a recipient
+ * @description Builds a claim_milestone contract op. Contract pays the per-milestone amount to the recipient and bumps profile credits / reputation / earnings.
+ */
+ post: operations["OrganizationGrantsEscrowController_claimMilestone"];
+ delete?: never;
+ options?: never;
+ head?: never;
+ patch?: never;
+ trace?: never;
+ };
+ "/api/organizations/{organizationId}/grants/{id}/escrow/ops/{opRowId}/submit-signed": {
+ parameters: {
+ query?: never;
+ header?: never;
+ path?: never;
+ cookie?: never;
+ };
+ get?: never;
+ put?: never;
+ /** Submit signed XDR for a grant op */
+ post: operations["OrganizationGrantsEscrowController_submitSigned"];
+ delete?: never;
+ options?: never;
+ head?: never;
+ patch?: never;
+ trace?: never;
+ };
+ "/api/organizations/{organizationId}/grants/{id}/escrow/ops/{opRowId}": {
+ parameters: {
+ query?: never;
+ header?: never;
+ path?: never;
+ cookie?: never;
+ };
+ /** Read the state of a grant op */
+ get: operations["OrganizationGrantsEscrowController_getOp"];
+ put?: never;
+ post?: never;
+ delete?: never;
+ options?: never;
+ head?: never;
+ patch?: never;
+ trace?: never;
+ };
+ "/api/grants/{id}/escrow/contribute": {
+ parameters: {
+ query?: never;
+ header?: never;
+ path?: never;
+ cookie?: never;
+ };
+ get?: never;
+ put?: never;
+ /**
+ * Contribute funds to a grant pool
+ * @description Open add_funds op. Contract enforces a 10 USDC minimum. Anyone authenticated can contribute; multiple top-ups from the same wallet are allowed (one row per attempt).
+ */
+ post: operations["GrantContributeEscrowController_contribute"];
+ delete?: never;
+ options?: never;
+ head?: never;
+ patch?: never;
+ trace?: never;
+ };
+ "/api/grants": {
+ parameters: {
+ query?: never;
+ header?: never;
+ path?: never;
+ cookie?: never;
+ };
+ /**
+ * List published grants
+ * @description Public, page-based list of grant programs. Parallel to /bounties and /hackathons. For a multi-pillar feed (Bounty, Hackathon, Grant, Crowdfunding), use /opportunities instead.
+ */
+ get: operations["GrantsPublicController_list"];
+ put?: never;
+ post?: never;
+ delete?: never;
+ options?: never;
+ head?: never;
+ patch?: never;
+ trace?: never;
+ };
+ "/api/opportunities": {
+ parameters: {
+ query?: never;
+ header?: never;
+ path?: never;
+ cookie?: never;
+ };
+ /**
+ * List opportunities across all pillars
+ * @description Returns a unified, cursor-paginated feed across Bounty, Hackathon, Grant, and Crowdfunding. Pass type= to restrict to one. The cursor is opaque; pass it back as-is to fetch the next page.
+ */
+ get: operations["OpportunitiesController_list"];
+ put?: never;
+ post?: never;
+ delete?: never;
+ options?: never;
+ head?: never;
+ patch?: never;
+ trace?: never;
+ };
+ "/api/newsletter/subscribe": {
+ parameters: {
+ query?: never;
+ header?: never;
+ path?: never;
+ cookie?: never;
+ };
+ get?: never;
+ put?: never;
+ /**
+ * Subscribe to the newsletter
+ * @description Subscribe an email address to the newsletter. Sends a confirmation email (double opt-in). Rate limited to 5 requests per minute.
+ */
+ post: operations["NewsletterController_subscribe"];
+ delete?: never;
+ options?: never;
+ head?: never;
+ patch?: never;
+ trace?: never;
+ };
+ "/api/newsletter/confirm/{token}": {
+ parameters: {
+ query?: never;
+ header?: never;
+ path?: never;
+ cookie?: never;
+ };
+ /**
+ * Confirm newsletter subscription
+ * @description Confirm a newsletter subscription via the token sent in the confirmation email. Redirects to the frontend on success.
+ */
+ get: operations["NewsletterController_confirmSubscription"];
+ put?: never;
+ post?: never;
+ delete?: never;
+ options?: never;
+ head?: never;
+ patch?: never;
+ trace?: never;
+ };
+ "/api/newsletter/unsubscribe/{token}": {
+ parameters: {
+ query?: never;
+ header?: never;
+ path?: never;
+ cookie?: never;
+ };
+ /**
+ * Unsubscribe by token
+ * @description Unsubscribe from the newsletter using the one-click unsubscribe token from emails. Redirects to the frontend.
+ */
+ get: operations["NewsletterController_unsubscribeByToken"];
+ put?: never;
+ post?: never;
+ delete?: never;
+ options?: never;
+ head?: never;
+ patch?: never;
+ trace?: never;
+ };
+ "/api/newsletter/unsubscribe": {
+ parameters: {
+ query?: never;
+ header?: never;
+ path?: never;
+ cookie?: never;
+ };
+ get?: never;
+ put?: never;
+ /**
+ * Unsubscribe by email
+ * @description Legacy unsubscribe endpoint. Unsubscribe a subscriber by their email address.
+ */
+ post: operations["NewsletterController_unsubscribe"];
+ delete?: never;
+ options?: never;
+ head?: never;
+ patch?: never;
+ trace?: never;
+ };
+ "/api/newsletter/preferences": {
+ parameters: {
+ query?: never;
+ header?: never;
+ path?: never;
+ cookie?: never;
+ };
+ get?: never;
+ put?: never;
+ post?: never;
+ delete?: never;
+ options?: never;
+ head?: never;
+ /**
+ * Update subscription preferences
+ * @description Update topic tag preferences for a subscriber. Valid tags: bounties, hackathons, grants, updates.
+ */
+ patch: operations["NewsletterController_updatePreferences"];
+ trace?: never;
+ };
+ "/api/newsletter/tracking/open/{campaignId}/{subscriberId}": {
+ parameters: {
+ query?: never;
+ header?: never;
+ path?: never;
+ cookie?: never;
+ };
+ /**
+ * Track email open
+ * @description Open tracking pixel endpoint. Returns a 1x1 transparent GIF and records the open event. Used in campaign emails.
+ */
+ get: operations["NewsletterController_trackOpen"];
+ put?: never;
+ post?: never;
+ delete?: never;
+ options?: never;
+ head?: never;
+ patch?: never;
+ trace?: never;
+ };
+ "/api/newsletter/tracking/click/{campaignId}/{subscriberId}": {
+ parameters: {
+ query?: never;
+ header?: never;
+ path?: never;
+ cookie?: never;
+ };
+ /**
+ * Track email link click
+ * @description Click tracking endpoint. Records the click event and redirects the subscriber to the target URL.
+ */
+ get: operations["NewsletterController_trackClick"];
+ put?: never;
+ post?: never;
+ delete?: never;
+ options?: never;
+ head?: never;
+ patch?: never;
+ trace?: never;
+ };
+ "/api/newsletter/subscribers": {
+ parameters: {
+ query?: never;
+ header?: never;
+ path?: never;
+ cookie?: never;
+ };
+ /**
+ * List newsletter subscribers
+ * @description Get a paginated list of newsletter subscribers with optional filters by status, source, tags, and search.
+ */
+ get: operations["NewsletterController_getSubscribers"];
+ put?: never;
+ post?: never;
+ delete?: never;
+ options?: never;
+ head?: never;
+ patch?: never;
+ trace?: never;
+ };
+ "/api/newsletter/stats": {
+ parameters: {
+ query?: never;
+ header?: never;
+ path?: never;
+ cookie?: never;
+ };
+ /**
+ * Get newsletter statistics
+ * @description Get subscriber counts by status, subscription sources, and campaign statistics (sent, opens, clicks).
+ */
+ get: operations["NewsletterController_getStats"];
+ put?: never;
+ post?: never;
+ delete?: never;
+ options?: never;
+ head?: never;
+ patch?: never;
+ trace?: never;
+ };
+ "/api/newsletter/export": {
+ parameters: {
+ query?: never;
+ header?: never;
+ path?: never;
+ cookie?: never;
+ };
+ /**
+ * Export subscribers as CSV
+ * @description Download a CSV file of subscribers with optional status and tag filters.
+ */
+ get: operations["NewsletterController_exportSubscribers"];
+ put?: never;
+ post?: never;
+ delete?: never;
+ options?: never;
+ head?: never;
+ patch?: never;
+ trace?: never;
+ };
+ "/api/newsletter/subscribers/{id}": {
+ parameters: {
+ query?: never;
+ header?: never;
+ path?: never;
+ cookie?: never;
+ };
+ get?: never;
+ put?: never;
+ post?: never;
+ /**
+ * Delete a subscriber
+ * @description Permanently delete a newsletter subscriber by ID.
+ */
+ delete: operations["NewsletterController_deleteSubscriber"];
+ options?: never;
+ head?: never;
+ patch?: never;
+ trace?: never;
+ };
+ "/api/newsletter/campaigns": {
+ parameters: {
+ query?: never;
+ header?: never;
+ path?: never;
+ cookie?: never;
+ };
+ /**
+ * List newsletter campaigns
+ * @description Get a paginated list of newsletter campaigns, ordered by most recent first.
+ */
+ get: operations["NewsletterController_getCampaigns"];
+ put?: never;
+ /**
+ * Create a new campaign
+ * @description Create a new newsletter campaign draft. Use {{name}} placeholder in content for personalization. Target specific subscribers using tags.
+ */
+ post: operations["NewsletterController_createCampaign"];
+ delete?: never;
+ options?: never;
+ head?: never;
+ patch?: never;
+ trace?: never;
+ };
+ "/api/newsletter/campaigns/{id}": {
+ parameters: {
+ query?: never;
+ header?: never;
+ path?: never;
+ cookie?: never;
+ };
+ /**
+ * Get campaign details
+ * @description Get detailed information about a specific campaign, including the most recent 100 send logs.
+ */
+ get: operations["NewsletterController_getCampaign"];
+ put?: never;
+ post?: never;
+ delete?: never;
+ options?: never;
+ head?: never;
+ patch?: never;
+ trace?: never;
+ };
+ "/api/newsletter/campaigns/{id}/send": {
+ parameters: {
+ query?: never;
+ header?: never;
+ path?: never;
+ cookie?: never;
+ };
+ get?: never;
+ put?: never;
+ /**
+ * Send a campaign
+ * @description Send a campaign to all matching subscribers. Delivers in batches of 10 with 1-second delays. Cannot re-send an already sent campaign.
+ */
+ post: operations["NewsletterController_sendCampaign"];
+ delete?: never;
+ options?: never;
+ head?: never;
+ patch?: never;
+ trace?: never;
+ };
+ "/api/discover/landing": {
+ parameters: {
+ query?: never;
+ header?: never;
+ path?: never;
+ cookie?: never;
+ };
+ /**
+ * Discover landing feed
+ * @description Returns curated slices of bounties, hackathons, crowdfunding campaigns, grants, and recent winners in a single response. All queries run in parallel server-side.
+ */
+ get: operations["DiscoverController_getLanding"];
+ put?: never;
+ post?: never;
+ delete?: never;
+ options?: never;
+ head?: never;
+ patch?: never;
+ trace?: never;
+ };
+ "/api/discover/recent-winners": {
+ parameters: {
+ query?: never;
+ header?: never;
+ path?: never;
+ cookie?: never;
+ };
+ /** Recent prize winners across hackathons, bounties, and grants */
+ get: operations["DiscoverController_getRecentWinners"];
+ put?: never;
+ post?: never;
+ delete?: never;
+ options?: never;
+ head?: never;
+ patch?: never;
+ trace?: never;
+ };
+ "/api/admin/queues/dlq/depth": {
+ parameters: {
+ query?: never;
+ header?: never;
+ path?: never;
+ cookie?: never;
+ };
+ /** Current DLQ depth (admin only) */
+ get: operations["DlqAdminController_getDepth"];
+ put?: never;
+ post?: never;
+ delete?: never;
+ options?: never;
+ head?: never;
+ patch?: never;
+ trace?: never;
+ };
+ "/api/admin/queues/dlq": {
+ parameters: {
+ query?: never;
+ header?: never;
+ path?: never;
+ cookie?: never;
+ };
+ /** List parked DLQ entries (admin only) */
+ get: operations["DlqAdminController_list"];
+ put?: never;
+ post?: never;
+ delete?: never;
+ options?: never;
+ head?: never;
+ patch?: never;
+ trace?: never;
+ };
+ "/api/admin/queues/dlq/{jobId}": {
+ parameters: {
+ query?: never;
+ header?: never;
+ path?: never;
+ cookie?: never;
+ };
+ /** Fetch a single parked DLQ entry (admin only) */
+ get: operations["DlqAdminController_getOne"];
+ put?: never;
+ post?: never;
+ delete?: never;
+ options?: never;
+ head?: never;
+ patch?: never;
+ trace?: never;
+ };
+ "/api/admin/queues/dlq/{jobId}/replay": {
+ parameters: {
+ query?: never;
+ header?: never;
+ path?: never;
+ cookie?: never;
+ };
+ get?: never;
+ put?: never;
+ /**
+ * Re-enqueue a parked DLQ entry on its original queue
+ * @description The DLQ row is removed on success. Replay uses the original queue's normal retry budget, so a job that died after 3 retries gets another 3 retries on replay.
+ */
+ post: operations["DlqAdminController_replay"];
+ delete?: never;
+ options?: never;
+ head?: never;
+ patch?: never;
+ trace?: never;
+ };
+ "/api/auth/sign-in/social": {
+ parameters: {
+ query?: never;
+ header?: never;
+ path?: never;
+ cookie?: never;
+ };
+ get?: never;
+ put?: never;
+ /** @description Sign in with a social provider */
+ post: operations["socialSignIn"];
+ delete?: never;
+ options?: never;
+ head?: never;
+ patch?: never;
+ trace?: never;
+ };
+ "/api/auth/get-session": {
+ parameters: {
+ query?: never;
+ header?: never;
+ path?: never;
+ cookie?: never;
+ };
+ /** @description Get the current session */
+ get: operations["getSession"];
+ put?: never;
+ post?: never;
+ delete?: never;
+ options?: never;
+ head?: never;
+ patch?: never;
+ trace?: never;
+ };
+ "/api/auth/sign-out": {
+ parameters: {
+ query?: never;
+ header?: never;
+ path?: never;
+ cookie?: never;
+ };
+ get?: never;
+ put?: never;
+ /** @description Sign out the current user */
+ post: operations["signOut"];
+ delete?: never;
+ options?: never;
+ head?: never;
+ patch?: never;
+ trace?: never;
+ };
+ "/api/auth/sign-up/email": {
+ parameters: {
+ query?: never;
+ header?: never;
+ path?: never;
+ cookie?: never;
+ };
+ get?: never;
+ put?: never;
+ /** @description Sign up a user using email and password */
+ post: operations["signUpWithEmailAndPassword"];
+ delete?: never;
+ options?: never;
+ head?: never;
+ patch?: never;
+ trace?: never;
+ };
+ "/api/auth/sign-in/email": {
+ parameters: {
+ query?: never;
+ header?: never;
+ path?: never;
+ cookie?: never;
+ };
+ get?: never;
+ put?: never;
+ /** @description Sign in with email and password */
+ post: operations["signInEmail"];
+ delete?: never;
+ options?: never;
+ head?: never;
+ patch?: never;
+ trace?: never;
+ };
+ "/api/auth/reset-password": {
+ parameters: {
+ query?: never;
+ header?: never;
+ path?: never;
+ cookie?: never;
+ };
+ get?: never;
+ put?: never;
+ /** @description Reset the password for a user */
+ post: operations["resetPassword"];
+ delete?: never;
+ options?: never;
+ head?: never;
+ patch?: never;
+ trace?: never;
+ };
+ "/api/auth/verify-password": {
+ parameters: {
+ query?: never;
+ header?: never;
+ path?: never;
+ cookie?: never;
+ };
+ get?: never;
+ put?: never;
+ /** @description Verify the current user's password */
+ post: operations["verifyPassword"];
+ delete?: never;
+ options?: never;
+ head?: never;
+ patch?: never;
+ trace?: never;
+ };
+ "/api/auth/verify-email": {
+ parameters: {
+ query?: never;
+ header?: never;
+ path?: never;
+ cookie?: never;
+ };
+ /** @description Verify the email of the user */
+ get: {
+ parameters: {
+ query: {
+ /** @description The token to verify the email */
+ token: string;
+ /** @description The URL to redirect to after email verification */
+ callbackURL?: string;
+ };
+ header?: never;
+ path?: never;
+ cookie?: never;
+ };
+ requestBody?: never;
+ responses: {
+ /** @description Success */
+ 200: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content: {
+ "application/json": {
+ user: components["schemas"]["User"];
+ /** @description Indicates if the email was verified successfully */
+ status: boolean;
+ };
+ };
+ };
+ /** @description Bad Request. Usually due to missing parameters, or invalid parameters. */
+ 400: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content: {
+ "application/json": {
+ message: string;
+ };
+ };
+ };
+ /** @description Unauthorized. Due to missing or invalid authentication. */
+ 401: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content: {
+ "application/json": {
+ message: string;
+ };
+ };
+ };
+ /** @description Forbidden. You do not have permission to access this resource or to perform this action. */
+ 403: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content: {
+ "application/json": {
+ message?: string;
+ };
+ };
+ };
+ /** @description Not Found. The requested resource was not found. */
+ 404: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content: {
+ "application/json": {
+ message?: string;
+ };
+ };
+ };
+ /** @description Too Many Requests. You have exceeded the rate limit. Try again later. */
+ 429: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content: {
+ "application/json": {
+ message?: string;
+ };
+ };
+ };
+ /** @description Internal Server Error. This is a problem with the server that you cannot fix. */
+ 500: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content: {
+ "application/json": {
+ message?: string;
+ };
+ };
+ };
+ };
+ };
+ put?: never;
+ post?: never;
+ delete?: never;
+ options?: never;
+ head?: never;
+ patch?: never;
+ trace?: never;
+ };
+ "/api/auth/send-verification-email": {
+ parameters: {
+ query?: never;
+ header?: never;
+ path?: never;
+ cookie?: never;
+ };
+ get?: never;
+ put?: never;
+ /** @description Send a verification email to the user */
+ post: operations["sendVerificationEmail"];
+ delete?: never;
+ options?: never;
+ head?: never;
+ patch?: never;
+ trace?: never;
+ };
+ "/api/auth/change-email": {
+ parameters: {
+ query?: never;
+ header?: never;
+ path?: never;
+ cookie?: never;
+ };
+ get?: never;
+ put?: never;
+ post: operations["changeEmail"];
+ delete?: never;
+ options?: never;
+ head?: never;
+ patch?: never;
+ trace?: never;
+ };
+ "/api/auth/change-password": {
+ parameters: {
+ query?: never;
+ header?: never;
+ path?: never;
+ cookie?: never;
+ };
+ get?: never;
+ put?: never;
+ /** @description Change the password of the user */
+ post: operations["changePassword"];
+ delete?: never;
+ options?: never;
+ head?: never;
+ patch?: never;
+ trace?: never;
+ };
+ "/api/auth/update-user": {
+ parameters: {
+ query?: never;
+ header?: never;
+ path?: never;
+ cookie?: never;
+ };
+ get?: never;
+ put?: never;
+ /** @description Update the current user */
+ post: operations["updateUser"];
+ delete?: never;
+ options?: never;
+ head?: never;
+ patch?: never;
+ trace?: never;
+ };
+ "/api/auth/delete-user": {
+ parameters: {
+ query?: never;
+ header?: never;
+ path?: never;
+ cookie?: never;
+ };
+ get?: never;
+ put?: never;
+ /** @description Delete the user */
+ post: operations["deleteUser"];
+ delete?: never;
+ options?: never;
+ head?: never;
+ patch?: never;
+ trace?: never;
+ };
+ "/api/auth/request-password-reset": {
+ parameters: {
+ query?: never;
+ header?: never;
+ path?: never;
+ cookie?: never;
+ };
+ get?: never;
+ put?: never;
+ /** @description Send a password reset email to the user */
+ post: operations["requestPasswordReset"];
+ delete?: never;
+ options?: never;
+ head?: never;
+ patch?: never;
+ trace?: never;
+ };
+ "/api/auth/reset-password/{token}": {
+ parameters: {
+ query?: never;
+ header?: never;
+ path?: never;
+ cookie?: never;
+ };
+ /** @description Redirects the user to the callback URL with the token */
+ get: operations["resetPasswordCallback"];
+ put?: never;
+ post?: never;
+ delete?: never;
+ options?: never;
+ head?: never;
+ patch?: never;
+ trace?: never;
+ };
+ "/api/auth/list-sessions": {
+ parameters: {
+ query?: never;
+ header?: never;
+ path?: never;
+ cookie?: never;
+ };
+ /** @description List all active sessions for the user */
+ get: operations["listUserSessions"];
+ put?: never;
+ post?: never;
+ delete?: never;
+ options?: never;
+ head?: never;
+ patch?: never;
+ trace?: never;
+ };
+ "/api/auth/revoke-session": {
+ parameters: {
+ query?: never;
+ header?: never;
+ path?: never;
+ cookie?: never;
+ };
+ get?: never;
+ put?: never;
+ /** @description Revoke a single session */
+ post: {
+ parameters: {
+ query?: never;
+ header?: never;
+ path?: never;
+ cookie?: never;
+ };
+ requestBody?: {
+ content: {
+ "application/json": {
+ /** @description The token to revoke */
+ token: string;
+ };
+ };
+ };
+ responses: {
+ /** @description Success */
+ 200: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content: {
+ "application/json": {
+ /** @description Indicates if the session was revoked successfully */
+ status: boolean;
+ };
+ };
+ };
+ /** @description Bad Request. Usually due to missing parameters, or invalid parameters. */
+ 400: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content: {
+ "application/json": {
+ message: string;
+ };
+ };
+ };
+ /** @description Unauthorized. Due to missing or invalid authentication. */
+ 401: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content: {
+ "application/json": {
+ message: string;
+ };
+ };
+ };
+ /** @description Forbidden. You do not have permission to access this resource or to perform this action. */
+ 403: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content: {
+ "application/json": {
+ message?: string;
+ };
+ };
+ };
+ /** @description Not Found. The requested resource was not found. */
+ 404: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content: {
+ "application/json": {
+ message?: string;
+ };
+ };
+ };
+ /** @description Too Many Requests. You have exceeded the rate limit. Try again later. */
+ 429: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content: {
+ "application/json": {
+ message?: string;
+ };
+ };
+ };
+ /** @description Internal Server Error. This is a problem with the server that you cannot fix. */
+ 500: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content: {
+ "application/json": {
+ message?: string;
+ };
+ };
+ };
+ };
+ };
+ delete?: never;
+ options?: never;
+ head?: never;
+ patch?: never;
+ trace?: never;
+ };
+ "/api/auth/revoke-sessions": {
+ parameters: {
+ query?: never;
+ header?: never;
+ path?: never;
+ cookie?: never;
+ };
+ get?: never;
+ put?: never;
+ /** @description Revoke all sessions for the user */
+ post: {
+ parameters: {
+ query?: never;
+ header?: never;
+ path?: never;
+ cookie?: never;
+ };
+ requestBody?: {
+ content: {
+ "application/json": Record;
+ };
+ };
+ responses: {
+ /** @description Success */
+ 200: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content: {
+ "application/json": {
+ /** @description Indicates if all sessions were revoked successfully */
+ status: boolean;
+ };
+ };
+ };
+ /** @description Bad Request. Usually due to missing parameters, or invalid parameters. */
+ 400: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content: {
+ "application/json": {
+ message: string;
+ };
+ };
+ };
+ /** @description Unauthorized. Due to missing or invalid authentication. */
+ 401: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content: {
+ "application/json": {
+ message: string;
+ };
+ };
+ };
+ /** @description Forbidden. You do not have permission to access this resource or to perform this action. */
+ 403: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content: {
+ "application/json": {
+ message?: string;
+ };
+ };
+ };
+ /** @description Not Found. The requested resource was not found. */
+ 404: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content: {
+ "application/json": {
+ message?: string;
+ };
+ };
+ };
+ /** @description Too Many Requests. You have exceeded the rate limit. Try again later. */
+ 429: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content: {
+ "application/json": {
+ message?: string;
+ };
+ };
+ };
+ /** @description Internal Server Error. This is a problem with the server that you cannot fix. */
+ 500: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content: {
+ "application/json": {
+ message?: string;
+ };
+ };
+ };
+ };
+ };
+ delete?: never;
+ options?: never;
+ head?: never;
+ patch?: never;
+ trace?: never;
+ };
+ "/api/auth/revoke-other-sessions": {
+ parameters: {
+ query?: never;
+ header?: never;
+ path?: never;
+ cookie?: never;
+ };
+ get?: never;
+ put?: never;
+ /** @description Revoke all other sessions for the user except the current one */
+ post: {
+ parameters: {
+ query?: never;
+ header?: never;
+ path?: never;
+ cookie?: never;
+ };
+ requestBody?: {
+ content: {
+ "application/json": Record;
+ };
+ };
+ responses: {
+ /** @description Success */
+ 200: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content: {
+ "application/json": {
+ /** @description Indicates if all other sessions were revoked successfully */
+ status: boolean;
+ };
+ };
+ };
+ /** @description Bad Request. Usually due to missing parameters, or invalid parameters. */
+ 400: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content: {
+ "application/json": {
+ message: string;
+ };
+ };
+ };
+ /** @description Unauthorized. Due to missing or invalid authentication. */
+ 401: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content: {
+ "application/json": {
+ message: string;
+ };
+ };
+ };
+ /** @description Forbidden. You do not have permission to access this resource or to perform this action. */
+ 403: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content: {
+ "application/json": {
+ message?: string;
+ };
+ };
+ };
+ /** @description Not Found. The requested resource was not found. */
+ 404: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content: {
+ "application/json": {
+ message?: string;
+ };
+ };
+ };
+ /** @description Too Many Requests. You have exceeded the rate limit. Try again later. */
+ 429: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content: {
+ "application/json": {
+ message?: string;
+ };
+ };
+ };
+ /** @description Internal Server Error. This is a problem with the server that you cannot fix. */
+ 500: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content: {
+ "application/json": {
+ message?: string;
+ };
+ };
+ };
+ };
+ };
+ delete?: never;
+ options?: never;
+ head?: never;
+ patch?: never;
+ trace?: never;
+ };
+ "/api/auth/link-social": {
+ parameters: {
+ query?: never;
+ header?: never;
+ path?: never;
+ cookie?: never;
+ };
+ get?: never;
+ put?: never;
+ /** @description Link a social account to the user */
+ post: operations["linkSocialAccount"];
+ delete?: never;
+ options?: never;
+ head?: never;
+ patch?: never;
+ trace?: never;
+ };
+ "/api/auth/list-accounts": {
+ parameters: {
+ query?: never;
+ header?: never;
+ path?: never;
+ cookie?: never;
+ };
+ /** @description List all accounts linked to the user */
+ get: operations["listUserAccounts"];
+ put?: never;
+ post?: never;
+ delete?: never;
+ options?: never;
+ head?: never;
+ patch?: never;
+ trace?: never;
+ };
+ "/api/auth/delete-user/callback": {
+ parameters: {
+ query?: never;
+ header?: never;
+ path?: never;
+ cookie?: never;
+ };
+ /** @description Callback to complete user deletion with verification token */
+ get: {
+ parameters: {
+ query?: {
+ token?: string;
+ callbackURL?: string | null;
+ };
+ header?: never;
+ path?: never;
+ cookie?: never;
+ };
+ requestBody?: never;
+ responses: {
+ /** @description User successfully deleted */
+ 200: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content: {
+ "application/json": {
+ /** @description Indicates if the deletion was successful */
+ success: boolean;
+ /**
+ * @description Confirmation message
+ * @enum {string}
+ */
+ message: "User deleted";
+ };
+ };
+ };
+ /** @description Bad Request. Usually due to missing parameters, or invalid parameters. */
+ 400: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content: {
+ "application/json": {
+ message: string;
+ };
+ };
+ };
+ /** @description Unauthorized. Due to missing or invalid authentication. */
+ 401: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content: {
+ "application/json": {
+ message: string;
+ };
+ };
+ };
+ /** @description Forbidden. You do not have permission to access this resource or to perform this action. */
+ 403: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content: {
+ "application/json": {
+ message?: string;
+ };
+ };
+ };
+ /** @description Not Found. The requested resource was not found. */
+ 404: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content: {
+ "application/json": {
+ message?: string;
+ };
+ };
+ };
+ /** @description Too Many Requests. You have exceeded the rate limit. Try again later. */
+ 429: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content: {
+ "application/json": {
+ message?: string;
+ };
+ };
+ };
+ /** @description Internal Server Error. This is a problem with the server that you cannot fix. */
+ 500: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content: {
+ "application/json": {
+ message?: string;
+ };
+ };
+ };
+ };
+ };
+ put?: never;
+ post?: never;
+ delete?: never;
+ options?: never;
+ head?: never;
+ patch?: never;
+ trace?: never;
+ };
+ "/api/auth/unlink-account": {
+ parameters: {
+ query?: never;
+ header?: never;
+ path?: never;
+ cookie?: never;
+ };
+ get?: never;
+ put?: never;
+ /** @description Unlink an account */
+ post: {
+ parameters: {
+ query?: never;
+ header?: never;
+ path?: never;
+ cookie?: never;
+ };
+ requestBody: {
+ content: {
+ "application/json": {
+ providerId: string;
+ accountId?: string | null;
+ };
+ };
+ };
+ responses: {
+ /** @description Success */
+ 200: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content: {
+ "application/json": {
+ status?: boolean;
+ };
+ };
+ };
+ /** @description Bad Request. Usually due to missing parameters, or invalid parameters. */
+ 400: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content: {
+ "application/json": {
+ message: string;
+ };
+ };
+ };
+ /** @description Unauthorized. Due to missing or invalid authentication. */
+ 401: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content: {
+ "application/json": {
+ message: string;
+ };
+ };
+ };
+ /** @description Forbidden. You do not have permission to access this resource or to perform this action. */
+ 403: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content: {
+ "application/json": {
+ message?: string;
+ };
+ };
+ };
+ /** @description Not Found. The requested resource was not found. */
+ 404: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content: {
+ "application/json": {
+ message?: string;
+ };
+ };
+ };
+ /** @description Too Many Requests. You have exceeded the rate limit. Try again later. */
+ 429: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content: {
+ "application/json": {
+ message?: string;
+ };
+ };
+ };
+ /** @description Internal Server Error. This is a problem with the server that you cannot fix. */
+ 500: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content: {
+ "application/json": {
+ message?: string;
+ };
+ };
+ };
+ };
+ };
+ delete?: never;
+ options?: never;
+ head?: never;
+ patch?: never;
+ trace?: never;
+ };
+ "/api/auth/refresh-token": {
+ parameters: {
+ query?: never;
+ header?: never;
+ path?: never;
+ cookie?: never;
+ };
+ get?: never;
+ put?: never;
+ /** @description Refresh the access token using a refresh token */
+ post: {
+ parameters: {
+ query?: never;
+ header?: never;
+ path?: never;
+ cookie?: never;
+ };
+ requestBody: {
+ content: {
+ "application/json": {
+ /** @description The provider ID for the OAuth provider */
+ providerId: string;
+ /** @description The account ID associated with the refresh token */
+ accountId?: string | null;
+ /** @description The user ID associated with the account */
+ userId?: string | null;
+ };
+ };
+ };
+ responses: {
+ /** @description Access token refreshed successfully */
+ 200: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content: {
+ "application/json": {
+ tokenType?: string;
+ idToken?: string;
+ accessToken?: string;
+ refreshToken?: string;
+ /** Format: date-time */
+ accessTokenExpiresAt?: string;
+ /** Format: date-time */
+ refreshTokenExpiresAt?: string;
+ };
+ };
+ };
+ /** @description Invalid refresh token or provider configuration */
+ 400: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content?: never;
+ };
+ /** @description Unauthorized. Due to missing or invalid authentication. */
+ 401: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content: {
+ "application/json": {
+ message: string;
+ };
+ };
+ };
+ /** @description Forbidden. You do not have permission to access this resource or to perform this action. */
+ 403: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content: {
+ "application/json": {
+ message?: string;
+ };
+ };
+ };
+ /** @description Not Found. The requested resource was not found. */
+ 404: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content: {
+ "application/json": {
+ message?: string;
+ };
+ };
+ };
+ /** @description Too Many Requests. You have exceeded the rate limit. Try again later. */
+ 429: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content: {
+ "application/json": {
+ message?: string;
+ };
+ };
+ };
+ /** @description Internal Server Error. This is a problem with the server that you cannot fix. */
+ 500: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content: {
+ "application/json": {
+ message?: string;
+ };
+ };
+ };
+ };
+ };
+ delete?: never;
+ options?: never;
+ head?: never;
+ patch?: never;
+ trace?: never;
+ };
+ "/api/auth/get-access-token": {
+ parameters: {
+ query?: never;
+ header?: never;
+ path?: never;
+ cookie?: never;
+ };
+ get?: never;
+ put?: never;
+ /** @description Get a valid access token, doing a refresh if needed */
+ post: {
+ parameters: {
+ query?: never;
+ header?: never;
+ path?: never;
+ cookie?: never;
+ };
+ requestBody: {
+ content: {
+ "application/json": {
+ /** @description The provider ID for the OAuth provider */
+ providerId: string;
+ /** @description The account ID associated with the refresh token */
+ accountId?: string | null;
+ /** @description The user ID associated with the account */
+ userId?: string | null;
+ };
+ };
+ };
+ responses: {
+ /** @description A Valid access token */
+ 200: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content: {
+ "application/json": {
+ tokenType?: string;
+ idToken?: string;
+ accessToken?: string;
+ /** Format: date-time */
+ accessTokenExpiresAt?: string;
+ };
+ };
+ };
+ /** @description Invalid refresh token or provider configuration */
+ 400: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content?: never;
+ };
+ /** @description Unauthorized. Due to missing or invalid authentication. */
+ 401: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content: {
+ "application/json": {
+ message: string;
+ };
+ };
+ };
+ /** @description Forbidden. You do not have permission to access this resource or to perform this action. */
+ 403: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content: {
+ "application/json": {
+ message?: string;
+ };
+ };
+ };
+ /** @description Not Found. The requested resource was not found. */
+ 404: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content: {
+ "application/json": {
+ message?: string;
+ };
+ };
+ };
+ /** @description Too Many Requests. You have exceeded the rate limit. Try again later. */
+ 429: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content: {
+ "application/json": {
+ message?: string;
+ };
+ };
+ };
+ /** @description Internal Server Error. This is a problem with the server that you cannot fix. */
+ 500: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content: {
+ "application/json": {
+ message?: string;
+ };
+ };
+ };
+ };
+ };
+ delete?: never;
+ options?: never;
+ head?: never;
+ patch?: never;
+ trace?: never;
+ };
+ "/api/auth/account-info": {
+ parameters: {
+ query?: never;
+ header?: never;
+ path?: never;
+ cookie?: never;
+ };
+ /** @description Get the account info provided by the provider */
+ get: {
+ parameters: {
+ query?: never;
+ header?: never;
+ path?: never;
+ cookie?: never;
+ };
+ requestBody?: never;
+ responses: {
+ /** @description Success */
+ 200: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content: {
+ "application/json": {
+ user: {
+ id: string;
+ name?: string;
+ email?: string;
+ image?: string;
+ emailVerified: boolean;
+ };
+ data: {
+ [key: string]: unknown;
+ };
+ };
+ };
+ };
+ /** @description Bad Request. Usually due to missing parameters, or invalid parameters. */
+ 400: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content: {
+ "application/json": {
+ message: string;
+ };
+ };
+ };
+ /** @description Unauthorized. Due to missing or invalid authentication. */
+ 401: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content: {
+ "application/json": {
+ message: string;
+ };
+ };
+ };
+ /** @description Forbidden. You do not have permission to access this resource or to perform this action. */
+ 403: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content: {
+ "application/json": {
+ message?: string;
+ };
+ };
+ };
+ /** @description Not Found. The requested resource was not found. */
+ 404: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content: {
+ "application/json": {
+ message?: string;
+ };
+ };
+ };
+ /** @description Too Many Requests. You have exceeded the rate limit. Try again later. */
+ 429: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content: {
+ "application/json": {
+ message?: string;
+ };
+ };
+ };
+ /** @description Internal Server Error. This is a problem with the server that you cannot fix. */
+ 500: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content: {
+ "application/json": {
+ message?: string;
+ };
+ };
+ };
+ };
+ };
+ put?: never;
+ post?: never;
+ delete?: never;
+ options?: never;
+ head?: never;
+ patch?: never;
+ trace?: never;
+ };
+ "/api/auth/ok": {
+ parameters: {
+ query?: never;
+ header?: never;
+ path?: never;
+ cookie?: never;
+ };
+ /** @description Check if the API is working */
+ get: {
+ parameters: {
+ query?: never;
+ header?: never;
+ path?: never;
+ cookie?: never;
+ };
+ requestBody?: never;
+ responses: {
+ /** @description API is working */
+ 200: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content: {
+ "application/json": {
+ /** @description Indicates if the API is working */
+ ok: boolean;
+ };
+ };
+ };
+ /** @description Bad Request. Usually due to missing parameters, or invalid parameters. */
+ 400: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content: {
+ "application/json": {
+ message: string;
+ };
+ };
+ };
+ /** @description Unauthorized. Due to missing or invalid authentication. */
+ 401: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content: {
+ "application/json": {
+ message: string;
+ };
+ };
+ };
+ /** @description Forbidden. You do not have permission to access this resource or to perform this action. */
+ 403: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content: {
+ "application/json": {
+ message?: string;
+ };
+ };
+ };
+ /** @description Not Found. The requested resource was not found. */
+ 404: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content: {
+ "application/json": {
+ message?: string;
+ };
+ };
+ };
+ /** @description Too Many Requests. You have exceeded the rate limit. Try again later. */
+ 429: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content: {
+ "application/json": {
+ message?: string;
+ };
+ };
+ };
+ /** @description Internal Server Error. This is a problem with the server that you cannot fix. */
+ 500: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content: {
+ "application/json": {
+ message?: string;
+ };
+ };
+ };
+ };
+ };
+ put?: never;
+ post?: never;
+ delete?: never;
+ options?: never;
+ head?: never;
+ patch?: never;
+ trace?: never;
+ };
+ "/api/auth/error": {
+ parameters: {
+ query?: never;
+ header?: never;
+ path?: never;
+ cookie?: never;
+ };
+ /** @description Displays an error page */
+ get: {
+ parameters: {
+ query?: never;
+ header?: never;
+ path?: never;
+ cookie?: never;
+ };
+ requestBody?: never;
+ responses: {
+ /** @description Success */
+ 200: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content: {
+ "text/html": string;
+ };
+ };
+ /** @description Bad Request. Usually due to missing parameters, or invalid parameters. */
+ 400: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content: {
+ "application/json": {
+ message: string;
+ };
+ };
+ };
+ /** @description Unauthorized. Due to missing or invalid authentication. */
+ 401: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content: {
+ "application/json": {
+ message: string;
+ };
+ };
+ };
+ /** @description Forbidden. You do not have permission to access this resource or to perform this action. */
+ 403: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content: {
+ "application/json": {
+ message?: string;
+ };
+ };
+ };
+ /** @description Not Found. The requested resource was not found. */
+ 404: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content: {
+ "application/json": {
+ message?: string;
+ };
+ };
+ };
+ /** @description Too Many Requests. You have exceeded the rate limit. Try again later. */
+ 429: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content: {
+ "application/json": {
+ message?: string;
+ };
+ };
+ };
+ /** @description Internal Server Error. This is a problem with the server that you cannot fix. */
+ 500: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content: {
+ "application/json": {
+ message?: string;
+ };
+ };
+ };
+ };
+ };
+ put?: never;
+ post?: never;
+ delete?: never;
+ options?: never;
+ head?: never;
+ patch?: never;
+ trace?: never;
+ };
+ "/api/auth/sign-in/username": {
+ parameters: {
+ query?: never;
+ header?: never;
+ path?: never;
+ cookie?: never;
+ };
+ get?: never;
+ put?: never;
+ /** @description Sign in with username */
+ post: {
+ parameters: {
+ query?: never;
+ header?: never;
+ path?: never;
+ cookie?: never;
+ };
+ requestBody: {
+ content: {
+ "application/json": {
+ /** @description The username of the user */
+ username: string;
+ /** @description The password of the user */
+ password: string;
+ /** @description Remember the user session */
+ rememberMe?: boolean | null;
+ /** @description The URL to redirect to after email verification */
+ callbackURL?: string | null;
+ };
+ };
+ };
+ responses: {
+ /** @description Success */
+ 200: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content: {
+ "application/json": {
+ /** @description Session token for the authenticated session */
+ token: string;
+ user: components["schemas"]["User"];
+ };
+ };
+ };
+ /** @description Bad Request. Usually due to missing parameters, or invalid parameters. */
+ 400: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content: {
+ "application/json": {
+ message: string;
+ };
+ };
+ };
+ /** @description Unauthorized. Due to missing or invalid authentication. */
+ 401: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content: {
+ "application/json": {
+ message: string;
+ };
+ };
+ };
+ /** @description Forbidden. You do not have permission to access this resource or to perform this action. */
+ 403: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content: {
+ "application/json": {
+ message?: string;
+ };
+ };
+ };
+ /** @description Not Found. The requested resource was not found. */
+ 404: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content: {
+ "application/json": {
+ message?: string;
+ };
+ };
+ };
+ /** @description Unprocessable Entity. Validation error */
+ 422: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content: {
+ "application/json": {
+ message?: string;
+ };
+ };
+ };
+ /** @description Too Many Requests. You have exceeded the rate limit. Try again later. */
+ 429: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content: {
+ "application/json": {
+ message?: string;
+ };
+ };
+ };
+ /** @description Internal Server Error. This is a problem with the server that you cannot fix. */
+ 500: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content: {
+ "application/json": {
+ message?: string;
+ };
+ };
+ };
+ };
+ };
+ delete?: never;
+ options?: never;
+ head?: never;
+ patch?: never;
+ trace?: never;
+ };
+ "/api/auth/is-username-available": {
+ parameters: {
+ query?: never;
+ header?: never;
+ path?: never;
+ cookie?: never;
+ };
+ get?: never;
+ put?: never;
+ post: {
+ parameters: {
+ query?: never;
+ header?: never;
+ path?: never;
+ cookie?: never;
+ };
+ requestBody: {
+ content: {
+ "application/json": {
+ /** @description The username to check */
+ username: string;
+ };
+ };
+ };
+ responses: {
+ /** @description Bad Request. Usually due to missing parameters, or invalid parameters. */
+ 400: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content: {
+ "application/json": {
+ message: string;
+ };
+ };
+ };
+ /** @description Unauthorized. Due to missing or invalid authentication. */
+ 401: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content: {
+ "application/json": {
+ message: string;
+ };
+ };
+ };
+ /** @description Forbidden. You do not have permission to access this resource or to perform this action. */
+ 403: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content: {
+ "application/json": {
+ message?: string;
+ };
+ };
+ };
+ /** @description Not Found. The requested resource was not found. */
+ 404: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content: {
+ "application/json": {
+ message?: string;
+ };
+ };
+ };
+ /** @description Too Many Requests. You have exceeded the rate limit. Try again later. */
+ 429: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content: {
+ "application/json": {
+ message?: string;
+ };
+ };
+ };
+ /** @description Internal Server Error. This is a problem with the server that you cannot fix. */
+ 500: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content: {
+ "application/json": {
+ message?: string;
+ };
+ };
+ };
+ };
+ };
+ delete?: never;
+ options?: never;
+ head?: never;
+ patch?: never;
+ trace?: never;
+ };
+ "/api/auth/two-factor/get-totp-uri": {
+ parameters: {
+ query?: never;
+ header?: never;
+ path?: never;
+ cookie?: never;
+ };
+ get?: never;
+ put?: never;
+ /** @description Use this endpoint to get the TOTP URI */
+ post: {
+ parameters: {
+ query?: never;
+ header?: never;
+ path?: never;
+ cookie?: never;
+ };
+ requestBody: {
+ content: {
+ "application/json": {
+ /** @description User password */
+ password: string;
+ };
+ };
+ };
+ responses: {
+ /** @description Successful response */
+ 200: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content: {
+ "application/json": {
+ totpURI?: string;
+ };
+ };
+ };
+ /** @description Bad Request. Usually due to missing parameters, or invalid parameters. */
+ 400: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content: {
+ "application/json": {
+ message: string;
+ };
+ };
+ };
+ /** @description Unauthorized. Due to missing or invalid authentication. */
+ 401: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content: {
+ "application/json": {
+ message: string;
+ };
+ };
+ };
+ /** @description Forbidden. You do not have permission to access this resource or to perform this action. */
+ 403: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content: {
+ "application/json": {
+ message?: string;
+ };
+ };
+ };
+ /** @description Not Found. The requested resource was not found. */
+ 404: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content: {
+ "application/json": {
+ message?: string;
+ };
+ };
+ };
+ /** @description Too Many Requests. You have exceeded the rate limit. Try again later. */
+ 429: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content: {
+ "application/json": {
+ message?: string;
+ };
+ };
+ };
+ /** @description Internal Server Error. This is a problem with the server that you cannot fix. */
+ 500: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content: {
+ "application/json": {
+ message?: string;
+ };
+ };
+ };
+ };
+ };
+ delete?: never;
+ options?: never;
+ head?: never;
+ patch?: never;
+ trace?: never;
+ };
+ "/api/auth/two-factor/verify-totp": {
+ parameters: {
+ query?: never;
+ header?: never;
+ path?: never;
+ cookie?: never;
+ };
+ get?: never;
+ put?: never;
+ /** @description Verify two factor TOTP */
+ post: {
+ parameters: {
+ query?: never;
+ header?: never;
+ path?: never;
+ cookie?: never;
+ };
+ requestBody: {
+ content: {
+ "application/json": {
+ /** @description The otp code to verify. Eg: "012345" */
+ code: string;
+ /** @description If true, the device will be trusted for 30 days. It'll be refreshed on every sign in request within this time. Eg: true */
+ trustDevice?: boolean | null;
+ };
+ };
+ };
+ responses: {
+ /** @description Successful response */
+ 200: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content: {
+ "application/json": {
+ status?: boolean;
+ };
+ };
+ };
+ /** @description Bad Request. Usually due to missing parameters, or invalid parameters. */
+ 400: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content: {
+ "application/json": {
+ message: string;
+ };
+ };
+ };
+ /** @description Unauthorized. Due to missing or invalid authentication. */
+ 401: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content: {
+ "application/json": {
+ message: string;
+ };
+ };
+ };
+ /** @description Forbidden. You do not have permission to access this resource or to perform this action. */
+ 403: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content: {
+ "application/json": {
+ message?: string;
+ };
+ };
+ };
+ /** @description Not Found. The requested resource was not found. */
+ 404: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content: {
+ "application/json": {
+ message?: string;
+ };
+ };
+ };
+ /** @description Too Many Requests. You have exceeded the rate limit. Try again later. */
+ 429: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content: {
+ "application/json": {
+ message?: string;
+ };
+ };
+ };
+ /** @description Internal Server Error. This is a problem with the server that you cannot fix. */
+ 500: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content: {
+ "application/json": {
+ message?: string;
+ };
+ };
+ };
+ };
+ };
+ delete?: never;
+ options?: never;
+ head?: never;
+ patch?: never;
+ trace?: never;
+ };
+ "/api/auth/two-factor/send-otp": {
+ parameters: {
+ query?: never;
+ header?: never;
+ path?: never;
+ cookie?: never;
+ };
+ get?: never;
+ put?: never;
+ /** @description Send two factor OTP to the user */
+ post: {
+ parameters: {
+ query?: never;
+ header?: never;
+ path?: never;
+ cookie?: never;
+ };
+ requestBody?: never;
+ responses: {
+ /** @description Successful response */
+ 200: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content: {
+ "application/json": {
+ status?: boolean;
+ };
+ };
+ };
+ /** @description Bad Request. Usually due to missing parameters, or invalid parameters. */
+ 400: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content: {
+ "application/json": {
+ message: string;
+ };
+ };
+ };
+ /** @description Unauthorized. Due to missing or invalid authentication. */
+ 401: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content: {
+ "application/json": {
+ message: string;
+ };
+ };
+ };
+ /** @description Forbidden. You do not have permission to access this resource or to perform this action. */
+ 403: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content: {
+ "application/json": {
+ message?: string;
+ };
+ };
+ };
+ /** @description Not Found. The requested resource was not found. */
+ 404: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content: {
+ "application/json": {
+ message?: string;
+ };
+ };
+ };
+ /** @description Too Many Requests. You have exceeded the rate limit. Try again later. */
+ 429: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content: {
+ "application/json": {
+ message?: string;
+ };
+ };
+ };
+ /** @description Internal Server Error. This is a problem with the server that you cannot fix. */
+ 500: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content: {
+ "application/json": {
+ message?: string;
+ };
+ };
+ };
+ };
+ };
+ delete?: never;
+ options?: never;
+ head?: never;
+ patch?: never;
+ trace?: never;
+ };
+ "/api/auth/two-factor/verify-otp": {
+ parameters: {
+ query?: never;
+ header?: never;
+ path?: never;
+ cookie?: never;
+ };
+ get?: never;
+ put?: never;
+ /** @description Verify two factor OTP */
+ post: {
+ parameters: {
+ query?: never;
+ header?: never;
+ path?: never;
+ cookie?: never;
+ };
+ requestBody: {
+ content: {
+ "application/json": {
+ /** @description The otp code to verify. Eg: "012345" */
+ code: string;
+ trustDevice?: boolean | null;
+ };
+ };
+ };
+ responses: {
+ /** @description Two-factor OTP verified successfully */
+ 200: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content: {
+ "application/json": {
+ /** @description Session token for the authenticated session */
+ token: string;
+ /** @description The authenticated user object */
+ user: {
+ /** @description Unique identifier of the user */
+ id: string;
+ /**
+ * Format: email
+ * @description User's email address
+ */
+ email?: string | null;
+ /** @description Whether the email is verified */
+ emailVerified?: boolean | null;
+ /** @description User's name */
+ name?: string | null;
+ /**
+ * Format: uri
+ * @description User's profile image URL
+ */
+ image?: string | null;
+ /**
+ * Format: date-time
+ * @description Timestamp when the user was created
+ */
+ createdAt: string;
+ /**
+ * Format: date-time
+ * @description Timestamp when the user was last updated
+ */
+ updatedAt: string;
+ };
+ };
+ };
+ };
+ /** @description Bad Request. Usually due to missing parameters, or invalid parameters. */
+ 400: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content: {
+ "application/json": {
+ message: string;
+ };
+ };
+ };
+ /** @description Unauthorized. Due to missing or invalid authentication. */
+ 401: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content: {
+ "application/json": {
+ message: string;
+ };
+ };
+ };
+ /** @description Forbidden. You do not have permission to access this resource or to perform this action. */
+ 403: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content: {
+ "application/json": {
+ message?: string;
+ };
+ };
+ };
+ /** @description Not Found. The requested resource was not found. */
+ 404: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content: {
+ "application/json": {
+ message?: string;
+ };
+ };
+ };
+ /** @description Too Many Requests. You have exceeded the rate limit. Try again later. */
+ 429: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content: {
+ "application/json": {
+ message?: string;
+ };
+ };
+ };
+ /** @description Internal Server Error. This is a problem with the server that you cannot fix. */
+ 500: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content: {
+ "application/json": {
+ message?: string;
+ };
+ };
+ };
+ };
+ };
+ delete?: never;
+ options?: never;
+ head?: never;
+ patch?: never;
+ trace?: never;
+ };
+ "/api/auth/two-factor/verify-backup-code": {
+ parameters: {
+ query?: never;
+ header?: never;
+ path?: never;
+ cookie?: never;
+ };
+ get?: never;
+ put?: never;
+ /** @description Verify a backup code for two-factor authentication */
+ post: {
+ parameters: {
+ query?: never;
+ header?: never;
+ path?: never;
+ cookie?: never;
+ };
+ requestBody: {
+ content: {
+ "application/json": {
+ /** @description A backup code to verify. Eg: "123456" */
+ code: string;
+ /** @description If true, the session cookie will not be set. */
+ disableSession?: boolean | null;
+ /** @description If true, the device will be trusted for 30 days. It'll be refreshed on every sign in request within this time. Eg: true */
+ trustDevice?: boolean | null;
+ };
+ };
+ };
+ responses: {
+ /** @description Backup code verified successfully */
+ 200: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content: {
+ "application/json": {
+ /** @description The authenticated user object with two-factor details */
+ user: {
+ /** @description Unique identifier of the user */
+ id: string;
+ /**
+ * Format: email
+ * @description User's email address
+ */
+ email?: string | null;
+ /** @description Whether the email is verified */
+ emailVerified?: boolean | null;
+ /** @description User's name */
+ name?: string | null;
+ /**
+ * Format: uri
+ * @description User's profile image URL
+ */
+ image?: string | null;
+ /** @description Whether two-factor authentication is enabled for the user */
+ twoFactorEnabled: boolean;
+ /**
+ * Format: date-time
+ * @description Timestamp when the user was created
+ */
+ createdAt: string;
+ /**
+ * Format: date-time
+ * @description Timestamp when the user was last updated
+ */
+ updatedAt: string;
+ };
+ /** @description The current session object, included unless disableSession is true */
+ session: {
+ /** @description Session token */
+ token: string;
+ /** @description ID of the user associated with the session */
+ userId: string;
+ /**
+ * Format: date-time
+ * @description Timestamp when the session was created
+ */
+ createdAt: string;
+ /**
+ * Format: date-time
+ * @description Timestamp when the session expires
+ */
+ expiresAt: string;
+ };
+ };
+ };
+ };
+ /** @description Bad Request. Usually due to missing parameters, or invalid parameters. */
+ 400: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content: {
+ "application/json": {
+ message: string;
+ };
+ };
+ };
+ /** @description Unauthorized. Due to missing or invalid authentication. */
+ 401: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content: {
+ "application/json": {
+ message: string;
+ };
+ };
+ };
+ /** @description Forbidden. You do not have permission to access this resource or to perform this action. */
+ 403: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content: {
+ "application/json": {
+ message?: string;
+ };
+ };
+ };
+ /** @description Not Found. The requested resource was not found. */
+ 404: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content: {
+ "application/json": {
+ message?: string;
+ };
+ };
+ };
+ /** @description Too Many Requests. You have exceeded the rate limit. Try again later. */
+ 429: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content: {
+ "application/json": {
+ message?: string;
+ };
+ };
+ };
+ /** @description Internal Server Error. This is a problem with the server that you cannot fix. */
+ 500: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content: {
+ "application/json": {
+ message?: string;
+ };
+ };
+ };
+ };
+ };
+ delete?: never;
+ options?: never;
+ head?: never;
+ patch?: never;
+ trace?: never;
+ };
+ "/api/auth/two-factor/generate-backup-codes": {
+ parameters: {
+ query?: never;
+ header?: never;
+ path?: never;
+ cookie?: never;
+ };
+ get?: never;
+ put?: never;
+ /** @description Generate new backup codes for two-factor authentication */
+ post: {
+ parameters: {
+ query?: never;
+ header?: never;
+ path?: never;
+ cookie?: never;
+ };
+ requestBody: {
+ content: {
+ "application/json": {
+ /** @description The users password. */
+ password: string;
+ };
+ };
+ };
+ responses: {
+ /** @description Backup codes generated successfully */
+ 200: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content: {
+ "application/json": {
+ /**
+ * @description Indicates if the backup codes were generated successfully
+ * @enum {boolean}
+ */
+ status: true;
+ /** @description Array of generated backup codes in plain text */
+ backupCodes: string[];
+ };
+ };
+ };
+ /** @description Bad Request. Usually due to missing parameters, or invalid parameters. */
+ 400: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content: {
+ "application/json": {
+ message: string;
+ };
+ };
+ };
+ /** @description Unauthorized. Due to missing or invalid authentication. */
+ 401: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content: {
+ "application/json": {
+ message: string;
+ };
+ };
+ };
+ /** @description Forbidden. You do not have permission to access this resource or to perform this action. */
+ 403: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content: {
+ "application/json": {
+ message?: string;
+ };
+ };
+ };
+ /** @description Not Found. The requested resource was not found. */
+ 404: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content: {
+ "application/json": {
+ message?: string;
+ };
+ };
+ };
+ /** @description Too Many Requests. You have exceeded the rate limit. Try again later. */
+ 429: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content: {
+ "application/json": {
+ message?: string;
+ };
+ };
+ };
+ /** @description Internal Server Error. This is a problem with the server that you cannot fix. */
+ 500: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content: {
+ "application/json": {
+ message?: string;
+ };
+ };
+ };
+ };
+ };
+ delete?: never;
+ options?: never;
+ head?: never;
+ patch?: never;
+ trace?: never;
+ };
+ "/api/auth/two-factor/enable": {
+ parameters: {
+ query?: never;
+ header?: never;
+ path?: never;
+ cookie?: never;
+ };
+ get?: never;
+ put?: never;
+ /** @description Use this endpoint to enable two factor authentication. This will generate a TOTP URI and backup codes. Once the user verifies the TOTP URI, the two factor authentication will be enabled. */
+ post: {
+ parameters: {
+ query?: never;
+ header?: never;
+ path?: never;
+ cookie?: never;
+ };
+ requestBody: {
+ content: {
+ "application/json": {
+ /** @description User password */
+ password: string;
+ /** @description Custom issuer for the TOTP URI */
+ issuer?: string | null;
+ };
+ };
+ };
+ responses: {
+ /** @description Successful response */
+ 200: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content: {
+ "application/json": {
+ /** @description TOTP URI */
+ totpURI?: string;
+ /** @description Backup codes */
+ backupCodes?: string[];
+ };
+ };
+ };
+ /** @description Bad Request. Usually due to missing parameters, or invalid parameters. */
+ 400: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content: {
+ "application/json": {
+ message: string;
+ };
+ };
+ };
+ /** @description Unauthorized. Due to missing or invalid authentication. */
+ 401: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content: {
+ "application/json": {
+ message: string;
+ };
+ };
+ };
+ /** @description Forbidden. You do not have permission to access this resource or to perform this action. */
+ 403: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content: {
+ "application/json": {
+ message?: string;
+ };
+ };
+ };
+ /** @description Not Found. The requested resource was not found. */
+ 404: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content: {
+ "application/json": {
+ message?: string;
+ };
+ };
+ };
+ /** @description Too Many Requests. You have exceeded the rate limit. Try again later. */
+ 429: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content: {
+ "application/json": {
+ message?: string;
+ };
+ };
+ };
+ /** @description Internal Server Error. This is a problem with the server that you cannot fix. */
+ 500: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content: {
+ "application/json": {
+ message?: string;
+ };
+ };
+ };
+ };
+ };
+ delete?: never;
+ options?: never;
+ head?: never;
+ patch?: never;
+ trace?: never;
+ };
+ "/api/auth/two-factor/disable": {
+ parameters: {
+ query?: never;
+ header?: never;
+ path?: never;
+ cookie?: never;
+ };
+ get?: never;
+ put?: never;
+ /** @description Use this endpoint to disable two factor authentication. */
+ post: {
+ parameters: {
+ query?: never;
+ header?: never;
+ path?: never;
+ cookie?: never;
+ };
+ requestBody: {
+ content: {
+ "application/json": {
+ /** @description User password */
+ password: string;
+ };
+ };
+ };
+ responses: {
+ /** @description Successful response */
+ 200: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content: {
+ "application/json": {
+ status?: boolean;
+ };
+ };
+ };
+ /** @description Bad Request. Usually due to missing parameters, or invalid parameters. */
+ 400: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content: {
+ "application/json": {
+ message: string;
+ };
+ };
+ };
+ /** @description Unauthorized. Due to missing or invalid authentication. */
+ 401: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content: {
+ "application/json": {
+ message: string;
+ };
+ };
+ };
+ /** @description Forbidden. You do not have permission to access this resource or to perform this action. */
+ 403: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content: {
+ "application/json": {
+ message?: string;
+ };
+ };
+ };
+ /** @description Not Found. The requested resource was not found. */
+ 404: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content: {
+ "application/json": {
+ message?: string;
+ };
+ };
+ };
+ /** @description Too Many Requests. You have exceeded the rate limit. Try again later. */
+ 429: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content: {
+ "application/json": {
+ message?: string;
+ };
+ };
+ };
+ /** @description Internal Server Error. This is a problem with the server that you cannot fix. */
+ 500: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content: {
+ "application/json": {
+ message?: string;
+ };
+ };
+ };
+ };
+ };
+ delete?: never;
+ options?: never;
+ head?: never;
+ patch?: never;
+ trace?: never;
+ };
+ "/api/auth/one-tap/callback": {
+ parameters: {
+ query?: never;
+ header?: never;
+ path?: never;
+ cookie?: never;
+ };
+ get?: never;
+ put?: never;
+ /** @description Use this endpoint to authenticate with Google One Tap */
+ post: {
+ parameters: {
+ query?: never;
+ header?: never;
+ path?: never;
+ cookie?: never;
+ };
+ requestBody: {
+ content: {
+ "application/json": {
+ /** @description Google ID token, which the client obtains from the One Tap API */
+ idToken: string;
+ };
+ };
+ };
+ responses: {
+ /** @description Successful response */
+ 200: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content: {
+ "application/json": {
+ session?: components["schemas"]["Session"];
+ user?: components["schemas"]["User"];
+ };
+ };
+ };
+ /** @description Invalid token */
+ 400: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content?: never;
+ };
+ /** @description Unauthorized. Due to missing or invalid authentication. */
+ 401: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content: {
+ "application/json": {
+ message: string;
+ };
+ };
+ };
+ /** @description Forbidden. You do not have permission to access this resource or to perform this action. */
+ 403: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content: {
+ "application/json": {
+ message?: string;
+ };
+ };
+ };
+ /** @description Not Found. The requested resource was not found. */
+ 404: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content: {
+ "application/json": {
+ message?: string;
+ };
+ };
+ };
+ /** @description Too Many Requests. You have exceeded the rate limit. Try again later. */
+ 429: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content: {
+ "application/json": {
+ message?: string;
+ };
+ };
+ };
+ /** @description Internal Server Error. This is a problem with the server that you cannot fix. */
+ 500: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content: {
+ "application/json": {
+ message?: string;
+ };
+ };
+ };
+ };
+ };
+ delete?: never;
+ options?: never;
+ head?: never;
+ patch?: never;
+ trace?: never;
+ };
+ "/api/auth/email-otp/send-verification-otp": {
+ parameters: {
+ query?: never;
+ header?: never;
+ path?: never;
+ cookie?: never;
+ };
+ get?: never;
+ put?: never;
+ /** @description Send a verification OTP to an email */
+ post: operations["sendEmailVerificationOTP"];
+ delete?: never;
+ options?: never;
+ head?: never;
+ patch?: never;
+ trace?: never;
+ };
+ "/api/auth/email-otp/check-verification-otp": {
+ parameters: {
+ query?: never;
+ header?: never;
+ path?: never;
+ cookie?: never;
+ };
+ get?: never;
+ put?: never;
+ /** @description Verify an email with an OTP */
+ post: operations["verifyEmailWithOTP"];
+ delete?: never;
+ options?: never;
+ head?: never;
+ patch?: never;
+ trace?: never;
+ };
+ "/api/auth/email-otp/verify-email": {
+ parameters: {
+ query?: never;
+ header?: never;
+ path?: never;
+ cookie?: never;
+ };
+ get?: never;
+ put?: never;
+ /** @description Verify email with OTP */
+ post: {
+ parameters: {
+ query?: never;
+ header?: never;
+ path?: never;
+ cookie?: never;
+ };
+ requestBody: {
+ content: {
+ "application/json": {
+ /** @description Email address to verify */
+ email: string;
+ /** @description OTP to verify */
+ otp: string;
+ };
+ };
+ };
+ responses: {
+ /** @description Success */
+ 200: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content: {
+ "application/json": {
+ /**
+ * @description Indicates if the verification was successful
+ * @enum {boolean}
+ */
+ status: true;
+ /** @description Session token if autoSignInAfterVerification is enabled, otherwise null */
+ token: string | null;
+ user: components["schemas"]["User"];
+ };
+ };
+ };
+ /** @description Bad Request. Usually due to missing parameters, or invalid parameters. */
+ 400: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content: {
+ "application/json": {
+ message: string;
+ };
+ };
+ };
+ /** @description Unauthorized. Due to missing or invalid authentication. */
+ 401: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content: {
+ "application/json": {
+ message: string;
+ };
+ };
+ };
+ /** @description Forbidden. You do not have permission to access this resource or to perform this action. */
+ 403: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content: {
+ "application/json": {
+ message?: string;
+ };
+ };
+ };
+ /** @description Not Found. The requested resource was not found. */
+ 404: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content: {
+ "application/json": {
+ message?: string;
+ };
+ };
+ };
+ /** @description Too Many Requests. You have exceeded the rate limit. Try again later. */
+ 429: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content: {
+ "application/json": {
+ message?: string;
+ };
+ };
+ };
+ /** @description Internal Server Error. This is a problem with the server that you cannot fix. */
+ 500: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content: {
+ "application/json": {
+ message?: string;
+ };
+ };
+ };
+ };
+ };
+ delete?: never;
+ options?: never;
+ head?: never;
+ patch?: never;
+ trace?: never;
+ };
+ "/api/auth/sign-in/email-otp": {
+ parameters: {
+ query?: never;
+ header?: never;
+ path?: never;
+ cookie?: never;
+ };
+ get?: never;
+ put?: never;
+ /** @description Sign in with email and OTP */
+ post: operations["signInWithEmailOTP"];
+ delete?: never;
+ options?: never;
+ head?: never;
+ patch?: never;
+ trace?: never;
+ };
+ "/api/auth/email-otp/request-password-reset": {
+ parameters: {
+ query?: never;
+ header?: never;
+ path?: never;
+ cookie?: never;
+ };
+ get?: never;
+ put?: never;
+ /** @description Request password reset with email and OTP */
+ post: operations["requestPasswordResetWithEmailOTP"];
+ delete?: never;
+ options?: never;
+ head?: never;
+ patch?: never;
+ trace?: never;
+ };
+ "/api/auth/forget-password/email-otp": {
+ parameters: {
+ query?: never;
+ header?: never;
+ path?: never;
+ cookie?: never;
+ };
+ get?: never;
+ put?: never;
+ /** @description Deprecated: Use /email-otp/request-password-reset instead. */
+ post: operations["forgetPasswordWithEmailOTP"];
+ delete?: never;
+ options?: never;
+ head?: never;
+ patch?: never;
+ trace?: never;
+ };
+ "/api/auth/email-otp/reset-password": {
+ parameters: {
+ query?: never;
+ header?: never;
+ path?: never;
+ cookie?: never;
+ };
+ get?: never;
+ put?: never;
+ /** @description Reset password with email and OTP */
+ post: operations["resetPasswordWithEmailOTP"];
+ delete?: never;
+ options?: never;
+ head?: never;
+ patch?: never;
+ trace?: never;
+ };
+ "/api/auth/organization/create": {
+ parameters: {
+ query?: never;
+ header?: never;
+ path?: never;
+ cookie?: never;
+ };
+ get?: never;
+ put?: never;
+ /** @description Create an organization */
+ post: {
+ parameters: {
+ query?: never;
+ header?: never;
+ path?: never;
+ cookie?: never;
+ };
+ requestBody: {
+ content: {
+ "application/json": {
+ /** @description The name of the organization */
+ name: string;
+ /** @description The slug of the organization */
+ slug: string;
+ /** @description The user id of the organization creator. If not provided, the current user will be used. Should only be used by admins or when called by the server. server-only. Eg: "user-id" */
+ userId?: string | null;
+ /** @description The logo of the organization */
+ logo?: string | null;
+ /** @description The metadata of the organization */
+ metadata?: string | null;
+ /** @description Whether to keep the current active organization active after creating a new one. Eg: true */
+ keepCurrentActiveOrganization?: boolean | null;
+ };
+ };
+ };
+ responses: {
+ /** @description Success */
+ 200: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content: {
+ "application/json": components["schemas"]["Organization"];
+ };
+ };
+ /** @description Bad Request. Usually due to missing parameters, or invalid parameters. */
+ 400: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content: {
+ "application/json": {
+ message: string;
+ };
+ };
+ };
+ /** @description Unauthorized. Due to missing or invalid authentication. */
+ 401: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content: {
+ "application/json": {
+ message: string;
+ };
+ };
+ };
+ /** @description Forbidden. You do not have permission to access this resource or to perform this action. */
+ 403: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content: {
+ "application/json": {
+ message?: string;
+ };
+ };
+ };
+ /** @description Not Found. The requested resource was not found. */
+ 404: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content: {
+ "application/json": {
+ message?: string;
+ };
+ };
+ };
+ /** @description Too Many Requests. You have exceeded the rate limit. Try again later. */
+ 429: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content: {
+ "application/json": {
+ message?: string;
+ };
+ };
+ };
+ /** @description Internal Server Error. This is a problem with the server that you cannot fix. */
+ 500: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content: {
+ "application/json": {
+ message?: string;
+ };
+ };
+ };
+ };
+ };
+ delete?: never;
+ options?: never;
+ head?: never;
+ patch?: never;
+ trace?: never;
+ };
+ "/api/auth/organization/update": {
+ parameters: {
+ query?: never;
+ header?: never;
+ path?: never;
+ cookie?: never;
+ };
+ get?: never;
+ put?: never;
+ /** @description Update an organization */
+ post: {
+ parameters: {
+ query?: never;
+ header?: never;
+ path?: never;
+ cookie?: never;
+ };
+ requestBody: {
+ content: {
+ "application/json": {
+ data: {
+ /** @description The name of the organization */
+ name?: string | null;
+ /** @description The slug of the organization */
+ slug?: string | null;
+ /** @description The logo of the organization */
+ logo?: string | null;
+ /** @description The metadata of the organization */
+ metadata?: string | null;
+ };
+ /** @description The organization ID. Eg: "org-id" */
+ organizationId?: string | null;
+ };
+ };
+ };
+ responses: {
+ /** @description Success */
+ 200: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content: {
+ "application/json": components["schemas"]["Organization"];
+ };
+ };
+ /** @description Bad Request. Usually due to missing parameters, or invalid parameters. */
+ 400: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content: {
+ "application/json": {
+ message: string;
+ };
+ };
+ };
+ /** @description Unauthorized. Due to missing or invalid authentication. */
+ 401: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content: {
+ "application/json": {
+ message: string;
+ };
+ };
+ };
+ /** @description Forbidden. You do not have permission to access this resource or to perform this action. */
+ 403: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content: {
+ "application/json": {
+ message?: string;
+ };
+ };
+ };
+ /** @description Not Found. The requested resource was not found. */
+ 404: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content: {
+ "application/json": {
+ message?: string;
+ };
+ };
+ };
+ /** @description Too Many Requests. You have exceeded the rate limit. Try again later. */
+ 429: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content: {
+ "application/json": {
+ message?: string;
+ };
+ };
+ };
+ /** @description Internal Server Error. This is a problem with the server that you cannot fix. */
+ 500: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content: {
+ "application/json": {
+ message?: string;
+ };
+ };
+ };
+ };
+ };
+ delete?: never;
+ options?: never;
+ head?: never;
+ patch?: never;
+ trace?: never;
+ };
+ "/api/auth/organization/delete": {
+ parameters: {
+ query?: never;
+ header?: never;
+ path?: never;
+ cookie?: never;
+ };
+ get?: never;
+ put?: never;
+ /** @description Delete an organization */
+ post: {
+ parameters: {
+ query?: never;
+ header?: never;
+ path?: never;
+ cookie?: never;
+ };
+ requestBody: {
+ content: {
+ "application/json": {
+ /** @description The organization id to delete */
+ organizationId: string;
+ };
+ };
+ };
+ responses: {
+ /** @description Success */
+ 200: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content: {
+ "application/json": string;
+ };
+ };
+ /** @description Bad Request. Usually due to missing parameters, or invalid parameters. */
+ 400: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content: {
+ "application/json": {
+ message: string;
+ };
+ };
+ };
+ /** @description Unauthorized. Due to missing or invalid authentication. */
+ 401: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content: {
+ "application/json": {
+ message: string;
+ };
+ };
+ };
+ /** @description Forbidden. You do not have permission to access this resource or to perform this action. */
+ 403: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content: {
+ "application/json": {
+ message?: string;
+ };
+ };
+ };
+ /** @description Not Found. The requested resource was not found. */
+ 404: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content: {
+ "application/json": {
+ message?: string;
+ };
+ };
+ };
+ /** @description Too Many Requests. You have exceeded the rate limit. Try again later. */
+ 429: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content: {
+ "application/json": {
+ message?: string;
+ };
+ };
+ };
+ /** @description Internal Server Error. This is a problem with the server that you cannot fix. */
+ 500: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content: {
+ "application/json": {
+ message?: string;
+ };
+ };
+ };
+ };
+ };
+ delete?: never;
+ options?: never;
+ head?: never;
+ patch?: never;
+ trace?: never;
+ };
+ "/api/auth/organization/set-active": {
+ parameters: {
+ query?: never;
+ header?: never;
+ path?: never;
+ cookie?: never;
+ };
+ get?: never;
+ put?: never;
+ /** @description Set the active organization */
+ post: operations["setActiveOrganization"];
+ delete?: never;
+ options?: never;
+ head?: never;
+ patch?: never;
+ trace?: never;
+ };
+ "/api/auth/organization/get-full-organization": {
+ parameters: {
+ query?: never;
+ header?: never;
+ path?: never;
+ cookie?: never;
+ };
+ /** @description Get the full organization */
+ get: operations["getOrganization"];
+ put?: never;
+ post?: never;
+ delete?: never;
+ options?: never;
+ head?: never;
+ patch?: never;
+ trace?: never;
+ };
+ "/api/auth/organization/list": {
+ parameters: {
+ query?: never;
+ header?: never;
+ path?: never;
+ cookie?: never;
+ };
+ /** @description List all organizations */
+ get: {
+ parameters: {
+ query?: never;
+ header?: never;
+ path?: never;
+ cookie?: never;
+ };
+ requestBody?: never;
+ responses: {
+ /** @description Success */
+ 200: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content: {
+ "application/json": components["schemas"]["Organization"][];
+ };
+ };
+ /** @description Bad Request. Usually due to missing parameters, or invalid parameters. */
+ 400: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content: {
+ "application/json": {
+ message: string;
+ };
+ };
+ };
+ /** @description Unauthorized. Due to missing or invalid authentication. */
+ 401: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content: {
+ "application/json": {
+ message: string;
+ };
+ };
+ };
+ /** @description Forbidden. You do not have permission to access this resource or to perform this action. */
+ 403: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content: {
+ "application/json": {
+ message?: string;
+ };
+ };
+ };
+ /** @description Not Found. The requested resource was not found. */
+ 404: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content: {
+ "application/json": {
+ message?: string;
+ };
+ };
+ };
+ /** @description Too Many Requests. You have exceeded the rate limit. Try again later. */
+ 429: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content: {
+ "application/json": {
+ message?: string;
+ };
+ };
+ };
+ /** @description Internal Server Error. This is a problem with the server that you cannot fix. */
+ 500: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content: {
+ "application/json": {
+ message?: string;
+ };
+ };
+ };
+ };
+ };
+ put?: never;
+ post?: never;
+ delete?: never;
+ options?: never;
+ head?: never;
+ patch?: never;
+ trace?: never;
+ };
+ "/api/auth/organization/invite-member": {
+ parameters: {
+ query?: never;
+ header?: never;
+ path?: never;
+ cookie?: never;
+ };
+ get?: never;
+ put?: never;
+ /** @description Create an invitation to an organization */
+ post: operations["createOrganizationInvitation"];
+ delete?: never;
+ options?: never;
+ head?: never;
+ patch?: never;
+ trace?: never;
+ };
+ "/api/auth/organization/cancel-invitation": {
+ parameters: {
+ query?: never;
+ header?: never;
+ path?: never;
+ cookie?: never;
+ };
+ get?: never;
+ put?: never;
+ post: {
+ parameters: {
+ query?: never;
+ header?: never;
+ path?: never;
+ cookie?: never;
+ };
+ requestBody: {
+ content: {
+ "application/json": {
+ /** @description The ID of the invitation to cancel */
+ invitationId: string;
+ };
+ };
+ };
+ responses: {
+ /** @description Bad Request. Usually due to missing parameters, or invalid parameters. */
+ 400: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content: {
+ "application/json": {
+ message: string;
+ };
+ };
+ };
+ /** @description Unauthorized. Due to missing or invalid authentication. */
+ 401: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content: {
+ "application/json": {
+ message: string;
+ };
+ };
+ };
+ /** @description Forbidden. You do not have permission to access this resource or to perform this action. */
+ 403: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content: {
+ "application/json": {
+ message?: string;
+ };
+ };
+ };
+ /** @description Not Found. The requested resource was not found. */
+ 404: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content: {
+ "application/json": {
+ message?: string;
+ };
+ };
+ };
+ /** @description Too Many Requests. You have exceeded the rate limit. Try again later. */
+ 429: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content: {
+ "application/json": {
+ message?: string;
+ };
+ };
+ };
+ /** @description Internal Server Error. This is a problem with the server that you cannot fix. */
+ 500: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content: {
+ "application/json": {
+ message?: string;
+ };
+ };
+ };
+ };
+ };
+ delete?: never;
+ options?: never;
+ head?: never;
+ patch?: never;
+ trace?: never;
+ };
+ "/api/auth/organization/accept-invitation": {
+ parameters: {
+ query?: never;
+ header?: never;
+ path?: never;
+ cookie?: never;
+ };
+ get?: never;
+ put?: never;
+ /** @description Accept an invitation to an organization */
+ post: {
+ parameters: {
+ query?: never;
+ header?: never;
+ path?: never;
+ cookie?: never;
+ };
+ requestBody: {
+ content: {
+ "application/json": {
+ /** @description The ID of the invitation to accept */
+ invitationId: string;
+ };
+ };
+ };
+ responses: {
+ /** @description Success */
+ 200: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content: {
+ "application/json": {
+ invitation?: Record;
+ member?: Record;
+ };
+ };
+ };
+ /** @description Bad Request. Usually due to missing parameters, or invalid parameters. */
+ 400: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content: {
+ "application/json": {
+ message: string;
+ };
+ };
+ };
+ /** @description Unauthorized. Due to missing or invalid authentication. */
+ 401: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content: {
+ "application/json": {
+ message: string;
+ };
+ };
+ };
+ /** @description Forbidden. You do not have permission to access this resource or to perform this action. */
+ 403: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content: {
+ "application/json": {
+ message?: string;
+ };
+ };
+ };
+ /** @description Not Found. The requested resource was not found. */
+ 404: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content: {
+ "application/json": {
+ message?: string;
+ };
+ };
+ };
+ /** @description Too Many Requests. You have exceeded the rate limit. Try again later. */
+ 429: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content: {
+ "application/json": {
+ message?: string;
+ };
+ };
+ };
+ /** @description Internal Server Error. This is a problem with the server that you cannot fix. */
+ 500: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content: {
+ "application/json": {
+ message?: string;
+ };
+ };
+ };
+ };
+ };
+ delete?: never;
+ options?: never;
+ head?: never;
+ patch?: never;
+ trace?: never;
+ };
+ "/api/auth/organization/get-invitation": {
+ parameters: {
+ query?: never;
+ header?: never;
+ path?: never;
+ cookie?: never;
+ };
+ /** @description Get an invitation by ID */
+ get: {
+ parameters: {
+ query?: {
+ id?: string;
+ };
+ header?: never;
+ path?: never;
+ cookie?: never;
+ };
+ requestBody?: never;
+ responses: {
+ /** @description Success */
+ 200: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content: {
+ "application/json": {
+ id: string;
+ email: string;
+ role: string;
+ organizationId: string;
+ inviterId: string;
+ status: string;
+ expiresAt: string;
+ organizationName: string;
+ organizationSlug: string;
+ inviterEmail: string;
+ };
+ };
+ };
+ /** @description Bad Request. Usually due to missing parameters, or invalid parameters. */
+ 400: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content: {
+ "application/json": {
+ message: string;
+ };
+ };
+ };
+ /** @description Unauthorized. Due to missing or invalid authentication. */
+ 401: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content: {
+ "application/json": {
+ message: string;
+ };
+ };
+ };
+ /** @description Forbidden. You do not have permission to access this resource or to perform this action. */
+ 403: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content: {
+ "application/json": {
+ message?: string;
+ };
+ };
+ };
+ /** @description Not Found. The requested resource was not found. */
+ 404: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content: {
+ "application/json": {
+ message?: string;
+ };
+ };
+ };
+ /** @description Too Many Requests. You have exceeded the rate limit. Try again later. */
+ 429: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content: {
+ "application/json": {
+ message?: string;
+ };
+ };
+ };
+ /** @description Internal Server Error. This is a problem with the server that you cannot fix. */
+ 500: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content: {
+ "application/json": {
+ message?: string;
+ };
+ };
+ };
+ };
+ };
+ put?: never;
+ post?: never;
+ delete?: never;
+ options?: never;
+ head?: never;
+ patch?: never;
+ trace?: never;
+ };
+ "/api/auth/organization/reject-invitation": {
+ parameters: {
+ query?: never;
+ header?: never;
+ path?: never;
+ cookie?: never;
+ };
+ get?: never;
+ put?: never;
+ /** @description Reject an invitation to an organization */
+ post: {
+ parameters: {
+ query?: never;
+ header?: never;
+ path?: never;
+ cookie?: never;
+ };
+ requestBody: {
+ content: {
+ "application/json": {
+ /** @description The ID of the invitation to reject */
+ invitationId: string;
+ };
+ };
+ };
+ responses: {
+ /** @description Success */
+ 200: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content: {
+ "application/json": {
+ invitation?: Record;
+ member?: Record | null;
+ };
+ };
+ };
+ /** @description Bad Request. Usually due to missing parameters, or invalid parameters. */
+ 400: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content: {
+ "application/json": {
+ message: string;
+ };
+ };
+ };
+ /** @description Unauthorized. Due to missing or invalid authentication. */
+ 401: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content: {
+ "application/json": {
+ message: string;
+ };
+ };
+ };
+ /** @description Forbidden. You do not have permission to access this resource or to perform this action. */
+ 403: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content: {
+ "application/json": {
+ message?: string;
+ };
+ };
+ };
+ /** @description Not Found. The requested resource was not found. */
+ 404: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content: {
+ "application/json": {
+ message?: string;
+ };
+ };
+ };
+ /** @description Too Many Requests. You have exceeded the rate limit. Try again later. */
+ 429: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content: {
+ "application/json": {
+ message?: string;
+ };
+ };
+ };
+ /** @description Internal Server Error. This is a problem with the server that you cannot fix. */
+ 500: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content: {
+ "application/json": {
+ message?: string;
+ };
+ };
+ };
+ };
+ };
+ delete?: never;
+ options?: never;
+ head?: never;
+ patch?: never;
+ trace?: never;
+ };
+ "/api/auth/organization/list-invitations": {
+ parameters: {
+ query?: never;
+ header?: never;
+ path?: never;
+ cookie?: never;
+ };
+ get: {
+ parameters: {
+ query?: never;
+ header?: never;
+ path?: never;
+ cookie?: never;
+ };
+ requestBody?: never;
+ responses: {
+ /** @description Bad Request. Usually due to missing parameters, or invalid parameters. */
+ 400: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content: {
+ "application/json": {
+ message: string;
+ };
+ };
+ };
+ /** @description Unauthorized. Due to missing or invalid authentication. */
+ 401: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content: {
+ "application/json": {
+ message: string;
+ };
+ };
+ };
+ /** @description Forbidden. You do not have permission to access this resource or to perform this action. */
+ 403: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content: {
+ "application/json": {
+ message?: string;
+ };
+ };
+ };
+ /** @description Not Found. The requested resource was not found. */
+ 404: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content: {
+ "application/json": {
+ message?: string;
+ };
+ };
+ };
+ /** @description Too Many Requests. You have exceeded the rate limit. Try again later. */
+ 429: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content: {
+ "application/json": {
+ message?: string;
+ };
+ };
+ };
+ /** @description Internal Server Error. This is a problem with the server that you cannot fix. */
+ 500: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content: {
+ "application/json": {
+ message?: string;
+ };
+ };
+ };
+ };
+ };
+ put?: never;
+ post?: never;
+ delete?: never;
+ options?: never;
+ head?: never;
+ patch?: never;
+ trace?: never;
+ };
+ "/api/auth/organization/get-active-member": {
+ parameters: {
+ query?: never;
+ header?: never;
+ path?: never;
+ cookie?: never;
+ };
+ /** @description Get the member details of the active organization */
+ get: {
+ parameters: {
+ query?: never;
+ header?: never;
+ path?: never;
+ cookie?: never;
+ };
+ requestBody?: never;
+ responses: {
+ /** @description Success */
+ 200: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content: {
+ "application/json": {
+ id: string;
+ userId: string;
+ organizationId: string;
+ role: string;
+ };
+ };
+ };
+ /** @description Bad Request. Usually due to missing parameters, or invalid parameters. */
+ 400: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content: {
+ "application/json": {
+ message: string;
+ };
+ };
+ };
+ /** @description Unauthorized. Due to missing or invalid authentication. */
+ 401: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content: {
+ "application/json": {
+ message: string;
+ };
+ };
+ };
+ /** @description Forbidden. You do not have permission to access this resource or to perform this action. */
+ 403: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content: {
+ "application/json": {
+ message?: string;
+ };
+ };
+ };
+ /** @description Not Found. The requested resource was not found. */
+ 404: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content: {
+ "application/json": {
+ message?: string;
+ };
+ };
+ };
+ /** @description Too Many Requests. You have exceeded the rate limit. Try again later. */
+ 429: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content: {
+ "application/json": {
+ message?: string;
+ };
+ };
+ };
+ /** @description Internal Server Error. This is a problem with the server that you cannot fix. */
+ 500: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content: {
+ "application/json": {
+ message?: string;
+ };
+ };
+ };
+ };
+ };
+ put?: never;
+ post?: never;
+ delete?: never;
+ options?: never;
+ head?: never;
+ patch?: never;
+ trace?: never;
+ };
+ "/api/auth/organization/check-slug": {
+ parameters: {
+ query?: never;
+ header?: never;
+ path?: never;
+ cookie?: never;
+ };
+ get?: never;
+ put?: never;
+ post: {
+ parameters: {
+ query?: never;
+ header?: never;
+ path?: never;
+ cookie?: never;
+ };
+ requestBody: {
+ content: {
+ "application/json": {
+ /** @description The organization slug to check. Eg: "my-org" */
+ slug: string;
+ };
+ };
+ };
+ responses: {
+ /** @description Bad Request. Usually due to missing parameters, or invalid parameters. */
+ 400: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content: {
+ "application/json": {
+ message: string;
+ };
+ };
+ };
+ /** @description Unauthorized. Due to missing or invalid authentication. */
+ 401: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content: {
+ "application/json": {
+ message: string;
+ };
+ };
+ };
+ /** @description Forbidden. You do not have permission to access this resource or to perform this action. */
+ 403: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content: {
+ "application/json": {
+ message?: string;
+ };
+ };
+ };
+ /** @description Not Found. The requested resource was not found. */
+ 404: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content: {
+ "application/json": {
+ message?: string;
+ };
+ };
+ };
+ /** @description Too Many Requests. You have exceeded the rate limit. Try again later. */
+ 429: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content: {
+ "application/json": {
+ message?: string;
+ };
+ };
+ };
+ /** @description Internal Server Error. This is a problem with the server that you cannot fix. */
+ 500: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content: {
+ "application/json": {
+ message?: string;
+ };
+ };
+ };
+ };
+ };
+ delete?: never;
+ options?: never;
+ head?: never;
+ patch?: never;
+ trace?: never;
+ };
+ "/api/auth/organization/remove-member": {
+ parameters: {
+ query?: never;
+ header?: never;
+ path?: never;
+ cookie?: never;
+ };
+ get?: never;
+ put?: never;
+ /** @description Remove a member from an organization */
+ post: {
+ parameters: {
+ query?: never;
+ header?: never;
+ path?: never;
+ cookie?: never;
+ };
+ requestBody: {
+ content: {
+ "application/json": {
+ /** @description The ID or email of the member to remove */
+ memberIdOrEmail: string;
+ /** @description The ID of the organization to remove the member from. If not provided, the active organization will be used. Eg: "org-id" */
+ organizationId?: string | null;
+ };
+ };
+ };
+ responses: {
+ /** @description Success */
+ 200: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content: {
+ "application/json": {
+ member: {
+ id: string;
+ userId: string;
+ organizationId: string;
+ role: string;
+ };
+ };
+ };
+ };
+ /** @description Bad Request. Usually due to missing parameters, or invalid parameters. */
+ 400: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content: {
+ "application/json": {
+ message: string;
+ };
+ };
+ };
+ /** @description Unauthorized. Due to missing or invalid authentication. */
+ 401: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content: {
+ "application/json": {
+ message: string;
+ };
+ };
+ };
+ /** @description Forbidden. You do not have permission to access this resource or to perform this action. */
+ 403: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content: {
+ "application/json": {
+ message?: string;
+ };
+ };
+ };
+ /** @description Not Found. The requested resource was not found. */
+ 404: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content: {
+ "application/json": {
+ message?: string;
+ };
+ };
+ };
+ /** @description Too Many Requests. You have exceeded the rate limit. Try again later. */
+ 429: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content: {
+ "application/json": {
+ message?: string;
+ };
+ };
+ };
+ /** @description Internal Server Error. This is a problem with the server that you cannot fix. */
+ 500: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content: {
+ "application/json": {
+ message?: string;
+ };
+ };
+ };
+ };
+ };
+ delete?: never;
+ options?: never;
+ head?: never;
+ patch?: never;
+ trace?: never;
+ };
+ "/api/auth/organization/update-member-role": {
+ parameters: {
+ query?: never;
+ header?: never;
+ path?: never;
+ cookie?: never;
+ };
+ get?: never;
+ put?: never;
+ /** @description Update the role of a member in an organization */
+ post: operations["updateOrganizationMemberRole"];
+ delete?: never;
+ options?: never;
+ head?: never;
+ patch?: never;
+ trace?: never;
+ };
+ "/api/auth/organization/leave": {
+ parameters: {
+ query?: never;
+ header?: never;
+ path?: never;
+ cookie?: never;
+ };
+ get?: never;
+ put?: never;
+ post: {
+ parameters: {
+ query?: never;
+ header?: never;
+ path?: never;
+ cookie?: never;
+ };
+ requestBody: {
+ content: {
+ "application/json": {
+ /** @description The organization Id for the member to leave. Eg: "organization-id" */
+ organizationId: string;
+ };
+ };
+ };
+ responses: {
+ /** @description Bad Request. Usually due to missing parameters, or invalid parameters. */
+ 400: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content: {
+ "application/json": {
+ message: string;
+ };
+ };
+ };
+ /** @description Unauthorized. Due to missing or invalid authentication. */
+ 401: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content: {
+ "application/json": {
+ message: string;
+ };
+ };
+ };
+ /** @description Forbidden. You do not have permission to access this resource or to perform this action. */
+ 403: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content: {
+ "application/json": {
+ message?: string;
+ };
+ };
+ };
+ /** @description Not Found. The requested resource was not found. */
+ 404: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content: {
+ "application/json": {
+ message?: string;
+ };
+ };
+ };
+ /** @description Too Many Requests. You have exceeded the rate limit. Try again later. */
+ 429: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content: {
+ "application/json": {
+ message?: string;
+ };
+ };
+ };
+ /** @description Internal Server Error. This is a problem with the server that you cannot fix. */
+ 500: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content: {
+ "application/json": {
+ message?: string;
+ };
+ };
+ };
+ };
+ };
+ delete?: never;
+ options?: never;
+ head?: never;
+ patch?: never;
+ trace?: never;
+ };
+ "/api/auth/organization/list-user-invitations": {
+ parameters: {
+ query?: never;
+ header?: never;
+ path?: never;
+ cookie?: never;
+ };
+ /** @description List all invitations a user has received */
+ get: {
+ parameters: {
+ query?: never;
+ header?: never;
+ path?: never;
+ cookie?: never;
+ };
+ requestBody?: never;
+ responses: {
+ /** @description Success */
+ 200: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content: {
+ "application/json": {
+ id: string;
+ email: string;
+ role: string;
+ organizationId: string;
+ organizationName: string;
+ /** @description The ID of the user who created the invitation */
+ inviterId: string;
+ /** @description The ID of the team associated with the invitation */
+ teamId?: string | null;
+ status: string;
+ expiresAt: string;
+ createdAt: string;
+ }[];
+ };
+ };
+ /** @description Bad Request. Usually due to missing parameters, or invalid parameters. */
+ 400: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content: {
+ "application/json": {
+ message: string;
+ };
+ };
+ };
+ /** @description Unauthorized. Due to missing or invalid authentication. */
+ 401: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content: {
+ "application/json": {
+ message: string;
+ };
+ };
+ };
+ /** @description Forbidden. You do not have permission to access this resource or to perform this action. */
+ 403: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content: {
+ "application/json": {
+ message?: string;
+ };
+ };
+ };
+ /** @description Not Found. The requested resource was not found. */
+ 404: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content: {
+ "application/json": {
+ message?: string;
+ };
+ };
+ };
+ /** @description Too Many Requests. You have exceeded the rate limit. Try again later. */
+ 429: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content: {
+ "application/json": {
+ message?: string;
+ };
+ };
+ };
+ /** @description Internal Server Error. This is a problem with the server that you cannot fix. */
+ 500: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content: {
+ "application/json": {
+ message?: string;
+ };
+ };
+ };
+ };
+ };
+ put?: never;
+ post?: never;
+ delete?: never;
+ options?: never;
+ head?: never;
+ patch?: never;
+ trace?: never;
+ };
+ "/api/auth/organization/list-members": {
+ parameters: {
+ query?: never;
+ header?: never;
+ path?: never;
+ cookie?: never;
+ };
+ get: {
+ parameters: {
+ query?: never;
+ header?: never;
+ path?: never;
+ cookie?: never;
+ };
+ requestBody?: never;
+ responses: {
+ /** @description Bad Request. Usually due to missing parameters, or invalid parameters. */
+ 400: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content: {
+ "application/json": {
+ message: string;
+ };
+ };
+ };
+ /** @description Unauthorized. Due to missing or invalid authentication. */
+ 401: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content: {
+ "application/json": {
+ message: string;
+ };
+ };
+ };
+ /** @description Forbidden. You do not have permission to access this resource or to perform this action. */
+ 403: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content: {
+ "application/json": {
+ message?: string;
+ };
+ };
+ };
+ /** @description Not Found. The requested resource was not found. */
+ 404: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content: {
+ "application/json": {
+ message?: string;
+ };
+ };
+ };
+ /** @description Too Many Requests. You have exceeded the rate limit. Try again later. */
+ 429: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content: {
+ "application/json": {
+ message?: string;
+ };
+ };
+ };
+ /** @description Internal Server Error. This is a problem with the server that you cannot fix. */
+ 500: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content: {
+ "application/json": {
+ message?: string;
+ };
+ };
+ };
+ };
+ };
+ put?: never;
+ post?: never;
+ delete?: never;
+ options?: never;
+ head?: never;
+ patch?: never;
+ trace?: never;
+ };
+ "/api/auth/organization/get-active-member-role": {
+ parameters: {
+ query?: never;
+ header?: never;
+ path?: never;
+ cookie?: never;
+ };
+ get: {
+ parameters: {
+ query?: never;
+ header?: never;
+ path?: never;
+ cookie?: never;
+ };
+ requestBody?: never;
+ responses: {
+ /** @description Bad Request. Usually due to missing parameters, or invalid parameters. */
+ 400: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content: {
+ "application/json": {
+ message: string;
+ };
+ };
+ };
+ /** @description Unauthorized. Due to missing or invalid authentication. */
+ 401: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content: {
+ "application/json": {
+ message: string;
+ };
+ };
+ };
+ /** @description Forbidden. You do not have permission to access this resource or to perform this action. */
+ 403: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content: {
+ "application/json": {
+ message?: string;
+ };
+ };
+ };
+ /** @description Not Found. The requested resource was not found. */
+ 404: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content: {
+ "application/json": {
+ message?: string;
+ };
+ };
+ };
+ /** @description Too Many Requests. You have exceeded the rate limit. Try again later. */
+ 429: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content: {
+ "application/json": {
+ message?: string;
+ };
+ };
+ };
+ /** @description Internal Server Error. This is a problem with the server that you cannot fix. */
+ 500: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content: {
+ "application/json": {
+ message?: string;
+ };
+ };
+ };
+ };
+ };
+ put?: never;
+ post?: never;
+ delete?: never;
+ options?: never;
+ head?: never;
+ patch?: never;
+ trace?: never;
+ };
+ "/api/auth/organization/has-permission": {
+ parameters: {
+ query?: never;
+ header?: never;
+ path?: never;
+ cookie?: never;
+ };
+ get?: never;
+ put?: never;
+ /** @description Check if the user has permission */
+ post: {
+ parameters: {
+ query?: never;
+ header?: never;
+ path?: never;
+ cookie?: never;
+ };
+ requestBody?: {
+ content: {
+ "application/json": {
+ /**
+ * @deprecated
+ * @description The permission to check
+ */
+ permission?: Record;
+ /** @description The permission to check */
+ permissions: Record;
+ };
+ };
+ };
+ responses: {
+ /** @description Success */
+ 200: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content: {
+ "application/json": {
+ error?: string;
+ success: boolean;
+ };
+ };
+ };
+ /** @description Bad Request. Usually due to missing parameters, or invalid parameters. */
+ 400: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content: {
+ "application/json": {
+ message: string;
+ };
+ };
+ };
+ /** @description Unauthorized. Due to missing or invalid authentication. */
+ 401: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content: {
+ "application/json": {
+ message: string;
+ };
+ };
+ };
+ /** @description Forbidden. You do not have permission to access this resource or to perform this action. */
+ 403: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content: {
+ "application/json": {
+ message?: string;
+ };
+ };
+ };
+ /** @description Not Found. The requested resource was not found. */
+ 404: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content: {
+ "application/json": {
+ message?: string;
+ };
+ };
+ };
+ /** @description Too Many Requests. You have exceeded the rate limit. Try again later. */
+ 429: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content: {
+ "application/json": {
+ message?: string;
+ };
+ };
+ };
+ /** @description Internal Server Error. This is a problem with the server that you cannot fix. */
+ 500: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content: {
+ "application/json": {
+ message?: string;
+ };
+ };
+ };
+ };
+ };
+ delete?: never;
+ options?: never;
+ head?: never;
+ patch?: never;
+ trace?: never;
+ };
+ "/api/auth/admin/set-role": {
+ parameters: {
+ query?: never;
+ header?: never;
+ path?: never;
+ cookie?: never;
+ };
+ get?: never;
+ put?: never;
+ /** @description Set the role of a user */
+ post: operations["setUserRole"];
+ delete?: never;
+ options?: never;
+ head?: never;
+ patch?: never;
+ trace?: never;
+ };
+ "/api/auth/admin/get-user": {
+ parameters: {
+ query?: never;
+ header?: never;
+ path?: never;
+ cookie?: never;
+ };
+ /** @description Get an existing user */
+ get: operations["getUser"];
+ put?: never;
+ post?: never;
+ delete?: never;
+ options?: never;
+ head?: never;
+ patch?: never;
+ trace?: never;
+ };
+ "/api/auth/admin/create-user": {
+ parameters: {
+ query?: never;
+ header?: never;
+ path?: never;
+ cookie?: never;
+ };
+ get?: never;
+ put?: never;
+ /** @description Create a new user */
+ post: operations["createUser"];
+ delete?: never;
+ options?: never;
+ head?: never;
+ patch?: never;
+ trace?: never;
+ };
+ "/api/auth/admin/update-user": {
+ parameters: {
+ query?: never;
+ header?: never;
+ path?: never;
+ cookie?: never;
+ };
+ get?: never;
+ put?: never;
+ /** @description Update a user's details */
+ post: operations["updateUser"];
+ delete?: never;
+ options?: never;
+ head?: never;
+ patch?: never;
+ trace?: never;
+ };
+ "/api/auth/admin/list-users": {
+ parameters: {
+ query?: never;
+ header?: never;
+ path?: never;
+ cookie?: never;
+ };
+ /** @description List users */
+ get: operations["listUsers"];
+ put?: never;
+ post?: never;
+ delete?: never;
+ options?: never;
+ head?: never;
+ patch?: never;
+ trace?: never;
+ };
+ "/api/auth/admin/list-user-sessions": {
+ parameters: {
+ query?: never;
+ header?: never;
+ path?: never;
+ cookie?: never;
+ };
+ get?: never;
+ put?: never;
+ /** @description List user sessions */
+ post: operations["listUserSessions"];
+ delete?: never;
+ options?: never;
+ head?: never;
+ patch?: never;
+ trace?: never;
+ };
+ "/api/auth/admin/unban-user": {
+ parameters: {
+ query?: never;
+ header?: never;
+ path?: never;
+ cookie?: never;
+ };
+ get?: never;
+ put?: never;
+ /** @description Unban a user */
+ post: operations["unbanUser"];
+ delete?: never;
+ options?: never;
+ head?: never;
+ patch?: never;
+ trace?: never;
+ };
+ "/api/auth/admin/ban-user": {
+ parameters: {
+ query?: never;
+ header?: never;
+ path?: never;
+ cookie?: never;
+ };
+ get?: never;
+ put?: never;
+ /** @description Ban a user */
+ post: operations["banUser"];
+ delete?: never;
+ options?: never;
+ head?: never;
+ patch?: never;
+ trace?: never;
+ };
+ "/api/auth/admin/impersonate-user": {
+ parameters: {
+ query?: never;
+ header?: never;
+ path?: never;
+ cookie?: never;
+ };
+ get?: never;
+ put?: never;
+ /** @description Impersonate a user */
+ post: operations["impersonateUser"];
+ delete?: never;
+ options?: never;
+ head?: never;
+ patch?: never;
+ trace?: never;
+ };
+ "/api/auth/admin/stop-impersonating": {
+ parameters: {
+ query?: never;
+ header?: never;
+ path?: never;
+ cookie?: never;
+ };
+ get?: never;
+ put?: never;
+ post: {
+ parameters: {
+ query?: never;
+ header?: never;
+ path?: never;
+ cookie?: never;
+ };
+ requestBody?: never;
+ responses: {
+ /** @description Bad Request. Usually due to missing parameters, or invalid parameters. */
+ 400: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content: {
+ "application/json": {
+ message: string;
+ };
+ };
+ };
+ /** @description Unauthorized. Due to missing or invalid authentication. */
+ 401: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content: {
+ "application/json": {
+ message: string;
+ };
+ };
+ };
+ /** @description Forbidden. You do not have permission to access this resource or to perform this action. */
+ 403: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content: {
+ "application/json": {
+ message?: string;
+ };
+ };
+ };
+ /** @description Not Found. The requested resource was not found. */
+ 404: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content: {
+ "application/json": {
+ message?: string;
+ };
+ };
+ };
+ /** @description Too Many Requests. You have exceeded the rate limit. Try again later. */
+ 429: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content: {
+ "application/json": {
+ message?: string;
+ };
+ };
+ };
+ /** @description Internal Server Error. This is a problem with the server that you cannot fix. */
+ 500: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content: {
+ "application/json": {
+ message?: string;
+ };
+ };
+ };
+ };
+ };
+ delete?: never;
+ options?: never;
+ head?: never;
+ patch?: never;
+ trace?: never;
+ };
+ "/api/auth/admin/revoke-user-session": {
+ parameters: {
+ query?: never;
+ header?: never;
+ path?: never;
+ cookie?: never;
+ };
+ get?: never;
+ put?: never;
+ /** @description Revoke a user session */
+ post: operations["revokeUserSession"];
+ delete?: never;
+ options?: never;
+ head?: never;
+ patch?: never;
+ trace?: never;
+ };
+ "/api/auth/admin/revoke-user-sessions": {
+ parameters: {
+ query?: never;
+ header?: never;
+ path?: never;
+ cookie?: never;
+ };
+ get?: never;
+ put?: never;
+ /** @description Revoke all user sessions */
+ post: operations["revokeUserSessions"];
+ delete?: never;
+ options?: never;
+ head?: never;
+ patch?: never;
+ trace?: never;
+ };
+ "/api/auth/admin/remove-user": {
+ parameters: {
+ query?: never;
+ header?: never;
+ path?: never;
+ cookie?: never;
+ };
+ get?: never;
+ put?: never;
+ /** @description Delete a user and all their sessions and accounts. Cannot be undone. */
+ post: operations["removeUser"];
+ delete?: never;
+ options?: never;
+ head?: never;
+ patch?: never;
+ trace?: never;
+ };
+ "/api/auth/admin/set-user-password": {
+ parameters: {
+ query?: never;
+ header?: never;
+ path?: never;
+ cookie?: never;
+ };
+ get?: never;
+ put?: never;
+ /** @description Set a user's password */
+ post: operations["setUserPassword"];
+ delete?: never;
+ options?: never;
+ head?: never;
+ patch?: never;
+ trace?: never;
+ };
+ "/api/auth/admin/has-permission": {
+ parameters: {
+ query?: never;
+ header?: never;
+ path?: never;
+ cookie?: never;
+ };
+ get?: never;
+ put?: never;
+ /** @description Check if the user has permission */
+ post: {
+ parameters: {
+ query?: never;
+ header?: never;
+ path?: never;
+ cookie?: never;
+ };
+ requestBody?: {
+ content: {
+ "application/json": {
+ /**
+ * @deprecated
+ * @description The permission to check
+ */
+ permission?: Record;
+ /** @description The permission to check */
+ permissions: Record;
+ };
+ };
+ };
+ responses: {
+ /** @description Success */
+ 200: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content: {
+ "application/json": {
+ error?: string;
+ success: boolean;
+ };
+ };
+ };
+ /** @description Bad Request. Usually due to missing parameters, or invalid parameters. */
+ 400: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content: {
+ "application/json": {
+ message: string;
+ };
+ };
+ };
+ /** @description Unauthorized. Due to missing or invalid authentication. */
+ 401: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content: {
+ "application/json": {
+ message: string;
+ };
+ };
+ };
+ /** @description Forbidden. You do not have permission to access this resource or to perform this action. */
+ 403: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content: {
+ "application/json": {
+ message?: string;
+ };
+ };
+ };
+ /** @description Not Found. The requested resource was not found. */
+ 404: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content: {
+ "application/json": {
+ message?: string;
+ };
+ };
+ };
+ /** @description Too Many Requests. You have exceeded the rate limit. Try again later. */
+ 429: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content: {
+ "application/json": {
+ message?: string;
+ };
+ };
+ };
+ /** @description Internal Server Error. This is a problem with the server that you cannot fix. */
+ 500: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content: {
+ "application/json": {
+ message?: string;
+ };
+ };
+ };
+ };
+ };
+ delete?: never;
+ options?: never;
+ head?: never;
+ patch?: never;
+ trace?: never;
+ };
+ "/api/auth/passkey/generate-register-options": {
+ parameters: {
+ query?: never;
+ header?: never;
+ path?: never;
+ cookie?: never;
+ };
+ /** @description Generate registration options for a new passkey */
+ get: operations["generatePasskeyRegistrationOptions"];
+ put?: never;
+ post?: never;
+ delete?: never;
+ options?: never;
+ head?: never;
+ patch?: never;
+ trace?: never;
+ };
+ "/api/auth/passkey/generate-authenticate-options": {
+ parameters: {
+ query?: never;
+ header?: never;
+ path?: never;
+ cookie?: never;
+ };
+ /** @description Generate authentication options for a passkey */
+ get: operations["passkeyGenerateAuthenticateOptions"];
+ put?: never;
+ post?: never;
+ delete?: never;
+ options?: never;
+ head?: never;
+ patch?: never;
+ trace?: never;
+ };
+ "/api/auth/passkey/verify-registration": {
+ parameters: {
+ query?: never;
+ header?: never;
+ path?: never;
+ cookie?: never;
+ };
+ get?: never;
+ put?: never;
+ /** @description Verify registration of a new passkey */
+ post: operations["passkeyVerifyRegistration"];
+ delete?: never;
+ options?: never;
+ head?: never;
+ patch?: never;
+ trace?: never;
+ };
+ "/api/auth/passkey/verify-authentication": {
+ parameters: {
+ query?: never;
+ header?: never;
+ path?: never;
+ cookie?: never;
+ };
+ get?: never;
+ put?: never;
+ /** @description Verify authentication of a passkey */
+ post: operations["passkeyVerifyAuthentication"];
+ delete?: never;
+ options?: never;
+ head?: never;
+ patch?: never;
+ trace?: never;
+ };
+ "/api/auth/passkey/list-user-passkeys": {
+ parameters: {
+ query?: never;
+ header?: never;
+ path?: never;
+ cookie?: never;
+ };
+ /** @description List all passkeys for the authenticated user */
+ get: {
+ parameters: {
+ query?: never;
+ header?: never;
+ path?: never;
+ cookie?: never;
+ };
+ requestBody?: never;
+ responses: {
+ /** @description Passkeys retrieved successfully */
+ 200: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content: {
+ "application/json": components["schemas"]["Passkey"][];
+ };
+ };
+ /** @description Bad Request. Usually due to missing parameters, or invalid parameters. */
+ 400: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content: {
+ "application/json": {
+ message: string;
+ };
+ };
+ };
+ /** @description Unauthorized. Due to missing or invalid authentication. */
+ 401: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content: {
+ "application/json": {
+ message: string;
+ };
+ };
+ };
+ /** @description Forbidden. You do not have permission to access this resource or to perform this action. */
+ 403: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content: {
+ "application/json": {
+ message?: string;
+ };
+ };
+ };
+ /** @description Not Found. The requested resource was not found. */
+ 404: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content: {
+ "application/json": {
+ message?: string;
+ };
+ };
+ };
+ /** @description Too Many Requests. You have exceeded the rate limit. Try again later. */
+ 429: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content: {
+ "application/json": {
+ message?: string;
+ };
+ };
+ };
+ /** @description Internal Server Error. This is a problem with the server that you cannot fix. */
+ 500: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content: {
+ "application/json": {
+ message?: string;
+ };
+ };
+ };
+ };
+ };
+ put?: never;
+ post?: never;
+ delete?: never;
+ options?: never;
+ head?: never;
+ patch?: never;
+ trace?: never;
+ };
+ "/api/auth/passkey/delete-passkey": {
+ parameters: {
+ query?: never;
+ header?: never;
+ path?: never;
+ cookie?: never;
+ };
+ get?: never;
+ put?: never;
+ /** @description Delete a specific passkey */
+ post: {
+ parameters: {
+ query?: never;
+ header?: never;
+ path?: never;
+ cookie?: never;
+ };
+ requestBody: {
+ content: {
+ "application/json": {
+ /** @description The ID of the passkey to delete. Eg: "some-passkey-id" */
+ id: string;
+ };
+ };
+ };
+ responses: {
+ /** @description Passkey deleted successfully */
+ 200: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content: {
+ "application/json": {
+ /** @description Indicates whether the deletion was successful */
+ status: boolean;
+ };
+ };
+ };
+ /** @description Bad Request. Usually due to missing parameters, or invalid parameters. */
+ 400: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content: {
+ "application/json": {
+ message: string;
+ };
+ };
+ };
+ /** @description Unauthorized. Due to missing or invalid authentication. */
+ 401: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content: {
+ "application/json": {
+ message: string;
+ };
+ };
+ };
+ /** @description Forbidden. You do not have permission to access this resource or to perform this action. */
+ 403: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content: {
+ "application/json": {
+ message?: string;
+ };
+ };
+ };
+ /** @description Not Found. The requested resource was not found. */
+ 404: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content: {
+ "application/json": {
+ message?: string;
+ };
+ };
+ };
+ /** @description Too Many Requests. You have exceeded the rate limit. Try again later. */
+ 429: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content: {
+ "application/json": {
+ message?: string;
+ };
+ };
+ };
+ /** @description Internal Server Error. This is a problem with the server that you cannot fix. */
+ 500: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content: {
+ "application/json": {
+ message?: string;
+ };
+ };
+ };
+ };
+ };
+ delete?: never;
+ options?: never;
+ head?: never;
+ patch?: never;
+ trace?: never;
+ };
+ "/api/auth/passkey/update-passkey": {
+ parameters: {
+ query?: never;
+ header?: never;
+ path?: never;
+ cookie?: never;
+ };
+ get?: never;
+ put?: never;
+ /** @description Update a specific passkey's name */
+ post: {
+ parameters: {
+ query?: never;
+ header?: never;
+ path?: never;
+ cookie?: never;
+ };
+ requestBody: {
+ content: {
+ "application/json": {
+ /** @description The ID of the passkey which will be updated. Eg: "passkey-id" */
+ id: string;
+ /** @description The new name which the passkey will be updated to. Eg: "my-new-passkey-name" */
+ name: string;
+ };
+ };
+ };
+ responses: {
+ /** @description Passkey updated successfully */
+ 200: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content: {
+ "application/json": {
+ passkey: components["schemas"]["Passkey"];
+ };
+ };
+ };
+ /** @description Bad Request. Usually due to missing parameters, or invalid parameters. */
+ 400: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content: {
+ "application/json": {
+ message: string;
+ };
+ };
+ };
+ /** @description Unauthorized. Due to missing or invalid authentication. */
+ 401: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content: {
+ "application/json": {
+ message: string;
+ };
+ };
+ };
+ /** @description Forbidden. You do not have permission to access this resource or to perform this action. */
+ 403: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content: {
+ "application/json": {
+ message?: string;
+ };
+ };
+ };
+ /** @description Not Found. The requested resource was not found. */
+ 404: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content: {
+ "application/json": {
+ message?: string;
+ };
+ };
+ };
+ /** @description Too Many Requests. You have exceeded the rate limit. Try again later. */
+ 429: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content: {
+ "application/json": {
+ message?: string;
+ };
+ };
+ };
+ /** @description Internal Server Error. This is a problem with the server that you cannot fix. */
+ 500: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content: {
+ "application/json": {
+ message?: string;
+ };
+ };
+ };
+ };
+ };
+ delete?: never;
+ options?: never;
+ head?: never;
+ patch?: never;
+ trace?: never;
+ };
+ "/api/auth/sign-in/magic-link": {
+ parameters: {
+ query?: never;
+ header?: never;
+ path?: never;
+ cookie?: never;
+ };
+ get?: never;
+ put?: never;
+ /** @description Sign in with magic link */
+ post: operations["signInWithMagicLink"];
+ delete?: never;
+ options?: never;
+ head?: never;
+ patch?: never;
+ trace?: never;
+ };
+ "/api/auth/magic-link/verify": {
+ parameters: {
+ query?: never;
+ header?: never;
+ path?: never;
+ cookie?: never;
+ };
+ /** @description Verify magic link */
+ get: operations["verifyMagicLink"];
+ put?: never;
+ post?: never;
+ delete?: never;
+ options?: never;
+ head?: never;
+ patch?: never;
+ trace?: never;
+ };
+}
+export type webhooks = Record;
+export interface components {
+ schemas: {
+ NotificationPreferencesDto: Record;
+ UpdatePrivacySettingsDto: {
+ /**
+ * @description Public profile
+ * @example true
+ */
+ publicProfile: boolean;
+ /**
+ * @description Email visibility
+ * @example true
+ */
+ emailVisibility: boolean;
+ /**
+ * @description Location visibility
+ * @example true
+ */
+ locationVisibility: boolean;
+ /**
+ * @description Company visibility
+ * @example true
+ */
+ companyVisibility: boolean;
+ /**
+ * @description Website visibility
+ * @example true
+ */
+ websiteVisibility: boolean;
+ /**
+ * @description Social links visibility
+ * @example true
+ */
+ socialLinksVisibility: boolean;
+ };
+ UpdateAppearanceSettingsDto: {
+ /**
+ * @description Theme
+ * @example light
+ * @enum {string}
+ */
+ theme: "light" | "dark" | "auto";
+ };
+ PublicEarningsSummaryDto: {
+ /**
+ * @description All-time total earned (normalized, e.g. USDC 7 decimals)
+ * @example 50000
+ */
+ totalEarned: number;
+ };
+ EarningsBreakdownDto: {
+ /**
+ * @description Total from hackathons
+ * @example 20000
+ */
+ hackathons: number;
+ /**
+ * @description Total from grants
+ * @example 10000
+ */
+ grants: number;
+ /**
+ * @description Total from crowdfunding
+ * @example 15000
+ */
+ crowdfunding: number;
+ /**
+ * @description Total from bounties
+ * @example 5000
+ */
+ bounties: number;
+ };
+ PublicEarningActivityDto: {
+ /** @description Unique activity id */
+ id: string;
+ /**
+ * @description Earnings source category
+ * @enum {string}
+ */
+ source: "hackathons" | "grants" | "crowdfunding" | "bounties";
+ /**
+ * @description Human-readable title
+ * @example Winner of Stellar Hackathon Q1
+ */
+ title: string;
+ /**
+ * @description Amount (normalized)
+ * @example 5000
+ */
+ amount: number;
+ /**
+ * @description Currency code
+ * @example USDC
+ */
+ currency: string;
+ /**
+ * @description When the earning occurred (ISO date string)
+ * @example 2024-01-19T14:30:00Z
+ */
+ occurredAt: string;
+ };
+ PublicEarningsResponseDto: {
+ summary: components["schemas"]["PublicEarningsSummaryDto"];
+ breakdown: components["schemas"]["EarningsBreakdownDto"];
+ /** @description Verified activity history (completed only) */
+ activities: components["schemas"]["PublicEarningActivityDto"][];
+ };
+ EarningsSummaryDto: {
+ /**
+ * @description All-time total earned (normalized, e.g. USDC 7 decimals)
+ * @example 50000
+ */
+ totalEarned: number;
+ /**
+ * @description Amount currently claimable / pending withdrawal
+ * @example 10000
+ */
+ pendingWithdrawal: number;
+ /**
+ * @description Amount already paid out (completed withdrawals)
+ * @example 40000
+ */
+ completedWithdrawal: number;
+ };
+ EarningActivityDto: {
+ /** @description Unique activity id (e.g. submissionId or milestoneId) */
+ id: string;
+ /**
+ * @description Earnings source category
+ * @enum {string}
+ */
+ source: "hackathons" | "grants" | "crowdfunding" | "bounties";
+ /**
+ * @description Human-readable title
+ * @example Winner of Stellar Hackathon Q1
+ */
+ title: string;
+ /**
+ * @description Amount (normalized)
+ * @example 5000
+ */
+ amount: number;
+ /**
+ * @description Currency code
+ * @example USDC
+ */
+ currency: string;
+ /**
+ * @description Activity status
+ * @enum {string}
+ */
+ status: "pending" | "claimable" | "completed";
+ /**
+ * @description When the earning occurred (ISO date string)
+ * @example 2024-01-19T14:30:00Z
+ */
+ occurredAt: string;
+ /** @description Entity id for claim (e.g. submissionId, milestoneId) */
+ entityId?: string;
+ /** @description On-chain payout transaction hash (when settled). */
+ txHash?: string;
+ };
+ EarningsResponseDto: {
+ summary: components["schemas"]["EarningsSummaryDto"];
+ breakdown: components["schemas"]["EarningsBreakdownDto"];
+ /** @description Activity feed */
+ activities: components["schemas"]["EarningActivityDto"][];
+ };
+ ProfileDetailsDto: {
+ bio: string | null;
+ website: string | null;
+ location: string | null;
+ company: string | null;
+ skills: string[];
+ /** @description Social links keyed by platform. */
+ socialLinks: {
+ [key: string]: unknown;
+ } | null;
+ };
+ ProfileResponseDto: {
+ id: string;
+ name: string | null;
+ email: string;
+ username: string | null;
+ displayUsername: string | null;
+ image: string | null;
+ emailVerified: boolean;
+ /** @description contributor | host (onboarding persona) */
+ persona: string | null;
+ /** @description When onboarding was completed; null if not done. */
+ onboardingCompletedAt: string | null;
+ /** Format: date-time */
+ createdAt: string;
+ /** Format: date-time */
+ updatedAt: string;
+ profile: components["schemas"]["ProfileDetailsDto"];
+ };
+ ProfileSocialLinksDto: {
+ /** @description GitHub profile or repository URL */
+ github?: string;
+ /** @description Twitter/X profile URL */
+ twitter?: string;
+ /** @description LinkedIn profile URL */
+ linkedin?: string;
+ /** @description Discord profile or server URL */
+ discord?: string;
+ };
+ UpdateProfileDto: {
+ /** @description Short bio */
+ bio?: string;
+ /** @description Personal or project website URL */
+ website?: string;
+ /** @description Country or location */
+ location?: string;
+ /** @description Company or organization */
+ company?: string;
+ /** @description Skill tags */
+ skills?: string[];
+ socialLinks?: components["schemas"]["ProfileSocialLinksDto"];
+ };
+ DashboardUserStatsDto: {
+ followers: number;
+ following: number;
+ };
+ DashboardUserDto: {
+ id: string;
+ name: string | null;
+ email: string;
+ username: string | null;
+ displayUsername: string | null;
+ image: string | null;
+ role: string;
+ /** Format: date-time */
+ createdAt: string;
+ stats?: components["schemas"]["DashboardUserStatsDto"];
+ };
+ CurrentUserDto: {
+ /** @description Current user */
+ user: components["schemas"]["DashboardUserDto"];
+ };
+ UserStatsDto: {
+ projectsCreated: number;
+ projectsFunded: number;
+ totalContributed: number;
+ commentsPosted: number;
+ votes: number;
+ grants: number;
+ hackathons: number;
+ followers: number;
+ following: number;
+ reputation: number;
+ communityScore: number;
+ };
+ ChartDataPointDto: {
+ /** @description Date in YYYY-MM-DD format */
+ date: string;
+ /** @description Count for that date */
+ count: number;
+ };
+ ChartDto: {
+ data: components["schemas"]["ChartDataPointDto"][];
+ };
+ ActivitiesGraphDto: {
+ data: components["schemas"]["ChartDataPointDto"][];
+ };
+ ActivityProjectDto: {
+ id: string;
+ title: string;
+ banner?: string | null;
+ logo?: string | null;
+ };
+ ActivityOrganizationDto: {
+ id: string;
+ name: string;
+ };
+ RecentActivityDto: {
+ id: string;
+ type: string;
+ userId: string;
+ projectId?: string | null;
+ organizationId?: string | null;
+ /** Format: date-time */
+ createdAt: string;
+ project?: components["schemas"]["ActivityProjectDto"];
+ organization?: components["schemas"]["ActivityOrganizationDto"];
+ };
+ DashboardDto: {
+ /** @description User profile data */
+ user: components["schemas"]["DashboardUserDto"];
+ stats: components["schemas"]["UserStatsDto"];
+ chart: components["schemas"]["ChartDto"];
+ activitiesGraph: components["schemas"]["ActivitiesGraphDto"];
+ /** @description Recent activities */
+ recentActivities: components["schemas"]["RecentActivityDto"][];
+ };
+ CompleteOnboardingDto: {
+ /**
+ * @description How the user plans to use Boundless.
+ * @enum {string}
+ */
+ persona: "contributor" | "host";
+ /** @description How the user heard about Boundless. */
+ referralSource?: string;
+ /** @description Skill tags. */
+ skills?: string[];
+ /** @description What the user wants to use Boundless for. */
+ goals?: string[];
+ };
+ UpdateUserDto: Record;
+ UploadResponseDto: Record;
+ MultipleUploadResponseDto: Record;
+ FileInfoResponseDto: Record;
+ SearchFilesResponseDto: Record;
+ OptimizedUrlResponseDto: Record;
+ ResponsiveUrlsResponseDto: Record;
+ UsageStatsResponseDto: Record;
+ RegisterDto: Record;
+ LoginDto: Record;
+ RefreshTokenDto: Record;
+ VerifySignatureDto: Record;
+ CreateConversationDto: {
+ /** @description User ID of the other participant */
+ otherUserId: string;
+ };
+ CreateMessageDto: {
+ /** @description Message text */
+ body: string;
+ };
+ /** @enum {string} */
+ CreditTier: "BRONZE" | "SILVER" | "GOLD" | "PLATINUM";
+ CreditSummaryDto: {
+ /**
+ * @description Current credit balance.
+ * @example 6
+ */
+ balance: number;
+ /**
+ * @description Hard ceiling on the balance.
+ * @example 12
+ */
+ cap: number;
+ /** @example BRONZE */
+ tier: components["schemas"]["CreditTier"];
+ /**
+ * @description Credits this user resets to on the next refill.
+ * @example 3
+ */
+ refillAmount: number;
+ /**
+ * @description Credits spent so far this calendar month.
+ * @example 8
+ */
+ usedThisMonth: number;
+ /**
+ * Format: date-time
+ * @description When the next monthly refill applies.
+ */
+ nextRefillAt: string;
+ };
+ /** @enum {string} */
+ CreditLedgerReason: "WELCOME" | "REFILL" | "SPEND" | "REFUND" | "SPAM_FORFEIT" | "ADMIN_GRANT" | "PURCHASE";
+ CreditLedgerEntryDto: {
+ id: string;
+ /**
+ * @description Signed change to the balance.
+ * @example -1
+ */
+ delta: number;
+ /**
+ * @description Balance after this entry.
+ * @example 5
+ */
+ balanceAfter: number;
+ reason: components["schemas"]["CreditLedgerReason"];
+ /** @example BOUNTY_APPLICATION */
+ refType: Record | null;
+ refId: Record | null;
+ /** @example 2026-06 */
+ period: Record | null;
+ /** Format: date-time */
+ createdAt: string;
+ };
+ CreditHistoryDto: {
+ rows: components["schemas"]["CreditLedgerEntryDto"][];
+ total: number;
+ page: number;
+ limit: number;
+ };
+ ContactDto: Record;
+ CreateCampaignDto: {
+ /**
+ * @description Title of the campaign
+ * @example Web3 Campaign
+ */
+ title: string;
+ /**
+ * @description Logo of the campaign
+ * @example https://example.com/logo.png
+ */
+ logo: string;
+ /**
+ * @description Vision of the campaign
+ * @example Web3 Campaign
+ */
+ vision: string;
+ /**
+ * @description Banner image URL of the campaign
+ * @example https://example.com/banner.png
+ */
+ banner: string;
+ /**
+ * @description Category of the campaign
+ * @example web3
+ */
+ category: string;
+ /**
+ * @description Details of the campaign
+ * @example Web3 Campaign
+ */
+ details: string;
+ /**
+ * @description Funding amount of the campaign
+ * @example 1000
+ */
+ fundingAmount: number;
+ /**
+ * @description Github URL of the campaign
+ * @example https://github.com/example/project
+ */
+ githubUrl: string;
+ /**
+ * @description Gitlab URL of the campaign
+ * @example https://gitlab.com/example/project
+ */
+ gitlabUrl: string;
+ /**
+ * @description Bitbucket URL of the campaign
+ * @example https://bitbucket.com/example/project
+ */
+ bitbucketUrl: string;
+ /**
+ * @description Project website of the campaign
+ * @example https://example.com/project
+ */
+ projectWebsite: string;
+ /**
+ * @description Demo video of the campaign
+ * @example https://example.com/demo.mp4
+ */
+ demoVideo: string;
+ /**
+ * @description Milestones of the campaign
+ * @example [
+ * {
+ * "name": "Milestone 1",
+ * "description": "Milestone 1 description",
+ * "startDate": "2025-01-01",
+ * "endDate": "2025-01-02",
+ * "amount": 1000
+ * }
+ * ]
+ */
+ milestones: string[];
+ /**
+ * @description Team of the campaign (optional; solo builders may omit)
+ * @example [
+ * {
+ * "name": "John Doe",
+ * "role": "Developer",
+ * "email": "john.doe@example.com",
+ * "linkedin": "https://linkedin.com/in/john-doe",
+ * "twitter": "https://twitter.com/john-doe"
+ * }
+ * ]
+ */
+ team?: string[];
+ /**
+ * @description Contact of the campaign
+ * @example {
+ * "primary": "john.doe",
+ * "backup": "john.doe@example.com"
+ * }
+ */
+ contact: components["schemas"]["ContactDto"];
+ /**
+ * @description Social links of the campaign (optional)
+ * @example [
+ * {
+ * "platform": "twitter",
+ * "url": "https://twitter.com/john-doe"
+ * }
+ * ]
+ */
+ socialLinks?: string[];
+ };
+ CreateDraftDto: {
+ /**
+ * @description Working title for the campaign
+ * @example Stellar Analytics Dashboard
+ */
+ title: string;
+ };
+ UpdateCampaignDto: {
+ /**
+ * @description Title of the campaign
+ * @example Web3 Campaign
+ */
+ title?: string;
+ /**
+ * @description Logo of the campaign
+ * @example https://example.com/logo.png
+ */
+ logo?: string;
+ /**
+ * @description Vision of the campaign
+ * @example Web3 Campaign
+ */
+ vision?: string;
+ /**
+ * @description Banner image URL of the campaign
+ * @example https://example.com/banner.png
+ */
+ banner?: string;
+ /**
+ * @description Category of the campaign
+ * @example web3
+ */
+ category?: string;
+ /**
+ * @description Details of the campaign
+ * @example Web3 Campaign
+ */
+ details?: string;
+ /**
+ * @description Funding amount of the campaign
+ * @example 1000
+ */
+ fundingAmount?: number;
+ /**
+ * @description Github URL of the campaign
+ * @example https://github.com/example/project
+ */
+ githubUrl?: string;
+ /**
+ * @description Gitlab URL of the campaign
+ * @example https://gitlab.com/example/project
+ */
+ gitlabUrl?: string;
+ /**
+ * @description Bitbucket URL of the campaign
+ * @example https://bitbucket.com/example/project
+ */
+ bitbucketUrl?: string;
+ /**
+ * @description Project website of the campaign
+ * @example https://example.com/project
+ */
+ projectWebsite?: string;
+ /**
+ * @description Demo video of the campaign
+ * @example https://example.com/demo.mp4
+ */
+ demoVideo?: string;
+ /**
+ * @description Milestones of the campaign
+ * @example [
+ * {
+ * "name": "Milestone 1",
+ * "description": "Milestone 1 description",
+ * "startDate": "2025-01-01",
+ * "endDate": "2025-01-02",
+ * "amount": 1000
+ * }
+ * ]
+ */
+ milestones?: string[];
+ /**
+ * @description Team of the campaign (optional; solo builders may omit)
+ * @example [
+ * {
+ * "name": "John Doe",
+ * "role": "Developer",
+ * "email": "john.doe@example.com",
+ * "linkedin": "https://linkedin.com/in/john-doe",
+ * "twitter": "https://twitter.com/john-doe"
+ * }
+ * ]
+ */
+ team?: string[];
+ /**
+ * @description Contact of the campaign
+ * @example {
+ * "primary": "john.doe",
+ * "backup": "john.doe@example.com"
+ * }
+ */
+ contact?: components["schemas"]["ContactDto"];
+ /**
+ * @description Social links of the campaign (optional)
+ * @example [
+ * {
+ * "platform": "twitter",
+ * "url": "https://twitter.com/john-doe"
+ * }
+ * ]
+ */
+ socialLinks?: string[];
+ };
+ InviteTeamMemberDto: {
+ /**
+ * @description The email address of the team member to invite
+ * @example user@example.com
+ */
+ email: string;
+ /**
+ * @description The role of the team member in the campaign
+ * @example Developer
+ */
+ role: string;
+ };
+ ValidateMilestoneSubmissionDto: {
+ /**
+ * @description Array of proof of work file URLs (documents, images, reports, etc.) - must be valid URLs with http, https, or ipfs protocol
+ * @example [
+ * "https://example.com/report.pdf",
+ * "https://example.com/screenshot.png"
+ * ]
+ */
+ proofOfWorkFiles: string[];
+ /**
+ * @description Array of proof of work links (GitHub PRs, demos, deployed sites, etc.) - must be valid URLs
+ * @example [
+ * "https://github.com/user/repo/pull/123",
+ * "https://demo.example.com"
+ * ]
+ */
+ proofOfWorkLinks: string[];
+ /**
+ * @description Additional notes about the submission - optional but must be at least 10 characters if provided
+ * @example Successfully deployed the MVP with all core features implemented and tested.
+ */
+ submissionNotes?: string;
+ };
+ UpdateMilestoneDto: {
+ /** @description Array of proof of work file URLs (documents, images, etc.) */
+ proofOfWorkFiles: string[];
+ /** @description Array of proof of work links (GitHub PRs, demos, etc.) */
+ proofOfWorkLinks: string[];
+ /** @description Additional notes about the submission */
+ submissionNotes?: string;
+ };
+ PublishCrowdfundingEscrowDto: {
+ /**
+ * @description Stellar G-address that signs create_event. Strictly the builder's Boundless abstracted wallet (D9). Optional: defaults to the authenticated builder's managed wallet, the only valid value.
+ * @example GBXNQFDSBDPOIA3Q4LYIWBOJFFPCCV6IEDHBSJZEAYFKIKZVUO4QEDVS
+ */
+ builderAddress?: string;
+ /**
+ * @description Whitelisted SAC token contract (USDC by default).
+ * @example CBIELTK6YBZJU5UP2WWQEUCYKLPU6AUNZ2BQ4WWFEIE3USCIHMXQDAMA
+ */
+ tokenAddress: string;
+ /**
+ * @description Funding goal in token-native units (e.g. 5000 = 5000 USDC). Informational on chain; backers determine the actual raised total.
+ * @example 5000
+ */
+ fundingGoal: string;
+ /**
+ * @description Number of milestones for ReleaseKind::Multi(n).
+ * @example 3
+ */
+ nMilestones: number;
+ /**
+ * @description Funding deadline as Unix seconds.
+ * @example 1735689600
+ */
+ fundingDeadline: number;
+ /** @description Override content URI. */
+ contentUri?: string;
+ };
+ CancelCrowdfundingEscrowDto: {
+ /** @description Builder G-address. Optional: defaults to the authenticated builder's managed wallet (the only valid value). */
+ builderAddress?: string;
+ };
+ ContributeCrowdfundingDto: {
+ /**
+ * @description G-address that signs add_funds.
+ * @example GBXNQFDSBDPOIA3Q4LYIWBOJFFPCCV6IEDHBSJZEAYFKIKZVUO4QEDVS
+ */
+ contributorAddress: string;
+ /**
+ * @description Wallet origin: BOUNDLESS uses the managed signer; EXTERNAL returns an unsigned XDR for the connected wallet (D9).
+ * @example BOUNDLESS
+ * @enum {string}
+ */
+ walletOrigin: "BOUNDLESS" | "EXTERNAL";
+ /**
+ * @description Amount in token-native units (10 USDC minimum).
+ * @example 25
+ */
+ amount: string;
+ /** @description Optional message attached. */
+ message?: string;
+ /**
+ * @description Hide displayName / usernameSnapshot if true.
+ * @default false
+ */
+ anonymous: boolean;
+ };
+ CrowdfundingSubmitSignedXdrDto: {
+ /** @description Signed transaction XDR returned by the wallet. */
+ signedXdr: string;
+ };
+ CastCrowdfundingVoteDto: {
+ /**
+ * @description UP supports the campaign, DOWN opposes it.
+ * @example UP
+ * @enum {string}
+ */
+ choice: "UP" | "DOWN";
+ };
+ ApproveCrowdfundingCampaignDto: {
+ /**
+ * @description The user delegated to validate this campaign's milestones. D6=A: exactly one reviewer per campaign, assigned at approval time.
+ * @example user_1234567890
+ */
+ delegatedReviewerId: string;
+ /**
+ * @description Minimum total community votes required to resolve the vote (quorum). Defaults to 1 for now (target is 10 at launch).
+ * @example 10
+ */
+ voteGoal?: number;
+ /**
+ * @description Bypass community voting and approve straight to launch-ready (REVIEW_APPROVED). Default false: the campaign enters community voting.
+ * @example false
+ */
+ bypassVoting?: boolean;
+ };
+ RejectCrowdfundingCampaignDto: {
+ /** @description Reason for rejection; surfaced to the builder. */
+ reason?: string;
+ };
+ ExtendCrowdfundingFundingDto: {
+ /**
+ * @description New funding deadline (ISO 8601). Must be in the future. Enforced off-chain by the contribute gate.
+ * @example 2026-08-01T00:00:00.000Z
+ */
+ fundingEndDate: string;
+ };
+ PauseCrowdfundingCampaignDto: {
+ /** @description Reason for the pause. */
+ reason?: string;
+ };
+ ApproveCrowdfundingMilestoneDto: Record;
+ RejectCrowdfundingMilestoneDto: {
+ /** @description Feedback shown to the builder. */
+ rejectionFeedback: string;
+ /** @description Deadline by which the builder must resubmit (ISO 8601). */
+ resubmissionDeadline?: string;
+ };
+ FileDisputeDto: {
+ /** @description Specific milestone being disputed (optional). */
+ milestoneId?: string;
+ /** @enum {string} */
+ reason: "MILESTONE_NOT_DELIVERED" | "POOR_QUALITY_WORK" | "DEADLINE_MISSED" | "MISUSE_OF_FUNDS" | "COMMUNICATION_ISSUES" | "SCOPE_CHANGE" | "OTHER";
+ description: string;
+ /** @description Links to supporting evidence (max 10). */
+ evidenceLinks?: string[];
+ /** @description Uploaded evidence file references (max 10). */
+ evidenceFiles?: string[];
+ };
+ DisputeResponseDto: {
+ id: string;
+ campaignId: string;
+ milestoneId: string | null;
+ reason: string;
+ status: string;
+ description: string;
+ /** @description ISO timestamp the dispute was filed */
+ createdAt: string;
+ };
+ WalletSummaryAssetDto: {
+ /** @example USDC */
+ assetCode: string;
+ /**
+ * @description Raw asset amount.
+ * @example 125.0000000
+ */
+ balance: string;
+ /** @example 125 */
+ usdValue: Record | null;
+ };
+ WalletSummaryDto: {
+ /** @description Wallet G-address. */
+ address: Record | null;
+ isActivated: boolean;
+ /**
+ * @description Total USD across all assets.
+ * @example 125
+ */
+ totalUsd: number;
+ assets: components["schemas"]["WalletSummaryAssetDto"][];
+ };
+ ReclaimDormantDto: {
+ /**
+ * @description Minimum days a wallet must have been idle to be eligible. Default 90.
+ * @example 90
+ */
+ minIdleDays?: number;
+ /**
+ * @description Maximum number of wallets to reclaim in this call. Hard-capped at 100.
+ * @example 25
+ */
+ maxToProcess?: number;
+ /**
+ * @description When true (default), report what would be reclaimed without submitting transactions. Set false to actually merge accounts.
+ * @example true
+ */
+ dryRun?: boolean;
+ };
+ AddTrustlineDto: {
+ /**
+ * @description Asset code to add a trustline for (e.g. USDC, EURC)
+ * @example USDC
+ */
+ assetCode: string;
+ };
+ UserSendDto: {
+ /**
+ * @description Stellar destination public key (G...)
+ * @example GABCD...
+ */
+ destinationPublicKey: string;
+ /**
+ * @description Amount to send (positive number)
+ * @example 100.5
+ */
+ amount: number;
+ /**
+ * @description Asset code (XLM, USDC, EURC, etc.)
+ * @example USDC
+ */
+ currency: string;
+ /** @description Memo (required by some exchanges). Max 28 bytes UTF-8. */
+ memo?: string;
+ /** @description If true, request fails when memo is missing (e.g. exchange requires it) */
+ memoRequired?: boolean;
+ /** @description Idempotency key to prevent duplicate sends */
+ idempotencyKey?: string;
+ };
+ CreateCommentDto: {
+ /**
+ * @description Comment content
+ * @example This is a great project!
+ */
+ content: string;
+ /**
+ * @description Entity type for the comment
+ * @example PROJECT
+ * @enum {string}
+ */
+ entityType: "PROJECT" | "BOUNTY" | "CROWDFUNDING_CAMPAIGN" | "GRANT" | "GRANT_APPLICATION" | "HACKATHON" | "HACKATHON_SUBMISSION" | "BLOG_POST";
+ /**
+ * @description Entity ID for the comment
+ * @example cm12345abcde
+ */
+ entityId: string;
+ /**
+ * @description Parent comment ID for threaded replies
+ * @example cm12345abcde
+ */
+ parentId?: string;
+ };
+ UpdateCommentDto: Record;
+ AddReactionDto: {
+ /**
+ * @description Type of reaction
+ * @example LIKE
+ * @enum {string}
+ */
+ reactionType: "LIKE" | "DISLIKE" | "LOVE" | "LAUGH" | "THUMBS_UP" | "THUMBS_DOWN" | "FIRE" | "ROCKET";
+ };
+ ReportCommentDto: {
+ /**
+ * @description Reason for reporting the comment
+ * @example SPAM
+ * @enum {string}
+ */
+ reason: "SPAM" | "HARASSMENT" | "HATE_SPEECH" | "INAPPROPRIATE_CONTENT" | "COPYRIGHT_VIOLATION" | "OTHER";
+ /**
+ * @description Additional details about the report
+ * @example This comment contains unsolicited advertising
+ */
+ description?: string;
+ };
+ ResolveReportDto: {
+ /**
+ * @description Resolution status for the report
+ * @example RESOLVED
+ * @enum {string}
+ */
+ status: "PENDING" | "REVIEWED" | "RESOLVED" | "DISMISSED";
+ /**
+ * @description Moderator notes about the resolution
+ * @example Comment was reviewed and found to violate community guidelines
+ */
+ resolution?: string;
+ };
+ HackathonsListResponseDto: Record;
+ FeeEstimateResponseDto: {
+ /**
+ * @description Total prize pool (USDC)
+ * @example 5000
+ */
+ totalPool: number;
+ /**
+ * @description Fee rate as decimal
+ * @example 0.023
+ */
+ feeRate: number;
+ /**
+ * @description Fee rate as percentage
+ * @example 2.3
+ */
+ feeRatePercent: number;
+ /**
+ * @description Fee amount (USDC)
+ * @example 115
+ */
+ feeAmount: number;
+ /**
+ * @description Total to pay (prize pool + fee)
+ * @example 5115
+ */
+ totalFunds: number;
+ /**
+ * @description Display label for the fee
+ * @example Platform Fee (2.3%)
+ */
+ feeLabel: string;
+ };
+ ParticipantDto: {
+ /** @description Username of the participant */
+ username: string;
+ /** @description Avatar URL of the participant */
+ avatar?: Record;
+ };
+ HackathonWinnerDto: {
+ /** @description Rank of the winner (1, 2, 3, etc.) */
+ rank: number;
+ /** @description Name of the project */
+ projectName: string;
+ /** @description Name of the team */
+ teamName?: Record;
+ /** @description Logo of the project */
+ logo?: Record;
+ /** @description List of participants */
+ participants: components["schemas"]["ParticipantDto"][];
+ /** @description Prize information */
+ prize: string;
+ /** @description Submission ID */
+ submissionId: string;
+ };
+ HackathonWinnersResponseDto: {
+ /** @description Hackathon ID */
+ hackathonId: string;
+ /** @description List of winners */
+ winners: components["schemas"]["HackathonWinnerDto"][];
+ };
+ PublicAggregatedJudgingResultDto: {
+ submissionId: string;
+ projectName: string;
+ teamId?: Record;
+ participantId: string;
+ status: string;
+ /** Format: date-time */
+ submittedAt: string;
+ averageScore: number;
+ totalScore: number;
+ judgeCount: number;
+ expectedJudgeCount: number;
+ judgingProgress: string;
+ rank?: Record;
+ isComplete: boolean;
+ isPending: boolean;
+ hasDisagreement: boolean;
+ };
+ JudgingResultsMetadataDto: {
+ sortedBy: string;
+ includesVariance: boolean;
+ includesIndividualScores: boolean;
+ includesProgressTracking: boolean;
+ onlyWinners?: boolean;
+ };
+ PublicJudgingResultsResponseDto: {
+ hackathonId: string;
+ totalSubmissions: number;
+ submissionsScoredCount: number;
+ submissionsPendingCount: number;
+ averageScoreAcrossAll: number;
+ resultsPublished: boolean;
+ judgesAssigned: number;
+ results: components["schemas"]["PublicAggregatedJudgingResultDto"][];
+ /** Format: date-time */
+ generatedAt: string;
+ /** @description Manual winner assignments override (submissionId -> rank) */
+ winnerOverrides?: {
+ [key: string]: number;
+ };
+ metadata: components["schemas"]["JudgingResultsMetadataDto"];
+ };
+ CreatorRelationDto: {
+ id: string;
+ name: string;
+ username?: string;
+ image?: string;
+ };
+ OrganizationRelationDto: {
+ id: string;
+ name: string;
+ logo?: string;
+ slug?: string;
+ };
+ HackathonResponseDto: {
+ createdBy: components["schemas"]["CreatorRelationDto"];
+ organization?: components["schemas"]["OrganizationRelationDto"];
+ };
+ VerifyHackathonAccessDto: {
+ /** @description The access password for a private hackathon */
+ password: string;
+ };
+ HackathonAccessTokenResponseDto: {
+ accessToken: string;
+ };
+ JoinHackathonDto: {
+ /**
+ * @description Answers to REGISTRATION-scope custom questions. Keyed by question id; each value is a string (or string[] for multi-select).
+ * @example {
+ * "cq_role": "Backend developer"
+ * }
+ */
+ customAnswers?: Record;
+ };
+ ParticipationResponseDto: Record;
+ ParticipantResponseDto: Record;
+ HackathonParticipantsResponseDto: {
+ participants: components["schemas"]["ParticipantResponseDto"][];
+ };
+ TeamMemberDto: {
+ /**
+ * @description User ID of the team member
+ * @example user_1234567890
+ */
+ userId: string;
+ /**
+ * @description Name of the team member
+ * @example John Doe
+ */
+ name: string;
+ /**
+ * @description Username of the team member
+ * @example johndoe
+ */
+ username?: string;
+ /**
+ * @description Role of the team member in the project
+ * @example Full Stack Developer
+ */
+ role: string;
+ /**
+ * @description Avatar URL of the team member
+ * @example https://example.com/avatar.png
+ */
+ avatar?: string;
+ };
+ SubmissionLinkDto: {
+ /**
+ * @description Type of link. Each fixed type (github, demo, video, document, presentation) can be used at most once per submission. Use "other" for additional links, up to a maximum of 5.
+ * @example github
+ * @enum {string}
+ */
+ type: "github" | "demo" | "video" | "document" | "presentation" | "other";
+ /**
+ * @description URL of the link
+ * @example https://github.com/username/project
+ */
+ url: string;
+ /**
+ * @description Optional description of the link
+ * @example Main repository with source code
+ */
+ description?: string;
+ };
+ SocialLinksDto: {
+ /**
+ * @description GitHub profile or repository
+ * @example https://github.com/username
+ */
+ github?: string;
+ /**
+ * @description Telegram username or group
+ * @example https://t.me/username
+ */
+ telegram?: string;
+ /**
+ * @description Twitter/X handle
+ * @example https://twitter.com/username
+ */
+ twitter?: string;
+ /**
+ * @description Email address
+ * @example contact@example.com
+ */
+ email?: string;
+ };
+ SubmissionResponseDto: {
+ id: string;
+ hackathonId: string;
+ projectId: string;
+ participantId: string;
+ organizationId: string;
+ /** @enum {string} */
+ participationType: "INDIVIDUAL" | "TEAM";
+ teamId?: string;
+ teamName?: string;
+ teamMembers?: components["schemas"]["TeamMemberDto"][];
+ projectName: string;
+ category: string;
+ description: string;
+ logo?: string;
+ banner?: string;
+ videoUrl?: string;
+ introduction?: string;
+ links: components["schemas"]["SubmissionLinkDto"][];
+ socialLinks?: components["schemas"]["SocialLinksDto"];
+ status: string;
+ rank?: number;
+ /** @description Track entries this submission has opted into. Each entry carries the track slug/name and a wonRank stamped when the submission won that track (null until results are published). */
+ trackEntries?: unknown[][];
+ tagline?: string;
+ builtWith?: string[];
+ screenshots?: string[];
+ license?: string;
+ /** Format: date-time */
+ codeAttestedAt?: string;
+ /** Format: date-time */
+ registeredAt: string;
+ /** Format: date-time */
+ submittedAt?: string;
+ /** Format: date-time */
+ createdAt: string;
+ /** Format: date-time */
+ updatedAt: string;
+ };
+ CreateSubmissionDto: {
+ /**
+ * @description Organization ID
+ * @example org_1234567890
+ */
+ organizationId: string;
+ /**
+ * @description Project ID (must be owned by the user or organization). If not provided, a base project will be created automatically.
+ * @example proj_1234567890
+ */
+ projectId?: string;
+ /**
+ * @description Type of participation
+ * @example INDIVIDUAL
+ * @enum {string}
+ */
+ participationType: "INDIVIDUAL" | "TEAM";
+ /**
+ * @deprecated
+ * @description [Ignored by backend.] Team ID is snapshotted from the user's authoritative team record at submission time. Field accepted for backwards compatibility only.
+ * @example team_1234567890
+ */
+ teamId?: string;
+ /**
+ * @deprecated
+ * @description [Ignored by backend.] Team name is snapshotted from the user's authoritative team record at submission time.
+ * @example Awesome Hackers
+ */
+ teamName?: string;
+ /**
+ * @deprecated
+ * @description [Ignored by backend.] Team members are snapshotted from the user's authoritative team record at submission time. Sending this field has no effect.
+ */
+ teamMembers?: components["schemas"]["TeamMemberDto"][];
+ /**
+ * @description Project name for the submission
+ * @example DeFi Lending Platform
+ */
+ projectName: string;
+ /**
+ * @description Category of the project
+ * @example DeFi
+ */
+ category: string;
+ /**
+ * @description Detailed description of the project
+ * @example A decentralized lending platform built on Stellar...
+ */
+ description: string;
+ /**
+ * @description Project logo URL
+ * @example https://example.com/logo.png
+ */
+ logo?: string;
+ /**
+ * @description Project banner image URL (wide hero image)
+ * @example https://example.com/banner.png
+ */
+ banner?: string;
+ /**
+ * @description Video demonstration URL
+ * @example https://youtube.com/watch?v=xyz
+ */
+ videoUrl?: string;
+ /**
+ * @description Brief introduction to the project
+ * @example We built a platform that allows users to...
+ */
+ introduction?: string;
+ /** @description Links to project resources. Each fixed link type (github, demo, video, document, presentation) can appear at most once. Use "other" for additional links, up to a maximum of 5. */
+ links: components["schemas"]["SubmissionLinkDto"][];
+ /** @description Social links for the project */
+ socialLinks?: components["schemas"]["SocialLinksDto"];
+ /**
+ * @description Optional list of track ids to enter. Only allowed when the hackathon has prizeStructure != OVERALL_ONLY. Capped at Hackathon.tracksMaxPerSubmission.
+ * @example [
+ * "trk_abc",
+ * "trk_def"
+ * ]
+ */
+ trackIds?: string[];
+ /**
+ * @description Per-track answers. Keyed by trackId; each value is { promptAnswer?, customAnswers?, artifacts? }. Phase B.
+ * @example {
+ * "trk_abc": {
+ * "promptAnswer": "We focused on a one-tap escrow flow.",
+ * "customAnswers": {
+ * "q_audience": "Freelancers"
+ * },
+ * "artifacts": {
+ * "figma": "https://figma.com/file/..."
+ * }
+ * }
+ * }
+ */
+ trackAnswers?: Record;
+ /**
+ * @description Answers to hackathon-level SUBMISSION-scope custom questions. Keyed by question id; each value is a string (or string[] for multi-select). Validated against the question set.
+ * @example {
+ * "cq_audience": "Freelancers",
+ * "cq_stack": [
+ * "Web",
+ * "AI"
+ * ]
+ * }
+ */
+ customAnswers?: Record;
+ /**
+ * @description Short elevator pitch shown on cards / sidebars / judge queue. Max ~160 chars.
+ * @example Milestone-based escrow for one-time freelance gigs on Stellar.
+ */
+ tagline?: string;
+ /**
+ * @description Free-form tech-stack tags. Max 20 entries, 40 chars each.
+ * @example [
+ * "Soroban",
+ * "Stellar SDK",
+ * "Next.js",
+ * "Rust"
+ * ]
+ */
+ builtWith?: string[];
+ /** @description Up to 5 screenshot URLs for the project gallery. */
+ screenshots?: string[];
+ /**
+ * @description License the submission ships under.
+ * @enum {string}
+ */
+ license?: "MIT" | "Apache-2.0" | "GPL-3.0" | "BSD-3" | "PROPRIETARY" | "OTHER";
+ /** @description Submitter attests the code is original or properly attributed. Required to mark a submission SUBMITTED (vs DRAFT). */
+ codeAttested?: boolean;
+ };
+ UpdateSubmissionDto: {
+ /**
+ * @description Project name for the submission
+ * @example DeFi Lending Platform
+ */
+ projectName?: string;
+ /**
+ * @description Category of the project
+ * @example DeFi
+ */
+ category?: string;
+ /**
+ * @description Detailed description of the project
+ * @example A decentralized lending platform built on Stellar...
+ */
+ description?: string;
+ /**
+ * @description Project logo URL
+ * @example https://example.com/logo.png
+ */
+ logo?: string;
+ /**
+ * @description Project banner image URL (wide hero image)
+ * @example https://example.com/banner.png
+ */
+ banner?: string;
+ /**
+ * @description Video demonstration URL
+ * @example https://youtube.com/watch?v=xyz
+ */
+ videoUrl?: string;
+ /**
+ * @description Brief introduction to the project
+ * @example We built a platform that allows users to...
+ */
+ introduction?: string;
+ /** @description Links to project resources. Each fixed link type (github, demo, video, document, presentation) can appear at most once. Use "other" for additional links, up to a maximum of 5. */
+ links?: components["schemas"]["SubmissionLinkDto"][];
+ /** @description Social links for the project */
+ socialLinks?: components["schemas"]["SocialLinksDto"];
+ /** @description Team members (for team submissions) */
+ teamMembers?: components["schemas"]["TeamMemberDto"][];
+ /** @description Replace the submission's track picks. Omit to leave existing entries untouched; pass an empty array to clear all picks. */
+ trackIds?: string[];
+ /** @description Per-track answers, same shape as on create. Phase B. */
+ trackAnswers?: Record;
+ /**
+ * @description Answers to hackathon-level SUBMISSION-scope custom questions. Keyed by question id; each value is a string (or string[] for multi-select). Replaces the stored answers when provided.
+ * @example {
+ * "cq_audience": "Freelancers",
+ * "cq_stack": [
+ * "Web",
+ * "AI"
+ * ]
+ * }
+ */
+ customAnswers?: Record;
+ tagline?: string;
+ builtWith?: string[];
+ screenshots?: string[];
+ /** @enum {string} */
+ license?: "MIT" | "Apache-2.0" | "GPL-3.0" | "BSD-3" | "PROPRIETARY" | "OTHER";
+ codeAttested?: boolean;
+ };
+ TeamMemberResponseDto: {
+ /** @description User ID */
+ userId: string;
+ /** @description Username */
+ username: string;
+ /** @description Display name */
+ name: string;
+ /** @description Role in team (e.g. leader, member) */
+ role: string;
+ /** @description Profile image URL */
+ image?: string;
+ /** @description When the member joined the team (ISO string) */
+ joinedAt: string;
+ };
+ LookingForRoleDto: {
+ /**
+ * @description Role title (e.g. "Frontend Developer", "UI Designer")
+ * @example Frontend Developer
+ */
+ role: string;
+ /**
+ * @description Optional free-form skills associated with this role
+ * @example [
+ * "React",
+ * "TypeScript"
+ * ]
+ */
+ skills?: unknown[][];
+ };
+ TeamRoleResponseDto: {
+ /** @description Skill/role name */
+ skill: string;
+ /** @description Whether this role has been filled */
+ hired: boolean;
+ };
+ TeamResponseDto: {
+ /**
+ * @description Team ID
+ * @example team_1234567890
+ */
+ id: string;
+ /**
+ * @description Team name
+ * @example Stellar Innovators
+ */
+ teamName: string;
+ /** @description Team description */
+ description: string;
+ /** @description Hackathon ID */
+ hackathonId: string;
+ /** @description Team leader information */
+ leader: Record;
+ /** @description Team members */
+ members: components["schemas"]["TeamMemberResponseDto"][];
+ /**
+ * @description Current number of members
+ * @example 3
+ */
+ memberCount: number;
+ /**
+ * @description Maximum team size allowed
+ * @example 5
+ */
+ maxSize: number;
+ /** @description Roles the team is looking for, with optional free-form skills */
+ lookingFor?: components["schemas"]["LookingForRoleDto"][];
+ /** @description Hired status per role (when using lookingFor) */
+ rolesStatus?: components["schemas"]["TeamRoleResponseDto"][];
+ /** @description Contact information (e.g. telegram, discord, email) */
+ contactInfo?: Record;
+ /**
+ * @description Whether team is accepting new members
+ * @example true
+ */
+ isOpen: boolean;
+ /** @description Team creation date */
+ createdAt: string;
+ /** @description Last update date */
+ updatedAt: string;
+ };
+ TeamListResponseDto: {
+ /** @description List of teams */
+ teams: components["schemas"]["TeamResponseDto"][];
+ /** @description Pagination metadata */
+ pagination: Record;
+ };
+ CreateTeamDto: {
+ /**
+ * @description Team name
+ * @example Stellar Innovators
+ */
+ teamName: string;
+ /**
+ * @description Team description
+ * @example We are building the next generation DeFi platform
+ */
+ description: string;
+ /** @description Roles the team is looking for. Each entry is a role title with optional free-form skills. Team will be CLOSED unless at least one role is specified. The number of roles is bounded by the hackathon's teamMin/teamMax (excluding the leader). */
+ lookingFor?: components["schemas"]["LookingForRoleDto"][];
+ /**
+ * @description Contact information for interested members
+ * @example {
+ * "telegram": "@teamlead",
+ * "discord": "lead#1234"
+ * }
+ */
+ contactInfo?: Record;
+ };
+ UpdateTeamDto: {
+ /**
+ * @description Updated team name
+ * @example Stellar Innovators Pro
+ */
+ teamName?: string;
+ /** @description Updated team description */
+ description?: string;
+ /** @description Roles the team is looking for. Set to empty array to close the team. Each entry is a role title with optional free-form skills. */
+ lookingFor?: components["schemas"]["LookingForRoleDto"][];
+ /** @description Updated contact information */
+ contactInfo?: Record;
+ /** @description Explicitly set team open/closed status. Can only be true if lookingFor is not empty. */
+ isOpen?: boolean;
+ };
+ InviteToTeamDto: {
+ /**
+ * @description User ID or username of the person to invite
+ * @example user_1234567890
+ */
+ inviteeIdentifier: string;
+ /**
+ * @description Optional message to include with the invitation
+ * @example We would love to have you on our team!
+ */
+ message?: string;
+ };
+ TeamInvitationResponseDto: {
+ /**
+ * @description Invitation ID
+ * @example inv_1234567890
+ */
+ id: string;
+ /**
+ * @description Team ID
+ * @example team_1234567890
+ */
+ teamId: string;
+ /** @description Hackathon information */
+ hackathon: Record;
+ /** @description Invitee information */
+ invitee: Record;
+ /** @description Inviter information */
+ inviter: Record;
+ /**
+ * @description Invitation status
+ * @example pending
+ * @enum {string}
+ */
+ status: "pending" | "accepted" | "rejected" | "expired";
+ /**
+ * @description Optional message from inviter
+ * @example We would love to have you on our team!
+ */
+ message?: Record;
+ /**
+ * @description Role in the team
+ * @example member
+ */
+ role: Record;
+ /**
+ * Format: date-time
+ * @description Invitation expiration date
+ * @example 2026-01-30T12:00:00.000Z
+ */
+ expiresAt: string;
+ /**
+ * Format: date-time
+ * @description Invitation creation date
+ * @example 2026-01-23T12:00:00.000Z
+ */
+ createdAt: string;
+ /**
+ * @description Date when invitation was responded to
+ * @example 2026-01-24T12:00:00.000Z
+ */
+ respondedAt?: Record;
+ };
+ TeamInvitationListResponseDto: {
+ /** @description List of invitations */
+ invitations: components["schemas"]["TeamInvitationResponseDto"][];
+ /**
+ * @description Total count
+ * @example 5
+ */
+ total: number;
+ };
+ InvitationActionResponseDto: {
+ /**
+ * @description Success message
+ * @example Successfully accepted team invitation
+ */
+ message: string;
+ /**
+ * @description Team ID that was joined (only for accept)
+ * @example team_1234567890
+ */
+ teamId: string;
+ /** @description Updated invitation */
+ invitation: components["schemas"]["TeamInvitationResponseDto"];
+ };
+ ToggleRoleHiredDto: {
+ /**
+ * @description Skill/role name to toggle hired status
+ * @example Rust Developer
+ */
+ skill: string;
+ };
+ TransferLeadershipDto: {
+ /**
+ * @description User ID of the new team leader (must be an existing member)
+ * @example user_1234567890
+ */
+ newLeaderId: string;
+ /**
+ * @description Optional reason for the leadership transfer
+ * @example Stepping down to focus on development tasks
+ */
+ reason?: string;
+ };
+ LeadershipTransferResponseDto: {
+ /**
+ * @description Success message
+ * @example Leadership successfully transferred
+ */
+ message: string;
+ /** @description Updated team with new leader */
+ team: components["schemas"]["TeamResponseDto"];
+ /**
+ * @description Previous leader ID
+ * @example user_1234567890
+ */
+ previousLeaderId: string;
+ /**
+ * @description New leader ID
+ * @example user_0987654321
+ */
+ newLeaderId: string;
+ /**
+ * Format: date-time
+ * @description Timestamp of the transfer
+ * @example 2026-02-16T10:30:00.000Z
+ */
+ transferredAt: string;
+ };
+ InfoFormData: {
+ /** @description Hackathon title */
+ name: string;
+ /**
+ * Format: uri
+ * @description Banner image URL
+ */
+ banner: string;
+ /** @description Hackathon description */
+ description: string;
+ /** @description One or more hackathon categories */
+ categories: ("DeFi" | "Payments" | "Stablecoins" | "Lending & Borrowing" | "Trading & DEXs" | "Derivatives" | "Prediction Markets" | "NFTs" | "Creator Economy" | "Social" | "Social Tokens" | "DAOs" | "Governance" | "Web3 Gaming" | "Metaverse" | "Layer 1" | "Layer 2" | "Cross-chain" | "Interoperability" | "Infrastructure" | "Developer Tooling" | "Wallets" | "Account Abstraction" | "Oracles" | "Data & Indexing" | "Analytics" | "AI" | "AI Agents" | "DePIN" | "DeSci" | "Privacy" | "Zero-Knowledge" | "Security" | "Identity" | "Real World Assets" | "Tokenization" | "Supply Chain" | "Sustainability" | "Climate" | "Education" | "Healthcare" | "Consumer Apps" | "Mobile" | "Other")[];
+ /**
+ * @description Venue type
+ * @enum {string}
+ */
+ venueType: "virtual" | "physical";
+ /** @description Short tagline */
+ tagline: string;
+ country?: string;
+ state?: string;
+ city?: string;
+ venueName?: string;
+ venueAddress?: string;
+ /** @description Read-only URL slug (server-assigned) */
+ slug?: string;
+ };
+ PhaseDto: {
+ /** @description Phase name */
+ name: string;
+ /** Format: date-time */
+ startDate: string;
+ /** Format: date-time */
+ endDate: string;
+ description?: string;
+ };
+ TimelineFormData: {
+ /** Format: date-time */
+ startDate: string;
+ /** Format: date-time */
+ submissionDeadline: string;
+ /** @description IANA timezone */
+ timezone: string;
+ /** Format: date-time */
+ registrationDeadline?: string;
+ /** Format: date-time */
+ judgingDeadline?: string;
+ phases?: components["schemas"]["PhaseDto"][];
+ /**
+ * Format: date-time
+ * @description Read-only: original submission deadline before any extension
+ */
+ submissionDeadlineOriginal?: string;
+ /**
+ * Format: date-time
+ * @description Read-only: timestamp the submission deadline was last extended
+ */
+ submissionDeadlineExtendedAt?: string;
+ };
+ ParticipantFormData: {
+ /** @enum {string} */
+ participantType: "individual" | "team" | "team_or_individual";
+ teamMin?: number;
+ teamMax?: number;
+ /** @description Participant cap; omit for unlimited */
+ maxParticipants?: number;
+ require_github?: boolean;
+ require_demo_video?: boolean;
+ require_other_links?: boolean;
+ detailsTab?: boolean;
+ participantsTab?: boolean;
+ resourcesTab?: boolean;
+ submissionTab?: boolean;
+ announcementsTab?: boolean;
+ discussionTab?: boolean;
+ winnersTab?: boolean;
+ sponsorsTab?: boolean;
+ joinATeamTab?: boolean;
+ rulesTab?: boolean;
+ /** @enum {string} */
+ submissionVisibility?: "PUBLIC" | "PARTICIPANTS_ONLY";
+ /** @enum {string} */
+ submissionStatusVisibility?: "ALL" | "ACCEPTED_SHORTLISTED" | "HIDDEN_UNTIL_RESULTS";
+ };
+ HackathonDraftTracksDto: {
+ /** @description Max number of tracks a single submission may enter (1-20). */
+ tracksMaxPerSubmission?: number;
+ };
+ PrizeTierDto: {
+ /** @description Client-generated tier id */
+ id: string;
+ /** @description Placement label, e.g. "1st Place" */
+ place: string;
+ /** @description Prize amount as a decimal string */
+ prizeAmount: string;
+ description?: string;
+ currency?: string;
+ passMark: number;
+ /** @enum {string} */
+ kind?: "OVERALL" | "TRACK";
+ trackId?: string;
+ };
+ PrizePlacementWriteDto: {
+ /** @description 1 = 1st place; unique within a prize */
+ position: number;
+ label?: string;
+ /** @description Prize amount as a decimal string */
+ amount: string;
+ currency?: string;
+ passMark?: number;
+ };
+ PrizeWriteDto: {
+ /** @description Prize name, e.g. "Grand Prize" or "Best UI/UX" */
+ name: string;
+ description?: string;
+ /** @description Linked HackathonTrack ids; empty = overall prize */
+ trackIds: string[];
+ placements: components["schemas"]["PrizePlacementWriteDto"][];
+ };
+ WinnerOverrideDto: {
+ /** @description Submission id the override targets */
+ submissionId: string;
+ rank?: number;
+ prizeAmount?: string;
+ currency?: string;
+ };
+ RewardsFormData: {
+ prizeTiers?: components["schemas"]["PrizeTierDto"][];
+ prizes?: components["schemas"]["PrizeWriteDto"][];
+ winnerOverrides?: components["schemas"]["WinnerOverrideDto"][];
+ /** @enum {string} */
+ prizeStructure?: "OVERALL_ONLY" | "OVERALL_AND_TRACKS" | "TRACKS_ONLY";
+ tracksMaxPerSubmission?: number;
+ allowWinnerStacking?: boolean;
+ };
+ ResourceItemDto: {
+ /** @description Client-generated resource id */
+ id: string;
+ link?: string;
+ description?: string;
+ /** @description Uploaded file metadata */
+ file?: {
+ url?: string;
+ name?: string;
+ };
+ };
+ ResourcesFormData: {
+ resources: components["schemas"]["ResourceItemDto"][];
+ };
+ CriterionDto: {
+ /** @description Client-generated criterion id */
+ id: string;
+ /** @description Criterion name */
+ name: string;
+ weight: number;
+ description?: string;
+ };
+ JudgingFormData: {
+ criteria: components["schemas"]["CriterionDto"][];
+ };
+ SponsorPartnerDto: {
+ /** @description Client-generated sponsor/partner id */
+ id: string;
+ name?: string;
+ logo?: string;
+ link?: string;
+ };
+ CollaborationFormData: {
+ /** @description Organizer contact email */
+ contactEmail: string;
+ telegram?: string;
+ discord?: string;
+ socialLinks?: string[];
+ sponsorsPartners?: components["schemas"]["SponsorPartnerDto"][];
+ };
+ HackathonDraftDataDto: {
+ information?: components["schemas"]["InfoFormData"];
+ timeline?: components["schemas"]["TimelineFormData"];
+ participation?: components["schemas"]["ParticipantFormData"];
+ tracks?: components["schemas"]["HackathonDraftTracksDto"];
+ rewards?: components["schemas"]["RewardsFormData"];
+ resources?: components["schemas"]["ResourcesFormData"];
+ judging?: components["schemas"]["JudgingFormData"];
+ collaboration?: components["schemas"]["CollaborationFormData"];
+ };
+ HackathonDraftAssumptionDto: {
+ /** @description Wizard section the assumption belongs to. */
+ section: string;
+ /** @description Field within the section. */
+ field: string;
+ /** @description One-line plain reason for the choice. */
+ note: string;
+ };
+ HackathonDraftAiGenerationDto: {
+ /** @description AI generationId that produced or last-updated this draft. */
+ generationId: string;
+ /** @description Non-obvious choices the AI made, for review. */
+ assumptions: components["schemas"]["HackathonDraftAssumptionDto"][];
+ /** @description The brief that produced this draft (shown beside the draft). */
+ brief?: string | null;
+ };
+ HackathonDraftPrizePlacementDto: {
+ id: string;
+ /** @description 1 = 1st place, unique within a prize */
+ position: number;
+ label?: string | null;
+ /** @description Decimal string in the prize currency */
+ amount: string;
+ currency: string;
+ /** @description Minimum score (0-100) to win this placement */
+ passMark: number;
+ };
+ HackathonDraftPrizeDto: {
+ id: string;
+ name: string;
+ description?: string | null;
+ displayOrder: number;
+ /** @description Linked track ids; empty = overall prize */
+ trackIds: string[];
+ placements: components["schemas"]["HackathonDraftPrizePlacementDto"][];
+ };
+ HackathonDraftResponseDto: {
+ id: string;
+ /** @enum {string} */
+ status: "DRAFT" | "DRAFT_AWAITING_FUNDING" | "PUBLISHED" | "ARCHIVED" | "CANCELLED";
+ /** @description First incomplete step (1-based) */
+ currentStep: number;
+ completedSteps: string[];
+ data: components["schemas"]["HackathonDraftDataDto"];
+ isValidForPublish: boolean;
+ /** @description Per-section validation messages, keyed by step */
+ validationErrors: {
+ [key: string]: string[];
+ };
+ /** Format: date-time */
+ createdAt: string;
+ /** Format: date-time */
+ updatedAt: string;
+ /** @description Present when the draft was generated with Organizer Assist; enables per-section AI regenerate in the wizard. */
+ aiGeneration?: components["schemas"]["HackathonDraftAiGenerationDto"];
+ /** @description Prize entity (named prizes + linked tracks + placements). Additive read path alongside data.rewards.prizeTiers; becomes authoritative as readers cut over. */
+ prizes: components["schemas"]["HackathonDraftPrizeDto"][];
+ };
+ UpdateHackathonDraftDto: {
+ information?: components["schemas"]["InfoFormData"];
+ timeline?: components["schemas"]["TimelineFormData"];
+ participation?: components["schemas"]["ParticipantFormData"];
+ rewards?: components["schemas"]["RewardsFormData"];
+ resources?: components["schemas"]["ResourcesFormData"];
+ judging?: components["schemas"]["JudgingFormData"];
+ collaboration?: components["schemas"]["CollaborationFormData"];
+ /** @description Hint that this is an autosave (no completion side effects). */
+ autoSave?: boolean;
+ };
+ ClarifyHackathonBriefDto: {
+ /** @description Free-text brief to triage for clarifying questions. */
+ brief: string;
+ };
+ ClarifyHackathonQuestionOptionDto: {
+ value: string;
+ label: string;
+ };
+ ClarifyHackathonQuestionDto: {
+ /** @description Axis key, e.g. "duration" | "structure" | "participation". */
+ id: string;
+ question: string;
+ options: components["schemas"]["ClarifyHackathonQuestionOptionDto"][];
+ };
+ ClarifyHackathonDraftResponseDto: {
+ /** @description True when the brief is specific enough to draft immediately. */
+ ready: boolean;
+ questions: components["schemas"]["ClarifyHackathonQuestionDto"][];
+ };
+ GenerateDraftFromBriefDto: {
+ /**
+ * @description Free-text brief describing the hackathon to generate.
+ * @example A two-week hackathon for AI agent tooling on Stellar, aimed at indie builders.
+ */
+ brief: string;
+ /**
+ * @description Total budget cap in USDC, as a decimal string.
+ * @example 10000
+ */
+ budgetCapUsdc: string;
+ /**
+ * @description Earliest the hackathon may start (YYYY-MM-DD).
+ * @example 2026-07-01
+ */
+ earliestStart: string;
+ /** @description Up to 3 example briefs/drafts to steer style. */
+ examples?: string[];
+ };
+ AiGenerationMetaDto: {
+ generationId: string;
+ model: string;
+ promptVersion: string;
+ /** @description Cost in USD as a decimal string (never a float). */
+ costUsd: string;
+ };
+ GenerateDraftFromBriefResponseDto: {
+ /** @description Id of the created draft. */
+ draftId: string;
+ draft: components["schemas"]["HackathonDraftResponseDto"];
+ generation: components["schemas"]["AiGenerationMetaDto"];
+ };
+ RegenerateDraftSectionDto: {
+ /** @enum {string} */
+ section: "criteria" | "prizes" | "tracks" | "timeline" | "description";
+ /** @description Optional steering instructions for the regeneration. */
+ instructions?: string;
+ };
+ RegenerateDraftSectionResponseDto: {
+ /** @enum {string} */
+ section: "criteria" | "prizes" | "tracks" | "timeline" | "description";
+ /** @description Regenerated values in the wizard section shape. */
+ data: {
+ [key: string]: unknown;
+ };
+ generation: components["schemas"]["AiGenerationMetaDto"];
+ };
+ UpdateVisibilitySettingsDto: {
+ /**
+ * @description Who can view hackathon submissions
+ * @example PUBLIC
+ * @enum {string}
+ */
+ submissionVisibility?: "PUBLIC" | "PARTICIPANTS_ONLY";
+ /**
+ * @description Which submission statuses are visible to others. ALL exposes SUBMITTED and SHORTLISTED. ACCEPTED_SHORTLISTED exposes only SHORTLISTED. HIDDEN_UNTIL_RESULTS hides every submission from non-owners and non-organizers until the hackathon results are published, then exposes only SHORTLISTED. DISQUALIFIED is never visible to anyone other than the owner or an organizer.
+ * @example ACCEPTED_SHORTLISTED
+ * @enum {string}
+ */
+ submissionStatusVisibility?: "ALL" | "ACCEPTED_SHORTLISTED" | "HIDDEN_UNTIL_RESULTS";
+ };
+ ReviewSubmissionDto: {
+ /**
+ * @description ID of the assigned judge performing the review
+ * @example user_1234567890
+ */
+ judgeId: string;
+ /**
+ * @description Review action
+ * @example SHORTLISTED
+ * @enum {string}
+ */
+ status: "SHORTLISTED" | "SUBMITTED";
+ /**
+ * @description Reviewer notes or feedback
+ * @example Great project with innovative approach
+ */
+ notes?: string;
+ /**
+ * @description Rank/position for the submission
+ * @example 1
+ */
+ rank?: number;
+ /**
+ * @description Whether this is an organizational override (bypasses COI and assignment checks)
+ * @default false
+ */
+ isOrganizerOverride: boolean;
+ };
+ OrganizationHackathonParticipantsResponseDto: Record;
+ DisqualifySubmissionDto: {
+ /**
+ * @description Reason for disqualification
+ * @example Submission does not meet hackathon requirements
+ */
+ disqualificationReason: string;
+ };
+ BulkSubmissionActionDto: {
+ /**
+ * @description Array of submission IDs
+ * @example [
+ * "sub_1234567890",
+ * "sub_0987654321"
+ * ]
+ */
+ submissionIds: string[];
+ /**
+ * @description Action to perform
+ * @example SHORTLISTED
+ * @enum {string}
+ */
+ action: "SHORTLISTED" | "SUBMITTED" | "DISQUALIFIED";
+ /**
+ * @description Reason (required for DISQUALIFIED action)
+ * @example Does not meet requirements
+ */
+ reason?: string;
+ };
+ SummaryMetricsDto: {
+ /** @example 120 */
+ participantsCount: number;
+ /** @example 45 */
+ submissionsCount: number;
+ /** @example 6 */
+ activeJudges: number;
+ /** @example 3 */
+ completedMilestones: number;
+ };
+ TrendPointDto: {
+ /** @example 2026-02-01 */
+ date: string;
+ /** @example 5 */
+ count: number;
+ };
+ TrendsDto: {
+ submissionsOverTime: components["schemas"]["TrendPointDto"][];
+ participantSignupsOverTime: components["schemas"]["TrendPointDto"][];
+ };
+ TimelinePhaseDto: {
+ /** @example Registration */
+ phase: string;
+ /** @example Individuals and teams are signing up to participate in the hackathon. */
+ description: string;
+ /** @example 2026-01-20 */
+ date: string;
+ /** @enum {string} */
+ status: "upcoming" | "ongoing" | "completed";
+ };
+ HackathonAnalyticsResponseDto: {
+ /** @example hack_1234567890 */
+ hackathonId: string;
+ summary: components["schemas"]["SummaryMetricsDto"];
+ trends: components["schemas"]["TrendsDto"];
+ timeline: components["schemas"]["TimelinePhaseDto"][];
+ };
+ AnnouncementAuthorDto: {
+ id: string;
+ name: string;
+ image?: string;
+ username?: string;
+ };
+ AnnouncementResponseDto: {
+ id: string;
+ hackathonId: string;
+ title: string;
+ content: string;
+ isDraft: boolean;
+ isPinned: boolean;
+ /** Format: date-time */
+ publishedAt?: string;
+ /** Format: date-time */
+ createdAt: string;
+ /** Format: date-time */
+ updatedAt: string;
+ author: components["schemas"]["AnnouncementAuthorDto"];
+ };
+ CreateAnnouncementDto: {
+ /**
+ * @description Title of the announcement
+ * @example Hackathon Starts Now!
+ */
+ title: string;
+ /**
+ * @description Content of the announcement in Markdown
+ * @example # Welcome
+ *
+ * We are excited to start...
+ */
+ content: string;
+ /**
+ * @description Whether the announcement is a draft
+ * @default true
+ */
+ isDraft: boolean;
+ /**
+ * @description Whether the announcement should be pinned
+ * @default false
+ */
+ isPinned: boolean;
+ };
+ UpdateAnnouncementDto: {
+ /**
+ * @description Title of the announcement
+ * @example Hackathon Starts Now!
+ */
+ title?: string;
+ /**
+ * @description Content of the announcement in Markdown
+ * @example # Welcome
+ *
+ * We are excited to start...
+ */
+ content?: string;
+ /** @description Whether the announcement is a draft */
+ isDraft?: boolean;
+ /** @description Whether the announcement should be pinned */
+ isPinned?: boolean;
+ };
+ CriterionScoreDto: {
+ /**
+ * @description Criterion ID or name
+ * @example Technical Complexity
+ */
+ criterionId: string;
+ /**
+ * @description Score for this criterion (0-10)
+ * @example 8.5
+ */
+ score: number;
+ /**
+ * @description Optional comment for this criterion
+ * @example Great technical implementation
+ */
+ comment?: string;
+ };
+ ScoreSubmissionDto: {
+ /**
+ * @description Submission ID being judged
+ * @example sub_1234567890
+ */
+ submissionId: string;
+ /** @description Scores for each individual criterion */
+ criteriaScores: components["schemas"]["CriterionScoreDto"][];
+ /**
+ * @description Optional ID of the judge to attribute this score to (defaults to calling user)
+ * @example user_123
+ */
+ judgeId?: string;
+ /**
+ * @description Optional admin notes
+ * @example Score adjusted per appeal
+ */
+ notes?: string;
+ /**
+ * @description Whether this is an organizational override (bypasses COI and assignment checks)
+ * @default false
+ */
+ isOrganizerOverride: boolean;
+ };
+ UserDetailsDto: {
+ id: string;
+ email: string;
+ name: string;
+ username: string;
+ image?: string;
+ };
+ JudgingSubmissionParticipantDto: {
+ id: string;
+ userId: string;
+ user: components["schemas"]["UserDetailsDto"];
+ participationType: string;
+ teamId?: string;
+ teamName?: string;
+ teamMembers?: Record[];
+ };
+ JudgingSubmissionDataDto: {
+ id: string;
+ projectName: string;
+ category: string;
+ description: string;
+ logo?: string;
+ videoUrl?: string;
+ introduction?: string;
+ links?: Record[];
+ socialLinks?: {
+ [key: string]: unknown;
+ };
+ submissionDate: string;
+ status: string;
+ rank?: number;
+ };
+ IndividualJudgingResultDto: {
+ judgeId: string;
+ judgeName: string;
+ criteriaScores: components["schemas"]["CriterionScoreDto"][];
+ totalScore: number;
+ /** Format: date-time */
+ submittedAt: string;
+ };
+ JudgingSubmissionDto: {
+ participant: components["schemas"]["JudgingSubmissionParticipantDto"];
+ submission: components["schemas"]["JudgingSubmissionDataDto"];
+ myScore?: components["schemas"]["IndividualJudgingResultDto"];
+ averageScore: Record | null;
+ judgeCount: number;
+ };
+ JudgingPaginationDto: {
+ page: number;
+ limit: number;
+ total: number;
+ totalPages: number;
+ };
+ JudgingSubmissionsResponseDto: {
+ submissions: components["schemas"]["JudgingSubmissionDto"][];
+ criteria: components["schemas"]["CriterionDto"][];
+ pagination: components["schemas"]["JudgingPaginationDto"];
+ /** @description Number of submissions in this hackathon that the calling judge has already scored. Independent of pagination so the progress strip is accurate even when the user is on page 2. */
+ scoredCount?: number;
+ };
+ AddJudgeDto: {
+ /**
+ * @description Email address of the user to be assigned as a judge
+ * @example judge@example.com
+ */
+ email: string;
+ };
+ JudgeResponseDto: {
+ id: string;
+ userId: string;
+ name: string;
+ image?: Record;
+ };
+ IndividualScoreDto: {
+ judgeId: string;
+ judgeName: string;
+ score: number;
+ };
+ ScoreRangeDto: {
+ min: number;
+ max: number;
+ };
+ CriteriaBreakdownDto: {
+ criterionId: string;
+ averageScore: number;
+ min: number;
+ max: number;
+ variance: number;
+ };
+ AggregatedJudgingResultDto: {
+ submissionId: string;
+ projectName: string;
+ teamId?: Record;
+ participantId: string;
+ status: string;
+ /** Format: date-time */
+ submittedAt: string;
+ averageScore: number;
+ totalScore: number;
+ judgeCount: number;
+ expectedJudgeCount: number;
+ judgingProgress: string;
+ individualScores: components["schemas"]["IndividualScoreDto"][];
+ scoreVariance: number;
+ scoreRange: components["schemas"]["ScoreRangeDto"];
+ criteriaBreakdown: components["schemas"]["CriteriaBreakdownDto"][];
+ rank?: Record;
+ computedRank?: number;
+ prize?: string;
+ isComplete: boolean;
+ isPending: boolean;
+ hasDisagreement: boolean;
+ trackIds?: string[];
+ /** @description True when this submission is in the top X% overall per the recommendation threshold. */
+ recommendedOverall?: boolean;
+ /** @description Track ids where this submission is in the top X% per the per-track recommendation threshold. */
+ recommendedTrackIds?: string[];
+ };
+ JudgingResultsResponseDto: {
+ hackathonId: string;
+ totalSubmissions: number;
+ submissionsScoredCount: number;
+ submissionsPendingCount: number;
+ averageScoreAcrossAll: number;
+ resultsPublished: boolean;
+ judgesAssigned: number;
+ results: components["schemas"]["AggregatedJudgingResultDto"][];
+ /** Format: date-time */
+ generatedAt: string;
+ /** @description Manual winner assignments override (submissionId -> rank) */
+ winnerOverrides?: {
+ [key: string]: number;
+ };
+ metadata: components["schemas"]["JudgingResultsMetadataDto"];
+ };
+ SetPlacementWinnerDto: {
+ /** @description The submission to award this placement to. */
+ submissionId: string;
+ };
+ InviteJudgeDto: {
+ /** @example judge@example.com */
+ email: string;
+ /** @description Optional public display name for the judge */
+ displayName?: string;
+ /** @description Optional title/role shown with the judge (e.g. "Time Traveler"). */
+ title?: string;
+ /** @description Personal message included in the invitation email */
+ message?: string;
+ /** @description Override expiry in days (default 14). Maximum 60 to prevent indefinite invitations. */
+ expiresInDays?: number;
+ };
+ BulkInviteJudgesDto: {
+ /** @description Up to 25 judges per request */
+ invites: components["schemas"]["InviteJudgeDto"][];
+ };
+ BulkInviteRowResultDto: {
+ email: string;
+ /**
+ * @description 'invited' = sent; 'failed' = skipped with a reason.
+ * @enum {string}
+ */
+ status: "invited" | "failed";
+ /** @description Failure reason when status is failed. */
+ reason?: string;
+ };
+ BulkInviteResultDto: {
+ results: components["schemas"]["BulkInviteRowResultDto"][];
+ /** @description Count of invitations sent. */
+ invited: number;
+ /** @description Count of rows that failed / were skipped. */
+ failed: number;
+ };
+ RecommendationThresholdDto: {
+ id: string;
+ hackathonId: string;
+ /** @description null = overall threshold; otherwise the scoped track id. */
+ trackId?: string | null;
+ /** @description Top percent (0-100). */
+ topPercent: number;
+ };
+ SetRecommendationThresholdDto: {
+ /** @description Track id to scope the threshold to; omit for the overall cut. */
+ trackId?: string;
+ /**
+ * @description Top percent (0-100) of submissions flagged as recommended.
+ * @example 10
+ */
+ topPercent: number;
+ };
+ RecommendationComputeDiagnosticsDto: {
+ /** @description Submissions currently SHORTLISTED. */
+ shortlistedSubmissions: number;
+ /** @description Shortlisted submissions with at least one counted score (active judge or promoted AI scorecard; advisory AI_ASSIST excluded). These are the only submissions a threshold can rank. */
+ scoredSubmissions: number;
+ /** @description Whether an overall (all-submissions) cut is set. */
+ overallThresholdConfigured: boolean;
+ /** @description Number of per-track cuts configured. */
+ trackThresholdsConfigured: number;
+ /**
+ * @description Human-readable reasons explaining the outcome (e.g. why nothing was flagged). Empty when the compute produced recommendations with nothing outstanding.
+ * @example [
+ * "No recommendation thresholds are configured. Set a top-X% cut (overall or per track), then recompute."
+ * ]
+ */
+ reasons: string[];
+ };
+ RecommendationComputeResultDto: {
+ /** @description Submissions flagged recommendedOverall. */
+ overallRecommended: number;
+ /**
+ * @description Per-track recommended counts.
+ * @example [
+ * {
+ * "trackId": "trk_1",
+ * "recommended": 3
+ * }
+ * ]
+ */
+ tracks: string[];
+ /** @description Why the compute produced what it did, so an empty result is never silent. */
+ diagnostics: components["schemas"]["RecommendationComputeDiagnosticsDto"];
+ };
+ AcceptJudgeInvitationDto: {
+ /** @description Optional display name override. If omitted, the inviter-provided displayName (or the user’s account name) is used. */
+ displayName?: string;
+ };
+ PublishedInfoFormDataDto: {
+ /** @example Web3 Innovation Hackathon */
+ name: string;
+ /** @example https://example.com/banner.png */
+ banner: string;
+ /** @example Build products for the decentralized future. */
+ description: string;
+ categories: ("DeFi" | "NFTs" | "DAOs" | "Layer 2" | "Cross-chain" | "Web3 Gaming" | "Social Tokens" | "Infrastructure" | "Privacy" | "Sustainability" | "Real World Assets" | "Other")[];
+ /**
+ * @example virtual
+ * @enum {string}
+ */
+ venueType: "virtual" | "physical";
+ /** @example Build the future of Web3 */
+ tagline: string;
+ /** @example Nigeria */
+ country?: string;
+ /** @example Lagos */
+ state?: string;
+ /** @example Ikeja */
+ city?: string;
+ /** @example Eko Convention Center */
+ venueName?: string;
+ /** @example Plot 1415 Adetokunbo Ademola St */
+ venueAddress?: string;
+ /** @example web3-innovation-hackathon */
+ slug?: string;
+ };
+ PublishedSponsorPartnerDto: {
+ /** @example sp-1 */
+ id: string;
+ /** @example Stellar Foundation */
+ name?: string;
+ /** @example https://example.com/logo.png */
+ logo?: string;
+ /** @example https://stellar.org */
+ link?: string;
+ };
+ PublishedCollaborationFormDataDto: {
+ /** @example organizer@boundless.dev */
+ contactEmail: string;
+ /** @example @boundless */
+ telegram?: string;
+ /** @example boundless-hackathon */
+ discord?: string;
+ /**
+ * @example [
+ * "https://x.com/boundless"
+ * ]
+ */
+ socialLinks: string[];
+ sponsorsPartners: components["schemas"]["PublishedSponsorPartnerDto"][];
+ };
+ UpdatePublishedHackathonContentDto: {
+ information?: components["schemas"]["PublishedInfoFormDataDto"];
+ collaboration?: components["schemas"]["PublishedCollaborationFormDataDto"];
+ };
+ PublishedPhaseDto: {
+ /** @example Building Phase */
+ name: string;
+ /** @example 2026-04-01T00:00:00.000Z */
+ startDate: string;
+ /** @example 2026-04-10T00:00:00.000Z */
+ endDate: string;
+ /** @example Core build phase for teams */
+ description?: string;
+ };
+ PublishedTimelineFormDataDto: {
+ /** @example 2026-04-01T00:00:00.000Z */
+ startDate?: string;
+ /** @example 2026-04-15T00:00:00.000Z */
+ submissionDeadline?: string;
+ /** @example Africa/Lagos */
+ timezone?: string;
+ /**
+ * @description Optional. When null, registration stays open until submission deadline.
+ * @example 2026-04-02T00:00:00.000Z
+ */
+ registrationDeadline?: string;
+ /**
+ * @description Optional judging deadline. When null, no judging phase is rendered on the timeline.
+ * @example 2026-04-18T00:00:00.000Z
+ */
+ judgingDeadline?: string;
+ phases?: components["schemas"]["PublishedPhaseDto"][];
+ };
+ PublishedParticipantFormDataDto: {
+ /** @enum {string} */
+ participantType: "individual" | "team" | "team_or_individual";
+ /** @example 2 */
+ teamMin?: number;
+ /** @example 5 */
+ teamMax?: number;
+ /**
+ * @description Optional cap on total participants. null = unlimited. Can be updated after publishing.
+ * @example 200
+ */
+ maxParticipants?: number;
+ /** @example true */
+ require_github?: boolean;
+ /** @example false */
+ require_demo_video?: boolean;
+ /** @example true */
+ require_other_links?: boolean;
+ detailsTab?: boolean;
+ participantsTab?: boolean;
+ resourcesTab?: boolean;
+ submissionTab?: boolean;
+ announcementsTab?: boolean;
+ discussionTab?: boolean;
+ winnersTab?: boolean;
+ sponsorsTab?: boolean;
+ joinATeamTab?: boolean;
+ rulesTab?: boolean;
+ };
+ UpdatePublishedHackathonScheduleDto: {
+ timeline?: components["schemas"]["PublishedTimelineFormDataDto"];
+ participation?: components["schemas"]["PublishedParticipantFormDataDto"];
+ };
+ PublishedPrizeTierDto: {
+ /** @example tier-1 */
+ id: string;
+ /** @example 1st Place */
+ place: string;
+ /** @example 5000 */
+ prizeAmount: string;
+ /** @example USDC */
+ currency?: string;
+ /** @example Top overall project */
+ description?: string;
+ /**
+ * @description Display rank / ordering of the tier (1 = highest)
+ * @example 1
+ */
+ rank?: number;
+ /** @example 70 */
+ passMark: number;
+ /** @enum {string} */
+ kind?: "OVERALL" | "TRACK";
+ /** @description Required when kind=TRACK. References a HackathonTrack id. */
+ trackId?: string;
+ };
+ PublishedRewardsFormDataDto: {
+ prizeTiers?: components["schemas"]["PublishedPrizeTierDto"][];
+ prizes?: components["schemas"]["PrizeWriteDto"][];
+ /**
+ * @description Manual winner assignments override (submissionId -> rank)
+ * @example {
+ * "sub-1": 1,
+ * "sub-2": 2
+ * }
+ */
+ winnerOverrides?: {
+ [key: string]: number;
+ };
+ /** @enum {string} */
+ prizeStructure?: "OVERALL_ONLY" | "OVERALL_AND_TRACKS" | "TRACKS_ONLY";
+ tracksMaxPerSubmission?: number;
+ allowWinnerStacking?: boolean;
+ };
+ UpdatePublishedHackathonFinancialDto: {
+ rewards: components["schemas"]["PublishedRewardsFormDataDto"];
+ };
+ AdvancedSettingsFormDataDto: {
+ /** @example true */
+ isPublic: boolean;
+ /** @example false */
+ allowLateRegistration: boolean;
+ /** @example true */
+ requireApproval: boolean;
+ /** @example 500 */
+ maxParticipants?: number;
+ /** @example hackathons.boundless.dev */
+ customDomain?: string;
+ /** @example true */
+ enableDiscord: boolean;
+ /** @example https://discord.gg/boundless */
+ discordInviteLink?: string;
+ /** @example true */
+ enableTelegram: boolean;
+ /** @example https://t.me/boundless */
+ telegramInviteLink?: string;
+ };
+ UpdatePublishedHackathonAdvancedSettingsDto: {
+ advancedSettings: components["schemas"]["AdvancedSettingsFormDataDto"];
+ };
+ SetHackathonAccessDto: {
+ /** @enum {string} */
+ visibility: "PUBLIC" | "PRIVATE";
+ /** @description Access password. Required when first making a hackathon private; ignored (cleared) when visibility is PUBLIC. */
+ password?: string;
+ };
+ InvitePartnerDto: {
+ /** @example sponsor@partner.io */
+ partnerEmail: string;
+ /** @example Acme Corp */
+ partnerName: string;
+ /** @example https://cdn.example.com/logo.png */
+ partnerLogo?: string;
+ /** @example https://acme.io */
+ partnerLink?: string;
+ /**
+ * @description Pledged amount in USDC
+ * @example 1000
+ */
+ pledgedAmount: number;
+ /**
+ * @default USDC
+ * @example USDC
+ */
+ currency: string;
+ /** @description Optional message included in the invite */
+ message?: string;
+ /**
+ * @description Whether the partner is shown publicly on the hackathon page
+ * @default true
+ */
+ showPublicly: boolean;
+ };
+ AllocationTargetDto: {
+ /** @description PrizePlacement id (the fundable slot) this allocation adds to. Placements are created in the Rewards step. */
+ placementId: string;
+ /** @description Net amount (USDC) to add to the placement */
+ amount: number;
+ };
+ AllocateContributionDto: {
+ /** @description One or more tiers to allocate this contribution into */
+ targets: components["schemas"]["AllocationTargetDto"][];
+ };
+ PrepareFundTransactionDto: {
+ /** @description Stellar address of the partner wallet that will sign the transaction */
+ signerAddress: string;
+ };
+ SubmitSignedTransactionDto: {
+ /** @description Signed transaction XDR returned by the partner wallet */
+ signedXdr: string;
+ };
+ TrackCustomQuestionDto: {
+ /** @description Stable id, unique within the track. */
+ id: string;
+ /** @description Question label shown on the submission form. */
+ label: string;
+ /**
+ * @description Input type. 'short' = single-line, 'long' = textarea, 'url' = URL field.
+ * @enum {string}
+ */
+ type: "short" | "long" | "url";
+ /** @description Optional maxLength override (defaults: short=200, long=1000). */
+ maxLength?: number;
+ /** @description Whether an answer is required. */
+ required?: boolean;
+ };
+ TrackRequiredArtifactDto: {
+ /** @description Stable id, unique within the track. */
+ id: string;
+ /** @description Artifact label (e.g. "Figma file URL"). */
+ label: string;
+ /**
+ * @description Artifact type — drives the placeholder + light hint UI.
+ * @enum {string}
+ */
+ type: "figma" | "github" | "video" | "pdf" | "url";
+ /** @description Whether submitting this artifact is required. */
+ required?: boolean;
+ };
+ TrackResponseDto: {
+ id: string;
+ hackathonId: string;
+ slug: string;
+ name: string;
+ description?: string;
+ type?: string;
+ /** @enum {string} */
+ eligibility: "OPT_IN" | "OPEN";
+ displayOrder: number;
+ isArchived: boolean;
+ /** @description Count of submissions that have opted into this track. Useful for organizer dashboards. */
+ entryCount: number;
+ /** @description Per-track customization (Phase B). */
+ prompt?: string;
+ customQuestions?: components["schemas"]["TrackCustomQuestionDto"][];
+ requiredArtifacts?: components["schemas"]["TrackRequiredArtifactDto"][];
+ /** Format: date-time */
+ createdAt: string;
+ /** Format: date-time */
+ updatedAt: string;
+ };
+ CustomQuestionResponseDto: {
+ id: string;
+ hackathonId: string;
+ /** @enum {string} */
+ scope: "REGISTRATION" | "SUBMISSION";
+ label: string;
+ helpText?: string | null;
+ /** @enum {string} */
+ type: "SHORT" | "LONG" | "URL" | "SINGLE_SELECT" | "MULTI_SELECT" | "BOOLEAN";
+ required: boolean;
+ options?: string[] | null;
+ maxLength?: number | null;
+ displayOrder: number;
+ };
+ UpdateTracksConfigDto: {
+ /** @description Max number of tracks a single submission may enter (1-20). */
+ tracksMaxPerSubmission?: number;
+ };
+ CreateTrackDto: {
+ /**
+ * @description Human-readable track name shown on the hackathon page.
+ * @example Best UI/UX
+ */
+ name: string;
+ /**
+ * @description URL-safe handle, unique within the hackathon. Auto-generated from name if omitted.
+ * @example best-ui-ux
+ */
+ slug?: string;
+ /**
+ * @description Short blurb shown in the track picker and on results.
+ * @example Best end-to-end user experience and visual polish.
+ */
+ description?: string;
+ /**
+ * @description Free-form classifier for badge styling. Common values: skill, technology, theme, special.
+ * @example skill
+ */
+ type?: string;
+ /**
+ * @description OPT_IN (default): submitters explicitly enter. OPEN: every submission auto-eligible.
+ * @default OPT_IN
+ * @enum {string}
+ */
+ eligibility: "OPT_IN" | "OPEN";
+ /**
+ * @description Sort order. Lower numbers render first. Defaults to 0.
+ * @example 10
+ */
+ displayOrder?: number;
+ /**
+ * @description Single open-ended prompt shown on the submission form. When set, the submitter must answer to opt in.
+ * @example Why does this project fit Best UI/UX?
+ */
+ prompt?: string;
+ customQuestions?: components["schemas"]["TrackCustomQuestionDto"][];
+ requiredArtifacts?: components["schemas"]["TrackRequiredArtifactDto"][];
+ };
+ UpdateTrackDto: {
+ name?: string;
+ slug?: string;
+ description?: string;
+ type?: string;
+ /** @enum {string} */
+ eligibility?: "OPT_IN" | "OPEN";
+ displayOrder?: number;
+ /** @description Soft-archive instead of delete when entries already exist. Cannot be unset via this endpoint; recreate the track if needed. */
+ isArchived?: boolean;
+ /** @description Single open-ended prompt. */
+ prompt?: string;
+ customQuestions?: components["schemas"]["TrackCustomQuestionDto"][];
+ requiredArtifacts?: components["schemas"]["TrackRequiredArtifactDto"][];
+ };
+ CustomQuestionWriteDto: {
+ /** @enum {string} */
+ scope: "REGISTRATION" | "SUBMISSION";
+ /** @description Question shown to the participant. */
+ label: string;
+ /** @description Optional helper text under the field. */
+ helpText?: string;
+ /**
+ * @default SHORT
+ * @enum {string}
+ */
+ type: "SHORT" | "LONG" | "URL" | "SINGLE_SELECT" | "MULTI_SELECT" | "BOOLEAN";
+ /** @description Whether an answer is required. */
+ required?: boolean;
+ /** @description Choices for SINGLE_SELECT / MULTI_SELECT. */
+ options?: string[];
+ /** @description Optional length cap for SHORT / LONG answers. */
+ maxLength?: number;
+ /** @description Sort order; lower renders first. */
+ displayOrder?: number;
+ };
+ UpsertCustomQuestionsDto: {
+ questions: components["schemas"]["CustomQuestionWriteDto"][];
+ };
+ RequestFundingOtpResponseDto: {
+ /** @description Whether funding step-up is enforced for this action */
+ required: boolean;
+ /** @description True when a recent verification is still valid; the client can fund without entering a new code */
+ alreadyVerified: boolean;
+ /** @description True when a fresh code was just emailed */
+ sent: boolean;
+ /** @description Seconds until the emailed code expires (0 when none sent) */
+ expiresInSeconds: number;
+ };
+ VerifyFundingOtpDto: {
+ /**
+ * @description The 6-digit code emailed to the organizer
+ * @example 123456
+ */
+ code: string;
+ };
+ VerifyFundingOtpResponseDto: {
+ /** @description True when the code was accepted */
+ verified: boolean;
+ /** @description Seconds the funding authorization remains valid */
+ expiresInSeconds: number;
+ };
+ WinnerDistributionEntryDto: {
+ /**
+ * @description Winner position (1-indexed; 1 = top winner).
+ * @example 1
+ */
+ position: number;
+ /**
+ * @description Percentage of the total budget allocated to this position. All entries must sum to exactly 100.
+ * @example 100
+ */
+ percent: number;
+ };
+ PublishHackathonEscrowDto: {
+ /**
+ * @description Stellar G-address that will own and sign the on-chain create_event transaction. For managed wallets, this is the platform-derived address tied to the organizer's account; for connected/multisig, it's the org treasury's G-address.
+ * @example GDVGP7DWODFVYQ5NHHLLD3WFVLUH5Y3HHELIKSNO4STEFCBETQAWDMKZ
+ */
+ ownerAddress: string;
+ /**
+ * @description Stellar Asset Contract (SAC) address the prize pool is denominated in. Must be whitelisted on the events contract (see admin runbook).
+ * @example CBIELTK6YBZJU5UP2WWQEUCYKLPU6AUNZ2BQ4WWFEIE3USCIHMXQDAMA
+ */
+ tokenAddress: string;
+ /**
+ * @description Total prize budget in token-native units (e.g. 1000 = 1000 USDC, NOT stroops). Use a string when the value exceeds JavaScript's safe integer range. The backend converts to stroops via *10^7.
+ * @example 1000
+ */
+ budget: string;
+ /** @description Optional override for the winner distribution. Each entry maps a position to a percent of total_budget. Percents must sum to exactly 100. Defaults to a single winner at position 1 taking 100%. */
+ winnerDistribution?: components["schemas"]["WinnerDistributionEntryDto"][];
+ /**
+ * @description Override for the public content_uri the contract stores against the event. Defaults to https://api.boundless.fi/hackathons//content.
+ * @example https://api.boundless.fi/hackathons/abc/content
+ */
+ contentUri?: string;
+ /**
+ * @description Signing path. Defaults to EXTERNAL (return unsigned XDR for the caller to sign). Set to MANAGED to have the backend sign + submit using the caller user's managed wallet; the response carries the op in PENDING_CONFIRM with a txHash.
+ * @default EXTERNAL
+ * @example MANAGED
+ * @enum {string}
+ */
+ fundingMode: "EXTERNAL" | "MANAGED";
+ /** @description For MANAGED funding, the organization treasury wallet to fund from. When set, the backend signs with that treasury (managed) wallet instead of the caller's personal wallet; ownerAddress must match the treasury wallet address. Omit to fund from the personal managed wallet. */
+ sourceWalletId?: string;
+ };
+ HackathonEscrowOpResponseDto: {
+ /**
+ * @description Internal uuid for the EscrowOp row. Use this for follow-up calls.
+ * @example cmpwiox7u0000yy4404ojbk9t
+ */
+ id: string;
+ /**
+ * @description Hex-encoded 32-byte op_id derived deterministically from the operation parameters. Used by the on-chain idempotency check.
+ * @example 3cc257d743b1b44423dc8dbd417aedfe6e47ad489b5d301a2fbec5284d36de1c
+ */
+ opId: string;
+ /**
+ * @description Contract operation kind.
+ * @example CREATE_EVENT
+ * @enum {string}
+ */
+ kind: "CREATE_EVENT" | "CANCEL_EVENT" | "ADD_FUNDS" | "APPLY_TO_BOUNTY" | "WITHDRAW_APPLICATION" | "SUBMIT" | "WITHDRAW_SUBMISSION" | "SELECT_WINNERS" | "CLAIM_MILESTONE";
+ /**
+ * @description Status of the EscrowOp in its lifecycle.
+ * @example PENDING_SIGN
+ * @enum {string}
+ */
+ status: "PENDING_BUILD" | "PENDING_SIGN" | "PENDING_SUBMIT" | "PENDING_CONFIRM" | "COMPLETED" | "FAILED" | "CANCELLED";
+ /**
+ * @description Entity kind the op operates on. Matches the application-level row (hackathon, bounty, grant, etc.).
+ * @example HACKATHON
+ */
+ entityKind: string;
+ /**
+ * @description Application-level row id this op acts on.
+ * @example cmpwihilf0000fd44iln3dzbg
+ */
+ entityId: string;
+ /**
+ * @description Unsigned XDR transaction the wallet must sign. Present after the build phase completes (PENDING_SIGN onwards).
+ * @example AAAAAgAAAACdiamX7q...truncated...
+ */
+ unsignedXdr?: string | null;
+ /**
+ * @description Stellar G-address expected to sign this op. The wallet routing layer on the webapp uses this to pick the right signer.
+ * @example GDVGP7DWODFVYQ5NHHLLD3WFVLUH5Y3HHELIKSNO4STEFCBETQAWDMKZ
+ */
+ signerHint?: string | null;
+ /**
+ * @description Soroban tx hash assigned at submit time. Set once the op reaches PENDING_CONFIRM or beyond.
+ * @example daafec9027da007b54eec34c54a5919edd7a8682bc96ccf7c7072982305cfa3b
+ */
+ txHash?: string | null;
+ /**
+ * @description Contract error code when the op transitions to FAILED. Mirrors the on-chain error name (e.g. "InsufficientEscrow", "OpAlreadySeen", "txBadAuth").
+ * @example txBadAuth
+ */
+ errorCode?: string | null;
+ /**
+ * Format: date-time
+ * @description Row creation time.
+ * @example 2026-06-02T11:45:36.927Z
+ */
+ createdAt: string;
+ /**
+ * Format: date-time
+ * @description Row last-updated time.
+ * @example 2026-06-02T11:45:44.310Z
+ */
+ updatedAt: string;
+ };
+ CancelHackathonEscrowDto: {
+ /**
+ * @description Organizer's Stellar G-address. Must match the on-chain hackathon owner.
+ * @example GDVGP7DWODFVYQ5NHHLLD3WFVLUH5Y3HHELIKSNO4STEFCBETQAWDMKZ
+ */
+ ownerAddress: string;
+ /**
+ * @description Signing path. EXTERNAL (default) returns unsigned XDR; MANAGED signs server-side with the caller's platform-held wallet.
+ * @default EXTERNAL
+ * @enum {string}
+ */
+ fundingMode: "EXTERNAL" | "MANAGED";
+ /** @description For MANAGED, the organization treasury wallet to sign with (the event contract-auth identity). ownerAddress must match it. Omit to use the caller's personal managed wallet. */
+ sourceWalletId?: string;
+ };
+ HackathonWinnerSelectionDto: {
+ /**
+ * @description ID of the winning submission. The payout recipient is resolved server-side = the submitter's (team leader's) Boundless managed wallet; no on-chain submission anchor is required.
+ * @example cmq7sgwst0001abcd1234efgh
+ */
+ submissionId: string;
+ /**
+ * @description Winner position, 1-indexed. Must exist in the hackathon's on-chain winner_distribution.
+ * @example 1
+ */
+ position: number;
+ /**
+ * @description Override the platform default reputation_bump for this position. Defaults to 50/25/10 for positions 1/2/3 and 5 for the rest.
+ * @example 50
+ */
+ reputationBump?: number;
+ };
+ SelectHackathonWinnersDto: {
+ /**
+ * @description Organizer's Stellar G-address — a hint only. select_winners is authorized by the event manager resolved on-chain (the org treasury for new events), which the backend signs with server-side; this value is used only as a fallback when that on-chain read is unavailable (legacy/pre-upgrade events). Omit for the MANAGED flow.
+ * @example GDVGP7DWODFVYQ5NHHLLD3WFVLUH5Y3HHELIKSNO4STEFCBETQAWDMKZ
+ */
+ ownerAddress?: string;
+ /** @description Winners to declare, each by winning submissionId + position. The payout recipient is resolved server-side = the submitter's (team leader's) Boundless managed wallet; no on-chain submission anchor is required. Positions and submissionIds must be unique within the array. */
+ selections: components["schemas"]["HackathonWinnerSelectionDto"][];
+ /**
+ * @description Signing path. EXTERNAL (default) returns unsigned XDR; MANAGED signs server-side.
+ * @default EXTERNAL
+ * @enum {string}
+ */
+ fundingMode: "EXTERNAL" | "MANAGED";
+ /** @description For MANAGED, the organization treasury wallet to sign with (the event contract-auth identity). ownerAddress must match it. Omit to use the caller's personal managed wallet. */
+ sourceWalletId?: string;
+ };
+ HackathonSubmitSignedXdrDto: {
+ /**
+ * @description The fully-signed XDR returned by the wallet (Freighter, Albedo, platform-managed signer, or a multisig coordinator). Backend submits this verbatim to Soroban RPC.
+ * @example AAAAAgAAAACdiamX7q...truncated...
+ */
+ signedXdr: string;
+ };
+ SubmitHackathonDto: {
+ /**
+ * @description Caller's Stellar G-address. Must match the caller's linked wallet.
+ * @example GBXNQFDSBDPOIA3Q4LYIWBOJFFPCCV6IEDHBSJZEAYFKIKZVUO4QEDVS
+ */
+ applicantAddress: string;
+ /**
+ * @description Signing path. EXTERNAL (default) returns unsigned XDR. MANAGED signs server-side with the caller's platform-held wallet.
+ * @default EXTERNAL
+ * @enum {string}
+ */
+ fundingMode: "EXTERNAL" | "MANAGED";
+ /**
+ * @description On-chain content URI for the submission. Stored verbatim in the contract's submission anchor; off-chain content lives wherever the URI points (IPFS, S3, GitHub PR, etc.).
+ * @example ipfs://Qm.../project.json
+ */
+ contentUri: string;
+ };
+ WithdrawHackathonSubmissionDto: {
+ /**
+ * @description Caller's Stellar G-address. Must match the caller's linked wallet.
+ * @example GBXNQFDSBDPOIA3Q4LYIWBOJFFPCCV6IEDHBSJZEAYFKIKZVUO4QEDVS
+ */
+ applicantAddress: string;
+ /**
+ * @description Signing path. EXTERNAL (default) returns unsigned XDR. MANAGED signs server-side with the caller's platform-held wallet.
+ * @default EXTERNAL
+ * @enum {string}
+ */
+ fundingMode: "EXTERNAL" | "MANAGED";
+ };
+ ContributeHackathonDto: {
+ /**
+ * @description Caller's Stellar G-address. Must match the caller's linked wallet.
+ * @example GBXNQFDSBDPOIA3Q4LYIWBOJFFPCCV6IEDHBSJZEAYFKIKZVUO4QEDVS
+ */
+ applicantAddress: string;
+ /**
+ * @description Signing path. EXTERNAL (default) returns unsigned XDR. MANAGED signs server-side with the caller's platform-held wallet.
+ * @default EXTERNAL
+ * @enum {string}
+ */
+ fundingMode: "EXTERNAL" | "MANAGED";
+ /**
+ * @description Amount in token-native units (e.g. 30 = 30 USDC, NOT stroops). Must be >= 10 USDC (contract minimum).
+ * @example 30
+ */
+ amount: string;
+ };
+ CreateOrganizationDto: Record;
+ OrganizationProfileStatsDto: {
+ /**
+ * @description Number of projects under this organization
+ * @example 12
+ */
+ projectsCount: number;
+ /**
+ * @description Total hackathons run by this organization
+ * @example 5
+ */
+ totalHackathons: number;
+ /**
+ * @description Total bounties offered by this organization
+ * @example 8
+ */
+ totalBounties: number;
+ /**
+ * @description Total grants (projects with grants) under this organization
+ * @example 3
+ */
+ totalGrants: number;
+ };
+ OrganizationProfileDto: {
+ /**
+ * @description Organization ID
+ * @example org_1234567890
+ */
+ id: string;
+ /**
+ * @description Organization name
+ * @example Tech Innovators
+ */
+ name: string;
+ /**
+ * @description Organization slug
+ * @example tech-innovators
+ */
+ slug: string;
+ /**
+ * @description Logo URL
+ * @example https://example.com/logo.png
+ */
+ logoUrl: string;
+ /**
+ * @description Organization description (from about or tagline)
+ * @example We are a community of developers building the future.
+ */
+ description: string;
+ /** @description Key stats for the organization profile */
+ stats: components["schemas"]["OrganizationProfileStatsDto"];
+ };
+ UpdateOrganizationDto: Record;
+ UpdateMemberRoleDto: Record;
+ InviteMemberDto: Record;
+ TreasuryWalletResponseDto: {
+ id: string;
+ organizationId: string;
+ /** @enum {string} */
+ kind: "MANAGED" | "CONNECTED";
+ publicKey: string;
+ label: string;
+ isDefault: boolean;
+ /** @enum {string} */
+ status: "ACTIVE" | "ARCHIVED" | "NEEDS_REVIEW";
+ isMultisig: boolean;
+ multisigThreshold: number | null;
+ connectionMethod: string | null;
+ lastVerifiedAt: string | null;
+ createdAt: string;
+ updatedAt: string;
+ };
+ CreateManagedWalletDto: {
+ /**
+ * @description Display label for the wallet
+ * @example Main treasury
+ */
+ label: string;
+ };
+ RegisterConnectedWalletDto: {
+ /** @description G-address of the external wallet */
+ publicKey: string;
+ /**
+ * @description Display label
+ * @example Company multisig
+ */
+ label: string;
+ /** @enum {string} */
+ connectionMethod: "freighter" | "lobstr" | "albedo" | "xbull" | "hana" | "rabet" | "walletkit_generic";
+ };
+ UpdateTreasuryWalletDto: {
+ /** @description New display label */
+ label?: string;
+ /** @description Make this the organization default */
+ isDefault?: boolean;
+ };
+ WalletBalanceResponseDto: {
+ publicKey: string;
+ /** @description USDC balance */
+ usdc: string;
+ /** @description XLM balance (fee float) */
+ xlm: string;
+ };
+ TreasuryPolicyRuleDto: {
+ /** @example 0 */
+ min_usdc: number;
+ /** @example 1000 */
+ max_usdc?: Record | null;
+ /** @example 1 */
+ required_approvals: number;
+ /**
+ * @example [
+ * "owner",
+ * "admin"
+ * ]
+ */
+ approver_roles: string[];
+ };
+ TreasuryPolicyResponseDto: {
+ organizationId: string;
+ defaultWalletId: string | null;
+ rules: components["schemas"]["TreasuryPolicyRuleDto"][];
+ /** @description True when no policy is saved yet (defaults returned) */
+ isDefault: boolean;
+ updatedAt: string | null;
+ };
+ UpdateTreasuryPolicyDto: {
+ rules: components["schemas"]["TreasuryPolicyRuleDto"][];
+ /** @description Default source wallet id */
+ defaultWalletId?: string;
+ };
+ InitiateSpendDto: {
+ /** @description Treasury wallet to spend from */
+ sourceWalletId: string;
+ /** @description Destination G-address or escrow contract id */
+ destination: string;
+ /**
+ * @description Amount in USDC
+ * @example 2500.00
+ */
+ amount: string;
+ /**
+ * @description What the spend funds
+ * @example fund_hackathon_escrow
+ */
+ purpose: string;
+ /** @enum {string} */
+ referenceType?: "hackathon" | "bounty" | "grant";
+ referenceId?: string;
+ };
+ SpendRequestResponseDto: {
+ id: string;
+ organizationId: string;
+ sourceWalletId: string;
+ destination: string;
+ amount: string;
+ currency: string;
+ purpose: string;
+ referenceType: string | null;
+ referenceId: string | null;
+ initiatorUserId: string;
+ requiredApprovals: number;
+ approvals: Record[];
+ status: string;
+ onChainTxHash: string | null;
+ createdAt: string;
+ approvedAt: string | null;
+ };
+ SendTreasuryFundsDto: {
+ /** @description Wallet to send from */
+ sourceWalletId: string;
+ /**
+ * @description Recipient Stellar address (starts with G)
+ * @example GA...
+ */
+ destination: string;
+ /**
+ * @description Amount in USDC
+ * @example 250.00
+ */
+ amount: string;
+ /**
+ * @description What this payment is for (shown in your activity log)
+ * @example Contributor payout
+ */
+ note?: string;
+ };
+ SendDestinationReadinessDto: {
+ /** @description Whether the recipient account exists on-chain */
+ exists: boolean;
+ /** @description Whether the recipient has a USDC trustline (so it can receive USDC) */
+ hasUsdcTrustline: boolean;
+ };
+ SpendDecisionDto: {
+ /** @description Optional note for the decision */
+ note?: string;
+ };
+ BuildSpendXdrResponseDto: {
+ /** @description Unsigned transaction XDR to sign in-browser */
+ unsignedXdr: string;
+ request: components["schemas"]["SpendRequestResponseDto"];
+ };
+ SubmitSpendSignedXdrDto: {
+ /** @description The browser-signed transaction XDR */
+ signedXdr: string;
+ };
+ TreasuryActorDto: {
+ id: string;
+ name: string | null;
+ image: string | null;
+ };
+ TreasuryAuditEntryDto: {
+ id: string;
+ action: string;
+ actorUserId: string | null;
+ actorKind: string;
+ /** @description Resolved profile of the actor (name + avatar), if a user. */
+ actor: components["schemas"]["TreasuryActorDto"] | null;
+ walletId: string | null;
+ spendRequestId: string | null;
+ details: {
+ [key: string]: unknown;
+ } | null;
+ createdAt: string;
+ };
+ TreasuryAuditLogResponseDto: {
+ data: components["schemas"]["TreasuryAuditEntryDto"][];
+ total: number;
+ page: number;
+ limit: number;
+ };
+ ReceiptResponseDto: {
+ id: string;
+ /** @example RCPT-100001 */
+ receiptNumber: string;
+ organizationId: string;
+ /** @example TREASURY_SEND */
+ type: string;
+ /** @example Funds sent */
+ typeLabel: string;
+ /** @example ISSUED */
+ status: string;
+ /** @example OUTGOING */
+ direction: string;
+ /** @example 250.00 */
+ amount: string;
+ /** @example USDC */
+ currency: string;
+ fromLabel: Record | null;
+ fromAddress: Record | null;
+ toLabel: Record | null;
+ toAddress: Record | null;
+ description: Record | null;
+ onChainTxHash: Record | null;
+ explorerUrl: Record | null;
+ network: Record | null;
+ issuedByUserId: Record | null;
+ issuedAt: string;
+ voidedAt: Record | null;
+ };
+ ReceiptListResponseDto: {
+ data: components["schemas"]["ReceiptResponseDto"][];
+ total: number;
+ page: number;
+ limit: number;
+ };
+ SendReceiptDto: {
+ /** @description Where to email the receipt. Defaults to your account email. */
+ email?: string;
+ };
+ VoidReceiptDto: {
+ /** @description Why the receipt is being voided */
+ reason?: string;
+ };
+ CreateVoteDto: {
+ /** @description ID of the project being voted on */
+ projectId: string;
+ /**
+ * @description Type of entity being voted on
+ * @enum {string}
+ */
+ entityType: "PROJECT" | "CROWDFUNDING_CAMPAIGN" | "HACKATHON_SUBMISSION" | "GRANT";
+ /**
+ * @description Type of vote (UPVOTE or DOWNVOTE)
+ * @default UPVOTE
+ * @enum {string}
+ */
+ voteType: "UPVOTE" | "DOWNVOTE";
+ /**
+ * @description Weight of the vote
+ * @default 1
+ */
+ weight: number;
+ };
+ CreateBlogPostDto: {
+ /**
+ * @description Blog post title
+ * @example Getting Started with Stellar Smart Contracts
+ */
+ title: string;
+ /**
+ * @description Blog post content in markdown format
+ * @example # Introduction
+ *
+ * This tutorial will teach you...
+ */
+ content: string;
+ /**
+ * @description Short excerpt or summary
+ * @example Learn how to build your first smart contract on Stellar
+ */
+ excerpt?: string;
+ /**
+ * @description Cover image URL
+ * @example https://res.cloudinary.com/demo/image/upload/v1234567890/post-cover.jpg
+ */
+ coverImage?: string;
+ /**
+ * @description Post status
+ * @default DRAFT
+ * @example DRAFT
+ * @enum {string}
+ */
+ status: "DRAFT" | "PUBLISHED" | "ARCHIVED" | "SCHEDULED";
+ /**
+ * @description Post tags
+ * @example [
+ * "smart-contracts",
+ * "soroban",
+ * "tutorial"
+ * ]
+ */
+ tags?: string[];
+ /**
+ * @description Post categories
+ * @example [
+ * "tutorials"
+ * ]
+ */
+ categories?: string[];
+ /**
+ * @description Mark as featured post
+ * @default false
+ * @example false
+ */
+ isFeatured: boolean;
+ /**
+ * @description Pin post to top
+ * @default false
+ * @example false
+ */
+ isPinned: boolean;
+ /**
+ * @description Reading time in minutes (auto-calculated if not provided)
+ * @example 5
+ */
+ readingTime?: number;
+ /** @description SEO title (overrides post title) */
+ seoTitle?: string;
+ /** @description SEO meta description */
+ seoDescription?: string;
+ /**
+ * @description SEO keywords
+ * @example [
+ * "stellar",
+ * "blockchain",
+ * "smart contracts"
+ * ]
+ */
+ seoKeywords?: string[];
+ /**
+ * @description Schedule publication date (for SCHEDULED status)
+ * @example 2025-12-31T10:00:00Z
+ */
+ scheduledFor?: string;
+ /**
+ * @description Generate AI content (excerpt, reading time, SEO, tags, category) if not provided
+ * @default false
+ * @example true
+ */
+ generateAI: boolean;
+ };
+ UpdateBlogPostDto: Record;
+ MetricDataDto: {
+ /**
+ * @description The metric value
+ * @example 1250
+ */
+ value: number;
+ /**
+ * @description Percentage change
+ * @example 12.5
+ */
+ change: number;
+ /**
+ * @description Type of change
+ * @example positive
+ * @enum {string}
+ */
+ changeType: "positive" | "negative" | "neutral";
+ /**
+ * @description Metric label
+ * @example Total Users
+ */
+ label: string;
+ /**
+ * @description Additional description
+ * @example Active users in the platform
+ */
+ description?: string;
+ };
+ HackathonMetricDataDto: {
+ /**
+ * @description The metric value
+ * @example 1250
+ */
+ value: number;
+ /**
+ * @description Percentage change
+ * @example 12.5
+ */
+ change: number;
+ /**
+ * @description Type of change
+ * @example positive
+ * @enum {string}
+ */
+ changeType: "positive" | "negative" | "neutral";
+ /**
+ * @description Metric label
+ * @example Total Users
+ */
+ label: string;
+ /**
+ * @description Additional description
+ * @example Active users in the platform
+ */
+ description?: string;
+ /**
+ * @description Additional hackathon info
+ * @example 3 active, 7 upcoming
+ */
+ additionalInfo?: string;
+ };
+ OverviewMetricsDto: {
+ totalUsers: components["schemas"]["MetricDataDto"];
+ organizations: components["schemas"]["MetricDataDto"];
+ projects: components["schemas"]["MetricDataDto"];
+ hackathons: components["schemas"]["HackathonMetricDataDto"];
+ };
+ OverviewChartDataDto: {
+ data: components["schemas"]["ChartDataPointDto"][];
+ /**
+ * @description Time range for the chart
+ * @example 7d
+ * @enum {string}
+ */
+ timeRange: "7d" | "30d" | "90d";
+ };
+ AdminOverviewResponseDto: {
+ metrics: components["schemas"]["OverviewMetricsDto"];
+ chart: components["schemas"]["OverviewChartDataDto"];
+ /**
+ * @description Last updated timestamp
+ * @example 2025-12-26T10:30:00Z
+ */
+ lastUpdated: string;
+ };
+ AdminCrowdfundingRejectDto: {
+ /**
+ * @description Reason for rejection
+ * @example Campaign does not meet requirements
+ */
+ reason?: string;
+ };
+ AdminCrowdfundingRequestRevisionDto: {
+ /**
+ * @description Message for the creator explaining requested revisions
+ * @example Please update the project description to be more detailed
+ */
+ message: string;
+ /**
+ * @description Optional structured reasons
+ * @example [
+ * "incomplete_description",
+ * "missing_team_info"
+ * ]
+ */
+ reasons?: string[];
+ };
+ AdminCrowdfundingNoteDto: {
+ /**
+ * @description Short admin note or comment
+ * @example Reviewed initial submission
+ */
+ note: string;
+ };
+ AdminCrowdfundingAssignDto: {
+ /**
+ * @description Reviewer (user) id to assign
+ * @example 550e8400-e29b-41d4-a716-446655440000
+ */
+ reviewerId: string;
+ };
+ ApproveMilestoneDto: {
+ /**
+ * @description Optional approval notes
+ * @example Milestone completed successfully
+ */
+ notes?: string;
+ };
+ RejectMilestoneDto: {
+ /**
+ * @description Rejection reason
+ * @example Incomplete deliverables
+ */
+ reason: string;
+ /**
+ * @description Detailed feedback for rejection
+ * @example The submitted work does not meet the project requirements. Please revise and resubmit.
+ */
+ feedback: string;
+ /**
+ * @description Deadline for resubmission
+ * @example 2025-02-01
+ */
+ resubmissionDeadline?: string;
+ };
+ RequestMilestoneResubmissionDto: {
+ /**
+ * @description Feedback explaining what needs to change
+ * @example Please improve the documentation and add more test cases
+ */
+ feedback: string;
+ /**
+ * @description Deadline for resubmission
+ * @example 2025-02-15
+ */
+ resubmissionDeadline: string;
+ };
+ AddMilestoneReviewNoteDto: {
+ /**
+ * @description Review note content
+ * @example Reviewed the code quality and found it satisfactory
+ */
+ note: string;
+ };
+ ManualEscrowActionDto: {
+ /**
+ * @description Type of escrow action to execute
+ * @example RELEASE
+ * @enum {string}
+ */
+ action: "RELEASE" | "REFUND" | "PAUSE" | "RESUME";
+ /**
+ * @description Amount to transfer (for RELEASE/REFUND)
+ * @example 1000
+ */
+ amount?: number;
+ /**
+ * @description Optional notes for this action
+ * @example Releasing funds for completed milestone
+ */
+ notes?: string;
+ /**
+ * @description Recipient address (for RELEASE/REFUND)
+ * @example GAXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
+ */
+ recipientAddress?: string;
+ };
+ AssignDisputeDto: {
+ /**
+ * @description Admin user ID to assign dispute to
+ * @example 550e8400-e29b-41d4-a716-446655440000
+ */
+ adminId: string;
+ };
+ AddDisputeNoteDto: {
+ /**
+ * @description Message content
+ * @example Contacted the project creator for more information
+ */
+ message: string;
+ /**
+ * @description Whether this is an internal note (not visible to parties)
+ * @example false
+ */
+ isInternal?: boolean;
+ };
+ ResolveDisputeDto: {
+ /**
+ * @description Resolution type
+ * @example APPROVED_WITH_CONDITIONS
+ * @enum {string}
+ */
+ resolution: "APPROVED_WITH_CONDITIONS" | "REQUIRE_RESUBMISSION" | "PARTIAL_REFUND" | "FULL_REFUND" | "DISMISSED" | "ARBITRATION";
+ /**
+ * @description Detailed notes explaining the resolution
+ * @example Approved with condition that milestone is completed by next week
+ */
+ resolutionNotes: string;
+ };
+ EscalateDisputeDto: {
+ /**
+ * @description Reason for escalation to arbitration
+ * @example Parties cannot agree on resolution terms
+ */
+ reason: string;
+ };
+ RejectManualProjectDto: Record;
+ RequestManualProjectChangesDto: Record;
+ RejectProjectEditDto: Record;
+ AdminWalletStatsDto: {
+ totalWallets: components["schemas"]["MetricDataDto"];
+ activatedWallets: components["schemas"]["MetricDataDto"];
+ inactiveWallets: components["schemas"]["MetricDataDto"];
+ };
+ AdminWalletUserDto: {
+ id: string;
+ name: string;
+ email: string;
+ username?: string;
+ image?: string;
+ };
+ AdminWalletListItemDto: {
+ id: string;
+ publicKey: string;
+ isActivated: boolean;
+ /** Format: date-time */
+ createdAt: string;
+ users: components["schemas"]["AdminWalletUserDto"][];
+ };
+ AdminWalletListResponseDto: {
+ wallets: components["schemas"]["AdminWalletListItemDto"][];
+ total: number;
+ page: number;
+ limit: number;
+ totalPages: number;
+ };
+ AdminWalletBalanceDto: {
+ balance: string;
+ assetCode: string;
+ assetIssuer?: string;
+ assetType: string;
+ };
+ AdminWalletDetailsDto: {
+ id: string;
+ publicKey: string;
+ isActivated: boolean;
+ /** Format: date-time */
+ createdAt: string;
+ balances: components["schemas"]["AdminWalletBalanceDto"][];
+ users: components["schemas"]["AdminWalletUserDto"][];
+ };
+ ReviewWindowDto: {
+ /** @example 1 */
+ minBusinessDays: number;
+ /** @example 3 */
+ maxBusinessDays: number;
+ /** @description ISO timestamp by which the review is expected to complete. */
+ estimatedCompletionAt: string;
+ };
+ DeclineDetailsDto: {
+ /** @description Human-readable reason from Didit, if available. */
+ reason?: string;
+ /**
+ * @description Whether the user is allowed to start a new verification.
+ * @example true
+ */
+ canRetry: boolean;
+ };
+ VerificationStatusDto: {
+ /**
+ * @description Normalized verification state. Frontend should hide the verify button unless this is one of: not_started, declined, abandoned, expired.
+ * @enum {string}
+ */
+ state: "not_started" | "in_progress" | "in_review" | "approved" | "declined" | "abandoned" | "expired";
+ /** @description Whether the user can start a new verification session. */
+ canStartNew: boolean;
+ /** @description Polite, render-ready copy summarising the current state. */
+ message: string;
+ /** @description ISO timestamp when the user became verified. */
+ verifiedAt?: string;
+ /** @description ISO timestamp of the last status transition. */
+ reviewedAt?: string;
+ /** @description Estimated review window. Present only when state === "in_review". */
+ reviewWindow?: components["schemas"]["ReviewWindowDto"];
+ /** @description Decline details. Present only when state === "declined". */
+ decline?: components["schemas"]["DeclineDetailsDto"];
+ };
+ PricingPreviewResponseDto: {
+ /** @description Effective rate applied to this preview. */
+ feeBps: number;
+ /** @description Fee in stroops. String to preserve i128 precision. */
+ feeStroops: string;
+ /** @description Pool released to winners; equals the requested budget. */
+ poolStroops: string;
+ /** @description budgetStroops + feeStroops; what the organizer signs for. */
+ totalDepositStroops: string;
+ /** @description Audit label for the rate choice: default | foundation-tier | sales-override:* | waiver:*. */
+ reason: string;
+ };
+ AiUsageResponseDto: {
+ /** @description Subscription tier (FREE | PRO | BYOK | ENTERPRISE). */
+ tier: string;
+ /** @description Monthly billable-call limit, or null for unlimited tiers. */
+ limit: number | null;
+ /** @description Billable calls used this month. */
+ used: number;
+ /** @description Remaining billable calls, or null for unlimited. */
+ remaining: number | null;
+ /**
+ * Format: date-time
+ * @description Window reset (UTC).
+ */
+ resetAt: string;
+ /** @description Total spend this month as a decimal string (incl. clarify). */
+ costUsdThisMonth: string;
+ };
+ StaffPrincipalDto: {
+ id: string;
+ email: string;
+ name: string;
+ role: string;
+ /** @description Whether an authenticator (TOTP) is activated */
+ totpEnabled: boolean;
+ /** @description ISO timestamp of the last successful step-up */
+ lastStepUpAt: string | null;
+ };
+ MeResponseDto: {
+ staff: components["schemas"]["StaffPrincipalDto"];
+ };
+ AnalyticsTotalsDto: {
+ users: number;
+ organizations: number;
+ /** @description All pillars combined */
+ programs: number;
+ disputes: number;
+ wallets: number;
+ };
+ ProgramsByPillarDto: {
+ hackathons: number;
+ bounties: number;
+ grants: number;
+ crowdfunding: number;
+ };
+ AnalyticsBucketDto: {
+ label: string;
+ count: number;
+ };
+ AnalyticsTrendPointDto: {
+ /** @description UTC day, YYYY-MM-DD */
+ date: string;
+ count: number;
+ };
+ AnalyticsDto: {
+ totals: components["schemas"]["AnalyticsTotalsDto"];
+ /** @description New users in the last 30 days */
+ newUsers30d: number;
+ programsByPillar: components["schemas"]["ProgramsByPillarDto"];
+ disputesByStatus: components["schemas"]["AnalyticsBucketDto"][];
+ crowdfundingByStatus: components["schemas"]["AnalyticsBucketDto"][];
+ /** @description New users per day, last 14 days */
+ newUsersTrend: components["schemas"]["AnalyticsTrendPointDto"][];
+ };
+ OverviewDto: {
+ users: number;
+ organizations: number;
+ hackathons: number;
+ crowdfundingCampaigns: number;
+ /** @description Disputes in OPEN status */
+ openDisputes: number;
+ };
+ AdminUserListItemDto: {
+ id: string;
+ name: string;
+ email: string;
+ /** @description Profile photo URL, when set */
+ image: string | null;
+ username: string | null;
+ role: string | null;
+ /** @enum {string} */
+ status: "active" | "banned";
+ /** @description ISO timestamp the user joined */
+ joined: string;
+ };
+ PaginatedUsersDto: {
+ items: components["schemas"]["AdminUserListItemDto"][];
+ page: number;
+ limit: number;
+ total: number;
+ totalPages: number;
+ };
+ AdminUserDetailDto: {
+ id: string;
+ name: string;
+ email: string;
+ /** @description Profile photo URL, when set */
+ image: string | null;
+ username: string | null;
+ role: string | null;
+ /** @enum {string} */
+ status: "active" | "banned";
+ /** @description Reason, when banned */
+ banReason: string | null;
+ /** @description Identity (KYC) verification status, when known */
+ verification: string | null;
+ /** @description Public key of the user's abstracted wallet, when one exists */
+ walletAddress: string | null;
+ /** @description Number of organizations the user belongs to */
+ organizations: number;
+ /** @description ISO timestamp the user joined */
+ joined: string;
+ };
+ AdminUserOrganizationDto: {
+ id: string;
+ name: string;
+ slug: string | null;
+ /** @description The user's role in this organization */
+ role: string;
+ /** @description ISO timestamp the user joined the organization */
+ joinedAt: string;
+ };
+ AdminUserWalletBalanceDto: {
+ /** @description On-chain balance, as a decimal string */
+ balance: string;
+ /** @description Asset code, e.g. XLM or USDC */
+ assetCode: string;
+ /** @description Asset issuer (null for native XLM) */
+ assetIssuer: string | null;
+ /** @description Stellar asset type, e.g. native or credit_alphanum4 */
+ assetType: string;
+ /** @description Estimated USD value, when priced */
+ usdValue: number | null;
+ };
+ AdminUserWalletDto: {
+ /** @description Whether the user has an abstracted wallet */
+ hasWallet: boolean;
+ /** @description Stellar public key (G-address) */
+ address: string | null;
+ /** @description Whether the on-chain account is activated */
+ isActivated: boolean;
+ /** @description ISO timestamp the wallet was created */
+ createdAt: string | null;
+ /** @description Live on-chain balances. Empty when the account is unfunded or Horizon is unreachable. */
+ balances: components["schemas"]["AdminUserWalletBalanceDto"][];
+ };
+ BanUserDto: {
+ /** @description true to ban, false to lift the ban */
+ banned: boolean;
+ /** @description Reason for the ban (recorded in the audit log) */
+ reason?: string;
+ };
+ BanUserResponseDto: {
+ id: string;
+ banned: boolean;
+ };
+ AdminOrgListItemDto: {
+ id: string;
+ name: string;
+ slug: string | null;
+ /** @description Member count */
+ members: number;
+ /** @description Programs run by the org (hackathons + bounties) */
+ programs: number;
+ /** @description ISO timestamp the org was suspended, or null if active */
+ suspendedAt: string | null;
+ /** @description ISO timestamp the org was created */
+ created: string;
+ };
+ PaginatedOrganizationsDto: {
+ items: components["schemas"]["AdminOrgListItemDto"][];
+ page: number;
+ limit: number;
+ total: number;
+ totalPages: number;
+ };
+ AdminOrgDetailDto: {
+ id: string;
+ name: string;
+ slug: string | null;
+ /** @description Member count */
+ members: number;
+ /** @description Hackathons run by the org */
+ hackathons: number;
+ /** @description Bounties run by the org */
+ bounties: number;
+ /** @description ISO timestamp the org was suspended, or null if active */
+ suspendedAt: string | null;
+ suspendedByEmail: string | null;
+ suspensionReason: string | null;
+ /** @description ISO timestamp the org was created */
+ created: string;
+ };
+ UpdateOrgDto: {
+ name?: string;
+ /** @description URL slug (lowercase letters, numbers, hyphens) */
+ slug?: string;
+ /** @description Logo URL */
+ logo?: string;
+ /** @description Whether org announcements are enabled */
+ announcementsEnabled?: boolean;
+ };
+ OrgActionResponseDto: {
+ id: string;
+ name: string;
+ slug: string | null;
+ announcementsEnabled: boolean;
+ };
+ SuspendOrgDto: {
+ /** @description Why the organization is being suspended (shown in audit log) */
+ reason: string;
+ };
+ OrgSuspensionResponseDto: {
+ id: string;
+ name: string;
+ slug: string | null;
+ /** @description ISO timestamp the org was suspended, or null if active */
+ suspendedAt: string | null;
+ suspensionReason: string | null;
+ };
+ ReinstateOrgDto: {
+ /** @description Optional note recorded with the reinstatement */
+ note?: string;
+ };
+ AdminProgramListItemDto: {
+ id: string;
+ /** @enum {string} */
+ type: "hackathon" | "bounty" | "grant" | "crowdfunding";
+ title: string;
+ /** @description Pillar-specific lifecycle status */
+ status: string;
+ /** @description Owning organization name, when the pillar has one */
+ organization: string | null;
+ /** @description Marketplace featured boost (always false for pillars without it) */
+ isFeatured: boolean;
+ /** @description ISO timestamp the program was created */
+ created: string;
+ };
+ PaginatedProgramsDto: {
+ items: components["schemas"]["AdminProgramListItemDto"][];
+ page: number;
+ limit: number;
+ total: number;
+ totalPages: number;
+ };
+ AdminProgramDetailDto: {
+ id: string;
+ /** @enum {string} */
+ type: "hackathon" | "bounty" | "grant" | "crowdfunding";
+ title: string;
+ status: string;
+ organization: string | null;
+ description: string | null;
+ /** @description ISO timestamp the program was created */
+ created: string;
+ };
+ SetFeaturedDto: {
+ /**
+ * @description Which pillar the id is in.
+ * @enum {string}
+ */
+ type: "hackathon" | "bounty" | "grant" | "crowdfunding";
+ /** @description Feature (true) or unfeature (false) the program. */
+ featured: boolean;
+ };
+ ProgramActionResponseDto: {
+ id: string;
+ /** @enum {string} */
+ type: "hackathon" | "bounty" | "grant" | "crowdfunding";
+ /** @description Status after the action */
+ status: string;
+ /** @description Whether the program is featured (false if unsupported) */
+ isFeatured: boolean;
+ };
+ SetProgramStatusDto: {
+ /**
+ * @description Which pillar the id is in.
+ * @enum {string}
+ */
+ type: "hackathon" | "bounty" | "grant" | "crowdfunding";
+ /** @description Target lifecycle status. Must be one of the admin-settable states for the pillar (archive/suspend/cancel-type). */
+ status: string;
+ };
+ AdminDisputeListItemDto: {
+ id: string;
+ /** @description Title of the campaign the dispute is against */
+ campaign: string | null;
+ /** @description Reported reason */
+ reason: string;
+ /** @description Dispute lifecycle status */
+ status: string;
+ /** @description Reporter name */
+ reportedBy: string | null;
+ /** @description Assigned staff name, when assigned */
+ assignedTo: string | null;
+ /** @description ISO timestamp the dispute was opened */
+ created: string;
+ };
+ PaginatedDisputesDto: {
+ items: components["schemas"]["AdminDisputeListItemDto"][];
+ page: number;
+ limit: number;
+ total: number;
+ totalPages: number;
+ };
+ AdminDisputeDetailDto: {
+ id: string;
+ campaign: string | null;
+ reason: string;
+ status: string;
+ description: string;
+ /** @description Title of the disputed milestone, if the dispute names one */
+ milestone: string | null;
+ /** @description Evidence links the reporter provided */
+ evidenceLinks: string[];
+ /** @description Evidence file references the reporter provided */
+ evidenceFiles: string[];
+ reportedBy: string | null;
+ /** @description Assigned staff email, when assigned */
+ assignedTo: string | null;
+ /** @description Assigned staff id (for pre-selecting the assignee) */
+ assignedToStaffId: string | null;
+ /** @description Resolution outcome */
+ resolution: string | null;
+ resolutionNotes: string | null;
+ /** @description ISO timestamp the dispute was opened */
+ created: string;
+ };
+ AdminV2AssignDisputeDto: {
+ /** @description staff_users id to assign the dispute to, or null to unassign. */
+ assignedToStaffId: string | null;
+ };
+ DisputeAssignmentResponseDto: {
+ id: string;
+ /** @description Assigned staff email, or null when unassigned */
+ assignedTo: string | null;
+ assignedAt: string | null;
+ };
+ NoteDisputeDto: {
+ /** @description Internal note recorded on the dispute audit trail. */
+ note: string;
+ };
+ DisputeNoteResponseDto: {
+ id: string;
+ note: string;
+ /** @description ISO timestamp the note was recorded */
+ createdAt: string;
+ };
+ AdminV2ResolveDisputeDto: {
+ /**
+ * @description Resolution outcome recorded on the dispute.
+ * @enum {string}
+ */
+ resolution: "APPROVED_WITH_CONDITIONS" | "REQUIRE_RESUBMISSION" | "PARTIAL_REFUND" | "FULL_REFUND" | "DISMISSED" | "ARBITRATION";
+ /** @description Resolution notes shown to the reporter and campaign creator. */
+ resolutionNotes: string;
+ };
+ DisputeActionResponseDto: {
+ id: string;
+ /** @description New dispute lifecycle status */
+ status: string;
+ /** @description Resolution outcome, when resolved */
+ resolution: string | null;
+ /** @description Whether the dispute is escalated to arbitration */
+ escalatedToArbitration: boolean;
+ };
+ AdminV2EscalateDisputeDto: {
+ /** @description Why this dispute is being escalated to arbitration. Recorded in the audit log. */
+ reason: string;
+ };
+ AdminMoneyEntryDto: {
+ id: string;
+ /** @enum {string} */
+ kind: "escrow" | "payout";
+ /** @description On-chain reference: tx hash or destination key */
+ reference: string;
+ /** @description What the movement is (tx type, or "Payout") */
+ label: string;
+ /** @description Amount, as a precise string */
+ amount: string;
+ /** @description Currency, if known */
+ currency: string | null;
+ /** @description Settlement status */
+ status: string;
+ /** @description ISO timestamp the movement was created */
+ created: string;
+ };
+ PaginatedMoneyDto: {
+ items: components["schemas"]["AdminMoneyEntryDto"][];
+ page: number;
+ limit: number;
+ total: number;
+ totalPages: number;
+ };
+ EscrowRequestDto: {
+ id: string;
+ /** @enum {string} */
+ kind: "release" | "refund";
+ campaignId: string;
+ milestoneId: string | null;
+ /** @description Amount as a string (decimal-safe) */
+ amount: string;
+ currency: string;
+ toAddress: string | null;
+ reason: string | null;
+ /** @description PROPOSED | APPROVED | REJECTED | EXECUTED */
+ status: string;
+ /** @description Maker email */
+ proposedBy: string;
+ /** @description Checker email */
+ decidedBy: string | null;
+ decidedAt: string | null;
+ decisionNote: string | null;
+ /** @description Settled tx hash */
+ txHash: string | null;
+ executedBy: string | null;
+ executedAt: string | null;
+ created: string;
+ };
+ EscrowRequestListResponseDto: {
+ items: components["schemas"]["EscrowRequestDto"][];
+ };
+ ProposeEscrowRequestDto: {
+ /** @enum {string} */
+ kind: "release" | "refund";
+ /** @description Campaign whose escrow is being acted on */
+ campaignId: string;
+ /** @description Milestone id, for a milestone release */
+ milestoneId?: string;
+ /** @description Amount to move */
+ amount: number;
+ /** @default USDC */
+ currency: string;
+ /** @description Destination address (for a release) */
+ toAddress?: string;
+ /** @description Why the funds are being moved */
+ reason?: string;
+ };
+ DecideEscrowRequestDto: {
+ /** @enum {string} */
+ decision: "approve" | "reject";
+ /** @description Note recorded with the decision */
+ note?: string;
+ };
+ ExecuteEscrowRequestDto: {
+ /** @description Hash of the settled, offline-signed release/refund tx */
+ txHash: string;
+ };
+ PayoutRequestDto: {
+ id: string;
+ destinationPublicKey: string;
+ /** @description Amount as a string (decimal-safe) */
+ amount: string;
+ currency: string;
+ memo: string | null;
+ memoType: string | null;
+ reason: string | null;
+ /** @description PROPOSED | APPROVED | AWAITING_SIGNATURE | REJECTED | EXECUTED */
+ status: string;
+ /** @description Platform source address the payout is sent from */
+ sourcePublicKey: string | null;
+ /** @description Unsigned XDR awaiting an offline signature (when AWAITING_SIGNATURE) */
+ unsignedXdr: string | null;
+ /** @description Maker email */
+ proposedBy: string;
+ /** @description Checker email */
+ decidedBy: string | null;
+ decidedAt: string | null;
+ decisionNote: string | null;
+ /** @description Settled tx hash */
+ txHash: string | null;
+ executedBy: string | null;
+ executedAt: string | null;
+ created: string;
+ };
+ PayoutRequestListResponseDto: {
+ items: components["schemas"]["PayoutRequestDto"][];
+ };
+ ProposePayoutRequestDto: {
+ /** @description Stellar destination address (G…) */
+ destinationPublicKey: string;
+ /** @description Platform Stellar source address (G…) the payout is sent FROM. Defaults to the configured platform payout wallet (PLATFORM_ADDRESS). */
+ sourcePublicKey?: string;
+ /** @description Amount to send */
+ amount: number;
+ /** @default USDC */
+ currency: string;
+ /** @description Optional memo (required by some exchanges) */
+ memo?: string;
+ /** @enum {string} */
+ memoType?: "text" | "id";
+ /** @description Why the payout is being sent */
+ reason?: string;
+ };
+ DecidePayoutRequestDto: {
+ /** @enum {string} */
+ decision: "approve" | "reject";
+ /** @description Note recorded with the decision */
+ note?: string;
+ };
+ BuildXdrResponseDto: {
+ /** @description Unsigned transaction XDR to sign offline (Stellar Lab / hardware / multisig). */
+ unsignedXdr: string;
+ /**
+ * @description Network the transaction targets.
+ * @enum {string}
+ */
+ network: "public" | "testnet";
+ /** @description Network passphrase to select when signing. */
+ passphrase: string;
+ /** @description Source G-address that must sign this transaction. */
+ source: string;
+ /** @description Deep-link to the Stellar Lab Sign Transaction page. Paste the copied XDR there. */
+ labUrl: string;
+ };
+ SubmitPayoutSignedXdrDto: {
+ /** @description Fully-signed payout XDR returned by the wallet / multisig coordinator. Verified against the built unsigned XDR before broadcast. */
+ signedXdr: string;
+ };
+ ExecutePayoutRequestDto: {
+ /** @description Hash of the settled, offline-signed payout tx */
+ txHash: string;
+ };
+ AdminContentListItemDto: {
+ id: string;
+ title: string;
+ slug: string;
+ /** @description Publishing status */
+ status: string;
+ /** @description Author name */
+ author: string;
+ /** @description View count */
+ views: number;
+ /** @description Whether the post is archived (soft-deleted) */
+ archived: boolean;
+ /** @description ISO timestamp the post was created */
+ created: string;
+ };
+ PaginatedContentDto: {
+ items: components["schemas"]["AdminContentListItemDto"][];
+ page: number;
+ limit: number;
+ total: number;
+ totalPages: number;
+ };
+ AdminContentDetailDto: {
+ id: string;
+ title: string;
+ slug: string;
+ /** @description Post body in MDX (markdown + JSX) */
+ content: string;
+ excerpt: string | null;
+ coverImage: string | null;
+ /** @description Publishing status */
+ status: string;
+ categories: string[];
+ /** @description Tag names */
+ tags: string[];
+ isFeatured: boolean;
+ isPinned: boolean;
+ seoTitle: string | null;
+ seoDescription: string | null;
+ seoKeywords: string[];
+ /** @description ISO timestamp for a scheduled publish */
+ scheduledFor: string | null;
+ /** @description Whether the post is archived (soft-deleted) */
+ archived: boolean;
+ created: string;
+ updated: string;
+ };
+ ContentMutationResponseDto: {
+ id: string;
+ /** @description Generated (or existing) URL slug */
+ slug: string;
+ /** @description Publishing status */
+ status: string;
+ };
+ UpdateContentDto: {
+ /**
+ * @description Blog post title
+ * @example Getting Started with Stellar Smart Contracts
+ */
+ title?: string;
+ /**
+ * @description Blog post content in markdown format
+ * @example # Introduction
+ *
+ * This tutorial will teach you...
+ */
+ content?: string;
+ /**
+ * @description Short excerpt or summary
+ * @example Learn how to build your first smart contract on Stellar
+ */
+ excerpt?: string;
+ /**
+ * @description Cover image URL
+ * @example https://res.cloudinary.com/demo/image/upload/v1234567890/post-cover.jpg
+ */
+ coverImage?: string;
+ /**
+ * @description Post status
+ * @default DRAFT
+ * @example DRAFT
+ * @enum {string}
+ */
+ status: "DRAFT" | "PUBLISHED" | "ARCHIVED" | "SCHEDULED";
+ /**
+ * @description Post tags
+ * @example [
+ * "smart-contracts",
+ * "soroban",
+ * "tutorial"
+ * ]
+ */
+ tags?: string[];
+ /**
+ * @description Post categories
+ * @example [
+ * "tutorials"
+ * ]
+ */
+ categories?: string[];
+ /**
+ * @description Mark as featured post
+ * @default false
+ * @example false
+ */
+ isFeatured: boolean;
+ /**
+ * @description Pin post to top
+ * @default false
+ * @example false
+ */
+ isPinned: boolean;
+ /**
+ * @description Reading time in minutes (auto-calculated if not provided)
+ * @example 5
+ */
+ readingTime?: number;
+ /** @description SEO title (overrides post title) */
+ seoTitle?: string;
+ /** @description SEO meta description */
+ seoDescription?: string;
+ /**
+ * @description SEO keywords
+ * @example [
+ * "stellar",
+ * "blockchain",
+ * "smart contracts"
+ * ]
+ */
+ seoKeywords?: string[];
+ /**
+ * @description Schedule publication date (for SCHEDULED status)
+ * @example 2025-12-31T10:00:00Z
+ */
+ scheduledFor?: string;
+ /**
+ * @description Generate AI content (excerpt, reading time, SEO, tags, category) if not provided
+ * @default false
+ * @example true
+ */
+ generateAI: boolean;
+ };
+ SetPublishedDto: {
+ /** @description true publishes the post; false unpublishes (back to draft). */
+ published: boolean;
+ };
+ ContentActionResponseDto: {
+ id: string;
+ /** @description Publishing status after the action */
+ status: string;
+ /** @description Whether the post is currently published */
+ published: boolean;
+ /** @description Whether the post is archived (soft-deleted) */
+ archived: boolean;
+ };
+ ArchiveContentDto: {
+ /** @description Why the post is being archived. Recorded in the audit log. */
+ reason?: string;
+ };
+ ChecklistItemDto: {
+ id: string;
+ /** @description What the reviewer should verify */
+ label: string;
+ /** @description Optional help text */
+ description: string | null;
+ /** @description Whether this is a required check */
+ required: boolean;
+ /** @description Position in the list */
+ orderIndex: number;
+ };
+ CreateChecklistItemDto: {
+ label: string;
+ description?: string;
+ /** @default false */
+ required: boolean;
+ };
+ ReorderChecklistDto: {
+ /** @description All active item ids in the desired order (a permutation). */
+ orderedIds: string[];
+ };
+ UpdateChecklistItemDto: {
+ label?: string;
+ /** @description Pass an empty string to clear the help text */
+ description?: string | null;
+ required?: boolean;
+ };
+ AdminCrowdfundingListItemDto: {
+ id: string;
+ title: string;
+ /** @description v2 lifecycle status */
+ status: string;
+ /** @description Creator name */
+ creator: string | null;
+ /** @description Funding goal */
+ fundingGoal: number;
+ /** @description ISO timestamp the campaign was submitted for review */
+ submittedForReviewAt: string | null;
+ /** @description ISO timestamp the campaign was created */
+ created: string;
+ };
+ PaginatedCrowdfundingDto: {
+ items: components["schemas"]["AdminCrowdfundingListItemDto"][];
+ page: number;
+ limit: number;
+ total: number;
+ totalPages: number;
+ };
+ AdminCrowdfundingProjectDto: {
+ description: string | null;
+ summary: string | null;
+ /** @description Vision statement */
+ vision: string | null;
+ /** @description Markdown details / pitch */
+ details: string | null;
+ category: string | null;
+ tags: string[];
+ /** @description Tech stack */
+ techStack: string[];
+ /** @description Team members ({ name?, role, ... }) */
+ teamMembers: {
+ [key: string]: unknown;
+ }[];
+ /** @description Social links ({ platform, url }) */
+ socialLinks: {
+ [key: string]: unknown;
+ }[] | null;
+ /** @description Contact ({ primary, backup }) */
+ contact: {
+ [key: string]: unknown;
+ } | null;
+ githubUrl: string | null;
+ gitlabUrl: string | null;
+ bitbucketUrl: string | null;
+ projectWebsite: string | null;
+ liveUrl: string | null;
+ docsUrl: string | null;
+ demoVideo: string | null;
+ pitchVideoUrl: string | null;
+ whitepaperUrl: string | null;
+ logo: string | null;
+ banner: string | null;
+ thumbnail: string | null;
+ screenshots: string[];
+ };
+ AdminCrowdfundingReviewDto: {
+ /** @description NOTE | REQUEST_REVISION | APPROVED | REJECTED */
+ action: string;
+ reason: string | null;
+ /** @description Reviewer name (User) or null when a staff member reviewed */
+ reviewer: string | null;
+ /** @description Staff email when a staff member reviewed */
+ reviewerStaffEmail: string | null;
+ createdAt: string;
+ };
+ AdminCrowdfundingMilestoneDto: {
+ id: string;
+ title: string;
+ /** @description Position in the release sequence */
+ orderIndex: number;
+ /** @description Planned share of the goal (percent) */
+ fundingPercentage: number;
+ /** @description Planned amount */
+ amount: number;
+ /** @description Off-chain review status */
+ reviewStatus: string;
+ /** @description What the milestone delivers */
+ description: string;
+ /** @description Concrete deliverable */
+ deliverable: string | null;
+ /** @description Acceptance / success criteria */
+ successCriteria: string | null;
+ /** @description Expected delivery date */
+ expectedDeliveryDate: string | null;
+ submittedAt: string | null;
+ /** @description On-chain claim anchor: pending_confirm | confirmed | failed */
+ escrowAnchorStatus: string | null;
+ escrowClaimTxHash: string | null;
+ claimedAt: string | null;
+ };
+ AdminCrowdfundingDetailDto: {
+ id: string;
+ title: string;
+ tagline: string | null;
+ /** @description v2 lifecycle status */
+ status: string;
+ /** @description Creator name */
+ creator: string | null;
+ /** @description Full submitted project content for review */
+ project: components["schemas"]["AdminCrowdfundingProjectDto"];
+ fundingGoal: number;
+ fundingRaised: number;
+ fundingCurrency: string;
+ /** @description Funding deadline */
+ fundingEndDate: string | null;
+ /** @description Total released to the builder so far (across milestones) */
+ totalDisbursed: number;
+ /** @description Per-campaign voting quorum */
+ voteGoal: number;
+ /** @description Builder's wallet (escrow owner) */
+ builderAddress: string | null;
+ /** @description Number of milestones */
+ nMilestones: number | null;
+ /** @description On-chain event id once the escrow is live (FUNDING) */
+ escrowEventId: string | null;
+ /** @description create_event tx hash */
+ escrowTxHash: string | null;
+ escrowSettledLedger: number | null;
+ escrowToken: string | null;
+ /** @description Total escrow budget (stroops/decimal) */
+ escrowBudget: string | null;
+ /** @description Escrow failure code if create_event failed (FAILED) */
+ escrowFailureCode: string | null;
+ escrowFailedAt: string | null;
+ completedAt: string | null;
+ cancelledAt: string | null;
+ /** @description Assigned delegated reviewer (User id), set at approval */
+ assignedReviewerId: string | null;
+ submittedForReviewAt: string | null;
+ reviewedAt: string | null;
+ /** @description ISO timestamp the campaign was created */
+ created: string;
+ /** @description Review history */
+ reviews: components["schemas"]["AdminCrowdfundingReviewDto"][];
+ /** @description Milestones with review + on-chain claim status */
+ milestones: components["schemas"]["AdminCrowdfundingMilestoneDto"][];
+ };
+ ApproveCampaignDto: {
+ /** @description StaffUser id of the delegated reviewer who signs off milestones for this campaign. Must be an active staff member. */
+ delegatedReviewerId: string;
+ /** @description Per-campaign voting quorum. Defaults to the contract default. */
+ voteGoal?: number;
+ /**
+ * @description Bypass community voting and approve straight to launch-ready (REVIEW_APPROVED). Default false: the campaign enters community voting.
+ * @default false
+ */
+ bypassVoting: boolean;
+ };
+ CrowdfundingActionResponseDto: {
+ id: string;
+ /** @description New v2 lifecycle status */
+ status: string;
+ };
+ RejectCampaignDto: {
+ /** @description Reason shown to the builder in the review history. */
+ reason?: string;
+ };
+ RequestRevisionDto: {
+ /** @description What the builder needs to change. Shown in the review history. */
+ reason: string;
+ };
+ TotpEnrollResponseDto: {
+ /** @description Base32 secret, shown once for manual entry */
+ secret: string;
+ /** @description otpauth:// URI for QR enrollment */
+ otpauthUri: string;
+ };
+ TotpCodeDto: {
+ /** @description Six-digit code from the authenticator app */
+ code: string;
+ };
+ OkResponseDto: {
+ /** @default true */
+ ok: boolean;
+ };
+ AdminAuditListItemDto: {
+ id: string;
+ /** @description Email of the staff member who acted */
+ actor: string;
+ /** @description Dotted action name, e.g. "users.ban" */
+ action: string;
+ /** @description Permission resource the action belongs to */
+ resource: string;
+ /** @description Affected entity id */
+ targetId: string | null;
+ /** @description Human note captured with the action (e.g. ban reason) */
+ details: string | null;
+ /** @description ISO timestamp the action was recorded */
+ created: string;
+ };
+ PaginatedAuditDto: {
+ items: components["schemas"]["AdminAuditListItemDto"][];
+ page: number;
+ limit: number;
+ total: number;
+ totalPages: number;
+ };
+ FeatureFlagDto: {
+ /** @description Stable flag key, e.g. "crowdfunding.public_launch" */
+ key: string;
+ /** @description Human description of what the flag gates */
+ description: string;
+ enabled: boolean;
+ /** @description ISO timestamp the flag was last changed */
+ updated: string;
+ };
+ FeatureFlagsResponseDto: {
+ items: components["schemas"]["FeatureFlagDto"][];
+ };
+ ToggleFeatureFlagDto: {
+ /** @description Desired enabled state */
+ enabled: boolean;
+ };
+ StaffListItemDto: {
+ id: string;
+ name: string;
+ email: string;
+ /** @description Staff role token, e.g. "operations" */
+ role: string;
+ /** @description active | disabled */
+ status: string;
+ /** @description Whether the staff has an activated authenticator */
+ totpEnabled: boolean;
+ /** @description ISO timestamp the staff record was created */
+ created: string;
+ };
+ StaffListResponseDto: {
+ items: components["schemas"]["StaffListItemDto"][];
+ };
+ SetRoleDto: {
+ /**
+ * @description The role to assign
+ * @enum {string}
+ */
+ role: "super_admin" | "operations" | "finance" | "compliance" | "content" | "support";
+ };
+ GovernanceProposalDto: {
+ id: string;
+ title: string;
+ description: string | null;
+ /** @description Target contract, e.g. "boundless-events" */
+ contract: string;
+ /** @description Contract action, e.g. "upgrade" */
+ action: string;
+ /** @description Action parameters for the offline signers */
+ params?: {
+ [key: string]: unknown;
+ } | null;
+ /** @description PROPOSED | APPROVED | REJECTED | EXECUTED */
+ status: string;
+ /** @description Email of the maker who proposed */
+ proposedBy: string;
+ /** @description Checker email */
+ decidedBy: string | null;
+ decidedAt: string | null;
+ decisionNote: string | null;
+ /** @description Offline-signed tx hash */
+ txHash: string | null;
+ executedBy: string | null;
+ executedAt: string | null;
+ created: string;
+ };
+ GovernanceListResponseDto: {
+ items: components["schemas"]["GovernanceProposalDto"][];
+ };
+ CreateProposalDto: {
+ title: string;
+ description?: string;
+ /** @description Target contract */
+ contract: string;
+ /** @description Contract action */
+ action: string;
+ params?: {
+ [key: string]: unknown;
+ };
+ };
+ DecideProposalDto: {
+ /** @enum {string} */
+ decision: "approve" | "reject";
+ /** @description Note recorded with the decision */
+ note?: string;
+ };
+ ExecuteProposalDto: {
+ /** @description Hash of the offline-signed, executed transaction */
+ txHash: string;
+ };
+ SupportedTokenDto: {
+ id: string;
+ address: string;
+ symbol: string | null;
+ label: string | null;
+ logoUrl: string | null;
+ /** @description Last observed on-chain whitelist state. */
+ lastKnownOnChain: boolean;
+ createdAt: string;
+ };
+ SyncTokensResultDto: {
+ /** @description Number of token rows created or updated. */
+ applied: number;
+ /** @description Tokens seen on-chain (whitelist size for state sync, events scanned for the events fallback). */
+ total: number;
+ /**
+ * @description Which mechanism ran: authoritative state enumeration, or the events fallback when the contract predates the enumerable index.
+ * @enum {string}
+ */
+ source: "state" | "events";
+ };
+ RegisterTokenDto: {
+ /** @description Stellar Asset Contract (C...) address of the token to whitelist as an escrow denomination. */
+ token: string;
+ /** @description Display symbol, e.g. "USDC". */
+ symbol?: string;
+ /** @description Human label shown in the portal. */
+ label?: string;
+ /** @description Hosted logo image URL, shown next to the token on consumer surfaces. */
+ logoUrl?: string;
+ };
+ PauseStateDto: {
+ /** @description Live on-chain pause flag for the events contract. */
+ paused: boolean;
+ };
+ ContractOpXdrDto: {
+ /** @description AdminContractOp row id tracking this op. */
+ opId: string;
+ /** @enum {string} */
+ intent: "REGISTER_TOKEN" | "DEREGISTER_TOKEN" | "PAUSE" | "UNPAUSE";
+ /** @description On-chain contract admin G-address. This is the transaction source and the account that must sign at the Lab. */
+ source: string;
+ /** @description Unsigned transaction XDR for the admin to sign. */
+ unsignedXdr: string;
+ /** @description Stellar Lab "Sign Transaction" deep link. */
+ labUrl: string;
+ /** @enum {string} */
+ network: "public" | "testnet";
+ /** @description Network passphrase the signer must use. */
+ passphrase: string;
+ };
+ DeregisterTokenDto: {
+ /** @description Stellar Asset Contract (C...) address to deregister. */
+ token: string;
+ };
+ SubmitSignedContractOpDto: {
+ /** @description Base64 transaction XDR signed offline by the admin at the Stellar Lab. Must be the exact transaction returned by build-xdr (hash-checked). */
+ signedXdr: string;
+ };
+ ContractOpResultDto: {
+ opId: string;
+ /** @enum {string} */
+ intent: "REGISTER_TOKEN" | "DEREGISTER_TOKEN" | "PAUSE" | "UNPAUSE";
+ /** @description AdminContractOp status after submission. */
+ status: string;
+ txHash: string | null;
+ };
+ AdminKycListItemDto: {
+ /** @description User id */
+ id: string;
+ name: string;
+ email: string;
+ /** @enum {string} */
+ status: "in_review" | "approved" | "declined";
+ /** @description Decline reason from Didit, when declined */
+ declineReason: string | null;
+ /** @description ISO timestamp of the last verification activity */
+ reviewedAt: string;
+ /** @description ISO timestamp the user became verified */
+ verifiedAt: string | null;
+ };
+ PaginatedKycDto: {
+ items: components["schemas"]["AdminKycListItemDto"][];
+ page: number;
+ limit: number;
+ total: number;
+ totalPages: number;
+ };
+ DiditConnectionDto: {
+ /** @description DIDIT_API_KEY is configured */
+ apiKey: boolean;
+ /** @description DIDIT_WORKFLOW_ID is configured */
+ workflowId: boolean;
+ /** @description DIDIT_WEBHOOK_SECRET is configured */
+ webhookSecret: boolean;
+ /** @description API key + workflow present: live calls (sync, re-trigger) work */
+ connected: boolean;
+ };
+ KycSyncResponseDto: {
+ userId: string;
+ /** @description Raw Didit status after the sync */
+ status: string;
+ /** @description Whether the user record status changed */
+ changed: boolean;
+ /** @description False if no Boundless user could be linked to the session */
+ userResolved: boolean;
+ };
+ KycRetriggerResponseDto: {
+ userId: string;
+ /** @description The new Didit session id */
+ sessionId: string;
+ /** @description Hosted verification URL to share with the user */
+ verificationUrl: string;
+ /** @description Initial Didit session status */
+ status: string;
+ /** @description Whether the user was notified (in-app + email) with the link. If false, share the URL manually. */
+ notified: boolean;
+ };
+ KycOverrideDto: {
+ /**
+ * @description The decision to force onto the user record.
+ * @enum {string}
+ */
+ decision: "approved" | "declined";
+ /** @description Why the automated Didit decision is being overridden. Recorded in the audit log. */
+ reason: string;
+ };
+ KycOverrideResponseDto: {
+ userId: string;
+ /**
+ * @description The resulting normalized state
+ * @enum {string}
+ */
+ status: "approved" | "declined";
+ };
+ AdminMilestoneListItemDto: {
+ id: string;
+ /** @enum {string} */
+ type: "crowdfunding" | "grant";
+ /** @description Parent program title */
+ program: string | null;
+ title: string;
+ /** @description Milestone amount */
+ amount: number;
+ /** @description Review/lifecycle status */
+ status: string;
+ /** @description ISO timestamp the milestone was submitted, if any */
+ submitted: string | null;
+ /**
+ * @description Crowdfunding only: on-chain payout release state (derived from the escrow anchor status). Null for grant milestones.
+ * @enum {string|null}
+ */
+ releaseStatus: "NOT_RELEASED" | "RELEASING" | "RELEASED" | "FAILED" | null;
+ };
+ PaginatedMilestonesDto: {
+ items: components["schemas"]["AdminMilestoneListItemDto"][];
+ page: number;
+ limit: number;
+ total: number;
+ totalPages: number;
+ };
+ AdminMilestoneDetailDto: {
+ id: string;
+ title: string;
+ description: string;
+ deliverable: string | null;
+ successCriteria: string | null;
+ expectedDeliveryDate: string | null;
+ reviewStatus: string;
+ completedAt: string | null;
+ submittedAt: string | null;
+ campaignId: string;
+ proofOfWorkFiles: string[];
+ proofOfWorkLinks: string[];
+ submissionNotes: string | null;
+ fundingPercentage: number;
+ orderIndex: number;
+ rejectionReason: string | null;
+ rejectionFeedback: string | null;
+ resubmissionDeadline: string | null;
+ releaseTransactionHash: string | null;
+ claimedAt: string | null;
+ /** @description Derived payout release state. */
+ releaseStatus: string;
+ };
+ MilestoneActionResponseDto: {
+ id: string;
+ /** @description New milestone review status */
+ status: string;
+ };
+ AdminV2RejectMilestoneDto: {
+ /** @description Feedback shown to the builder; what needs to change. */
+ rejectionFeedback: string;
+ /** @description Optional ISO date by which the builder must resubmit. */
+ resubmissionDeadline?: string;
+ };
+ MilestoneReleaseXdrDto: {
+ /** @description EscrowOp row id tracking this release. */
+ opId: string;
+ milestoneId: string;
+ /** @description On-chain contract admin G-address. This is the transaction source and the account that must sign at the Lab. */
+ source: string;
+ /** @description Unsigned transaction XDR (the builder managed auth entry is already signed server-side; the admin signs the envelope offline). */
+ unsignedXdr: string;
+ /** @description Stellar Lab "Sign Transaction" deep link. */
+ labUrl: string;
+ /** @enum {string} */
+ network: "public" | "testnet";
+ /** @description Network passphrase the signer must use. */
+ passphrase: string;
+ };
+ SubmitMilestoneReleaseDto: {
+ /** @description Base64 transaction XDR signed offline by the admin at the Stellar Lab. Must be the exact transaction returned by build-xdr (hash-checked). */
+ signedXdr: string;
+ };
+ MilestoneReleaseResultDto: {
+ opId: string;
+ milestoneId: string;
+ /** @description EscrowOp status after submission. */
+ status: string;
+ txHash: string | null;
+ };
+ AdminWalletUserPreviewDto: {
+ id: string;
+ name: string;
+ /** @description Profile photo URL, when set */
+ image: string | null;
+ };
+ AdminWalletRowDto: {
+ id: string;
+ /** @description Stellar public key (G-address) */
+ address: string;
+ /**
+ * @description Activation state
+ * @enum {string}
+ */
+ status: "active" | "inactive";
+ /** @description Number of users linked to this wallet */
+ users: number;
+ /** @description A capped preview of the linked users, for avatars in the list */
+ userPreviews: components["schemas"]["AdminWalletUserPreviewDto"][];
+ /** @description ISO timestamp the wallet was created */
+ created: string;
+ };
+ PaginatedWalletsDto: {
+ items: components["schemas"]["AdminWalletRowDto"][];
+ page: number;
+ limit: number;
+ total: number;
+ totalPages: number;
+ };
+ HackathonBriefTemplateDto: {
+ id: string;
+ name: string;
+ description: string;
+ category: string;
+ brief: string;
+ isActive: boolean;
+ sortOrder: number;
+ createdAt: string;
+ updatedAt: string;
+ };
+ HackathonBriefTemplatesResponseDto: {
+ items: components["schemas"]["HackathonBriefTemplateDto"][];
+ };
+ CreateHackathonBriefTemplateDto: {
+ name: string;
+ description: string;
+ category: string;
+ brief: string;
+ /** @default true */
+ isActive: boolean;
+ /** @default 0 */
+ sortOrder: number;
+ };
+ UpdateHackathonBriefTemplateDto: {
+ name?: string;
+ description?: string;
+ category?: string;
+ brief?: string;
+ isActive?: boolean;
+ sortOrder?: number;
+ };
+ MarketingTemplateDto: {
+ id: string;
+ name: string;
+ subject: string;
+ body: string;
+ variables: string[];
+ isActive: boolean;
+ sortOrder: number;
+ createdAt: string;
+ updatedAt: string;
+ };
+ MarketingTemplatesResponseDto: {
+ items: components["schemas"]["MarketingTemplateDto"][];
+ };
+ CreateMarketingTemplateDto: {
+ name: string;
+ subject: string;
+ body: string;
+ variables?: string[];
+ isActive?: boolean;
+ sortOrder?: number;
+ };
+ UpdateMarketingTemplateDto: {
+ name?: string;
+ subject?: string;
+ body?: string;
+ variables?: string[];
+ isActive?: boolean;
+ sortOrder?: number;
+ };
+ AudienceFilterDto: {
+ /** @enum {string} */
+ type: "all" | "skills_match" | "participated_in" | "location" | "never_applied";
+ skills?: string[];
+ /** @enum {string} */
+ programType?: "hackathon" | "bounty" | "grant";
+ location?: string;
+ };
+ MarketingCampaignDto: {
+ id: string;
+ name: string;
+ subject: string;
+ body: string;
+ audience: components["schemas"]["AudienceFilterDto"];
+ templateId?: Record;
+ status: string;
+ scheduledAt?: Record;
+ sentAt?: Record;
+ sentCount: number;
+ /** @description Custom substitution vars for {{key}} placeholders */
+ variables: {
+ [key: string]: string;
+ };
+ createdById: string;
+ createdByEmail: string;
+ createdAt: string;
+ updatedAt: string;
+ };
+ MarketingCampaignsResponseDto: {
+ items: components["schemas"]["MarketingCampaignDto"][];
+ };
+ CreateMarketingCampaignDto: {
+ name: string;
+ subject: string;
+ body: string;
+ audience: components["schemas"]["AudienceFilterDto"];
+ templateId?: string;
+ scheduledAt?: string;
+ /** @description Key-value pairs substituted into {{key}} placeholders in subject/body */
+ variables?: {
+ [key: string]: string;
+ };
+ };
+ UpdateMarketingCampaignDto: {
+ name?: string;
+ subject?: string;
+ body?: string;
+ audience?: components["schemas"]["AudienceFilterDto"];
+ templateId?: string;
+ scheduledAt?: string;
+ variables?: {
+ [key: string]: string;
+ };
+ };
+ PreviewCampaignAudienceDto: {
+ audience: components["schemas"]["AudienceFilterDto"];
+ };
+ CampaignAudienceSizeDto: {
+ count: number;
+ };
+ AutomationConditionsDto: {
+ /** @description Min hours before re-sending to same user */
+ cooldownHours?: number;
+ };
+ MarketingAutomationDto: {
+ id: string;
+ name: string;
+ trigger: string;
+ audience: components["schemas"]["AudienceFilterDto"];
+ templateId: string;
+ templateName: string;
+ conditions: components["schemas"]["AutomationConditionsDto"];
+ isActive: boolean;
+ lastFiredAt?: Record;
+ fireCount: number;
+ createdById: string;
+ createdByEmail: string;
+ createdAt: string;
+ updatedAt: string;
+ };
+ MarketingAutomationsResponseDto: {
+ items: components["schemas"]["MarketingAutomationDto"][];
+ };
+ CreateMarketingAutomationDto: {
+ name: string;
+ /** @enum {string} */
+ trigger: "new_hackathon_published" | "new_bounty_published" | "new_grant_published" | "new_crowdfunding_launched" | "hackathon_deadline_3d" | "hackathon_deadline_7d" | "bounty_deadline_3d" | "grant_deadline_3d" | "user_signup" | "user_inactive";
+ audience: components["schemas"]["AudienceFilterDto"];
+ templateId: string;
+ conditions?: components["schemas"]["AutomationConditionsDto"];
+ };
+ UpdateMarketingAutomationDto: {
+ name?: string;
+ /** @enum {string} */
+ trigger?: "new_hackathon_published" | "new_bounty_published" | "new_grant_published" | "new_crowdfunding_launched" | "hackathon_deadline_3d" | "hackathon_deadline_7d" | "bounty_deadline_3d" | "grant_deadline_3d" | "user_signup" | "user_inactive";
+ audience?: components["schemas"]["AudienceFilterDto"];
+ templateId?: string;
+ conditions?: components["schemas"]["AutomationConditionsDto"];
+ };
+ Function: Record;
+ BountyScopeSectionDto: {
+ /** @description Bounty title */
+ title: string;
+ /** @description Bounty description */
+ description: string;
+ /**
+ * @description Discipline the bounty falls under. DEVELOPMENT requires githubIssueUrl.
+ * @enum {string}
+ */
+ category?: "DESIGN" | "DEVELOPMENT" | "CONTENT" | "GROWTH" | "COMMUNITY";
+ /** @description Country where the bounty is created. */
+ country?: string | null;
+ /**
+ * Format: uri
+ * @description Required when category = DEVELOPMENT.
+ */
+ githubIssueUrl?: string | null;
+ projectId?: string | null;
+ bountyWindowId?: string | null;
+ };
+ BountyModeSectionDto: {
+ /** @enum {string} */
+ claimType: "SINGLE_CLAIM" | "COMPETITION";
+ /** @enum {string} */
+ entryType: "OPEN" | "APPLICATION_LIGHT" | "APPLICATION_FULL";
+ };
+ BountySubmissionSectionDto: {
+ /** Format: date-time */
+ submissionDeadline: string;
+ /** Format: date-time */
+ applicationWindowCloseAt?: string | null;
+ maxApplicants?: number | null;
+ shortlistSize?: number | null;
+ reputationMinimum?: number | null;
+ /** @enum {string} */
+ submissionVisibility?: "ORGANIZER_ONLY" | "HIDDEN_UNTIL_DEADLINE";
+ /** @description Require a documentation link when submitting work. */
+ requireDocumentation?: boolean;
+ /** @description Require a tweet link when submitting work. */
+ requireTweet?: boolean;
+ /** @description Require a demo video link when submitting work. */
+ requireDemoVideo?: boolean;
+ /** @description Require at least one media image when submitting work. */
+ requireMedia?: boolean;
+ /** @description Credits required to apply (anti-spam). Supplied to the contract at publish via PublishBountyEscrowDto; not a Bounty column. */
+ applicationCreditCost?: number | null;
+ };
+ BountyPrizeTierInputDto: {
+ /** @description 1 = 1st place; unique within a bounty */
+ position: number;
+ /** @description Tier amount as a positive decimal string */
+ amount: string;
+ passMark?: number | null;
+ };
+ BountyRewardSectionDto: {
+ /** @description Token / currency code the prize is denominated in */
+ rewardCurrency: string;
+ /** @description 1 tier for single claim; 1-3 tiers for a competition (multiple winners). */
+ prizeTiers: components["schemas"]["BountyPrizeTierInputDto"][];
+ };
+ BountyResourceItemDto: {
+ /** @description Client-generated resource id */
+ id: string;
+ link?: string;
+ description?: string;
+ /** @description Uploaded file metadata */
+ file?: {
+ url?: string;
+ name?: string;
+ };
+ };
+ BountyResourcesSectionDto: {
+ resources: components["schemas"]["BountyResourceItemDto"][];
+ };
+ BountyDraftDataDto: {
+ scope?: components["schemas"]["BountyScopeSectionDto"];
+ mode?: components["schemas"]["BountyModeSectionDto"];
+ submission?: components["schemas"]["BountySubmissionSectionDto"];
+ reward?: components["schemas"]["BountyRewardSectionDto"];
+ resources?: components["schemas"]["BountyResourcesSectionDto"];
+ };
+ BountyDraftPrizeTierDto: {
+ position: number;
+ /** @description Tier amount as a decimal string */
+ amount: string;
+ passMark?: number | null;
+ };
+ BountyDraftAssumptionDto: {
+ /** @description Wizard section the assumption belongs to. */
+ section: string;
+ /** @description Field within the section. */
+ field: string;
+ /** @description One-line plain reason for the choice. */
+ note: string;
+ };
+ BountyDraftGeneratedModeDto: {
+ entryType: string;
+ claimType: string;
+ };
+ BountyDraftAiGenerationDto: {
+ /** @description AI generationId that produced this draft. */
+ generationId: string;
+ /** @description Non-obvious choices the AI made, for review. */
+ assumptions: components["schemas"]["BountyDraftAssumptionDto"][];
+ /** @description The brief that produced this draft (shown beside the draft). */
+ brief?: string | null;
+ /** @description The mode the AI generated for (to detect a later mode change). */
+ generatedMode?: components["schemas"]["BountyDraftGeneratedModeDto"] | null;
+ };
+ BountyDraftResponseDto: {
+ id: string;
+ /**
+ * @description Bounty lifecycle state (lowercase).
+ * @example draft
+ */
+ status: string;
+ /** @description First incomplete step (1-based) */
+ currentStep: number;
+ completedSteps: string[];
+ /** @description Plain mode label derived from (entryType, claimType, winner count), e.g. "Open competition (multiple winners)". */
+ modeLabel?: string | null;
+ data: components["schemas"]["BountyDraftDataDto"];
+ prizeTiers: components["schemas"]["BountyDraftPrizeTierDto"][];
+ isValidForPublish: boolean;
+ /** @description Per-section validation messages, keyed by step */
+ validationErrors: {
+ [key: string]: Record[];
+ };
+ /** @description Present when the draft was generated with Organizer Assist; enables per-section AI regenerate in the wizard. */
+ aiGeneration?: components["schemas"]["BountyDraftAiGenerationDto"];
+ /** Format: date-time */
+ createdAt: string;
+ /** Format: date-time */
+ updatedAt: string;
+ };
+ UpdateBountyDraftDto: {
+ scope?: components["schemas"]["BountyScopeSectionDto"];
+ mode?: components["schemas"]["BountyModeSectionDto"];
+ submission?: components["schemas"]["BountySubmissionSectionDto"];
+ reward?: components["schemas"]["BountyRewardSectionDto"];
+ resources?: components["schemas"]["BountyResourcesSectionDto"];
+ /** @description Hint that this is an autosave (no completion side effects). */
+ autoSave?: boolean;
+ };
+ ClarifyBountyBriefDto: {
+ /** @description Free-text brief to triage for clarifying questions. */
+ brief: string;
+ };
+ ClarifyQuestionOptionDto: {
+ value: string;
+ label: string;
+ };
+ ClarifyQuestionDto: {
+ /** @description Axis key, e.g. "winners" | "entry" | "deadline". */
+ id: string;
+ question: string;
+ options: components["schemas"]["ClarifyQuestionOptionDto"][];
+ };
+ ClarifyBountyDraftResponseDto: {
+ /** @description True when the brief is specific enough to draft immediately. */
+ ready: boolean;
+ questions: components["schemas"]["ClarifyQuestionDto"][];
+ };
+ GenerateBountyDraftFromBriefDto: {
+ /**
+ * @description Free-text brief describing the bounty to generate.
+ * @example A one-week bounty to design three onboarding illustrations for a Stellar wallet, paid to the best entry.
+ */
+ brief: string;
+ /**
+ * @description Total reward budget in USDC, as a decimal string.
+ * @example 500
+ */
+ budgetCapUsdc: string;
+ /**
+ * @description Earliest the bounty may start (YYYY-MM-DD).
+ * @example 2026-07-01
+ */
+ earliestStart: string;
+ /** @description Up to 3 example briefs to steer style. */
+ examples?: string[];
+ };
+ BountyAiGenerationMetaDto: {
+ generationId: string;
+ model: string;
+ promptVersion: string;
+ /** @description Cost in USD as a decimal string (never a float). */
+ costUsd: string;
+ };
+ GenerateBountyDraftFromBriefResponseDto: {
+ /** @description Id of the created draft. */
+ draftId: string;
+ draft: components["schemas"]["BountyDraftResponseDto"];
+ generation: components["schemas"]["BountyAiGenerationMetaDto"];
+ };
+ RegenerateBountyDraftSectionDto: {
+ /** @enum {string} */
+ section: "description" | "submission" | "reward";
+ /** @description Optional steering instructions for the regeneration. */
+ instructions?: string;
+ };
+ RegenerateBountyDraftSectionResponseDto: {
+ /** @enum {string} */
+ section: "description" | "submission" | "reward";
+ /** @description Regenerated values in the wizard section shape. */
+ data: {
+ [key: string]: unknown;
+ };
+ generation: components["schemas"]["BountyAiGenerationMetaDto"];
+ };
+ BountyWinnerDistributionEntryDto: {
+ /**
+ * @description 1-indexed winner position.
+ * @example 1
+ */
+ position: number;
+ /**
+ * @description Percent of total_budget for this position. All entries sum to 100.
+ * @example 100
+ */
+ percent: number;
+ };
+ PublishBountyEscrowDto: {
+ /**
+ * @description Stellar G-address that will own and sign the create_event transaction.
+ * @example GDVGP7DWODFVYQ5NHHLLD3WFVLUH5Y3HHELIKSNO4STEFCBETQAWDMKZ
+ */
+ ownerAddress: string;
+ /**
+ * @description Whitelisted Stellar Asset Contract address the prize is in.
+ * @example CBIELTK6YBZJU5UP2WWQEUCYKLPU6AUNZ2BQ4WWFEIE3USCIHMXQDAMA
+ */
+ tokenAddress: string;
+ /**
+ * @description Total prize in token-native units (e.g. 500 = 500 USDC, NOT stroops). String is required when the value exceeds the JS safe-integer range.
+ * @example 500
+ */
+ budget: string;
+ /**
+ * @description Submission deadline as a Unix timestamp in seconds. Required for bounties that close at a specific time. Pass null only for always-open bounties (rare).
+ * @example 1804383600
+ */
+ submissionDeadline: number | null;
+ /** @description Override for the winner distribution. Defaults to 100% to position 1. */
+ winnerDistribution?: components["schemas"]["BountyWinnerDistributionEntryDto"][];
+ /** @description Override for the content URI stored on chain. Defaults to https://api.boundless.fi/bounties//content. */
+ contentUri?: string;
+ /**
+ * @description Signing path. EXTERNAL (default) returns unsigned XDR for the wallet or multisig coordinator to sign. MANAGED has the backend sign and submit using the caller's platform-held wallet; the response is PENDING_CONFIRM with a txHash.
+ * @default EXTERNAL
+ * @example MANAGED
+ * @enum {string}
+ */
+ fundingMode: "EXTERNAL" | "MANAGED";
+ /** @description For MANAGED funding, the organization treasury wallet to fund from. When set, the backend signs with that treasury (managed) wallet instead of the caller's personal wallet; ownerAddress must match the treasury wallet address. Omit to fund from the personal managed wallet. */
+ sourceWalletId?: string;
+ };
+ BountyEscrowOpResponseDto: {
+ /** @description Internal EscrowOp uuid. */
+ id: string;
+ /** @description Hex-encoded 32-byte contract op_id. */
+ opId: string;
+ /** @description Contract operation kind. */
+ kind: string;
+ /** @description EscrowOp status. */
+ status: string;
+ /** @description EntityKind (BOUNTY for this surface). */
+ entityKind: string;
+ /** @description Bounty id. */
+ entityId: string;
+ /** @description Unsigned XDR for the wallet to sign (PENDING_SIGN onward). */
+ unsignedXdr?: string | null;
+ /** @description Stellar G-address expected to sign this op. */
+ signerHint?: string | null;
+ /** @description Soroban tx hash (set once the op reaches PENDING_CONFIRM). */
+ txHash?: string | null;
+ /** @description On-chain or platform-side error code when the op transitions to FAILED. */
+ errorCode?: string | null;
+ /** Format: date-time */
+ createdAt: string;
+ /** Format: date-time */
+ updatedAt: string;
+ };
+ CancelBountyEscrowDto: {
+ /**
+ * @description Organizer's Stellar G-address that signs cancel_event. Must match the bounty's on-chain owner.
+ * @example GDVGP7DWODFVYQ5NHHLLD3WFVLUH5Y3HHELIKSNO4STEFCBETQAWDMKZ
+ */
+ ownerAddress: string;
+ /**
+ * @description Signing path. EXTERNAL (default) returns unsigned XDR; MANAGED signs server-side with the caller's platform-held wallet and submits.
+ * @default EXTERNAL
+ * @enum {string}
+ */
+ fundingMode: "EXTERNAL" | "MANAGED";
+ };
+ BountyWinnerSelectionDto: {
+ /**
+ * @description Stellar G-address of the applicant being declared winner. Must have an active submission anchor for this bounty.
+ * @example GBXNQFDSBDPOIA3Q4LYIWBOJFFPCCV6IEDHBSJZEAYFKIKZVUO4QEDVS
+ */
+ applicantAddress: string;
+ /**
+ * @description Winner position, 1-indexed. Must exist in the bounty's on-chain winner_distribution (the contract rejects unknown positions).
+ * @example 1
+ */
+ position: number;
+ /**
+ * @description Override the platform default reputation_bump for this position. Defaults to 50/25/10 for positions 1/2/3 and 5 for the rest.
+ * @example 50
+ */
+ reputationBump?: number;
+ };
+ SelectBountyWinnersDto: {
+ /**
+ * @description Organizer's Stellar G-address that signs select_winners. Must match the bounty's on-chain owner.
+ * @example GDVGP7DWODFVYQ5NHHLLD3WFVLUH5Y3HHELIKSNO4STEFCBETQAWDMKZ
+ */
+ ownerAddress: string;
+ /** @description Winners to declare. Each entry must reference an applicant with an active submission. Positions must be unique within the array. */
+ selections: components["schemas"]["BountyWinnerSelectionDto"][];
+ /**
+ * @description Signing path. EXTERNAL (default) returns unsigned XDR; MANAGED signs server-side with the caller's platform-held wallet and submits.
+ * @default EXTERNAL
+ * @enum {string}
+ */
+ fundingMode: "EXTERNAL" | "MANAGED";
+ };
+ BountySubmitSignedXdrDto: {
+ /** @description Fully-signed XDR returned by the wallet or coordinator. */
+ signedXdr: string;
+ };
+ ApplyBountyDto: {
+ /**
+ * @description Caller's Stellar G-address. Must match the caller's linked wallet on the platform; the backend rejects mismatches up front so the wallet does not get a tx it cannot sign.
+ * @example GBXNQFDSBDPOIA3Q4LYIWBOJFFPCCV6IEDHBSJZEAYFKIKZVUO4QEDVS
+ */
+ applicantAddress: string;
+ /**
+ * @description EXTERNAL (default) returns unsigned XDR for the caller to sign. MANAGED signs server-side using the caller's platform-held wallet and submits immediately. Identical semantics to the publish flow.
+ * @default EXTERNAL
+ * @enum {string}
+ */
+ fundingMode: "EXTERNAL" | "MANAGED";
+ };
+ WithdrawApplicationDto: {
+ /**
+ * @description Caller's Stellar G-address. Must match the caller's linked wallet on the platform; the backend rejects mismatches up front so the wallet does not get a tx it cannot sign.
+ * @example GBXNQFDSBDPOIA3Q4LYIWBOJFFPCCV6IEDHBSJZEAYFKIKZVUO4QEDVS
+ */
+ applicantAddress: string;
+ /**
+ * @description EXTERNAL (default) returns unsigned XDR for the caller to sign. MANAGED signs server-side using the caller's platform-held wallet and submits immediately. Identical semantics to the publish flow.
+ * @default EXTERNAL
+ * @enum {string}
+ */
+ fundingMode: "EXTERNAL" | "MANAGED";
+ };
+ SubmitBountyDto: {
+ /**
+ * @description Caller's Stellar G-address. Must match the caller's linked wallet on the platform; the backend rejects mismatches up front so the wallet does not get a tx it cannot sign.
+ * @example GBXNQFDSBDPOIA3Q4LYIWBOJFFPCCV6IEDHBSJZEAYFKIKZVUO4QEDVS
+ */
+ applicantAddress: string;
+ /**
+ * @description EXTERNAL (default) returns unsigned XDR for the caller to sign. MANAGED signs server-side using the caller's platform-held wallet and submits immediately. Identical semantics to the publish flow.
+ * @default EXTERNAL
+ * @enum {string}
+ */
+ fundingMode: "EXTERNAL" | "MANAGED";
+ /**
+ * @description URI of the participant's submission content. Stored on chain in the contract's submission anchor; off-chain content lives wherever the URI points (S3, IPFS, GitHub PR, etc.).
+ * @example https://github.com/me/boundless-fix/pull/1
+ */
+ contentUri: string;
+ /** @description Documentation / setup / API reference URL. */
+ documentationUrl?: string;
+ /** @description Tweet / X post URL. */
+ tweetUrl?: string;
+ /** @description Demo video URL. */
+ demoVideoUrl?: string;
+ /** @description Media image URLs (uploaded screenshots / assets). */
+ mediaUrls?: string[];
+ };
+ WithdrawSubmissionDto: {
+ /**
+ * @description Caller's Stellar G-address. Must match the caller's linked wallet on the platform; the backend rejects mismatches up front so the wallet does not get a tx it cannot sign.
+ * @example GBXNQFDSBDPOIA3Q4LYIWBOJFFPCCV6IEDHBSJZEAYFKIKZVUO4QEDVS
+ */
+ applicantAddress: string;
+ /**
+ * @description EXTERNAL (default) returns unsigned XDR for the caller to sign. MANAGED signs server-side using the caller's platform-held wallet and submits immediately. Identical semantics to the publish flow.
+ * @default EXTERNAL
+ * @enum {string}
+ */
+ fundingMode: "EXTERNAL" | "MANAGED";
+ };
+ ContributeBountyDto: {
+ /**
+ * @description Caller's Stellar G-address. Must match the caller's linked wallet on the platform; the backend rejects mismatches up front so the wallet does not get a tx it cannot sign.
+ * @example GBXNQFDSBDPOIA3Q4LYIWBOJFFPCCV6IEDHBSJZEAYFKIKZVUO4QEDVS
+ */
+ applicantAddress: string;
+ /**
+ * @description EXTERNAL (default) returns unsigned XDR for the caller to sign. MANAGED signs server-side using the caller's platform-held wallet and submits immediately. Identical semantics to the publish flow.
+ * @default EXTERNAL
+ * @enum {string}
+ */
+ fundingMode: "EXTERNAL" | "MANAGED";
+ /**
+ * @description Amount in token-native units (e.g. 30 = 30 USDC, NOT stroops). Pass a string when the value exceeds the JS safe-integer range. Must be >= 10 USDC (contract minimum).
+ * @example 30
+ */
+ amount: string;
+ };
+ CreateBountyApplicationDto: {
+ /**
+ * @description G-address that will receive payout if selected.
+ * @example GBXNQFDSBDPOIA3Q4LYIWBOJFFPCCV6IEDHBSJZEAYFKIKZVUO4QEDVS
+ */
+ applicantAddress: string;
+ /** @description Light proposal text (light application): 100 to 300 words. Required for APPLICATION_LIGHT mode. */
+ proposalShort?: string;
+ /** @description Full proposal text (full application): 500 to 2000 words. Required for APPLICATION_FULL mode. */
+ proposalFull?: string;
+ /** @description Portfolio links. APPLICATION_LIGHT: up to 3. APPLICATION_FULL: up to 6. */
+ portfolioLinks?: string[];
+ /** @description Estimated days to complete (APPLICATION_LIGHT). Required for APPLICATION_LIGHT mode. */
+ estimatedDays?: number;
+ /** @description Qualifications text (APPLICATION_FULL). Required for APPLICATION_FULL mode. */
+ qualifications?: string;
+ /** @description Optional video intro URL (APPLICATION_FULL). */
+ videoIntroUrl?: string;
+ };
+ BountyApplicationResponseDto: {
+ id: string;
+ bountyId: string;
+ /** @description G-address that receives payout if selected. */
+ applicantAddress: string;
+ /** @description Escrow lifecycle: pending_confirm | active | withdrawn | failed. */
+ status: string;
+ /**
+ * @description Application lifecycle (SUBMITTED/SHORTLISTED/SELECTED/DECLINED/WITHDRAWN). Null for legacy OPEN + SINGLE_CLAIM rows.
+ * @enum {string|null}
+ */
+ applicationStatus?: "SUBMITTED" | "SHORTLISTED" | "SELECTED" | "DECLINED" | "WITHDRAWN" | null;
+ proposalShort?: string | null;
+ proposalFull?: string | null;
+ portfolioLinks: string[];
+ estimatedDays?: number | null;
+ qualifications?: string | null;
+ videoIntroUrl?: string | null;
+ declineReason?: string | null;
+ /** Format: date-time */
+ shortlistedAt?: string | null;
+ /** Format: date-time */
+ selectedAt?: string | null;
+ /** Format: date-time */
+ declinedAt?: string | null;
+ /** Format: date-time */
+ withdrawnAt?: string | null;
+ /** Format: date-time */
+ createdAt: string;
+ /** Format: date-time */
+ updatedAt: string;
+ };
+ EditBountyApplicationDto: {
+ /** @description Light proposal text. */
+ proposalShort?: string;
+ /** @description Full proposal text. */
+ proposalFull?: string;
+ portfolioLinks?: string[];
+ estimatedDays?: number;
+ qualifications?: string;
+ videoIntroUrl?: string;
+ };
+ SelectForSingleClaimDto: {
+ /** @description Application id to select as the single winner. */
+ applicationId: string;
+ };
+ CreateShortlistDto: {
+ /** @description Application ids to include in the shortlist. */
+ applicationIds: string[];
+ };
+ DeclineApplicationDto: {
+ /** @description Reason for decline (surfaced to builder). */
+ reason?: string;
+ };
+ OrganizerSubmissionUserDto: {
+ id: string;
+ name: string;
+ username?: string | null;
+ avatarUrl?: string | null;
+ };
+ OrganizerBountySubmissionDto: {
+ id: string;
+ bountyId: string;
+ submittedBy: components["schemas"]["OrganizerSubmissionUserDto"];
+ /** @description G-address that receives payout if this submission wins. */
+ applicantAddress?: string | null;
+ /** @description Primary submission link (anchored on-chain). */
+ contentUri?: string | null;
+ documentationUrl?: string | null;
+ tweetUrl?: string | null;
+ demoVideoUrl?: string | null;
+ mediaUrls: string[];
+ /** @description Review status: pending | accepted | rejected | disputed. */
+ status: string;
+ /** @description Escrow anchor: pending_confirm | active | withdrawn | failed. */
+ escrowAnchorStatus?: string | null;
+ tierPosition?: number | null;
+ tierAmount?: string | null;
+ reviewComments?: string | null;
+ /** Format: date-time */
+ createdAt: string;
+ /** Format: date-time */
+ updatedAt: string;
+ };
+ OrganizerBountySubmissionListDto: {
+ items: components["schemas"]["OrganizerBountySubmissionDto"][];
+ total: number;
+ page: number;
+ limit: number;
+ };
+ BountyOverviewPrizeTierDto: {
+ position: number;
+ amount: string;
+ passMark?: number | null;
+ };
+ BountyApplicationStatsDto: {
+ submitted: number;
+ shortlisted: number;
+ selected: number;
+ declined: number;
+ withdrawn: number;
+ /** @description All application rows on the bounty. */
+ total: number;
+ };
+ BountySubmissionStatsDto: {
+ pending: number;
+ accepted: number;
+ rejected: number;
+ disputed: number;
+ /** @description All submission rows on the bounty. */
+ total: number;
+ };
+ BountyContributionStatsDto: {
+ /** @description Count of confirmed contributions. */
+ count: number;
+ /** @description Sum of confirmed contribution amounts. */
+ total: string;
+ };
+ BountyOperateIntakeDto: {
+ applications: components["schemas"]["BountyApplicationStatsDto"];
+ submissions: components["schemas"]["BountySubmissionStatsDto"];
+ contributions: components["schemas"]["BountyContributionStatsDto"];
+ };
+ BountyOperateOverviewDto: {
+ id: string;
+ title: string;
+ /** @description Lifecycle status (lowercase). */
+ status: string;
+ /** @enum {string|null} */
+ entryType?: "OPEN" | "APPLICATION_LIGHT" | "APPLICATION_FULL" | null;
+ /** @enum {string|null} */
+ claimType?: "SINGLE_CLAIM" | "COMPETITION" | null;
+ /** @enum {string} */
+ submissionVisibility: "ORGANIZER_ONLY" | "HIDDEN_UNTIL_DEADLINE";
+ /** Format: date-time */
+ applicationWindowCloseAt?: string | null;
+ /** Format: date-time */
+ submissionDeadline?: string | null;
+ maxApplicants?: number | null;
+ shortlistSize?: number | null;
+ rewardCurrency: string;
+ rewardAmount: number;
+ prizeTiers: components["schemas"]["BountyOverviewPrizeTierDto"][];
+ /** @description On-chain event id once published; null while in draft. */
+ escrowEventId?: string | null;
+ /** Format: date-time */
+ createdAt: string;
+ intake: components["schemas"]["BountyOperateIntakeDto"];
+ };
+ PublishBountyResultsDto: {
+ /** @description Announcement message shown on the results page. */
+ message: string;
+ };
+ BountyAnnouncementDto: {
+ id: string;
+ bountyId: string;
+ message: string;
+ /** @description User id of the organizer who published it. */
+ publishedBy: string;
+ /** Format: date-time */
+ publishedAt: string;
+ };
+ JoinCompetitionDto: {
+ /**
+ * @description G-address that will receive payout if winning
+ * @example GBXNQFDSBDPOIA3Q4LYIWBOJFFPCCV6IEDHBSJZEAYFKIKZVUO4QEDVS
+ */
+ applicantAddress: string;
+ };
+ BountySummaryDto: {
+ id: string;
+ title: string;
+ /** @description Pillar lifecycle state (lowercase). */
+ status: string;
+ /** @enum {string|null} */
+ entryType?: "OPEN" | "APPLICATION_LIGHT" | "APPLICATION_FULL" | null;
+ /** @enum {string|null} */
+ claimType?: "SINGLE_CLAIM" | "COMPETITION" | null;
+ rewardCurrency: string;
+ /**
+ * Format: date-time
+ * @description Work/submission deadline (published value, falling back to the draft).
+ */
+ deadline?: string | null;
+ };
+ MyBountyApplicationRowDto: {
+ id: string;
+ /**
+ * @description SUBMITTED / SHORTLISTED / SELECTED / DECLINED / WITHDRAWN.
+ * @enum {string|null}
+ */
+ applicationStatus?: "SUBMITTED" | "SHORTLISTED" | "SELECTED" | "DECLINED" | "WITHDRAWN" | null;
+ /** @description Escrow lifecycle: pending_confirm | active | withdrawn | failed. */
+ status: string;
+ /** Format: date-time */
+ createdAt: string;
+ /** Format: date-time */
+ updatedAt: string;
+ bounty: components["schemas"]["BountySummaryDto"];
+ };
+ MyBountyApplicationListDto: {
+ items: components["schemas"]["MyBountyApplicationRowDto"][];
+ total: number;
+ page: number;
+ limit: number;
+ };
+ MyBountySubmissionRowDto: {
+ id: string;
+ /** @description Off-chain review state. */
+ status: string;
+ escrowAnchorStatus?: string | null;
+ githubPullRequestUrl?: string | null;
+ tierPosition?: number | null;
+ /** @description Won amount in token-native units (decimal string). */
+ tierAmount?: string | null;
+ rewardTransactionHash?: string | null;
+ /** Format: date-time */
+ paidAt?: string | null;
+ /** Format: date-time */
+ createdAt: string;
+ /** Format: date-time */
+ updatedAt: string;
+ bounty: components["schemas"]["BountySummaryDto"];
+ };
+ MyBountySubmissionListDto: {
+ items: components["schemas"]["MyBountySubmissionRowDto"][];
+ total: number;
+ page: number;
+ limit: number;
+ };
+ BountyWinnerDto: {
+ submissionId: string;
+ /** @description 1 = 1st place. */
+ tierPosition: number;
+ /** @description Won amount (token-native units, decimal string). */
+ tierAmount: string;
+ /** @description User id of the winner. */
+ submittedBy: string;
+ applicantAddress?: string | null;
+ githubPullRequestUrl?: string | null;
+ contentUri?: string | null;
+ rewardTransactionHash?: string | null;
+ /** Format: date-time */
+ paidAt?: string | null;
+ };
+ BountyResultsDto: {
+ bountyId: string;
+ /** @description Pillar lifecycle state (lowercase). */
+ status: string;
+ /** @description True once the bounty has completed. */
+ isComplete: boolean;
+ rewardCurrency: string;
+ /** @description Winners, by tier. */
+ winners: components["schemas"]["BountyWinnerDto"][];
+ };
+ BountySubmissionViewDto: {
+ id: string;
+ submittedBy: string;
+ /** @description True when this is the caller’s own submission. */
+ isOwn: boolean;
+ /** @description Off-chain review state. */
+ status: string;
+ escrowAnchorStatus?: string | null;
+ applicantAddress?: string | null;
+ githubPullRequestUrl?: string | null;
+ contentUri?: string | null;
+ tierPosition?: number | null;
+ tierAmount?: string | null;
+ /** Format: date-time */
+ createdAt: string;
+ };
+ BountySubmissionListDto: {
+ items: components["schemas"]["BountySubmissionViewDto"][];
+ /** @enum {string} */
+ visibility: "ORGANIZER_ONLY" | "HIDDEN_UNTIL_DEADLINE";
+ /** @description Whether peer submissions are visible to the caller (organizer, or HIDDEN_UNTIL_DEADLINE past the deadline). When false, only the caller’s own submission is returned. */
+ peersVisible: boolean;
+ };
+ BountyPrizeTierPublicDto: {
+ position: number;
+ /** @description Tier amount in token-native units. */
+ amount: string;
+ /** @description Optional minimum quality bar. */
+ passMark?: number | null;
+ };
+ BountyOrganizationPublicDto: {
+ id: string;
+ name: string;
+ slug?: string | null;
+ logo?: string | null;
+ };
+ BountySubmissionRequirementsDto: {
+ documentation: boolean;
+ tweet: boolean;
+ demoVideo: boolean;
+ media: boolean;
+ };
+ BountyClaimantPublicDto: {
+ /** @description Display handle (username, falling back to name). */
+ username: string;
+ /** @description Claimant wallet address. */
+ address: string;
+ avatarUrl?: string | null;
+ };
+ BountyPublicDto: {
+ id: string;
+ title: string;
+ description: string;
+ /** @description Pillar lifecycle state (lowercase). */
+ status: string;
+ type: string;
+ rewardAmount: number;
+ rewardCurrency: string;
+ /** @enum {string} */
+ entryType?: "OPEN" | "APPLICATION_LIGHT" | "APPLICATION_FULL";
+ /** @enum {string} */
+ claimType?: "SINGLE_CLAIM" | "COMPETITION";
+ /** @enum {string} */
+ submissionVisibility: "ORGANIZER_ONLY" | "HIDDEN_UNTIL_DEADLINE";
+ /** Format: date-time */
+ applicationWindowCloseAt?: string | null;
+ maxApplicants?: number | null;
+ shortlistSize?: number | null;
+ reputationMinimum?: number | null;
+ prizeTiers: components["schemas"]["BountyPrizeTierPublicDto"][];
+ organization: components["schemas"]["BountyOrganizationPublicDto"];
+ /** @description On-chain event id once published; null while in draft. */
+ escrowEventId?: string | null;
+ escrowTxHash?: string | null;
+ /** @description Bounty discipline (DESIGN, DEVELOPMENT, CONTENT, GROWTH, COMMUNITY). */
+ category?: string | null;
+ /**
+ * Format: date-time
+ * @description Work/submission deadline (set at publish); null while in draft.
+ */
+ submissionDeadline?: string | null;
+ /** @description Which submission metadata fields the organizer requires. */
+ submissionRequirements: components["schemas"]["BountySubmissionRequirementsDto"];
+ /** Format: date-time */
+ createdAt: string;
+ /** @description Active claimant of a single-claim bounty once claimed; null otherwise. */
+ claimedBy?: components["schemas"]["BountyClaimantPublicDto"] | null;
+ };
+ BountyPublicListDto: {
+ bounties: components["schemas"]["BountyPublicDto"][];
+ total: number;
+ page: number;
+ limit: number;
+ };
+ GrantWinnerDistributionEntryDto: {
+ /**
+ * @description 1-indexed winner position
+ * @example 1
+ */
+ position: number;
+ /**
+ * @description Percent of total_budget for this position. All sum to 100.
+ * @example 100
+ */
+ percent: number;
+ };
+ PublishGrantEscrowDto: {
+ /**
+ * @description Organizer's Stellar G-address that signs the create_event transaction.
+ * @example GDVGP7DWODFVYQ5NHHLLD3WFVLUH5Y3HHELIKSNO4STEFCBETQAWDMKZ
+ */
+ ownerAddress: string;
+ /**
+ * @description Whitelisted Stellar Asset Contract address.
+ * @example CBIELTK6YBZJU5UP2WWQEUCYKLPU6AUNZ2BQ4WWFEIE3USCIHMXQDAMA
+ */
+ tokenAddress: string;
+ /**
+ * @description Total budget in token-native units (NOT stroops).
+ * @example 500
+ */
+ budget: string;
+ /**
+ * @description Number of milestones (n) for the ReleaseKind::Multi(n) release_kind. Per-recipient amount is total_budget * winner_share% / 100 / n_milestones.
+ * @example 2
+ */
+ nMilestones: number;
+ /**
+ * @description Optional submission deadline (Unix seconds).
+ * @example 1804383600
+ */
+ submissionDeadline?: number;
+ /** @description Override the winner distribution. Defaults to 100% to position 1. */
+ winnerDistribution?: components["schemas"]["GrantWinnerDistributionEntryDto"][];
+ /** @description Override the public content_uri. Defaults to /grants//content. */
+ contentUri?: string;
+ /**
+ * @description Signing path. EXTERNAL (default) or MANAGED.
+ * @default EXTERNAL
+ * @enum {string}
+ */
+ fundingMode: "EXTERNAL" | "MANAGED";
+ };
+ GrantEscrowOpResponseDto: {
+ id: string;
+ opId: string;
+ kind: string;
+ status: string;
+ entityKind: string;
+ entityId: string;
+ unsignedXdr?: string | null;
+ signerHint?: string | null;
+ txHash?: string | null;
+ errorCode?: string | null;
+ /** Format: date-time */
+ createdAt: string;
+ /** Format: date-time */
+ updatedAt: string;
+ };
+ CancelGrantEscrowDto: {
+ /** @description Organizer's Stellar G-address. */
+ ownerAddress: string;
+ /**
+ * @default EXTERNAL
+ * @enum {string}
+ */
+ fundingMode: "EXTERNAL" | "MANAGED";
+ };
+ GrantWinnerSelectionDto: {
+ /** @description GrantApplication.id to declare as a winner. The application must already have applicantAddress set (the Stellar G-address receiving the grant). */
+ grantApplicationId: string;
+ /**
+ * @description Winner position, 1-indexed.
+ * @example 1
+ */
+ position: number;
+ /** @example 50 */
+ reputationBump?: number;
+ };
+ SelectGrantWinnersDto: {
+ ownerAddress: string;
+ selections: components["schemas"]["GrantWinnerSelectionDto"][];
+ /**
+ * @default EXTERNAL
+ * @enum {string}
+ */
+ fundingMode: "EXTERNAL" | "MANAGED";
+ };
+ ClaimGrantMilestoneDto: {
+ ownerAddress: string;
+ /** @description GrantMilestone.id to claim payment for. */
+ grantMilestoneId: string;
+ /**
+ * @default EXTERNAL
+ * @enum {string}
+ */
+ fundingMode: "EXTERNAL" | "MANAGED";
+ };
+ GrantSubmitSignedXdrDto: {
+ signedXdr: string;
+ };
+ ContributeGrantDto: {
+ /** @description Contributor's Stellar G-address. Must match caller's wallet. */
+ applicantAddress: string;
+ /**
+ * @description Amount in token-native units. Must be >= 10 USDC.
+ * @example 30
+ */
+ amount: string;
+ /**
+ * @default EXTERNAL
+ * @enum {string}
+ */
+ fundingMode: "EXTERNAL" | "MANAGED";
+ };
+ GrantPublicListItemDto: {
+ /**
+ * @description Grant id.
+ * @example grant_123
+ */
+ id: string;
+ /**
+ * @description Underlying project title used as the card title.
+ * @example On-chain governance research
+ */
+ title: string;
+ /**
+ * @description Short tagline/summary. Empty string when none is available.
+ * @example Funding research into delegated voting models.
+ */
+ summary: string;
+ /**
+ * @description Banner or thumbnail image URL.
+ * @example https://cdn.boundless.dev/grants/abc.png
+ */
+ coverImageUrl: string | null;
+ /**
+ * @description Lowercased grant status.
+ * @example open
+ */
+ status: string;
+ /**
+ * @description Total program budget in USDC, stringified.
+ * @example 50000
+ */
+ totalBudgetUsdc: string | null;
+ /**
+ * @description Owning organization id, if any.
+ * @example org_123
+ */
+ organizationId: string | null;
+ /**
+ * @description Owning organization display name.
+ * @example Boundless Labs
+ */
+ organizationName: string | null;
+ /**
+ * @description Owning organization logo URL.
+ * @example https://cdn.boundless.dev/orgs/boundless.png
+ */
+ organizationLogoUrl: string | null;
+ /**
+ * @description Underlying project category, if any.
+ * @example governance
+ */
+ category: string | null;
+ /**
+ * @description Total submitted applications count.
+ * @example 12
+ */
+ applicationCount: number;
+ /**
+ * @description When the grant was created.
+ * @example 2026-05-01T12:00:00.000Z
+ */
+ createdAt: string;
+ };
+ GrantPublicListResponseDto: {
+ items: components["schemas"]["GrantPublicListItemDto"][];
+ /**
+ * @description Total count of grants matching the filters.
+ * @example 84
+ */
+ total: number;
+ /**
+ * @description Current page (1-indexed).
+ * @example 1
+ */
+ page: number;
+ /**
+ * @description Items per page.
+ * @example 20
+ */
+ limit: number;
+ };
+ /**
+ * @description The pillar this opportunity belongs to.
+ * @enum {string}
+ */
+ OpportunityType: "BOUNTY" | "HACKATHON" | "GRANT" | "CROWDFUNDING";
+ OpportunityListItemDto: {
+ /**
+ * @description The pillar this opportunity belongs to.
+ * @example BOUNTY
+ */
+ type: components["schemas"]["OpportunityType"];
+ /**
+ * @description Pillar-local primary key. Globally unique within a type.
+ * @example ckxyz123
+ */
+ id: string;
+ /**
+ * @description Optional URL slug. Hackathons and crowdfunding campaigns expose one; bounties and grants do not.
+ * @example open-defi-hack
+ */
+ slug: string | null;
+ /**
+ * @description Display title for the card.
+ * @example Build a DAO governance dashboard
+ */
+ title: string;
+ /**
+ * @description Short blurb shown under the title. Empty string when the underlying pillar has no summary; never null.
+ * @example Ship a React dashboard that visualizes on-chain governance votes.
+ */
+ summary: string;
+ /**
+ * @description Banner or hero image URL for the card.
+ * @example https://cdn.boundless.dev/banners/abc.png
+ */
+ coverImageUrl: string | null;
+ /**
+ * @description Owning organization id. Null on crowdfunding or grants that lack an organization.
+ * @example org_123
+ */
+ organizationId: string | null;
+ /**
+ * @description Owning organization display name.
+ * @example Boundless Labs
+ */
+ organizationName: string | null;
+ /**
+ * @description Owning organization logo URL.
+ * @example https://cdn.boundless.dev/orgs/boundless.png
+ */
+ organizationLogoUrl: string | null;
+ /**
+ * @description Lowercased pillar-specific status (e.g. "open", "upcoming", "active").
+ * @example open
+ */
+ status: string;
+ /**
+ * @description Total advertised reward in USDC, stringified. Null when not applicable to the pillar.
+ * @example 5000.00
+ */
+ totalRewardUsdc: string | null;
+ /**
+ * @description Funded amount so far in USDC, crowdfunding only. Null elsewhere.
+ * @example 1234.56
+ */
+ fundedAmountUsdc: string | null;
+ /**
+ * @description When this opportunity went live. Falls back to createdAt when the pillar lacks publishedAt.
+ * @example 2026-05-01T12:00:00.000Z
+ */
+ publishedAt: string;
+ /**
+ * @description When the opportunity window opens.
+ * @example 2026-05-15T00:00:00.000Z
+ */
+ startsAt: string | null;
+ /**
+ * @description Application or submission deadline. Null for open-ended pillars (notably grants).
+ * @example 2026-06-30T23:59:59.000Z
+ */
+ endsAt: string | null;
+ /**
+ * @description Approximate participant count. Null when the pillar has no relation to count from.
+ * @example 42
+ */
+ participantCount: number | null;
+ /**
+ * @description Pillar-defined tags. Empty array for pillars without a tag field; never null.
+ * @example [
+ * "stellar",
+ * "defi"
+ * ]
+ */
+ tags: string[];
+ /**
+ * @description Path to the detail page on the frontend.
+ * @example /bounties/ckxyz123
+ */
+ detailUrl: string;
+ /**
+ * @description True when this opportunity is currently featured. Drives the page-1 boost in the marketplace.
+ * @example false
+ */
+ isFeatured: boolean;
+ };
+ OpportunityListResponseDto: {
+ /** @description Cards in the current page, post-merge. */
+ items: components["schemas"]["OpportunityListItemDto"][];
+ /**
+ * @description Opaque cursor for the next page. Null when no more results are available.
+ * @example eyJzb3J0IjoibmV3ZXN0IiwicHJpbWFyeSI6IjIwMjYtMDUtMTVUMDA6MDA6MDAuMDAwWiIsImlkIjoiY2t4eXoxMjMifQ
+ */
+ nextCursor: string | null;
+ /**
+ * @description Total rows matching the current filter combo (type, status, search, tags), summed across pillar adapters. Cursor-blind, so stable across paginated requests with the same filters.
+ * @example 137
+ */
+ total: number;
+ };
+ SubscribeDto: {
+ /**
+ * @description Email address to subscribe
+ * @example user@example.com
+ */
+ email: string;
+ /**
+ * @description Subscriber name
+ * @example John Doe
+ */
+ name?: string;
+ /**
+ * @description Subscription source
+ * @example website
+ */
+ source?: string;
+ /**
+ * @description Topic tags for subscription preferences
+ * @example [
+ * "updates",
+ * "hackathons"
+ * ]
+ */
+ tags?: string[];
+ };
+ UnsubscribeDto: {
+ /**
+ * @description Email address to unsubscribe
+ * @example user@example.com
+ */
+ email: string;
+ };
+ UpdatePreferencesDto: {
+ /**
+ * @description Subscriber email address
+ * @example user@example.com
+ */
+ email: string;
+ /**
+ * @description Topic tags to subscribe to. Valid: bounties, hackathons, grants, updates
+ * @example [
+ * "updates",
+ * "hackathons"
+ * ]
+ */
+ tags: string[];
+ };
+ CreateNewsletterCampaignDto: {
+ /**
+ * @description Campaign email subject line
+ * @example Boundless Weekly: New Hackathon Announced!
+ */
+ subject: string;
+ /**
+ * @description Campaign HTML content. Supports {{name}} placeholder.
+ * @example Hello {{name}}
Check out our latest hackathon!
+ */
+ content: string;
+ /**
+ * @description Preview text shown in email clients
+ * @example New hackathon with $10k in prizes
+ */
+ previewText?: string;
+ /**
+ * @description Target subscriber tags — only subscribers with matching tags receive the campaign
+ * @example [
+ * "hackathons",
+ * "updates"
+ * ]
+ */
+ tags?: string[];
+ };
+ DiscoverPillarDto: {
+ items: components["schemas"]["OpportunityListItemDto"][];
+ /** @description Total matching records in the pillar (unpaged). */
+ total: number;
+ };
+ RecentWinnerUserDto: {
+ name: string;
+ avatarUrl?: string;
+ };
+ RecentWinnerPrizeDto: {
+ amount: number;
+ /** @example USDC */
+ currency: string;
+ };
+ RecentWinnerDto: {
+ id: string;
+ user: components["schemas"]["RecentWinnerUserDto"];
+ projectTitle: string;
+ /** @enum {string} */
+ category: "hackathon" | "bounty" | "grant";
+ prize: components["schemas"]["RecentWinnerPrizeDto"];
+ /** @description ISO-8601 timestamp of the win event */
+ occurredAt: string;
+ totalApplications: number;
+ /** @description Total wins for this user across all pillars */
+ boundlessWins: number;
+ };
+ DiscoverLandingDto: {
+ bounties: components["schemas"]["DiscoverPillarDto"];
+ hackathons: components["schemas"]["DiscoverPillarDto"];
+ crowdfunding: components["schemas"]["DiscoverPillarDto"];
+ grants: components["schemas"]["DiscoverPillarDto"];
+ recentWinners: components["schemas"]["RecentWinnerDto"][];
+ };
+ RecentWinnersResponseDto: {
+ items: components["schemas"]["RecentWinnerDto"][];
+ };
+ User: {
+ id?: string;
+ name: string;
+ email: string;
+ /** @default false */
+ readonly emailVerified: boolean;
+ image?: string;
+ /**
+ * Format: date-time
+ * @default Generated at runtime
+ */
+ createdAt: string;
+ /**
+ * Format: date-time
+ * @default Generated at runtime
+ */
+ updatedAt: string;
+ username?: string;
+ displayUsername?: string;
+ /** @default false */
+ readonly twoFactorEnabled: boolean;
+ readonly lastLoginMethod?: string;
+ readonly role?: string;
+ /** @default false */
+ readonly banned: boolean;
+ readonly banReason?: string;
+ /** Format: date-time */
+ readonly banExpires?: string;
+ };
+ Session: {
+ id?: string;
+ /** Format: date-time */
+ expiresAt: string;
token: string;
- };
- };
- };
- responses: {
- /** @description Success */
- 200: {
- headers: {
- [name: string]: unknown;
- };
- content: {
- 'application/json': {
- /** @description Indicates if the session was revoked successfully */
- status: boolean;
- };
- };
- };
- /** @description Bad Request. Usually due to missing parameters, or invalid parameters. */
- 400: {
- headers: {
- [name: string]: unknown;
- };
- content: {
- 'application/json': {
- message: string;
- };
- };
- };
- /** @description Unauthorized. Due to missing or invalid authentication. */
- 401: {
- headers: {
- [name: string]: unknown;
- };
- content: {
- 'application/json': {
- message: string;
- };
- };
- };
- /** @description Forbidden. You do not have permission to access this resource or to perform this action. */
- 403: {
- headers: {
- [name: string]: unknown;
- };
- content: {
- 'application/json': {
- message?: string;
- };
- };
- };
- /** @description Not Found. The requested resource was not found. */
- 404: {
- headers: {
- [name: string]: unknown;
- };
- content: {
- 'application/json': {
- message?: string;
- };
- };
- };
- /** @description Too Many Requests. You have exceeded the rate limit. Try again later. */
- 429: {
- headers: {
- [name: string]: unknown;
- };
- content: {
- 'application/json': {
- message?: string;
- };
- };
- };
- /** @description Internal Server Error. This is a problem with the server that you cannot fix. */
- 500: {
- headers: {
- [name: string]: unknown;
- };
- content: {
- 'application/json': {
- message?: string;
- };
- };
- };
- };
- };
- delete?: never;
- options?: never;
- head?: never;
- patch?: never;
- trace?: never;
- };
- '/api/auth/revoke-sessions': {
- parameters: {
- query?: never;
- header?: never;
- path?: never;
- cookie?: never;
- };
- get?: never;
- put?: never;
- /** @description Revoke all sessions for the user */
- post: {
- parameters: {
- query?: never;
- header?: never;
- path?: never;
- cookie?: never;
- };
- requestBody?: {
- content: {
- 'application/json': Record;
- };
- };
- responses: {
- /** @description Success */
- 200: {
- headers: {
- [name: string]: unknown;
- };
- content: {
- 'application/json': {
- /** @description Indicates if all sessions were revoked successfully */
- status: boolean;
- };
- };
- };
- /** @description Bad Request. Usually due to missing parameters, or invalid parameters. */
- 400: {
- headers: {
- [name: string]: unknown;
- };
- content: {
- 'application/json': {
- message: string;
- };
- };
- };
- /** @description Unauthorized. Due to missing or invalid authentication. */
- 401: {
- headers: {
- [name: string]: unknown;
- };
- content: {
- 'application/json': {
- message: string;
- };
- };
- };
- /** @description Forbidden. You do not have permission to access this resource or to perform this action. */
- 403: {
- headers: {
- [name: string]: unknown;
- };
- content: {
- 'application/json': {
- message?: string;
- };
- };
- };
- /** @description Not Found. The requested resource was not found. */
- 404: {
- headers: {
- [name: string]: unknown;
- };
- content: {
- 'application/json': {
- message?: string;
- };
- };
- };
- /** @description Too Many Requests. You have exceeded the rate limit. Try again later. */
- 429: {
- headers: {
- [name: string]: unknown;
- };
- content: {
- 'application/json': {
- message?: string;
- };
- };
- };
- /** @description Internal Server Error. This is a problem with the server that you cannot fix. */
- 500: {
- headers: {
- [name: string]: unknown;
- };
- content: {
- 'application/json': {
- message?: string;
- };
- };
- };
- };
- };
- delete?: never;
- options?: never;
- head?: never;
- patch?: never;
- trace?: never;
- };
- '/api/auth/revoke-other-sessions': {
- parameters: {
- query?: never;
- header?: never;
- path?: never;
- cookie?: never;
- };
- get?: never;
- put?: never;
- /** @description Revoke all other sessions for the user except the current one */
- post: {
- parameters: {
- query?: never;
- header?: never;
- path?: never;
- cookie?: never;
- };
- requestBody?: {
- content: {
- 'application/json': Record;
- };
- };
- responses: {
- /** @description Success */
- 200: {
- headers: {
- [name: string]: unknown;
- };
- content: {
- 'application/json': {
- /** @description Indicates if all other sessions were revoked successfully */
- status: boolean;
- };
- };
- };
- /** @description Bad Request. Usually due to missing parameters, or invalid parameters. */
- 400: {
- headers: {
- [name: string]: unknown;
- };
- content: {
- 'application/json': {
- message: string;
- };
- };
- };
- /** @description Unauthorized. Due to missing or invalid authentication. */
- 401: {
- headers: {
- [name: string]: unknown;
- };
- content: {
- 'application/json': {
- message: string;
- };
- };
- };
- /** @description Forbidden. You do not have permission to access this resource or to perform this action. */
- 403: {
- headers: {
- [name: string]: unknown;
- };
- content: {
- 'application/json': {
- message?: string;
- };
- };
- };
- /** @description Not Found. The requested resource was not found. */
- 404: {
- headers: {
- [name: string]: unknown;
- };
- content: {
- 'application/json': {
- message?: string;
- };
- };
- };
- /** @description Too Many Requests. You have exceeded the rate limit. Try again later. */
- 429: {
- headers: {
- [name: string]: unknown;
- };
- content: {
- 'application/json': {
- message?: string;
- };
- };
- };
- /** @description Internal Server Error. This is a problem with the server that you cannot fix. */
- 500: {
- headers: {
- [name: string]: unknown;
- };
- content: {
- 'application/json': {
- message?: string;
- };
- };
- };
- };
- };
- delete?: never;
- options?: never;
- head?: never;
- patch?: never;
- trace?: never;
- };
- '/api/auth/link-social': {
- parameters: {
- query?: never;
- header?: never;
- path?: never;
- cookie?: never;
- };
- get?: never;
- put?: never;
- /** @description Link a social account to the user */
- post: operations['linkSocialAccount'];
- delete?: never;
- options?: never;
- head?: never;
- patch?: never;
- trace?: never;
- };
- '/api/auth/list-accounts': {
- parameters: {
- query?: never;
- header?: never;
- path?: never;
- cookie?: never;
- };
- /** @description List all accounts linked to the user */
- get: operations['listUserAccounts'];
- put?: never;
- post?: never;
- delete?: never;
- options?: never;
- head?: never;
- patch?: never;
- trace?: never;
- };
- '/api/auth/delete-user/callback': {
- parameters: {
- query?: never;
- header?: never;
- path?: never;
- cookie?: never;
- };
- /** @description Callback to complete user deletion with verification token */
- get: {
- parameters: {
- query?: {
- token?: string;
- callbackURL?: string | null;
- };
- header?: never;
- path?: never;
- cookie?: never;
- };
- requestBody?: never;
- responses: {
- /** @description User successfully deleted */
- 200: {
- headers: {
- [name: string]: unknown;
- };
- content: {
- 'application/json': {
- /** @description Indicates if the deletion was successful */
- success: boolean;
- /**
- * @description Confirmation message
- * @enum {string}
- */
- message: 'User deleted';
- };
- };
- };
- /** @description Bad Request. Usually due to missing parameters, or invalid parameters. */
- 400: {
- headers: {
- [name: string]: unknown;
- };
- content: {
- 'application/json': {
- message: string;
- };
- };
- };
- /** @description Unauthorized. Due to missing or invalid authentication. */
- 401: {
- headers: {
- [name: string]: unknown;
- };
- content: {
- 'application/json': {
- message: string;
- };
- };
- };
- /** @description Forbidden. You do not have permission to access this resource or to perform this action. */
- 403: {
- headers: {
- [name: string]: unknown;
- };
- content: {
- 'application/json': {
- message?: string;
- };
- };
- };
- /** @description Not Found. The requested resource was not found. */
- 404: {
- headers: {
- [name: string]: unknown;
- };
- content: {
- 'application/json': {
- message?: string;
- };
- };
- };
- /** @description Too Many Requests. You have exceeded the rate limit. Try again later. */
- 429: {
- headers: {
- [name: string]: unknown;
- };
- content: {
- 'application/json': {
- message?: string;
- };
- };
- };
- /** @description Internal Server Error. This is a problem with the server that you cannot fix. */
- 500: {
- headers: {
- [name: string]: unknown;
- };
- content: {
- 'application/json': {
- message?: string;
- };
- };
- };
- };
- };
- put?: never;
- post?: never;
- delete?: never;
- options?: never;
- head?: never;
- patch?: never;
- trace?: never;
- };
- '/api/auth/unlink-account': {
- parameters: {
- query?: never;
- header?: never;
- path?: never;
- cookie?: never;
- };
- get?: never;
- put?: never;
- /** @description Unlink an account */
- post: {
- parameters: {
- query?: never;
- header?: never;
- path?: never;
- cookie?: never;
- };
- requestBody: {
- content: {
- 'application/json': {
- providerId: string;
- accountId?: string | null;
- };
- };
- };
- responses: {
- /** @description Success */
- 200: {
- headers: {
- [name: string]: unknown;
- };
- content: {
- 'application/json': {
- status?: boolean;
- };
- };
- };
- /** @description Bad Request. Usually due to missing parameters, or invalid parameters. */
- 400: {
- headers: {
- [name: string]: unknown;
- };
- content: {
- 'application/json': {
- message: string;
- };
- };
- };
- /** @description Unauthorized. Due to missing or invalid authentication. */
- 401: {
- headers: {
- [name: string]: unknown;
- };
- content: {
- 'application/json': {
- message: string;
- };
- };
- };
- /** @description Forbidden. You do not have permission to access this resource or to perform this action. */
- 403: {
- headers: {
- [name: string]: unknown;
- };
- content: {
- 'application/json': {
- message?: string;
- };
- };
- };
- /** @description Not Found. The requested resource was not found. */
- 404: {
- headers: {
- [name: string]: unknown;
- };
- content: {
- 'application/json': {
- message?: string;
- };
- };
- };
- /** @description Too Many Requests. You have exceeded the rate limit. Try again later. */
- 429: {
- headers: {
- [name: string]: unknown;
- };
- content: {
- 'application/json': {
- message?: string;
- };
- };
- };
- /** @description Internal Server Error. This is a problem with the server that you cannot fix. */
- 500: {
- headers: {
- [name: string]: unknown;
- };
- content: {
- 'application/json': {
- message?: string;
- };
- };
- };
- };
- };
- delete?: never;
- options?: never;
- head?: never;
- patch?: never;
- trace?: never;
- };
- '/api/auth/refresh-token': {
- parameters: {
- query?: never;
- header?: never;
- path?: never;
- cookie?: never;
- };
- get?: never;
- put?: never;
- /** @description Refresh the access token using a refresh token */
- post: {
- parameters: {
- query?: never;
- header?: never;
- path?: never;
- cookie?: never;
- };
- requestBody: {
- content: {
- 'application/json': {
- /** @description The provider ID for the OAuth provider */
- providerId: string;
- /** @description The account ID associated with the refresh token */
- accountId?: string | null;
- /** @description The user ID associated with the account */
- userId?: string | null;
- };
- };
- };
- responses: {
- /** @description Access token refreshed successfully */
- 200: {
- headers: {
- [name: string]: unknown;
- };
- content: {
- 'application/json': {
- tokenType?: string;
- idToken?: string;
- accessToken?: string;
- refreshToken?: string;
- /** Format: date-time */
- accessTokenExpiresAt?: string;
- /** Format: date-time */
- refreshTokenExpiresAt?: string;
- };
- };
- };
- /** @description Invalid refresh token or provider configuration */
- 400: {
- headers: {
- [name: string]: unknown;
- };
- content?: never;
- };
- /** @description Unauthorized. Due to missing or invalid authentication. */
- 401: {
- headers: {
- [name: string]: unknown;
- };
- content: {
- 'application/json': {
- message: string;
- };
- };
- };
- /** @description Forbidden. You do not have permission to access this resource or to perform this action. */
- 403: {
- headers: {
- [name: string]: unknown;
- };
- content: {
- 'application/json': {
- message?: string;
- };
- };
- };
- /** @description Not Found. The requested resource was not found. */
- 404: {
- headers: {
- [name: string]: unknown;
- };
- content: {
- 'application/json': {
- message?: string;
- };
- };
- };
- /** @description Too Many Requests. You have exceeded the rate limit. Try again later. */
- 429: {
- headers: {
- [name: string]: unknown;
- };
- content: {
- 'application/json': {
- message?: string;
- };
- };
- };
- /** @description Internal Server Error. This is a problem with the server that you cannot fix. */
- 500: {
- headers: {
- [name: string]: unknown;
- };
- content: {
- 'application/json': {
- message?: string;
- };
- };
- };
- };
- };
- delete?: never;
- options?: never;
- head?: never;
- patch?: never;
- trace?: never;
- };
- '/api/auth/get-access-token': {
- parameters: {
- query?: never;
- header?: never;
- path?: never;
- cookie?: never;
- };
- get?: never;
- put?: never;
- /** @description Get a valid access token, doing a refresh if needed */
- post: {
- parameters: {
- query?: never;
- header?: never;
- path?: never;
- cookie?: never;
- };
- requestBody: {
- content: {
- 'application/json': {
- /** @description The provider ID for the OAuth provider */
+ /**
+ * Format: date-time
+ * @default Generated at runtime
+ */
+ createdAt: string;
+ /** Format: date-time */
+ updatedAt: string;
+ ipAddress?: string;
+ userAgent?: string;
+ userId: string;
+ activeOrganizationId?: string;
+ impersonatedBy?: string;
+ };
+ Account: {
+ id?: string;
+ accountId: string;
providerId: string;
- /** @description The account ID associated with the refresh token */
- accountId?: string | null;
- /** @description The user ID associated with the account */
- userId?: string | null;
- };
- };
- };
- responses: {
- /** @description A Valid access token */
- 200: {
- headers: {
- [name: string]: unknown;
- };
- content: {
- 'application/json': {
- tokenType?: string;
- idToken?: string;
- accessToken?: string;
- /** Format: date-time */
- accessTokenExpiresAt?: string;
- };
- };
- };
- /** @description Invalid refresh token or provider configuration */
- 400: {
- headers: {
- [name: string]: unknown;
- };
- content?: never;
- };
- /** @description Unauthorized. Due to missing or invalid authentication. */
- 401: {
- headers: {
- [name: string]: unknown;
- };
- content: {
- 'application/json': {
- message: string;
- };
- };
- };
- /** @description Forbidden. You do not have permission to access this resource or to perform this action. */
- 403: {
- headers: {
- [name: string]: unknown;
- };
- content: {
- 'application/json': {
- message?: string;
- };
- };
- };
- /** @description Not Found. The requested resource was not found. */
- 404: {
- headers: {
- [name: string]: unknown;
- };
- content: {
- 'application/json': {
- message?: string;
- };
- };
- };
- /** @description Too Many Requests. You have exceeded the rate limit. Try again later. */
- 429: {
- headers: {
- [name: string]: unknown;
- };
- content: {
- 'application/json': {
- message?: string;
- };
- };
- };
- /** @description Internal Server Error. This is a problem with the server that you cannot fix. */
- 500: {
- headers: {
- [name: string]: unknown;
- };
- content: {
- 'application/json': {
- message?: string;
- };
- };
- };
- };
- };
- delete?: never;
- options?: never;
- head?: never;
- patch?: never;
- trace?: never;
- };
- '/api/auth/account-info': {
- parameters: {
- query?: never;
- header?: never;
- path?: never;
- cookie?: never;
- };
- /** @description Get the account info provided by the provider */
- get: {
- parameters: {
- query?: never;
- header?: never;
- path?: never;
- cookie?: never;
- };
- requestBody?: never;
- responses: {
- /** @description Success */
- 200: {
- headers: {
- [name: string]: unknown;
- };
- content: {
- 'application/json': {
- user: {
+ userId: string;
+ accessToken?: string;
+ refreshToken?: string;
+ idToken?: string;
+ /** Format: date-time */
+ accessTokenExpiresAt?: string;
+ /** Format: date-time */
+ refreshTokenExpiresAt?: string;
+ scope?: string;
+ password?: string;
+ /**
+ * Format: date-time
+ * @default Generated at runtime
+ */
+ createdAt: string;
+ /** Format: date-time */
+ updatedAt: string;
+ };
+ Verification: {
+ id?: string;
+ identifier: string;
+ value: string;
+ /** Format: date-time */
+ expiresAt: string;
+ /**
+ * Format: date-time
+ * @default Generated at runtime
+ */
+ createdAt: string;
+ /**
+ * Format: date-time
+ * @default Generated at runtime
+ */
+ updatedAt: string;
+ };
+ TwoFactor: {
+ id?: string;
+ secret: string;
+ backupCodes: string;
+ userId: string;
+ };
+ Organization: {
+ id?: string;
+ name: string;
+ slug: string;
+ logo?: string;
+ /** Format: date-time */
+ createdAt: string;
+ metadata?: string;
+ };
+ Member: {
+ id?: string;
+ organizationId: string;
+ userId: string;
+ /** @default member */
+ role: string;
+ /** Format: date-time */
+ createdAt: string;
+ };
+ Invitation: {
+ id?: string;
+ organizationId: string;
+ email: string;
+ role?: string;
+ /** @default pending */
+ status: string;
+ /** Format: date-time */
+ expiresAt: string;
+ /**
+ * Format: date-time
+ * @default Generated at runtime
+ */
+ createdAt: string;
+ inviterId: string;
+ };
+ Passkey: {
+ id?: string;
+ name?: string;
+ publicKey: string;
+ userId: string;
+ credentialID: string;
+ counter: number;
+ deviceType: string;
+ backedUp: boolean;
+ transports?: string;
+ /** Format: date-time */
+ createdAt?: string;
+ aaguid?: string;
+ };
+ };
+ responses: never;
+ parameters: never;
+ requestBodies: never;
+ headers: never;
+ pathItems: never;
+}
+export type $defs = Record;
+export interface operations {
+ AppController_getHello: {
+ parameters: {
+ query?: never;
+ header?: never;
+ path?: never;
+ cookie?: never;
+ };
+ requestBody?: never;
+ responses: {
+ 200: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content?: never;
+ };
+ };
+ };
+ NotificationsController_getNotifications: {
+ parameters: {
+ query?: never;
+ header?: never;
+ path?: never;
+ cookie?: never;
+ };
+ requestBody?: never;
+ responses: {
+ 200: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content?: never;
+ };
+ };
+ };
+ NotificationsController_getUnreadCount: {
+ parameters: {
+ query?: never;
+ header?: never;
+ path?: never;
+ cookie?: never;
+ };
+ requestBody?: never;
+ responses: {
+ 200: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content?: never;
+ };
+ };
+ };
+ NotificationsController_markAsRead: {
+ parameters: {
+ query?: never;
+ header?: never;
+ path: {
+ id: string;
+ };
+ cookie?: never;
+ };
+ requestBody?: never;
+ responses: {
+ 200: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content?: never;
+ };
+ };
+ };
+ NotificationsController_markAllAsRead: {
+ parameters: {
+ query?: never;
+ header?: never;
+ path?: never;
+ cookie?: never;
+ };
+ requestBody?: never;
+ responses: {
+ 200: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content?: never;
+ };
+ };
+ };
+ NotificationsController_deleteNotification: {
+ parameters: {
+ query?: never;
+ header?: never;
+ path: {
+ id: string;
+ };
+ cookie?: never;
+ };
+ requestBody?: never;
+ responses: {
+ 200: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content?: never;
+ };
+ };
+ };
+ NotificationsController_getPreferences: {
+ parameters: {
+ query?: never;
+ header?: never;
+ path?: never;
+ cookie?: never;
+ };
+ requestBody?: never;
+ responses: {
+ 200: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content?: never;
+ };
+ };
+ };
+ NotificationsController_updatePreferences: {
+ parameters: {
+ query?: never;
+ header?: never;
+ path?: never;
+ cookie?: never;
+ };
+ requestBody: {
+ content: {
+ "application/json": components["schemas"]["NotificationPreferencesDto"];
+ };
+ };
+ responses: {
+ 200: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content?: never;
+ };
+ };
+ };
+ NotificationsController_sendTestNotification: {
+ parameters: {
+ query?: never;
+ header?: never;
+ path?: never;
+ cookie?: never;
+ };
+ requestBody?: never;
+ responses: {
+ 200: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content?: never;
+ };
+ };
+ };
+ NotificationsController_triggerMarketingCron: {
+ parameters: {
+ query?: never;
+ header?: never;
+ path?: never;
+ cookie?: never;
+ };
+ requestBody?: never;
+ responses: {
+ 200: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content?: never;
+ };
+ };
+ };
+ SettingsController_getSettings: {
+ parameters: {
+ query?: never;
+ header?: never;
+ path?: never;
+ cookie?: never;
+ };
+ requestBody?: never;
+ responses: {
+ /** @description Settings retrieved successfully */
+ 200: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content?: never;
+ };
+ /** @description Unauthorized */
+ 401: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content?: never;
+ };
+ };
+ };
+ SettingsController_updateNotificationSettings: {
+ parameters: {
+ query?: never;
+ header?: never;
+ path?: never;
+ cookie?: never;
+ };
+ /** @description Notification settings object */
+ requestBody: {
+ content: {
+ "application/json": string;
+ };
+ };
+ responses: {
+ /** @description Notification settings updated successfully */
+ 200: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content?: never;
+ };
+ /** @description Bad request */
+ 400: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content?: never;
+ };
+ /** @description Unauthorized */
+ 401: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content?: never;
+ };
+ };
+ };
+ SettingsController_updatePrivacySettings: {
+ parameters: {
+ query?: never;
+ header?: never;
+ path?: never;
+ cookie?: never;
+ };
+ requestBody: {
+ content: {
+ "application/json": components["schemas"]["UpdatePrivacySettingsDto"];
+ };
+ };
+ responses: {
+ /** @description Privacy settings updated successfully */
+ 200: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content?: never;
+ };
+ /** @description Bad request */
+ 400: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content?: never;
+ };
+ /** @description Unauthorized */
+ 401: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content?: never;
+ };
+ };
+ };
+ SettingsController_updateAppearanceSettings: {
+ parameters: {
+ query?: never;
+ header?: never;
+ path?: never;
+ cookie?: never;
+ };
+ requestBody: {
+ content: {
+ "application/json": components["schemas"]["UpdateAppearanceSettingsDto"];
+ };
+ };
+ responses: {
+ /** @description Appearance settings updated successfully */
+ 200: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content?: never;
+ };
+ /** @description Bad request */
+ 400: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content?: never;
+ };
+ /** @description Unauthorized */
+ 401: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content?: never;
+ };
+ };
+ };
+ EarningsController_getEarningsPublic: {
+ parameters: {
+ query: {
+ /** @description Max activities to return (default 100) */
+ limit?: number;
+ /** @description Offset for activity pagination */
+ offset?: number;
+ /** @description Username of the profile to fetch earnings for */
+ username: string;
+ };
+ header?: never;
+ path?: never;
+ cookie?: never;
+ };
+ requestBody?: never;
+ responses: {
+ /** @description Public earnings retrieved successfully */
+ 200: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content: {
+ "application/json": components["schemas"]["PublicEarningsResponseDto"];
+ };
+ };
+ /** @description Missing or invalid username */
+ 400: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content?: never;
+ };
+ /** @description User not found */
+ 404: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content?: never;
+ };
+ };
+ };
+ EarningsController_getEarnings: {
+ parameters: {
+ query?: {
+ /** @description Max activities to return (default 100) */
+ limit?: number;
+ /** @description Offset for activity pagination */
+ offset?: number;
+ };
+ header?: never;
+ path?: never;
+ cookie?: never;
+ };
+ requestBody?: never;
+ responses: {
+ /** @description Earnings data retrieved successfully */
+ 200: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content: {
+ "application/json": components["schemas"]["EarningsResponseDto"];
+ };
+ };
+ /** @description Unauthorized */
+ 401: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content?: never;
+ };
+ };
+ };
+ ProfileController_getProfile: {
+ parameters: {
+ query?: never;
+ header?: never;
+ path?: never;
+ cookie?: never;
+ };
+ requestBody?: never;
+ responses: {
+ /** @description Profile retrieved successfully */
+ 200: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content: {
+ "application/json": components["schemas"]["ProfileResponseDto"];
+ };
+ };
+ /** @description Unauthorized */
+ 401: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content?: never;
+ };
+ };
+ };
+ ProfileController_updateProfile: {
+ parameters: {
+ query?: never;
+ header?: never;
+ path?: never;
+ cookie?: never;
+ };
+ requestBody: {
+ content: {
+ "application/json": components["schemas"]["UpdateProfileDto"];
+ };
+ };
+ responses: {
+ /** @description Profile updated successfully */
+ 200: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content?: never;
+ };
+ /** @description Bad request */
+ 400: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content?: never;
+ };
+ /** @description Unauthorized */
+ 401: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content?: never;
+ };
+ };
+ };
+ ProfileController_getProfileStats: {
+ parameters: {
+ query?: never;
+ header?: never;
+ path?: never;
+ cookie?: never;
+ };
+ requestBody?: never;
+ responses: {
+ /** @description Profile stats retrieved successfully */
+ 200: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content?: never;
+ };
+ /** @description Unauthorized */
+ 401: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content?: never;
+ };
+ };
+ };
+ ProfileController_getActivity: {
+ parameters: {
+ query?: never;
+ header?: never;
+ path?: never;
+ cookie?: never;
+ };
+ requestBody?: never;
+ responses: {
+ /** @description Activity retrieved successfully */
+ 200: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content?: never;
+ };
+ /** @description Unauthorized */
+ 401: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content?: never;
+ };
+ };
+ };
+ ProfileController_uploadAvatar: {
+ parameters: {
+ query?: never;
+ header?: never;
+ path?: never;
+ cookie?: never;
+ };
+ requestBody: {
+ content: {
+ "multipart/form-data": {
+ /**
+ * Format: binary
+ * @description Avatar image file
+ */
+ avatar?: string;
+ };
+ };
+ };
+ responses: {
+ /** @description Avatar uploaded successfully */
+ 200: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content?: never;
+ };
+ /** @description Bad request */
+ 400: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content?: never;
+ };
+ /** @description Unauthorized */
+ 401: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content?: never;
+ };
+ };
+ };
+ PreferencesController_getPreferences: {
+ parameters: {
+ query?: never;
+ header?: never;
+ path?: never;
+ cookie?: never;
+ };
+ requestBody?: never;
+ responses: {
+ /** @description Preferences retrieved successfully */
+ 200: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content?: never;
+ };
+ /** @description Unauthorized */
+ 401: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content?: never;
+ };
+ };
+ };
+ PreferencesController_updateLanguage: {
+ parameters: {
+ query?: never;
+ header?: never;
+ path?: never;
+ cookie?: never;
+ };
+ requestBody: {
+ content: {
+ "application/json": {
+ /** @example en */
+ language?: string;
+ };
+ };
+ };
+ responses: {
+ /** @description Language preference updated successfully */
+ 200: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content?: never;
+ };
+ /** @description Bad request */
+ 400: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content?: never;
+ };
+ /** @description Unauthorized */
+ 401: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content?: never;
+ };
+ };
+ };
+ PreferencesController_updateTimezone: {
+ parameters: {
+ query?: never;
+ header?: never;
+ path?: never;
+ cookie?: never;
+ };
+ requestBody: {
+ content: {
+ "application/json": {
+ /** @example America/New_York */
+ timezone?: string;
+ };
+ };
+ };
+ responses: {
+ /** @description Timezone preference updated successfully */
+ 200: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content?: never;
+ };
+ /** @description Bad request */
+ 400: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content?: never;
+ };
+ /** @description Unauthorized */
+ 401: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content?: never;
+ };
+ };
+ };
+ PreferencesController_updateCategoryPreferences: {
+ parameters: {
+ query?: never;
+ header?: never;
+ path?: never;
+ cookie?: never;
+ };
+ requestBody: {
+ content: {
+ "application/json": {
+ /**
+ * @example [
+ * "tech",
+ * "design"
+ * ]
+ */
+ categories?: string[];
+ };
+ };
+ };
+ responses: {
+ /** @description Category preferences updated successfully */
+ 200: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content?: never;
+ };
+ /** @description Bad request */
+ 400: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content?: never;
+ };
+ /** @description Unauthorized */
+ 401: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content?: never;
+ };
+ };
+ };
+ PreferencesController_updateSkillPreferences: {
+ parameters: {
+ query?: never;
+ header?: never;
+ path?: never;
+ cookie?: never;
+ };
+ requestBody: {
+ content: {
+ "application/json": {
+ /**
+ * @example [
+ * "javascript",
+ * "react"
+ * ]
+ */
+ skills?: string[];
+ };
+ };
+ };
+ responses: {
+ /** @description Skill preferences updated successfully */
+ 200: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content?: never;
+ };
+ /** @description Bad request */
+ 400: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content?: never;
+ };
+ /** @description Unauthorized */
+ 401: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content?: never;
+ };
+ };
+ };
+ UserController_getMe: {
+ parameters: {
+ query?: never;
+ header?: never;
+ path?: never;
+ cookie?: never;
+ };
+ requestBody?: never;
+ responses: {
+ /** @description Current user retrieved successfully */
+ 200: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content: {
+ "application/json": components["schemas"]["CurrentUserDto"];
+ };
+ };
+ /** @description Unauthorized */
+ 401: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content?: never;
+ };
+ };
+ };
+ UserController_getDashboard: {
+ parameters: {
+ query?: never;
+ header?: never;
+ path?: never;
+ cookie?: never;
+ };
+ requestBody?: never;
+ responses: {
+ /** @description Dashboard with profile, stats, chart data, activities graph, and recent activities retrieved successfully */
+ 200: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content: {
+ "application/json": components["schemas"]["DashboardDto"];
+ };
+ };
+ /** @description Unauthorized */
+ 401: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content?: never;
+ };
+ };
+ };
+ UserController_completeOnboarding: {
+ parameters: {
+ query?: never;
+ header?: never;
+ path?: never;
+ cookie?: never;
+ };
+ requestBody: {
+ content: {
+ "application/json": components["schemas"]["CompleteOnboardingDto"];
+ };
+ };
+ responses: {
+ /** @description Onboarding completed */
+ 200: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content?: never;
+ };
+ /** @description Bad request */
+ 400: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content?: never;
+ };
+ /** @description Unauthorized */
+ 401: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content?: never;
+ };
+ };
+ };
+ UserController_getPublic: {
+ parameters: {
+ query?: never;
+ header?: never;
+ path?: never;
+ cookie?: never;
+ };
+ requestBody?: never;
+ responses: {
+ /** @description Public route accessed successfully */
+ 200: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content?: never;
+ };
+ };
+ };
+ UserController_getOptional: {
+ parameters: {
+ query?: never;
+ header?: never;
+ path?: never;
+ cookie?: never;
+ };
+ requestBody?: never;
+ responses: {
+ /** @description Optional auth route accessed successfully */
+ 200: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content?: never;
+ };
+ };
+ };
+ UserController_getUserByUsername: {
+ parameters: {
+ query?: never;
+ header?: never;
+ path: {
+ /** @description Username of the user to retrieve */
+ username: string;
+ };
+ cookie?: never;
+ };
+ requestBody?: never;
+ responses: {
+ /** @description User profile retrieved successfully */
+ 200: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content?: never;
+ };
+ /** @description User not found */
+ 404: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content?: never;
+ };
+ };
+ };
+ UserController_getUserFollowers: {
+ parameters: {
+ query?: {
+ /** @description Pagination offset */
+ offset?: number;
+ /** @description Number of followers to return */
+ limit?: number;
+ };
+ header?: never;
+ path: {
+ /** @description Username of the user */
+ username: string;
+ };
+ cookie?: never;
+ };
+ requestBody?: never;
+ responses: {
+ /** @description Followers retrieved successfully */
+ 200: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content?: never;
+ };
+ /** @description User not found */
+ 404: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content?: never;
+ };
+ };
+ };
+ UserController_getUserFollowing: {
+ parameters: {
+ query?: {
+ /** @description Filter by entity type */
+ entityType?: "USER" | "PROJECT" | "ORGANIZATION" | "CROWDFUNDING_CAMPAIGN" | "BOUNTY" | "GRANT" | "HACKATHON";
+ /** @description Pagination offset */
+ offset?: number;
+ /** @description Number of following to return */
+ limit?: number;
+ };
+ header?: never;
+ path: {
+ /** @description Username of the user */
+ username: string;
+ };
+ cookie?: never;
+ };
+ requestBody?: never;
+ responses: {
+ /** @description Following list retrieved successfully */
+ 200: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content?: never;
+ };
+ /** @description User not found */
+ 404: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content?: never;
+ };
+ };
+ };
+ UsersController_getUsers: {
+ parameters: {
+ query?: never;
+ header?: never;
+ path?: never;
+ cookie?: never;
+ };
+ requestBody?: never;
+ responses: {
+ /** @description Users retrieved successfully */
+ 200: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content?: never;
+ };
+ /** @description Unauthorized */
+ 401: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content?: never;
+ };
+ /** @description Forbidden - Admin access required */
+ 403: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content?: never;
+ };
+ };
+ };
+ UsersController_getUser: {
+ parameters: {
+ query?: never;
+ header?: never;
+ path: {
+ /** @description User ID */
+ id: string;
+ };
+ cookie?: never;
+ };
+ requestBody?: never;
+ responses: {
+ /** @description User retrieved successfully */
+ 200: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content?: never;
+ };
+ /** @description Invalid user ID */
+ 400: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content?: never;
+ };
+ /** @description Unauthorized */
+ 401: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content?: never;
+ };
+ /** @description User not found */
+ 404: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content?: never;
+ };
+ };
+ };
+ UsersController_updateUser: {
+ parameters: {
+ query?: never;
+ header?: never;
+ path: {
+ /** @description User ID */
+ id: string;
+ };
+ cookie?: never;
+ };
+ requestBody: {
+ content: {
+ "application/json": components["schemas"]["UpdateUserDto"];
+ };
+ };
+ responses: {
+ /** @description User updated successfully */
+ 200: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content?: never;
+ };
+ /** @description Unauthorized */
+ 401: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content?: never;
+ };
+ /** @description User not found */
+ 404: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content?: never;
+ };
+ };
+ };
+ UsersController_deleteUser: {
+ parameters: {
+ query?: never;
+ header?: never;
+ path: {
+ /** @description User ID */
+ id: string;
+ };
+ cookie?: never;
+ };
+ requestBody?: never;
+ responses: {
+ /** @description User deleted successfully */
+ 200: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content?: never;
+ };
+ /** @description Unauthorized */
+ 401: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content?: never;
+ };
+ /** @description Forbidden - Admin access required */
+ 403: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content?: never;
+ };
+ /** @description User not found */
+ 404: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content?: never;
+ };
+ };
+ };
+ UsersController_getUserProfile: {
+ parameters: {
+ query?: never;
+ header?: never;
+ path: {
+ /** @description User ID */
+ id: string;
+ };
+ cookie?: never;
+ };
+ requestBody?: never;
+ responses: {
+ /** @description User profile retrieved successfully */
+ 200: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content?: never;
+ };
+ /** @description User not found */
+ 404: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content?: never;
+ };
+ };
+ };
+ UploadController_uploadSingle: {
+ parameters: {
+ query?: never;
+ header?: never;
+ path?: never;
+ cookie?: never;
+ };
+ /** @description File upload data */
+ requestBody: {
+ content: {
+ "multipart/form-data": {
+ /**
+ * Format: binary
+ * @description File to upload
+ */
+ file?: string;
+ /**
+ * @description Folder to upload to
+ * @example boundless/projects/project123
+ */
+ folder?: string;
+ /**
+ * @description Tags for the file
+ * @example [
+ * "project",
+ * "logo"
+ * ]
+ */
+ tags?: string[];
+ /** @description Image transformation options */
+ transformation?: {
+ /** @example 400 */
+ width?: number;
+ /** @example 400 */
+ height?: number;
+ /** @example fit */
+ crop?: string;
+ /** @example auto */
+ quality?: string;
+ /** @example auto */
+ format?: string;
+ };
+ };
+ };
+ };
+ responses: {
+ /** @description File uploaded successfully */
+ 201: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content: {
+ "application/json": components["schemas"]["UploadResponseDto"];
+ };
+ };
+ /** @description Invalid file or upload failed */
+ 400: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content?: never;
+ };
+ };
+ };
+ UploadController_uploadMultiple: {
+ parameters: {
+ query?: never;
+ header?: never;
+ path?: never;
+ cookie?: never;
+ };
+ /** @description Multiple files upload data */
+ requestBody: {
+ content: {
+ "multipart/form-data": {
+ /** @description Files to upload */
+ files?: string[];
+ /**
+ * @description Folder to upload to
+ * @example boundless/projects/project123/gallery
+ */
+ folder?: string;
+ /**
+ * @description Tags for the files
+ * @example [
+ * "project",
+ * "gallery"
+ * ]
+ */
+ tags?: string[];
+ };
+ };
+ };
+ responses: {
+ /** @description Files uploaded successfully */
+ 201: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content: {
+ "application/json": components["schemas"]["MultipleUploadResponseDto"];
+ };
+ };
+ /** @description Invalid files or upload failed */
+ 400: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content?: never;
+ };
+ };
+ };
+ UploadController_deleteFile: {
+ parameters: {
+ query?: never;
+ header?: never;
+ path: {
+ /** @description Public ID of the file to delete */
+ publicId: string;
+ /** @description Type of resource */
+ resourceType: "image" | "video" | "raw";
+ };
+ cookie?: never;
+ };
+ requestBody?: never;
+ responses: {
+ /** @description File deleted successfully */
+ 200: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content: {
+ "application/json": {
+ /** @example true */
+ success?: boolean;
+ /** @example File deleted successfully */
+ message?: string;
+ };
+ };
+ };
+ /** @description File not found */
+ 404: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content?: never;
+ };
+ };
+ };
+ UploadController_getFileInfo: {
+ parameters: {
+ query?: never;
+ header?: never;
+ path: {
+ /** @description Public ID of the file */
+ publicId: string;
+ /** @description Type of resource */
+ resourceType: "image" | "video" | "raw";
+ };
+ cookie?: never;
+ };
+ requestBody?: never;
+ responses: {
+ /** @description File information retrieved successfully */
+ 200: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content: {
+ "application/json": components["schemas"]["FileInfoResponseDto"];
+ };
+ };
+ /** @description File not found */
+ 404: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content?: never;
+ };
+ };
+ };
+ UploadController_searchFiles: {
+ parameters: {
+ query?: {
+ /** @description Maximum number of results */
+ maxResults?: number;
+ /** @description Resource type to filter by */
+ resourceType?: "image" | "video" | "raw";
+ /** @description Folder to search in */
+ folder?: unknown;
+ /** @description Tags to filter by */
+ tags?: string[];
+ };
+ header?: never;
+ path?: never;
+ cookie?: never;
+ };
+ requestBody?: never;
+ responses: {
+ /** @description Files found successfully */
+ 200: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content: {
+ "application/json": components["schemas"]["SearchFilesResponseDto"];
+ };
+ };
+ /** @description Search failed */
+ 400: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content?: never;
+ };
+ };
+ };
+ UploadController_generateOptimizedUrl: {
+ parameters: {
+ query?: {
+ /** @description Output format */
+ format?: unknown;
+ /** @description Quality setting */
+ quality?: unknown;
+ /** @description Crop mode */
+ crop?: unknown;
+ /** @description Desired height */
+ height?: number;
+ /** @description Desired width */
+ width?: number;
+ };
+ header?: never;
+ path: {
+ /** @description Public ID of the file */
+ publicId: string;
+ };
+ cookie?: never;
+ };
+ requestBody?: never;
+ responses: {
+ /** @description Optimized URL generated successfully */
+ 200: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content: {
+ "application/json": components["schemas"]["OptimizedUrlResponseDto"];
+ };
+ };
+ /** @description Failed to generate URL */
+ 400: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content?: never;
+ };
+ };
+ };
+ UploadController_generateResponsiveUrls: {
+ parameters: {
+ query?: {
+ /** @description Output format */
+ format?: unknown;
+ /** @description Quality setting */
+ quality?: unknown;
+ /** @description Crop mode */
+ crop?: unknown;
+ /** @description Base height for responsive breakpoints */
+ height?: number;
+ /** @description Base width for responsive breakpoints */
+ width?: number;
+ };
+ header?: never;
+ path: {
+ /** @description Public ID of the file */
+ publicId: string;
+ };
+ cookie?: never;
+ };
+ requestBody?: never;
+ responses: {
+ /** @description Responsive URLs generated successfully */
+ 200: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content: {
+ "application/json": components["schemas"]["ResponsiveUrlsResponseDto"];
+ };
+ };
+ /** @description Failed to generate responsive URLs */
+ 400: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content?: never;
+ };
+ };
+ };
+ UploadController_generateAvatarUrl: {
+ parameters: {
+ query?: {
+ /** @description Avatar size (square) */
+ size?: number;
+ };
+ header?: never;
+ path: {
+ /** @description Public ID of the image file */
+ publicId: string;
+ };
+ cookie?: never;
+ };
+ requestBody?: never;
+ responses: {
+ /** @description Avatar URL generated successfully */
+ 200: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content: {
+ "application/json": components["schemas"]["OptimizedUrlResponseDto"];
+ };
+ };
+ /** @description Failed to generate avatar URL */
+ 400: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content?: never;
+ };
+ };
+ };
+ UploadController_generateLogoUrl: {
+ parameters: {
+ query?: {
+ /** @description Logo height */
+ height?: number;
+ /** @description Logo width */
+ width?: number;
+ };
+ header?: never;
+ path: {
+ /** @description Public ID of the image file */
+ publicId: string;
+ };
+ cookie?: never;
+ };
+ requestBody?: never;
+ responses: {
+ /** @description Logo URL generated successfully */
+ 200: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content: {
+ "application/json": components["schemas"]["OptimizedUrlResponseDto"];
+ };
+ };
+ /** @description Failed to generate logo URL */
+ 400: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content?: never;
+ };
+ };
+ };
+ UploadController_generateBannerUrl: {
+ parameters: {
+ query?: {
+ /** @description Banner height */
+ height?: number;
+ /** @description Banner width */
+ width?: number;
+ };
+ header?: never;
+ path: {
+ /** @description Public ID of the image file */
+ publicId: string;
+ };
+ cookie?: never;
+ };
+ requestBody?: never;
+ responses: {
+ /** @description Banner URL generated successfully */
+ 200: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content: {
+ "application/json": components["schemas"]["OptimizedUrlResponseDto"];
+ };
+ };
+ /** @description Failed to generate banner URL */
+ 400: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content?: never;
+ };
+ };
+ };
+ UploadController_getUsageStats: {
+ parameters: {
+ query?: never;
+ header?: never;
+ path?: never;
+ cookie?: never;
+ };
+ requestBody?: never;
+ responses: {
+ /** @description Usage statistics retrieved successfully */
+ 200: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content: {
+ "application/json": components["schemas"]["UsageStatsResponseDto"];
+ };
+ };
+ /** @description Failed to get usage stats */
+ 400: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content?: never;
+ };
+ };
+ };
+ AuthController_register: {
+ parameters: {
+ query?: never;
+ header?: never;
+ path?: never;
+ cookie?: never;
+ };
+ requestBody: {
+ content: {
+ "application/json": components["schemas"]["RegisterDto"];
+ };
+ };
+ responses: {
+ 201: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content?: never;
+ };
+ };
+ };
+ AuthController_login: {
+ parameters: {
+ query?: never;
+ header?: never;
+ path?: never;
+ cookie?: never;
+ };
+ requestBody: {
+ content: {
+ "application/json": components["schemas"]["LoginDto"];
+ };
+ };
+ responses: {
+ 200: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content?: never;
+ };
+ };
+ };
+ AuthController_refreshToken: {
+ parameters: {
+ query?: never;
+ header?: never;
+ path?: never;
+ cookie?: never;
+ };
+ requestBody: {
+ content: {
+ "application/json": components["schemas"]["RefreshTokenDto"];
+ };
+ };
+ responses: {
+ 200: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content?: never;
+ };
+ };
+ };
+ AuthController_logout: {
+ parameters: {
+ query?: never;
+ header?: never;
+ path?: never;
+ cookie?: never;
+ };
+ requestBody?: never;
+ responses: {
+ 200: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content?: never;
+ };
+ };
+ };
+ AuthController_getProfile: {
+ parameters: {
+ query?: never;
+ header?: never;
+ path?: never;
+ cookie?: never;
+ };
+ requestBody?: never;
+ responses: {
+ 200: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content?: never;
+ };
+ };
+ };
+ AuthController_verifyStellarSignature: {
+ parameters: {
+ query?: never;
+ header?: never;
+ path?: never;
+ cookie?: never;
+ };
+ requestBody: {
+ content: {
+ "application/json": components["schemas"]["VerifySignatureDto"];
+ };
+ };
+ responses: {
+ 201: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content?: never;
+ };
+ };
+ };
+ OAuthController_googleAuth: {
+ parameters: {
+ query?: never;
+ header?: never;
+ path?: never;
+ cookie?: never;
+ };
+ requestBody?: never;
+ responses: {
+ 200: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content?: never;
+ };
+ };
+ };
+ OAuthController_googleAuthCallback: {
+ parameters: {
+ query?: never;
+ header?: never;
+ path?: never;
+ cookie?: never;
+ };
+ requestBody?: never;
+ responses: {
+ 200: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content?: never;
+ };
+ };
+ };
+ OAuthController_githubAuth: {
+ parameters: {
+ query?: never;
+ header?: never;
+ path?: never;
+ cookie?: never;
+ };
+ requestBody?: never;
+ responses: {
+ 200: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content?: never;
+ };
+ };
+ };
+ OAuthController_githubAuthCallback: {
+ parameters: {
+ query?: never;
+ header?: never;
+ path?: never;
+ cookie?: never;
+ };
+ requestBody?: never;
+ responses: {
+ 200: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content?: never;
+ };
+ };
+ };
+ OAuthController_twitterAuth: {
+ parameters: {
+ query?: never;
+ header?: never;
+ path?: never;
+ cookie?: never;
+ };
+ requestBody?: never;
+ responses: {
+ 200: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content?: never;
+ };
+ };
+ };
+ OAuthController_twitterAuthCallback: {
+ parameters: {
+ query?: never;
+ header?: never;
+ path?: never;
+ cookie?: never;
+ };
+ requestBody?: never;
+ responses: {
+ 200: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content?: never;
+ };
+ };
+ };
+ FollowsController_followEntity: {
+ parameters: {
+ query?: never;
+ header?: never;
+ path: {
+ entityType: string;
+ entityId: string;
+ };
+ cookie?: never;
+ };
+ requestBody?: never;
+ responses: {
+ 201: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content?: never;
+ };
+ };
+ };
+ FollowsController_unfollowEntity: {
+ parameters: {
+ query?: never;
+ header?: never;
+ path: {
+ entityType: string;
+ entityId: string;
+ };
+ cookie?: never;
+ };
+ requestBody?: never;
+ responses: {
+ 200: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content?: never;
+ };
+ };
+ };
+ FollowsController_getUserFollowing: {
+ parameters: {
+ query: {
+ entityType: string;
+ };
+ header?: never;
+ path: {
+ userId: string;
+ };
+ cookie?: never;
+ };
+ requestBody?: never;
+ responses: {
+ 200: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content?: never;
+ };
+ };
+ };
+ FollowsController_getEntityFollowers: {
+ parameters: {
+ query?: never;
+ header?: never;
+ path: {
+ entityType: string;
+ entityId: string;
+ };
+ cookie?: never;
+ };
+ requestBody?: never;
+ responses: {
+ 200: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content?: never;
+ };
+ };
+ };
+ FollowsController_getFollowStats: {
+ parameters: {
+ query?: never;
+ header?: never;
+ path: {
+ userId: string;
+ };
+ cookie?: never;
+ };
+ requestBody?: never;
+ responses: {
+ 200: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content?: never;
+ };
+ };
+ };
+ FollowsController_isFollowing: {
+ parameters: {
+ query?: never;
+ header?: never;
+ path: {
+ entityType: string;
+ entityId: string;
+ };
+ cookie?: never;
+ };
+ requestBody?: never;
+ responses: {
+ 200: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content?: never;
+ };
+ };
+ };
+ ChatController_getMessages: {
+ parameters: {
+ query: {
+ roomId: string;
+ roomType: string;
+ cursor?: string;
+ limit?: number;
+ };
+ header?: never;
+ path?: never;
+ cookie?: never;
+ };
+ requestBody?: never;
+ responses: {
+ /** @description Returns list of messages. */
+ 200: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content?: never;
+ };
+ };
+ };
+ MessagesController_listConversations: {
+ parameters: {
+ query?: {
+ limit?: number;
+ offset?: number;
+ };
+ header?: never;
+ path?: never;
+ cookie?: never;
+ };
+ requestBody?: never;
+ responses: {
+ /** @description Paginated list of conversations */
+ 200: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content?: never;
+ };
+ };
+ };
+ MessagesController_startOrGetConversation: {
+ parameters: {
+ query?: never;
+ header?: never;
+ path?: never;
+ cookie?: never;
+ };
+ requestBody: {
+ content: {
+ "application/json": components["schemas"]["CreateConversationDto"];
+ };
+ };
+ responses: {
+ /** @description Conversation (created or existing) */
+ 200: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content?: never;
+ };
+ };
+ };
+ MessagesController_getConversation: {
+ parameters: {
+ query?: never;
+ header?: never;
+ path: {
+ /** @description Conversation ID */
+ id: string;
+ };
+ cookie?: never;
+ };
+ requestBody?: never;
+ responses: {
+ /** @description Conversation details */
+ 200: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content?: never;
+ };
+ };
+ };
+ MessagesController_listMessages: {
+ parameters: {
+ query?: {
+ limit?: number;
+ /** @description Cursor for older messages */
+ before?: string;
+ };
+ header?: never;
+ path: {
+ /** @description Conversation ID */
+ id: string;
+ };
+ cookie?: never;
+ };
+ requestBody?: never;
+ responses: {
+ /** @description Paginated messages */
+ 200: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content?: never;
+ };
+ };
+ };
+ MessagesController_sendMessage: {
+ parameters: {
+ query?: never;
+ header?: never;
+ path: {
+ /** @description Conversation ID */
+ id: string;
+ };
+ cookie?: never;
+ };
+ requestBody: {
+ content: {
+ "application/json": components["schemas"]["CreateMessageDto"];
+ };
+ };
+ responses: {
+ /** @description Message created */
+ 201: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content?: never;
+ };
+ };
+ };
+ MessagesController_markConversationRead: {
+ parameters: {
+ query?: never;
+ header?: never;
+ path: {
+ /** @description Conversation ID */
+ id: string;
+ };
+ cookie?: never;
+ };
+ requestBody?: never;
+ responses: {
+ /** @description Marked as read */
+ 200: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content?: never;
+ };
+ };
+ };
+ CreditsController_getMine: {
+ parameters: {
+ query?: never;
+ header?: never;
+ path?: never;
+ cookie?: never;
+ };
+ requestBody?: never;
+ responses: {
+ 200: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content: {
+ "application/json": components["schemas"]["CreditSummaryDto"];
+ };
+ };
+ };
+ };
+ CreditsController_getHistory: {
+ parameters: {
+ query?: {
+ page?: number;
+ limit?: number;
+ };
+ header?: never;
+ path?: never;
+ cookie?: never;
+ };
+ requestBody?: never;
+ responses: {
+ 200: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content: {
+ "application/json": components["schemas"]["CreditHistoryDto"];
+ };
+ };
+ };
+ };
+ CampaignsController_validateCampaign: {
+ parameters: {
+ query?: never;
+ header?: never;
+ path?: never;
+ cookie?: never;
+ };
+ requestBody: {
+ content: {
+ "application/json": components["schemas"]["CreateCampaignDto"];
+ };
+ };
+ responses: {
+ /** @description Campaign data is valid */
+ 200: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content?: never;
+ };
+ /** @description Invalid campaign data */
+ 400: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content?: never;
+ };
+ };
+ };
+ CampaignsController_createDraft: {
+ parameters: {
+ query?: never;
+ header?: never;
+ path?: never;
+ cookie?: never;
+ };
+ requestBody: {
+ content: {
+ "application/json": components["schemas"]["CreateDraftDto"];
+ };
+ };
+ responses: {
+ /** @description Draft campaign created */
+ 201: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content?: never;
+ };
+ };
+ };
+ CampaignsController_getCampaigns: {
+ parameters: {
+ query: {
+ /** @description Category of the campaign */
+ category?: string;
+ /** @description Status of the campaign */
+ status?: "active" | "funded" | "completed";
+ minFundingGoal?: number;
+ /** @description Minimum funding goal of the campaign */
+ maxFundingGoal?: number;
+ /** @description Maximum funding goal of the campaign */
+ page?: number;
+ /** @description Limit of the campaign */
+ limit?: number;
+ /** @description Sort by of the campaign */
+ sortBy: string;
+ /** @description Sort order of the campaign */
+ sortOrder: string;
+ /** @description Search of the campaign */
+ search?: string;
+ };
+ header?: never;
+ path?: never;
+ cookie?: never;
+ };
+ requestBody?: never;
+ responses: {
+ /** @description Campaigns retrieved successfully */
+ 200: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content?: never;
+ };
+ };
+ };
+ CampaignsController_createCampaign: {
+ parameters: {
+ query?: never;
+ header?: never;
+ path?: never;
+ cookie?: never;
+ };
+ requestBody: {
+ content: {
+ "application/json": components["schemas"]["CreateCampaignDto"];
+ };
+ };
+ responses: {
+ /** @description Campaign and project created successfully */
+ 201: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content?: never;
+ };
+ /** @description Invalid campaign data */
+ 400: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content?: never;
+ };
+ };
+ };
+ CampaignsController_triggerCron: {
+ parameters: {
+ query?: never;
+ header?: never;
+ path?: never;
+ cookie?: never;
+ };
+ requestBody?: never;
+ responses: {
+ /** @description Cron job triggered successfully */
+ 200: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content?: never;
+ };
+ };
+ };
+ CampaignsController_getMyCampaigns: {
+ parameters: {
+ query: {
+ /** @description Category of the campaign */
+ category: string;
+ /** @description Status of the campaign */
+ status: string;
+ minFundingGoal: number;
+ /** @description Minimum funding goal of the campaign */
+ maxFundingGoal: number;
+ /** @description Maximum funding goal of the campaign */
+ page?: number;
+ /** @description Limit of the campaign */
+ limit?: number;
+ /** @description Sort by of the campaign */
+ sortBy?: string;
+ /** @description Sort order of the campaign */
+ sortOrder?: string;
+ /** @description Search of the campaign */
+ search: string;
+ };
+ header?: never;
+ path?: never;
+ cookie?: never;
+ };
+ requestBody?: never;
+ responses: {
+ /** @description User campaigns retrieved successfully */
+ 200: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content?: never;
+ };
+ };
+ };
+ CampaignsController_getCampaignBySlug: {
+ parameters: {
+ query?: never;
+ header?: never;
+ path: {
+ /** @description Campaign URL slug */
+ slug: string;
+ };
+ cookie?: never;
+ };
+ requestBody?: never;
+ responses: {
+ /** @description Campaign details retrieved successfully */
+ 200: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content?: never;
+ };
+ /** @description Campaign not found */
+ 404: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content?: never;
+ };
+ };
+ };
+ CampaignsController_getCampaign: {
+ parameters: {
+ query?: never;
+ header?: never;
+ path: {
+ /** @description Campaign ID or slug */
+ id: string;
+ };
+ cookie?: never;
+ };
+ requestBody?: never;
+ responses: {
+ /** @description Campaign details retrieved successfully */
+ 200: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content?: never;
+ };
+ /** @description Campaign not found */
+ 404: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content?: never;
+ };
+ };
+ };
+ CampaignsController_updateCampaign: {
+ parameters: {
+ query?: never;
+ header?: never;
+ path: {
+ /** @description Campaign ID or slug */
+ id: string;
+ };
+ cookie?: never;
+ };
+ requestBody: {
+ content: {
+ "application/json": components["schemas"]["UpdateCampaignDto"];
+ };
+ };
+ responses: {
+ /** @description Campaign updated successfully */
+ 200: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content?: never;
+ };
+ /** @description User does not own the campaign */
+ 403: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content?: never;
+ };
+ };
+ };
+ CampaignsController_deleteCampaign: {
+ parameters: {
+ query?: never;
+ header?: never;
+ path: {
+ /** @description Campaign ID or slug */
+ id: string;
+ };
+ cookie?: never;
+ };
+ requestBody?: never;
+ responses: {
+ /** @description Campaign deleted successfully */
+ 200: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content?: never;
+ };
+ /** @description Cannot delete campaign with contributions, campaigns in funding phase, funded campaigns, completed campaigns, or user does not own the campaign */
+ 403: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content?: never;
+ };
+ };
+ };
+ CampaignsController_getCampaignStatistics: {
+ parameters: {
+ query?: never;
+ header?: never;
+ path: {
+ /** @description Campaign ID or slug */
+ id: string;
+ };
+ cookie?: never;
+ };
+ requestBody?: never;
+ responses: {
+ /** @description Campaign statistics retrieved successfully */
+ 200: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content?: never;
+ };
+ };
+ };
+ CampaignsController_getInvitations: {
+ parameters: {
+ query?: never;
+ header?: never;
+ path: {
+ id: string;
+ };
+ cookie?: never;
+ };
+ requestBody?: never;
+ responses: {
+ 200: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content?: never;
+ };
+ };
+ };
+ CampaignsController_inviteTeamMember: {
+ parameters: {
+ query?: never;
+ header?: never;
+ path: {
+ id: string;
+ };
+ cookie?: never;
+ };
+ requestBody: {
+ content: {
+ "application/json": components["schemas"]["InviteTeamMemberDto"];
+ };
+ };
+ responses: {
+ 201: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content?: never;
+ };
+ };
+ };
+ CampaignsController_acceptInvitation: {
+ parameters: {
+ query: {
+ token: string;
+ };
+ header?: never;
+ path?: never;
+ cookie?: never;
+ };
+ requestBody?: never;
+ responses: {
+ 200: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content?: never;
+ };
+ };
+ };
+ ContributionsController_getCampaignContributions: {
+ parameters: {
+ query?: {
+ page?: number;
+ limit?: number;
+ };
+ header?: never;
+ path: {
+ /** @description Campaign ID or slug */
+ id: string;
+ };
+ cookie?: never;
+ };
+ requestBody?: never;
+ responses: {
+ /** @description Contributions retrieved successfully */
+ 200: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content?: never;
+ };
+ };
+ };
+ ContributionsController_getContributionStats: {
+ parameters: {
+ query?: never;
+ header?: never;
+ path: {
+ /** @description Campaign ID or slug */
+ id: string;
+ };
+ cookie?: never;
+ };
+ requestBody?: never;
+ responses: {
+ /** @description Contribution statistics retrieved successfully */
+ 200: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content?: never;
+ };
+ };
+ };
+ MilestonesController_getCampaignMilestones: {
+ parameters: {
+ query?: never;
+ header?: never;
+ path: {
+ /** @description Campaign ID or slug */
+ id: string;
+ };
+ cookie?: never;
+ };
+ requestBody?: never;
+ responses: {
+ /** @description Milestones retrieved successfully */
+ 200: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content?: never;
+ };
+ };
+ };
+ MilestonesController_getMilestone: {
+ parameters: {
+ query?: never;
+ header?: never;
+ path: {
+ /** @description Campaign ID or slug */
+ id: string;
+ /** @description Milestone ID */
+ milestoneId: string;
+ };
+ cookie?: never;
+ };
+ requestBody?: never;
+ responses: {
+ /** @description Milestone details retrieved successfully */
+ 200: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content?: never;
+ };
+ /** @description Milestone not found */
+ 404: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content?: never;
+ };
+ };
+ };
+ MilestonesController_updateMilestone: {
+ parameters: {
+ query?: never;
+ header?: never;
+ path: {
+ /** @description Campaign ID or slug */
+ id: string;
+ /** @description Milestone ID */
+ milestoneId: string;
+ };
+ cookie?: never;
+ };
+ requestBody: {
+ content: {
+ "application/json": components["schemas"]["UpdateMilestoneDto"];
+ };
+ };
+ responses: {
+ /** @description Milestone submitted successfully */
+ 200: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content?: never;
+ };
+ /** @description Validation failed - invalid proof of work data */
+ 400: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content?: never;
+ };
+ /** @description User does not own the campaign */
+ 403: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content?: never;
+ };
+ };
+ };
+ MilestonesController_validateMilestoneSubmission: {
+ parameters: {
+ query?: never;
+ header?: never;
+ path: {
+ /** @description Campaign ID or slug */
+ id: string;
+ /** @description Milestone ID */
+ milestoneId: string;
+ };
+ cookie?: never;
+ };
+ requestBody: {
+ content: {
+ "application/json": components["schemas"]["ValidateMilestoneSubmissionDto"];
+ };
+ };
+ responses: {
+ /** @description Validation successful */
+ 200: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content: {
+ "application/json": {
+ /** @example true */
+ validated?: boolean;
+ data?: {
+ /** @example submitted */
+ status?: string;
+ /** @example Milestone completed - all deliverables ready for review. */
+ evidence?: string;
+ /**
+ * @example [
+ * "https://example.com/report.pdf"
+ * ]
+ */
+ documents?: string[];
+ };
+ };
+ };
+ };
+ /** @description Validation failed */
+ 400: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content: {
+ "application/json": {
+ /** @example false */
+ validated?: boolean;
+ /** @example Evidence must be at least 10 characters of meaningful content */
+ error?: string;
+ };
+ };
+ };
+ };
+ };
+ MilestonesController_getMilestoneStats: {
+ parameters: {
+ query?: never;
+ header?: never;
+ path: {
+ /** @description Campaign ID or slug */
+ id: string;
+ };
+ cookie?: never;
+ };
+ requestBody?: never;
+ responses: {
+ /** @description Milestone statistics retrieved successfully */
+ 200: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content?: never;
+ };
+ };
+ };
+ BuilderCrowdfundingV2Controller_submitForReview: {
+ parameters: {
+ query?: never;
+ header?: never;
+ path: {
+ id: string;
+ };
+ cookie?: never;
+ };
+ requestBody?: never;
+ responses: {
+ 200: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content?: never;
+ };
+ };
+ };
+ BuilderCrowdfundingV2Controller_withdrawSubmission: {
+ parameters: {
+ query?: never;
+ header?: never;
+ path: {
+ id: string;
+ };
+ cookie?: never;
+ };
+ requestBody?: never;
+ responses: {
+ 200: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content?: never;
+ };
+ };
+ };
+ BuilderCrowdfundingV2Controller_reviseAndResubmit: {
+ parameters: {
+ query?: never;
+ header?: never;
+ path: {
+ id: string;
+ };
+ cookie?: never;
+ };
+ requestBody?: never;
+ responses: {
+ 200: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content?: never;
+ };
+ };
+ };
+ BuilderCrowdfundingV2Controller_publish: {
+ parameters: {
+ query?: never;
+ header?: never;
+ path: {
+ id: string;
+ };
+ cookie?: never;
+ };
+ requestBody: {
+ content: {
+ "application/json": components["schemas"]["PublishCrowdfundingEscrowDto"];
+ };
+ };
+ responses: {
+ 200: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content?: never;
+ };
+ };
+ };
+ BuilderCrowdfundingV2Controller_cancel: {
+ parameters: {
+ query?: never;
+ header?: never;
+ path: {
+ id: string;
+ };
+ cookie?: never;
+ };
+ requestBody: {
+ content: {
+ "application/json": components["schemas"]["CancelCrowdfundingEscrowDto"];
+ };
+ };
+ responses: {
+ 200: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content?: never;
+ };
+ };
+ };
+ BackerCrowdfundingV2Controller_contribute: {
+ parameters: {
+ query?: never;
+ header?: never;
+ path: {
+ id: string;
+ };
+ cookie?: never;
+ };
+ requestBody: {
+ content: {
+ "application/json": components["schemas"]["ContributeCrowdfundingDto"];
+ };
+ };
+ responses: {
+ 200: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content?: never;
+ };
+ };
+ };
+ BackerCrowdfundingV2Controller_submitSigned: {
+ parameters: {
+ query?: never;
+ header?: never;
+ path: {
+ id: string;
+ opRowId: string;
+ };
+ cookie?: never;
+ };
+ requestBody: {
+ content: {
+ "application/json": components["schemas"]["CrowdfundingSubmitSignedXdrDto"];
+ };
+ };
+ responses: {
+ 200: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content?: never;
+ };
+ };
+ };
+ BackerCrowdfundingV2Controller_getOp: {
+ parameters: {
+ query?: never;
+ header?: never;
+ path: {
+ id: string;
+ opRowId: string;
+ };
+ cookie?: never;
+ };
+ requestBody?: never;
+ responses: {
+ 200: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content?: never;
+ };
+ };
+ };
+ CommunityCrowdfundingV2Controller_getTally: {
+ parameters: {
+ query?: never;
+ header?: never;
+ path: {
+ id: string;
+ };
+ cookie?: never;
+ };
+ requestBody?: never;
+ responses: {
+ 200: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content?: never;
+ };
+ };
+ };
+ CommunityCrowdfundingV2Controller_castVote: {
+ parameters: {
+ query?: never;
+ header?: never;
+ path: {
+ id: string;
+ };
+ cookie?: never;
+ };
+ requestBody: {
+ content: {
+ "application/json": components["schemas"]["CastCrowdfundingVoteDto"];
+ };
+ };
+ responses: {
+ 200: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content?: never;
+ };
+ };
+ };
+ CommunityCrowdfundingV2Controller_getMyVote: {
+ parameters: {
+ query?: never;
+ header?: never;
+ path: {
+ id: string;
+ };
+ cookie?: never;
+ };
+ requestBody?: never;
+ responses: {
+ 200: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content?: never;
+ };
+ };
+ };
+ AdminCrowdfundingV2Controller_approve: {
+ parameters: {
+ query?: never;
+ header?: never;
+ path: {
+ id: string;
+ };
+ cookie?: never;
+ };
+ requestBody: {
+ content: {
+ "application/json": components["schemas"]["ApproveCrowdfundingCampaignDto"];
+ };
+ };
+ responses: {
+ 200: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content?: never;
+ };
+ };
+ };
+ AdminCrowdfundingV2Controller_reject: {
+ parameters: {
+ query?: never;
+ header?: never;
+ path: {
+ id: string;
+ };
+ cookie?: never;
+ };
+ requestBody: {
+ content: {
+ "application/json": components["schemas"]["RejectCrowdfundingCampaignDto"];
+ };
+ };
+ responses: {
+ 200: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content?: never;
+ };
+ };
+ };
+ AdminCrowdfundingV2Controller_extendFunding: {
+ parameters: {
+ query?: never;
+ header?: never;
+ path: {
+ id: string;
+ };
+ cookie?: never;
+ };
+ requestBody: {
+ content: {
+ "application/json": components["schemas"]["ExtendCrowdfundingFundingDto"];
+ };
+ };
+ responses: {
+ 200: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content?: never;
+ };
+ };
+ };
+ AdminCrowdfundingV2Controller_pause: {
+ parameters: {
+ query?: never;
+ header?: never;
+ path: {
+ id: string;
+ };
+ cookie?: never;
+ };
+ requestBody: {
+ content: {
+ "application/json": components["schemas"]["PauseCrowdfundingCampaignDto"];
+ };
+ };
+ responses: {
+ 200: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content?: never;
+ };
+ };
+ };
+ AdminCrowdfundingV2Controller_unpause: {
+ parameters: {
+ query?: never;
+ header?: never;
+ path: {
+ id: string;
+ };
+ cookie?: never;
+ };
+ requestBody?: never;
+ responses: {
+ 200: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content?: never;
+ };
+ };
+ };
+ AdminCrowdfundingV2Controller_approveMilestone: {
+ parameters: {
+ query?: never;
+ header?: never;
+ path: {
+ id: string;
+ milestoneId: string;
+ };
+ cookie?: never;
+ };
+ requestBody: {
+ content: {
+ "application/json": components["schemas"]["ApproveCrowdfundingMilestoneDto"];
+ };
+ };
+ responses: {
+ 200: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content?: never;
+ };
+ };
+ };
+ AdminCrowdfundingV2Controller_rejectMilestone: {
+ parameters: {
+ query?: never;
+ header?: never;
+ path: {
+ id: string;
+ milestoneId: string;
+ };
+ cookie?: never;
+ };
+ requestBody: {
+ content: {
+ "application/json": components["schemas"]["RejectCrowdfundingMilestoneDto"];
+ };
+ };
+ responses: {
+ 200: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content?: never;
+ };
+ };
+ };
+ CrowdfundingDisputesController_file: {
+ parameters: {
+ query?: never;
+ header?: never;
+ path: {
+ id: string;
+ };
+ cookie?: never;
+ };
+ requestBody: {
+ content: {
+ "application/json": components["schemas"]["FileDisputeDto"];
+ };
+ };
+ responses: {
+ 200: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content: {
+ "application/json": components["schemas"]["DisputeResponseDto"];
+ };
+ };
+ };
+ };
+ CrowdfundingDisputesController_mine: {
+ parameters: {
+ query?: never;
+ header?: never;
+ path: {
+ id: string;
+ };
+ cookie?: never;
+ };
+ requestBody?: never;
+ responses: {
+ 200: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content: {
+ "application/json": components["schemas"]["DisputeResponseDto"][];
+ };
+ };
+ };
+ };
+ WalletController_getWallet: {
+ parameters: {
+ query?: never;
+ header?: never;
+ path?: never;
+ cookie?: never;
+ };
+ requestBody?: never;
+ responses: {
+ 200: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content?: never;
+ };
+ };
+ };
+ WalletController_getWalletDetails: {
+ parameters: {
+ query?: never;
+ header?: never;
+ path?: never;
+ cookie?: never;
+ };
+ requestBody?: never;
+ responses: {
+ 200: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content?: never;
+ };
+ };
+ };
+ WalletController_getWalletSummary: {
+ parameters: {
+ query?: never;
+ header?: never;
+ path?: never;
+ cookie?: never;
+ };
+ requestBody?: never;
+ responses: {
+ 200: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content: {
+ "application/json": components["schemas"]["WalletSummaryDto"];
+ };
+ };
+ };
+ };
+ WalletController_getAddressBalance: {
+ parameters: {
+ query?: never;
+ header?: never;
+ path: {
+ address: string;
+ };
+ cookie?: never;
+ };
+ requestBody?: never;
+ responses: {
+ 200: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content?: never;
+ };
+ };
+ };
+ WalletController_syncWallet: {
+ parameters: {
+ query?: never;
+ header?: never;
+ path?: never;
+ cookie?: never;
+ };
+ requestBody?: never;
+ responses: {
+ 201: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content?: never;
+ };
+ };
+ };
+ WalletController_createWallet: {
+ parameters: {
+ query?: never;
+ header?: never;
+ path?: never;
+ cookie?: never;
+ };
+ requestBody?: never;
+ responses: {
+ 201: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content?: never;
+ };
+ };
+ };
+ WalletController_activate: {
+ parameters: {
+ query?: never;
+ header?: never;
+ path?: never;
+ cookie?: never;
+ };
+ requestBody?: never;
+ responses: {
+ /** @description Wallet activated. Returns tx hash and added trustlines. */
+ 201: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content?: never;
+ };
+ /** @description Sponsorship not configured, or unexpected submit error. */
+ 500: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content?: never;
+ };
+ /** @description Sponsor account is out of available XLM. Operators have been alerted; retry later. */
+ 503: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content?: never;
+ };
+ };
+ };
+ WalletController_reclaimDormant: {
+ parameters: {
+ query?: never;
+ header?: never;
+ path?: never;
+ cookie?: never;
+ };
+ requestBody: {
+ content: {
+ "application/json": components["schemas"]["ReclaimDormantDto"];
+ };
+ };
+ responses: {
+ /** @description Reclaim summary: scanned, eligible, revoked, freedXlm, walletIds, errors */
+ 201: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content?: never;
+ };
+ /** @description Admin role required. */
+ 403: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content?: never;
+ };
+ };
+ };
+ WalletController_getSupportedTrustlines: {
+ parameters: {
+ query?: never;
+ header?: never;
+ path?: never;
+ cookie?: never;
+ };
+ requestBody?: never;
+ responses: {
+ /** @description List of supported trustline assets */
+ 200: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content?: never;
+ };
+ };
+ };
+ WalletController_addTrustline: {
+ parameters: {
+ query?: never;
+ header?: never;
+ path?: never;
+ cookie?: never;
+ };
+ requestBody: {
+ content: {
+ "application/json": components["schemas"]["AddTrustlineDto"];
+ };
+ };
+ responses: {
+ /** @description Trustline added or already exists */
+ 201: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content?: never;
+ };
+ /** @description Wallet not activated, insufficient XLM for fees, or unsupported asset */
+ 400: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content?: never;
+ };
+ };
+ };
+ WalletController_validateSendDestination: {
+ parameters: {
+ query: {
+ /** @description Stellar public key (G...) */
+ destinationPublicKey: string;
+ /** @description Asset code (e.g. USDC, XLM) */
+ currency: string;
+ };
+ header?: never;
+ path?: never;
+ cookie?: never;
+ };
+ requestBody?: never;
+ responses: {
+ /** @description Validation result (valid, isActivated, hasTrustlineForAsset, memoRequired) */
+ 200: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content: {
+ "application/json": {
+ valid?: boolean;
+ isValidPublicKey?: boolean;
+ isActivated?: boolean;
+ hasTrustlineForAsset?: boolean;
+ /** @description True if this destination requires a memo (e.g. exchange shared address) */
+ memoRequired?: boolean;
+ message?: string | null;
+ };
+ };
+ };
+ };
+ };
+ WalletController_send: {
+ parameters: {
+ query?: never;
+ header?: never;
+ path?: never;
+ cookie?: never;
+ };
+ requestBody: {
+ content: {
+ "application/json": components["schemas"]["UserSendDto"];
+ };
+ };
+ responses: {
+ /** @description Send submitted successfully */
+ 201: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content?: never;
+ };
+ /** @description Validation or business rule error (e.g. destination not activated, no trustline, memo required, insufficient balance) */
+ 400: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content?: never;
+ };
+ /** @description Identity verification required. Complete KYC to send funds. */
+ 403: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content?: never;
+ };
+ };
+ };
+ CommentsController_listComments: {
+ parameters: {
+ query?: {
+ /** @description Entity type to filter comments */
+ entityType?: "PROJECT" | "BOUNTY" | "CROWDFUNDING_CAMPAIGN" | "GRANT" | "GRANT_APPLICATION" | "HACKATHON" | "HACKATHON_SUBMISSION" | "BLOG_POST";
+ /** @description Entity ID to filter comments */
+ entityId?: string;
+ /** @description Author ID to filter comments */
+ authorId?: string;
+ /** @description Parent comment ID to filter replies */
+ parentId?: string;
+ /** @description Comment status to filter */
+ status?: "ACTIVE" | "HIDDEN" | "DELETED" | "PENDING_MODERATION";
+ /** @description Include reaction data in response */
+ includeReactions?: boolean;
+ /** @description Include report data in response (moderators only) */
+ includeReports?: boolean;
+ /** @description Page number */
+ page?: number;
+ /** @description Number of items per page */
+ limit?: number;
+ /** @description Field to sort by */
+ sortBy?: string;
+ /** @description Sort order */
+ sortOrder?: "asc" | "desc";
+ };
+ header?: never;
+ path?: never;
+ cookie?: never;
+ };
+ requestBody?: never;
+ responses: {
+ /** @description Comments retrieved successfully */
+ 200: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content?: never;
+ };
+ };
+ };
+ CommentsController_createComment: {
+ parameters: {
+ query?: never;
+ header?: never;
+ path?: never;
+ cookie?: never;
+ };
+ requestBody: {
+ content: {
+ "application/json": components["schemas"]["CreateCommentDto"];
+ };
+ };
+ responses: {
+ /** @description Comment created successfully */
+ 201: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content?: never;
+ };
+ /** @description Invalid input */
+ 400: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content?: never;
+ };
+ /** @description Rate limit exceeded */
+ 429: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content?: never;
+ };
+ };
+ };
+ CommentsController_getComment: {
+ parameters: {
+ query?: never;
+ header?: never;
+ path: {
+ /** @description Comment ID */
+ id: string;
+ };
+ cookie?: never;
+ };
+ requestBody?: never;
+ responses: {
+ /** @description Comment retrieved successfully */
+ 200: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content?: never;
+ };
+ /** @description Comment not found */
+ 404: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content?: never;
+ };
+ };
+ };
+ CommentsController_updateComment: {
+ parameters: {
+ query?: never;
+ header?: never;
+ path: {
+ /** @description Comment ID */
+ id: string;
+ };
+ cookie?: never;
+ };
+ requestBody: {
+ content: {
+ "application/json": components["schemas"]["UpdateCommentDto"];
+ };
+ };
+ responses: {
+ /** @description Comment updated successfully */
+ 200: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content?: never;
+ };
+ /** @description Forbidden */
+ 403: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content?: never;
+ };
+ /** @description Comment not found */
+ 404: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content?: never;
+ };
+ };
+ };
+ CommentsController_deleteComment: {
+ parameters: {
+ query?: never;
+ header?: never;
+ path: {
+ /** @description Comment ID */
+ id: string;
+ };
+ cookie?: never;
+ };
+ requestBody?: never;
+ responses: {
+ /** @description Comment deleted successfully */
+ 204: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content?: never;
+ };
+ /** @description Forbidden */
+ 403: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content?: never;
+ };
+ /** @description Comment not found */
+ 404: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content?: never;
+ };
+ };
+ };
+ CommentsController_getCommentsByEntity: {
+ parameters: {
+ query: {
+ includeNested: string;
+ };
+ header?: never;
+ path: {
+ /** @description Entity type */
+ entityType: string;
+ /** @description Entity ID */
+ entityId: string;
+ };
+ cookie?: never;
+ };
+ requestBody?: never;
+ responses: {
+ /** @description Comments retrieved successfully */
+ 200: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content?: never;
+ };
+ };
+ };
+ CommentsController_getReactions: {
+ parameters: {
+ query?: never;
+ header?: never;
+ path: {
+ /** @description Comment ID */
+ id: string;
+ };
+ cookie?: never;
+ };
+ requestBody?: never;
+ responses: {
+ /** @description Reactions retrieved successfully */
+ 200: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content?: never;
+ };
+ };
+ };
+ CommentsController_addReaction: {
+ parameters: {
+ query?: never;
+ header?: never;
+ path: {
+ /** @description Comment ID */
+ id: string;
+ };
+ cookie?: never;
+ };
+ requestBody: {
+ content: {
+ "application/json": components["schemas"]["AddReactionDto"];
+ };
+ };
+ responses: {
+ /** @description Reaction added successfully */
+ 201: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content?: never;
+ };
+ /** @description Rate limit exceeded */
+ 429: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content?: never;
+ };
+ };
+ };
+ CommentsController_removeReaction: {
+ parameters: {
+ query?: never;
+ header?: never;
+ path: {
+ /** @description Comment ID */
+ id: string;
+ /** @description Reaction type */
+ reactionType: string;
+ };
+ cookie?: never;
+ };
+ requestBody?: never;
+ responses: {
+ /** @description Reaction removed successfully */
+ 204: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content?: never;
+ };
+ };
+ };
+ CommentsController_reportComment: {
+ parameters: {
+ query?: never;
+ header?: never;
+ path: {
+ /** @description Comment ID */
+ id: string;
+ };
+ cookie?: never;
+ };
+ requestBody: {
+ content: {
+ "application/json": components["schemas"]["ReportCommentDto"];
+ };
+ };
+ responses: {
+ /** @description Comment reported successfully */
+ 201: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content?: never;
+ };
+ /** @description Rate limit exceeded */
+ 429: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content?: never;
+ };
+ };
+ };
+ CommentModerationController_getModerationQueue: {
+ parameters: {
+ query?: {
+ page?: number;
+ limit?: number;
+ };
+ header?: never;
+ path?: never;
+ cookie?: never;
+ };
+ requestBody?: never;
+ responses: {
+ /** @description Moderation queue retrieved successfully */
+ 200: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content?: never;
+ };
+ /** @description Forbidden */
+ 403: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content?: never;
+ };
+ };
+ };
+ CommentModerationController_getReports: {
+ parameters: {
+ query?: {
+ status?: "PENDING" | "REVIEWED" | "RESOLVED" | "DISMISSED";
+ page?: number;
+ limit?: number;
+ };
+ header?: never;
+ path?: never;
+ cookie?: never;
+ };
+ requestBody?: never;
+ responses: {
+ /** @description Reports retrieved successfully */
+ 200: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content?: never;
+ };
+ /** @description Forbidden */
+ 403: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content?: never;
+ };
+ };
+ };
+ CommentModerationController_resolveReport: {
+ parameters: {
+ query?: never;
+ header?: never;
+ path: {
+ /** @description Report ID */
+ id: string;
+ };
+ cookie?: never;
+ };
+ requestBody: {
+ content: {
+ "application/json": components["schemas"]["ResolveReportDto"];
+ };
+ };
+ responses: {
+ /** @description Report resolved successfully */
+ 200: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content?: never;
+ };
+ /** @description Forbidden */
+ 403: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content?: never;
+ };
+ /** @description Report not found */
+ 404: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content?: never;
+ };
+ };
+ };
+ CommentModerationController_approveComment: {
+ parameters: {
+ query?: never;
+ header?: never;
+ path: {
+ /** @description Comment ID */
+ id: string;
+ };
+ cookie?: never;
+ };
+ requestBody?: never;
+ responses: {
+ /** @description Comment approved successfully */
+ 200: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content?: never;
+ };
+ /** @description Forbidden */
+ 403: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content?: never;
+ };
+ /** @description Comment not found */
+ 404: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content?: never;
+ };
+ };
+ };
+ CommentModerationController_rejectComment: {
+ parameters: {
+ query?: never;
+ header?: never;
+ path: {
+ /** @description Comment ID */
+ id: string;
+ };
+ cookie?: never;
+ };
+ requestBody?: never;
+ responses: {
+ /** @description Comment rejected successfully */
+ 200: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content?: never;
+ };
+ /** @description Forbidden */
+ 403: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content?: never;
+ };
+ /** @description Comment not found */
+ 404: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content?: never;
+ };
+ };
+ };
+ CommentModerationController_hideComment: {
+ parameters: {
+ query?: never;
+ header?: never;
+ path: {
+ /** @description Comment ID */
+ id: string;
+ };
+ cookie?: never;
+ };
+ requestBody?: never;
+ responses: {
+ /** @description Comment hidden successfully */
+ 200: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content?: never;
+ };
+ /** @description Forbidden */
+ 403: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content?: never;
+ };
+ /** @description Comment not found */
+ 404: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content?: never;
+ };
+ };
+ };
+ CommentModerationController_restoreComment: {
+ parameters: {
+ query?: never;
+ header?: never;
+ path: {
+ /** @description Comment ID */
+ id: string;
+ };
+ cookie?: never;
+ };
+ requestBody?: never;
+ responses: {
+ /** @description Comment restored successfully */
+ 200: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content?: never;
+ };
+ /** @description Forbidden */
+ 403: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content?: never;
+ };
+ /** @description Comment not found */
+ 404: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content?: never;
+ };
+ };
+ };
+ CommentModerationController_getModerationStats: {
+ parameters: {
+ query?: never;
+ header?: never;
+ path?: never;
+ cookie?: never;
+ };
+ requestBody?: never;
+ responses: {
+ /** @description Moderation stats retrieved successfully */
+ 200: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content?: never;
+ };
+ /** @description Forbidden */
+ 403: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content?: never;
+ };
+ };
+ };
+ HackathonsController_getHackathons: {
+ parameters: {
+ query?: never;
+ header?: never;
+ path?: never;
+ cookie?: never;
+ };
+ requestBody?: never;
+ responses: {
+ /** @description Hackathons retrieved successfully */
+ 200: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content: {
+ "application/json": components["schemas"]["HackathonsListResponseDto"];
+ };
+ };
+ };
+ };
+ HackathonsController_getFeeEstimate: {
+ parameters: {
+ query: {
+ totalPool: string;
+ };
+ header?: never;
+ path?: never;
+ cookie?: never;
+ };
+ requestBody?: never;
+ responses: {
+ /** @description Fee estimate */
+ 200: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content: {
+ "application/json": components["schemas"]["FeeEstimateResponseDto"];
+ };
+ };
+ /** @description totalPool is missing, invalid, or below minimum (5 USDC) */
+ 400: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content?: never;
+ };
+ };
+ };
+ HackathonsController_getWinners: {
+ parameters: {
+ query?: never;
+ header?: never;
+ path: {
+ /** @description Hackathon ID or slug */
+ idOrSlug: string;
+ };
+ cookie?: never;
+ };
+ requestBody?: never;
+ responses: {
+ /** @description Winners retrieved successfully */
+ 200: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content: {
+ "application/json": components["schemas"]["HackathonWinnersResponseDto"];
+ };
+ };
+ /** @description Invalid request */
+ 400: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content?: never;
+ };
+ /** @description Resource not found */
+ 404: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content?: never;
+ };
+ };
+ };
+ HackathonsController_getPublicResults: {
+ parameters: {
+ query?: never;
+ header?: never;
+ path: {
+ /** @description Hackathon ID or slug */
+ idOrSlug: string;
+ };
+ cookie?: never;
+ };
+ requestBody?: never;
+ responses: {
+ /** @description Results retrieved successfully */
+ 200: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content: {
+ "application/json": components["schemas"]["PublicJudgingResultsResponseDto"];
+ };
+ };
+ /** @description Invalid request */
+ 400: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content?: never;
+ };
+ /** @description Resource not found */
+ 404: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content?: never;
+ };
+ };
+ };
+ HackathonsController_getHackathon: {
+ parameters: {
+ query: {
+ accessToken: string;
+ };
+ header?: never;
+ path: {
+ /** @description Hackathon ID or slug */
+ idOrSlug: string;
+ };
+ cookie?: never;
+ };
+ requestBody?: never;
+ responses: {
+ /** @description Hackathon retrieved successfully */
+ 200: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content: {
+ "application/json": components["schemas"]["HackathonResponseDto"];
+ };
+ };
+ /** @description Invalid request */
+ 400: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content?: never;
+ };
+ /** @description Resource not found */
+ 404: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content?: never;
+ };
+ };
+ };
+ HackathonsController_verifyHackathonAccess: {
+ parameters: {
+ query?: never;
+ header?: never;
+ path: {
+ idOrSlug: string;
+ };
+ cookie?: never;
+ };
+ requestBody: {
+ content: {
+ "application/json": components["schemas"]["VerifyHackathonAccessDto"];
+ };
+ };
+ responses: {
+ 200: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content: {
+ "application/json": components["schemas"]["HackathonAccessTokenResponseDto"];
+ };
+ };
+ };
+ };
+ HackathonsController_getPublicContributors: {
+ parameters: {
+ query?: never;
+ header?: never;
+ path: {
+ slug: string;
+ };
+ cookie?: never;
+ };
+ requestBody?: never;
+ responses: {
+ /** @description Contributors retrieved successfully */
+ 200: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content?: never;
+ };
+ };
+ };
+ HackathonsController_followHackathon: {
+ parameters: {
+ query?: never;
+ header?: never;
+ path: {
+ /** @description Hackathon ID or slug */
+ idOrSlug: string;
+ };
+ cookie?: never;
+ };
+ requestBody?: never;
+ responses: {
+ /** @description Follow status updated */
+ 200: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content: {
+ "application/json": {
+ /** @example true */
+ following?: boolean;
+ };
+ };
+ };
+ /** @description Invalid request */
+ 400: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content?: never;
+ };
+ /** @description Resource not found */
+ 404: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content?: never;
+ };
+ };
+ };
+ HackathonsController_joinHackathon: {
+ parameters: {
+ query?: never;
+ header?: never;
+ path: {
+ /** @description Hackathon ID or slug */
+ idOrSlug: string;
+ };
+ cookie?: never;
+ };
+ requestBody: {
+ content: {
+ "application/json": components["schemas"]["JoinHackathonDto"];
+ };
+ };
+ responses: {
+ /** @description Successfully joined hackathon */
+ 200: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content: {
+ "application/json": components["schemas"]["ParticipationResponseDto"];
+ };
+ };
+ /** @description Registration closed or already participating */
+ 400: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content?: never;
+ };
+ /** @description Resource not found */
+ 404: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content?: never;
+ };
+ };
+ };
+ HackathonsController_leaveHackathon: {
+ parameters: {
+ query?: never;
+ header?: never;
+ path: {
+ /** @description Hackathon ID or slug */
+ idOrSlug: string;
+ };
+ cookie?: never;
+ };
+ requestBody?: never;
+ responses: {
+ /** @description Successfully left hackathon */
+ 200: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content: {
+ "application/json": components["schemas"]["ParticipationResponseDto"];
+ };
+ };
+ /** @description Not a participant or submission deadline passed */
+ 400: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content?: never;
+ };
+ /** @description Resource not found */
+ 404: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content?: never;
+ };
+ };
+ };
+ HackathonsController_getHackathonParticipants: {
+ parameters: {
+ query: {
+ /** @description Page number (1-based) */
+ page?: number;
+ /** @description Items per page */
+ limit?: number;
+ status: string;
+ skill: string;
+ type: string;
+ search: string;
+ };
+ header?: never;
+ path: {
+ /** @description Hackathon ID or slug */
+ idOrSlug: string;
+ };
+ cookie?: never;
+ };
+ requestBody?: never;
+ responses: {
+ /** @description Participants retrieved successfully */
+ 200: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content: {
+ "application/json": components["schemas"]["HackathonParticipantsResponseDto"];
+ };
+ };
+ /** @description Invalid request */
+ 400: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content?: never;
+ };
+ /** @description Resource not found */
+ 404: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content?: never;
+ };
+ };
+ };
+ HackathonsSubmissionsController_getHackathonSubmissions: {
+ parameters: {
+ query: {
+ /** @description Filter by submission status */
+ status?: "SUBMITTED" | "SHORTLISTED" | "DISQUALIFIED";
+ /** @description Page number (1-based) */
+ page?: number;
+ /** @description Items per page */
+ limit?: number;
+ search: string;
+ type: string;
+ };
+ header?: never;
+ path: {
+ /** @description Hackathon ID or slug */
+ idOrSlug: string;
+ };
+ cookie?: never;
+ };
+ requestBody?: never;
+ responses: {
+ /** @description Submissions retrieved successfully */
+ 200: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content: {
+ "application/json": components["schemas"]["SubmissionResponseDto"][];
+ };
+ };
+ /** @description Invalid request */
+ 400: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content?: never;
+ };
+ /** @description Resource not found */
+ 404: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content?: never;
+ };
+ };
+ };
+ HackathonsSubmissionsController_createSubmission: {
+ parameters: {
+ query?: never;
+ header?: never;
+ path: {
+ /** @description Hackathon ID or slug */
+ idOrSlug: string;
+ };
+ cookie?: never;
+ };
+ requestBody: {
+ content: {
+ "application/json": components["schemas"]["CreateSubmissionDto"];
+ };
+ };
+ responses: {
+ /** @description Submission created successfully */
+ 201: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content: {
+ "application/json": components["schemas"]["SubmissionResponseDto"];
+ };
+ };
+ /** @description Invalid request */
+ 400: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content?: never;
+ };
+ /** @description Resource not found */
+ 404: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content?: never;
+ };
+ };
+ };
+ HackathonsSubmissionsController_exploreHackathonSubmissions: {
+ parameters: {
+ query: {
+ /** @description Page number (1-based) */
+ page?: number;
+ /** @description Items per page */
+ limit?: number;
+ search: string;
+ type: string;
+ };
+ header?: never;
+ path: {
+ /** @description Hackathon ID or slug */
+ idOrSlug: string;
+ };
+ cookie?: never;
+ };
+ requestBody?: never;
+ responses: {
+ /** @description Submissions retrieved successfully */
+ 200: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content: {
+ "application/json": components["schemas"]["SubmissionResponseDto"][];
+ };
+ };
+ /** @description Hackathon not found */
+ 404: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content?: never;
+ };
+ };
+ };
+ HackathonsSubmissionsController_getMySubmission: {
+ parameters: {
+ query?: never;
+ header?: never;
+ path: {
+ /** @description Hackathon ID or slug */
+ idOrSlug: string;
+ };
+ cookie?: never;
+ };
+ requestBody?: never;
+ responses: {
+ /** @description Submission retrieved successfully */
+ 200: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content: {
+ "application/json": components["schemas"]["SubmissionResponseDto"];
+ };
+ };
+ /** @description Invalid request */
+ 400: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content?: never;
+ };
+ /** @description Resource not found */
+ 404: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content?: never;
+ };
+ };
+ };
+ HackathonsSubmissionsController_getSubmissionById: {
+ parameters: {
+ query?: never;
+ header?: never;
+ path: {
+ /** @description Submission ID */
+ submissionId: string;
+ };
+ cookie?: never;
+ };
+ requestBody?: never;
+ responses: {
+ /** @description Submission retrieved successfully */
+ 200: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content: {
+ "application/json": components["schemas"]["SubmissionResponseDto"];
+ };
+ };
+ /** @description Invalid request */
+ 400: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content?: never;
+ };
+ /** @description Resource not found */
+ 404: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content?: never;
+ };
+ };
+ };
+ HackathonsSubmissionsController_deleteSubmission: {
+ parameters: {
+ query?: never;
+ header?: never;
+ path: {
+ /** @description Submission ID */
+ submissionId: string;
+ };
+ cookie?: never;
+ };
+ requestBody?: never;
+ responses: {
+ /** @description Submission withdrawn successfully */
+ 200: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content: {
+ "application/json": {
+ /** @example Submission withdrawn successfully */
+ message?: string;
+ };
+ };
+ };
+ /** @description Invalid request */
+ 400: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content?: never;
+ };
+ /** @description Resource not found */
+ 404: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content?: never;
+ };
+ };
+ };
+ HackathonsSubmissionsController_updateSubmission: {
+ parameters: {
+ query?: never;
+ header?: never;
+ path: {
+ /** @description Submission ID */
+ submissionId: string;
+ };
+ cookie?: never;
+ };
+ requestBody: {
+ content: {
+ "application/json": components["schemas"]["UpdateSubmissionDto"];
+ };
+ };
+ responses: {
+ /** @description Submission updated successfully */
+ 200: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content: {
+ "application/json": components["schemas"]["SubmissionResponseDto"];
+ };
+ };
+ /** @description Invalid request */
+ 400: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content?: never;
+ };
+ /** @description Resource not found */
+ 404: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content?: never;
+ };
+ };
+ };
+ HackathonsDiscussionsController_getHackathonDiscussions: {
+ parameters: {
+ query?: {
+ /** @description Page number (1-based) */
+ page?: number;
+ /** @description Items per page */
+ limit?: number;
+ /** @description Sort by field */
+ sortBy?: "createdAt" | "updatedAt";
+ /** @description Sort order */
+ sortOrder?: "asc" | "desc";
+ };
+ header?: never;
+ path: {
+ id: string;
+ /** @description Hackathon ID or slug */
+ idOrSlug: unknown;
+ };
+ cookie?: never;
+ };
+ requestBody?: never;
+ responses: {
+ /** @description Discussions retrieved successfully */
+ 200: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content?: never;
+ };
+ /** @description Invalid request */
+ 400: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content?: never;
+ };
+ /** @description Resource not found */
+ 404: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content?: never;
+ };
+ };
+ };
+ HackathonsDiscussionsController_createHackathonComment: {
+ parameters: {
+ query?: never;
+ header?: never;
+ path: {
+ id: string;
+ /** @description Hackathon ID or slug */
+ idOrSlug: unknown;
+ };
+ cookie?: never;
+ };
+ requestBody: {
+ content: {
+ "application/json": {
+ /**
+ * @description Comment content
+ * @example This hackathon looks amazing! When does registration open?
+ */
+ content: string;
+ /**
+ * @description Parent comment ID for replies
+ * @example comment_1234567890
+ */
+ parentId?: string;
+ };
+ };
+ };
+ responses: {
+ /** @description Comment posted successfully */
+ 201: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content?: never;
+ };
+ /** @description Invalid request */
+ 400: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content?: never;
+ };
+ /** @description Resource not found */
+ 404: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content?: never;
+ };
+ };
+ };
+ HackathonsDiscussionsController_deleteHackathonComment: {
+ parameters: {
+ query?: never;
+ header?: never;
+ path: {
+ /** @description Comment ID */
+ commentId: string;
+ };
+ cookie?: never;
+ };
+ requestBody?: never;
+ responses: {
+ /** @description Comment deleted successfully */
+ 200: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content: {
+ "application/json": {
+ /** @example Comment deleted successfully */
+ message?: string;
+ };
+ };
+ };
+ /** @description Invalid request */
+ 400: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content?: never;
+ };
+ /** @description Resource not found */
+ 404: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content?: never;
+ };
+ };
+ };
+ HackathonsDiscussionsController_updateHackathonComment: {
+ parameters: {
+ query?: never;
+ header?: never;
+ path: {
+ /** @description Comment ID */
+ commentId: string;
+ };
+ cookie?: never;
+ };
+ requestBody: {
+ content: {
+ "application/json": {
+ /**
+ * @description Updated comment content
+ * @example Updated: This hackathon looks amazing!
+ */
+ content: string;
+ };
+ };
+ };
+ responses: {
+ /** @description Comment updated successfully */
+ 200: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content?: never;
+ };
+ /** @description Invalid request */
+ 400: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content?: never;
+ };
+ /** @description Resource not found */
+ 404: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content?: never;
+ };
+ };
+ };
+ HackathonsDiscussionsController_reactToComment: {
+ parameters: {
+ query?: never;
+ header?: never;
+ path: {
+ /** @description Comment ID */
+ commentId: string;
+ };
+ cookie?: never;
+ };
+ requestBody: {
+ content: {
+ "application/json": {
+ /**
+ * @description Type of reaction
+ * @example LIKE
+ * @enum {string}
+ */
+ reactionType: "LIKE" | "LOVE" | "CELEBRATE" | "INSIGHTFUL";
+ };
+ };
+ };
+ responses: {
+ /** @description Reaction updated */
+ 200: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content?: never;
+ };
+ /** @description Invalid request */
+ 400: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content?: never;
+ };
+ /** @description Resource not found */
+ 404: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content?: never;
+ };
+ };
+ };
+ HackathonsDiscussionsController_getCommentReplies: {
+ parameters: {
+ query?: {
+ /** @description Page number (1-based) */
+ page?: number;
+ /** @description Items per page */
+ limit?: number;
+ };
+ header?: never;
+ path: {
+ /** @description Comment ID */
+ commentId: string;
+ };
+ cookie?: never;
+ };
+ requestBody?: never;
+ responses: {
+ /** @description Replies retrieved successfully */
+ 200: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content?: never;
+ };
+ /** @description Invalid request */
+ 400: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content?: never;
+ };
+ /** @description Resource not found */
+ 404: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content?: never;
+ };
+ };
+ };
+ HackathonsTeamsController_getHackathonTeams: {
+ parameters: {
+ query?: {
+ /** @description Search query */
+ search?: string;
+ /** @description Filter by open teams only */
+ openOnly?: boolean;
+ /** @description Page number */
+ page?: number;
+ /** @description Items per page */
+ limit?: number;
+ };
+ header?: never;
+ path: {
+ id: string;
+ /** @description Hackathon ID or slug */
+ idOrSlug: unknown;
+ };
+ cookie?: never;
+ };
+ requestBody?: never;
+ responses: {
+ /** @description Teams retrieved successfully */
+ 200: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content: {
+ "application/json": components["schemas"]["TeamListResponseDto"];
+ };
+ };
+ /** @description Invalid request */
+ 400: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content?: never;
+ };
+ /** @description Resource not found */
+ 404: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content?: never;
+ };
+ };
+ };
+ HackathonsTeamsController_createTeam: {
+ parameters: {
+ query?: never;
+ header?: never;
+ path: {
+ id: string;
+ /** @description Hackathon ID or slug */
+ idOrSlug: unknown;
+ };
+ cookie?: never;
+ };
+ requestBody: {
+ content: {
+ "application/json": components["schemas"]["CreateTeamDto"];
+ };
+ };
+ responses: {
+ /** @description Team created successfully */
+ 201: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content: {
+ "application/json": components["schemas"]["TeamResponseDto"];
+ };
+ };
+ /** @description Not a participant, already in a team, or hackathon does not allow teams */
+ 400: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content?: never;
+ };
+ /** @description Resource not found */
+ 404: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content?: never;
+ };
+ };
+ };
+ HackathonsTeamsController_getTeam: {
+ parameters: {
+ query?: never;
+ header?: never;
+ path: {
+ id: string;
+ /** @description Team ID */
+ teamId: string;
+ /** @description Hackathon ID or slug */
+ idOrSlug: unknown;
+ };
+ cookie?: never;
+ };
+ requestBody?: never;
+ responses: {
+ /** @description Team found */
+ 200: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content: {
+ "application/json": components["schemas"]["TeamResponseDto"];
+ };
+ };
+ /** @description Invalid request */
+ 400: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content?: never;
+ };
+ /** @description Resource not found */
+ 404: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content?: never;
+ };
+ };
+ };
+ HackathonsTeamsController_disbandTeam: {
+ parameters: {
+ query?: never;
+ header?: never;
+ path: {
+ id: string;
+ /** @description Team ID */
+ teamId: string;
+ /** @description Hackathon ID or slug */
+ idOrSlug: unknown;
+ };
+ cookie?: never;
+ };
+ requestBody?: never;
+ responses: {
+ /** @description Team disbanded */
+ 200: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content?: never;
+ };
+ /** @description Team has an existing submission and cannot be disbanded */
+ 400: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content?: never;
+ };
+ /** @description Only the team leader can disband the team */
+ 403: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content?: never;
+ };
+ /** @description Resource not found */
+ 404: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content?: never;
+ };
+ };
+ };
+ HackathonsTeamsController_updateTeam: {
+ parameters: {
+ query?: never;
+ header?: never;
+ path: {
+ id: string;
+ /** @description Team ID */
+ teamId: string;
+ /** @description Hackathon ID or slug */
+ idOrSlug: unknown;
+ };
+ cookie?: never;
+ };
+ requestBody: {
+ content: {
+ "application/json": components["schemas"]["UpdateTeamDto"];
+ };
+ };
+ responses: {
+ /** @description Team updated */
+ 200: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content?: never;
+ };
+ /** @description Not team leader or invalid update */
+ 400: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content?: never;
+ };
+ /** @description Resource not found */
+ 404: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content?: never;
+ };
+ };
+ };
+ HackathonsTeamsController_joinTeam: {
+ parameters: {
+ query?: never;
+ header?: never;
+ path: {
+ id: string;
+ /** @description Team ID */
+ teamId: string;
+ /** @description Hackathon ID or slug */
+ idOrSlug: unknown;
+ };
+ cookie?: never;
+ };
+ requestBody: {
+ content: {
+ "application/json": {
+ /**
+ * @description Optional message to team leader
+ * @example I have 5 years of Rust development experience
+ */
+ message?: string;
+ };
+ };
+ };
+ responses: {
+ /** @description Successfully joined team */
+ 200: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content?: never;
+ };
+ /** @description Team is closed, full, or user already in a team */
+ 400: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content?: never;
+ };
+ /** @description Resource not found */
+ 404: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content?: never;
+ };
+ };
+ };
+ HackathonsTeamsController_removeTeamMember: {
+ parameters: {
+ query?: never;
+ header?: never;
+ path: {
+ id: string;
+ /** @description Team ID */
+ teamId: string;
+ userId: string;
+ /** @description Hackathon ID or slug */
+ idOrSlug: unknown;
+ };
+ cookie?: never;
+ };
+ requestBody?: never;
+ responses: {
+ /** @description Member removed from team */
+ 200: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content?: never;
+ };
+ /** @description Target user is not a member, or leader tried to remove themselves */
+ 400: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content?: never;
+ };
+ /** @description Only the team leader can remove members */
+ 403: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content?: never;
+ };
+ /** @description Resource not found */
+ 404: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content?: never;
+ };
+ };
+ };
+ HackathonsTeamsController_leaveTeam: {
+ parameters: {
+ query?: never;
+ header?: never;
+ path: {
+ id: string;
+ /** @description Team ID */
+ teamId: string;
+ /** @description Hackathon ID or slug */
+ idOrSlug: unknown;
+ };
+ cookie?: never;
+ };
+ requestBody?: never;
+ responses: {
+ /** @description Successfully left team */
+ 200: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content?: never;
+ };
+ /** @description Not a member or leader cannot leave with members */
+ 400: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content?: never;
+ };
+ /** @description Resource not found */
+ 404: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content?: never;
+ };
+ };
+ };
+ HackathonsTeamsController_getMyTeam: {
+ parameters: {
+ query?: never;
+ header?: never;
+ path: {
+ id: string;
+ /** @description Hackathon ID or slug */
+ idOrSlug: unknown;
+ };
+ cookie?: never;
+ };
+ requestBody?: never;
+ responses: {
+ /** @description Team found or null if not in a team */
+ 200: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content: {
+ "application/json": components["schemas"]["TeamResponseDto"];
+ };
+ };
+ /** @description Invalid request */
+ 400: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content?: never;
+ };
+ /** @description Resource not found */
+ 404: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content?: never;
+ };
+ };
+ };
+ HackathonsTeamsController_inviteToTeam: {
+ parameters: {
+ query?: never;
+ header?: never;
+ path: {
+ id: string;
+ /** @description Team ID */
+ teamId: string;
+ /** @description Hackathon ID or slug */
+ idOrSlug: unknown;
+ };
+ cookie?: never;
+ };
+ requestBody: {
+ content: {
+ "application/json": components["schemas"]["InviteToTeamDto"];
+ };
+ };
+ responses: {
+ /** @description Invitation sent successfully */
+ 201: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content: {
+ "application/json": components["schemas"]["TeamInvitationResponseDto"];
+ };
+ };
+ /** @description User already in team, team full, or pending invitation exists */
+ 400: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content?: never;
+ };
+ /** @description Resource not found */
+ 404: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content?: never;
+ };
+ };
+ };
+ HackathonsTeamsController_getMyInvitations: {
+ parameters: {
+ query?: {
+ /** @description Filter by invitation status */
+ status?: "pending" | "accepted" | "rejected" | "expired";
+ };
+ header?: never;
+ path: {
+ id: string;
+ /** @description Hackathon ID or slug */
+ idOrSlug: unknown;
+ };
+ cookie?: never;
+ };
+ requestBody?: never;
+ responses: {
+ /** @description List of invitations */
+ 200: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content: {
+ "application/json": components["schemas"]["TeamInvitationListResponseDto"];
+ };
+ };
+ };
+ };
+ HackathonsTeamsController_acceptInvitation: {
+ parameters: {
+ query?: never;
+ header?: never;
+ path: {
+ id: string;
+ /** @description Invitation ID */
+ inviteId: string;
+ /** @description Hackathon ID or slug */
+ idOrSlug: unknown;
+ };
+ cookie?: never;
+ };
+ requestBody?: never;
+ responses: {
+ /** @description Successfully accepted invitation and joined team */
+ 200: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content: {
+ "application/json": components["schemas"]["InvitationActionResponseDto"];
+ };
+ };
+ /** @description Invitation expired, already processed, or team full */
+ 400: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content?: never;
+ };
+ /** @description Resource not found */
+ 404: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content?: never;
+ };
+ };
+ };
+ HackathonsTeamsController_rejectInvitation: {
+ parameters: {
+ query?: never;
+ header?: never;
+ path: {
+ id: string;
+ /** @description Invitation ID */
+ inviteId: string;
+ /** @description Hackathon ID or slug */
+ idOrSlug: unknown;
+ };
+ cookie?: never;
+ };
+ requestBody?: never;
+ responses: {
+ /** @description Successfully rejected invitation */
+ 200: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content: {
+ "application/json": components["schemas"]["InvitationActionResponseDto"];
+ };
+ };
+ /** @description Invitation already processed */
+ 400: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content?: never;
+ };
+ /** @description Resource not found */
+ 404: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content?: never;
+ };
+ };
+ };
+ HackathonsTeamsController_cancelInvitation: {
+ parameters: {
+ query?: never;
+ header?: never;
+ path: {
+ id: string;
+ /** @description Invitation ID */
+ inviteId: string;
+ /** @description Hackathon ID or slug */
+ idOrSlug: unknown;
+ };
+ cookie?: never;
+ };
+ requestBody?: never;
+ responses: {
+ /** @description Successfully cancelled invitation */
+ 200: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content?: never;
+ };
+ /** @description Not team leader or invitation already processed */
+ 400: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content?: never;
+ };
+ /** @description Resource not found */
+ 404: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content?: never;
+ };
+ };
+ };
+ HackathonsTeamsController_getTeamInvitations: {
+ parameters: {
+ query?: {
+ /** @description Filter by invitation status */
+ status?: "pending" | "accepted" | "rejected" | "expired";
+ };
+ header?: never;
+ path: {
+ id: string;
+ /** @description Team ID */
+ teamId: string;
+ /** @description Hackathon ID or slug */
+ idOrSlug: unknown;
+ };
+ cookie?: never;
+ };
+ requestBody?: never;
+ responses: {
+ /** @description List of team invitations */
+ 200: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content: {
+ "application/json": components["schemas"]["TeamInvitationListResponseDto"];
+ };
+ };
+ /** @description Only team leader can view */
+ 400: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content?: never;
+ };
+ /** @description Resource not found */
+ 404: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content?: never;
+ };
+ };
+ };
+ HackathonsTeamsController_toggleRoleHiredStatus: {
+ parameters: {
+ query?: never;
+ header?: never;
+ path: {
+ id: string;
+ /** @description Team ID */
+ teamId: string;
+ /** @description Hackathon ID or slug */
+ idOrSlug: unknown;
+ };
+ cookie?: never;
+ };
+ requestBody: {
+ content: {
+ "application/json": components["schemas"]["ToggleRoleHiredDto"];
+ };
+ };
+ responses: {
+ /** @description Role status toggled successfully */
+ 200: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content?: never;
+ };
+ /** @description Not team leader or invalid role */
+ 400: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content?: never;
+ };
+ /** @description Resource not found */
+ 404: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content?: never;
+ };
+ };
+ };
+ HackathonsTeamsController_transferLeadership: {
+ parameters: {
+ query?: never;
+ header?: never;
+ path: {
+ id: string;
+ /** @description Team ID */
+ teamId: string;
+ /** @description Hackathon ID or slug */
+ idOrSlug: unknown;
+ };
+ cookie?: never;
+ };
+ requestBody: {
+ content: {
+ "application/json": components["schemas"]["TransferLeadershipDto"];
+ };
+ };
+ responses: {
+ /** @description Leadership successfully transferred */
+ 200: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content: {
+ "application/json": components["schemas"]["LeadershipTransferResponseDto"];
+ };
+ };
+ /** @description Not current leader, new leader not a member, or invalid request */
+ 400: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content?: never;
+ };
+ /** @description Only current team leader can transfer leadership */
+ 403: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content?: never;
+ };
+ /** @description Resource not found */
+ 404: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content?: never;
+ };
+ };
+ };
+ OrganizationHackathonsDraftsController_getDraft: {
+ parameters: {
+ query?: never;
+ header?: never;
+ path: {
+ /** @description Organization ID */
+ organizationId: string;
+ /** @description Hackathon draft ID */
+ id: string;
+ };
+ cookie?: never;
+ };
+ requestBody?: never;
+ responses: {
+ /** @description Draft retrieved successfully */
+ 200: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content: {
+ "application/json": components["schemas"]["HackathonDraftResponseDto"];
+ };
+ };
+ /** @description Invalid request */
+ 400: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content?: never;
+ };
+ /** @description Resource not found */
+ 404: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content?: never;
+ };
+ };
+ };
+ OrganizationHackathonsDraftsController_deleteDraft: {
+ parameters: {
+ query?: never;
+ header?: never;
+ path: {
+ /** @description Organization ID */
+ organizationId: string;
+ /** @description Hackathon draft ID to delete */
+ id: string;
+ };
+ cookie?: never;
+ };
+ requestBody?: never;
+ responses: {
+ /** @description Draft deleted successfully */
+ 204: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content?: never;
+ };
+ /** @description Draft not found or user not authorized */
+ 400: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content?: never;
+ };
+ /** @description Resource not found */
+ 404: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content?: never;
+ };
+ };
+ };
+ OrganizationHackathonsDraftsController_updateDraft: {
+ parameters: {
+ query?: never;
+ header?: never;
+ path: {
+ /** @description Organization ID */
+ organizationId: string;
+ /** @description Hackathon draft ID */
+ id: string;
+ };
+ cookie?: never;
+ };
+ requestBody: {
+ content: {
+ "application/json": components["schemas"]["UpdateHackathonDraftDto"];
+ };
+ };
+ responses: {
+ /** @description Draft updated successfully */
+ 200: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content: {
+ "application/json": components["schemas"]["HackathonDraftResponseDto"];
+ };
+ };
+ /** @description Validation failed for one or more sections */
+ 400: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content?: never;
+ };
+ /** @description Resource not found */
+ 404: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content?: never;
+ };
+ };
+ };
+ OrganizationHackathonsDraftsController_getOrganizationHackathons: {
+ parameters: {
+ query: {
+ page: number;
+ limit: number;
+ /** @description Filter by hackathon status */
+ status?: "upcoming" | "active" | "ended";
+ };
+ header?: never;
+ path: {
+ /** @description Organization ID */
+ organizationId: string;
+ };
+ cookie?: never;
+ };
+ requestBody?: never;
+ responses: {
+ /** @description Hackathons retrieved successfully */
+ 200: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content: {
+ "application/json": components["schemas"]["HackathonsListResponseDto"];
+ };
+ };
+ };
+ };
+ OrganizationHackathonsDraftsController_createDraft: {
+ parameters: {
+ query?: never;
+ header?: never;
+ path: {
+ /** @description Organization ID */
+ organizationId: string;
+ };
+ cookie?: never;
+ };
+ requestBody?: never;
+ responses: {
+ /** @description Draft created successfully */
+ 201: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content: {
+ "application/json": components["schemas"]["HackathonDraftResponseDto"];
+ };
+ };
+ /** @description User is not a member of the organization */
+ 400: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content?: never;
+ };
+ /** @description Resource not found */
+ 404: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content?: never;
+ };
+ };
+ };
+ OrganizationHackathonsDraftsController_getOrganizationDrafts: {
+ parameters: {
+ query?: never;
+ header?: never;
+ path: {
+ /** @description Organization ID */
+ organizationId: string;
+ };
+ cookie?: never;
+ };
+ requestBody?: never;
+ responses: {
+ /** @description Drafts retrieved successfully */
+ 200: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content: {
+ "application/json": components["schemas"]["HackathonDraftResponseDto"][];
+ };
+ };
+ };
+ };
+ OrganizationHackathonsDraftsController_previewAnnouncementAudience: {
+ parameters: {
+ query?: never;
+ header?: never;
+ path: {
+ /** @description Hackathon (or draft) ID */
+ id: string;
+ };
+ cookie?: never;
+ };
+ requestBody?: never;
+ responses: {
+ /** @description Audience size preview */
+ 200: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content?: never;
+ };
+ };
+ };
+ OrganizationHackathonsAiController_clarify: {
+ parameters: {
+ query?: never;
+ header?: never;
+ path: {
+ /** @description Organization ID */
+ organizationId: string;
+ };
+ cookie?: never;
+ };
+ requestBody: {
+ content: {
+ "application/json": components["schemas"]["ClarifyHackathonBriefDto"];
+ };
+ };
+ responses: {
+ 200: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content: {
+ "application/json": components["schemas"]["ClarifyHackathonDraftResponseDto"];
+ };
+ };
+ /** @description Invalid request */
+ 400: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content?: never;
+ };
+ /** @description Resource not found */
+ 404: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content?: never;
+ };
+ };
+ };
+ OrganizationHackathonsAiController_generateFromBrief: {
+ parameters: {
+ query?: never;
+ header?: never;
+ path: {
+ /** @description Organization ID */
+ organizationId: string;
+ };
+ cookie?: never;
+ };
+ requestBody: {
+ content: {
+ "application/json": components["schemas"]["GenerateDraftFromBriefDto"];
+ };
+ };
+ responses: {
+ /** @description Draft generated and pre-filled. */
+ 201: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content: {
+ "application/json": components["schemas"]["GenerateDraftFromBriefResponseDto"];
+ };
+ };
+ /** @description Invalid request */
+ 400: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content?: never;
+ };
+ /** @description Resource not found */
+ 404: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content?: never;
+ };
+ };
+ };
+ OrganizationHackathonsAiController_generateFromBriefStream: {
+ parameters: {
+ query?: never;
+ header?: never;
+ path: {
+ /** @description Organization ID */
+ organizationId: string;
+ };
+ cookie?: never;
+ };
+ requestBody: {
+ content: {
+ "application/json": components["schemas"]["GenerateDraftFromBriefDto"];
+ };
+ };
+ responses: {
+ 201: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content?: never;
+ };
+ };
+ };
+ OrganizationHackathonsAiController_regenerateSection: {
+ parameters: {
+ query?: never;
+ header?: never;
+ path: {
+ /** @description Organization ID */
+ organizationId: string;
+ /** @description Hackathon draft ID */
+ id: string;
+ };
+ cookie?: never;
+ };
+ requestBody: {
+ content: {
+ "application/json": components["schemas"]["RegenerateDraftSectionDto"];
+ };
+ };
+ responses: {
+ /** @description Regenerated section returned. */
+ 201: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content: {
+ "application/json": components["schemas"]["RegenerateDraftSectionResponseDto"];
+ };
+ };
+ /** @description Invalid request */
+ 400: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content?: never;
+ };
+ /** @description Resource not found */
+ 404: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content?: never;
+ };
+ };
+ };
+ OrganizationHackathonsSubmissionsController_updateVisibilitySettings: {
+ parameters: {
+ query?: never;
+ header?: never;
+ path: {
+ /** @description Organization ID */
+ organizationId: string;
+ /** @description Hackathon ID or slug */
+ id: string;
+ };
+ cookie?: never;
+ };
+ requestBody: {
+ content: {
+ "application/json": components["schemas"]["UpdateVisibilitySettingsDto"];
+ };
+ };
+ responses: {
+ /** @description Visibility settings updated successfully */
+ 200: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content: {
+ "application/json": components["schemas"]["HackathonDraftResponseDto"];
+ };
+ };
+ };
+ };
+ OrganizationHackathonsSubmissionsController_reviewSubmission: {
+ parameters: {
+ query?: never;
+ header?: never;
+ path: {
+ /** @description Organization ID */
+ organizationId: string;
+ hackathonId: string;
+ /** @description Submission ID */
+ submissionId: string;
+ /** @description Hackathon ID or slug */
+ idOrSlug: unknown;
+ };
+ cookie?: never;
+ };
+ requestBody: {
+ content: {
+ "application/json": components["schemas"]["ReviewSubmissionDto"];
+ };
+ };
+ responses: {
+ /** @description Submission reviewed successfully */
+ 200: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content: {
+ "application/json": {
+ /** @example Submission reviewed successfully */
+ message?: string;
+ submission?: Record;
+ };
+ };
+ };
+ /** @description Invalid status or submission does not belong to hackathon */
+ 400: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content?: never;
+ };
+ /** @description Resource not found */
+ 404: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content?: never;
+ };
+ };
+ };
+ OrganizationHackathonsSubmissionsController_getOrganizationHackathonParticipants: {
+ parameters: {
+ query: {
+ /** @description Page number (1-based) */
+ page?: number;
+ /** @description Items per page */
+ limit?: number;
+ search: string;
+ status: string;
+ type: string;
+ };
+ header?: never;
+ path: {
+ /** @description Organization ID */
+ organizationId: string;
+ /** @description Hackathon ID or slug */
+ idOrSlug: string;
+ };
+ cookie?: never;
+ };
+ requestBody?: never;
+ responses: {
+ /** @description Participants retrieved successfully */
+ 200: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content: {
+ "application/json": components["schemas"]["OrganizationHackathonParticipantsResponseDto"];
+ };
+ };
+ /** @description Invalid request */
+ 400: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content?: never;
+ };
+ /** @description Resource not found */
+ 404: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content?: never;
+ };
+ };
+ };
+ OrganizationHackathonsSubmissionsController_scoreSubmissionOverride: {
+ parameters: {
+ query?: never;
+ header?: never;
+ path: {
+ /** @description Organization ID */
+ organizationId: string;
+ hackathonId: string;
+ /** @description Submission ID */
+ submissionId: string;
+ /** @description Hackathon ID or slug */
+ idOrSlug: unknown;
+ };
+ cookie?: never;
+ };
+ requestBody: {
+ content: {
+ "application/json": {
+ /**
+ * @description Judge ID to credit with these scores (optional, defaults to organizer)
+ * @example user_1234567890
+ */
+ judgeId?: string;
+ /** @description Scores for each criterion */
+ criteriaScores: unknown[];
+ };
+ };
+ };
+ responses: {
+ /** @description Submission score override applied successfully */
+ 200: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content: {
+ "application/json": {
+ /** @example Submission scored successfully (organizer override) */
+ message?: string;
+ judgingScore?: Record;
+ complianceChecks?: {
+ rubricValid?: boolean;
+ isOrganizerOverride?: boolean;
+ };
+ };
+ };
+ };
+ /** @description Invalid criteria scores or rubric validation failed */
+ 400: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content?: never;
+ };
+ /** @description Resource not found */
+ 404: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content?: never;
+ };
+ };
+ };
+ OrganizationHackathonsSubmissionsController_disqualifySubmission: {
+ parameters: {
+ query?: never;
+ header?: never;
+ path: {
+ /** @description Organization ID */
+ organizationId: string;
+ hackathonId: string;
+ /** @description Submission ID */
+ submissionId: string;
+ /** @description Hackathon ID or slug */
+ idOrSlug: unknown;
+ };
+ cookie?: never;
+ };
+ requestBody: {
+ content: {
+ "application/json": components["schemas"]["DisqualifySubmissionDto"];
+ };
+ };
+ responses: {
+ /** @description Submission disqualified successfully */
+ 200: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content: {
+ "application/json": {
+ /** @example Submission disqualified successfully */
+ message?: string;
+ submission?: Record;
+ };
+ };
+ };
+ /** @description Submission does not belong to hackathon */
+ 400: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content?: never;
+ };
+ /** @description Resource not found */
+ 404: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content?: never;
+ };
+ };
+ };
+ OrganizationHackathonsSubmissionsController_bulkSubmissionAction: {
+ parameters: {
+ query?: never;
+ header?: never;
+ path: {
+ /** @description Organization ID */
+ organizationId: string;
+ hackathonId: string;
+ /** @description Hackathon ID or slug */
+ idOrSlug: unknown;
+ };
+ cookie?: never;
+ };
+ requestBody: {
+ content: {
+ "application/json": components["schemas"]["BulkSubmissionActionDto"];
+ };
+ };
+ responses: {
+ /** @description Bulk action completed successfully */
+ 200: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content: {
+ "application/json": {
+ /** @example Successfully updated 5 submission(s) */
+ message?: string;
+ /** @example 5 */
+ count?: number;
+ /** @example SHORTLISTED */
+ action?: string;
+ };
+ };
+ };
+ /** @description Invalid action or missing required fields */
+ 400: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content?: never;
+ };
+ };
+ };
+ OrganizationHackathonsSubmissionsController_setSubmissionRank: {
+ parameters: {
+ query?: never;
+ header?: never;
+ path: {
+ /** @description Organization ID */
+ organizationId: string;
+ hackathonId: string;
+ /** @description Submission ID */
+ submissionId: string;
+ /** @description Hackathon ID or slug */
+ idOrSlug: unknown;
+ };
+ cookie?: never;
+ };
+ requestBody: {
+ content: {
+ "application/json": {
+ /** @example 1 */
+ rank: number;
+ };
+ };
+ };
+ responses: {
+ /** @description Submission rank updated successfully */
+ 200: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content: {
+ "application/json": {
+ /** @example Submission rank updated successfully */
+ message?: string;
+ submission?: Record;
+ };
+ };
+ };
+ /** @description Invalid rank or submission does not belong to hackathon */
+ 400: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content?: never;
+ };
+ /** @description Resource not found */
+ 404: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content?: never;
+ };
+ };
+ };
+ OrganizationHackathonsSubmissionsController_getAnalytics: {
+ parameters: {
+ query?: never;
+ header?: never;
+ path: {
+ /** @description Organization ID */
+ organizationId: string;
+ hackathonId: string;
+ /** @description Hackathon ID or slug */
+ idOrSlug: unknown;
+ };
+ cookie?: never;
+ };
+ requestBody?: never;
+ responses: {
+ /** @description Analytics retrieved successfully */
+ 200: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content: {
+ "application/json": components["schemas"]["HackathonAnalyticsResponseDto"];
+ };
+ };
+ /** @description Invalid request */
+ 400: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content?: never;
+ };
+ /** @description Forbidden - only organizers can access */
+ 403: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content?: never;
+ };
+ /** @description Resource not found */
+ 404: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content?: never;
+ };
+ };
+ };
+ HackathonsAnnouncementsController_getAnnouncements: {
+ parameters: {
+ query?: {
+ /** @description Page number (1-based) */
+ page?: number;
+ /** @description Items per page */
+ limit?: number;
+ };
+ header?: never;
+ path: {
+ /** @description Hackathon ID or slug */
+ idOrSlug: string;
+ };
+ cookie?: never;
+ };
+ requestBody?: never;
+ responses: {
+ /** @description Announcements retrieved successfully */
+ 200: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content: {
+ "application/json": components["schemas"]["AnnouncementResponseDto"][];
+ };
+ };
+ };
+ };
+ HackathonsAnnouncementsController_getAnnouncement: {
+ parameters: {
+ query?: never;
+ header?: never;
+ path: {
+ /** @description Announcement ID */
+ announcementId: string;
+ };
+ cookie?: never;
+ };
+ requestBody?: never;
+ responses: {
+ /** @description Announcement retrieved successfully */
+ 200: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content: {
+ "application/json": components["schemas"]["AnnouncementResponseDto"];
+ };
+ };
+ /** @description Invalid request */
+ 400: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content?: never;
+ };
+ /** @description Resource not found */
+ 404: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content?: never;
+ };
+ };
+ };
+ OrganizationHackathonsAnnouncementsController_createAnnouncement: {
+ parameters: {
+ query?: never;
+ header?: never;
+ path: {
+ /** @description Organization ID */
+ organizationId: string;
+ /** @description Hackathon ID or slug */
+ idOrSlug: string;
+ };
+ cookie?: never;
+ };
+ requestBody: {
+ content: {
+ "application/json": components["schemas"]["CreateAnnouncementDto"];
+ };
+ };
+ responses: {
+ /** @description Announcement created successfully */
+ 201: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content: {
+ "application/json": components["schemas"]["AnnouncementResponseDto"];
+ };
+ };
+ /** @description Invalid request */
+ 400: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content?: never;
+ };
+ /** @description Resource not found */
+ 404: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content?: never;
+ };
+ };
+ };
+ OrganizationHackathonsAnnouncementsController_deleteAnnouncement: {
+ parameters: {
+ query?: never;
+ header?: never;
+ path: {
+ /** @description Organization ID */
+ organizationId: string;
+ /** @description Hackathon ID or slug */
+ idOrSlug: string;
+ /** @description Announcement ID */
+ announcementId: string;
+ };
+ cookie?: never;
+ };
+ requestBody?: never;
+ responses: {
+ /** @description Announcement deleted successfully */
+ 200: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content?: never;
+ };
+ /** @description Invalid request */
+ 400: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content?: never;
+ };
+ /** @description Resource not found */
+ 404: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content?: never;
+ };
+ };
+ };
+ OrganizationHackathonsAnnouncementsController_updateAnnouncement: {
+ parameters: {
+ query?: never;
+ header?: never;
+ path: {
+ /** @description Organization ID */
+ organizationId: string;
+ /** @description Hackathon ID or slug */
+ idOrSlug: string;
+ /** @description Announcement ID */
+ announcementId: string;
+ };
+ cookie?: never;
+ };
+ requestBody: {
+ content: {
+ "application/json": components["schemas"]["UpdateAnnouncementDto"];
+ };
+ };
+ responses: {
+ /** @description Announcement updated successfully */
+ 200: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content: {
+ "application/json": components["schemas"]["AnnouncementResponseDto"];
+ };
+ };
+ /** @description Invalid request */
+ 400: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content?: never;
+ };
+ /** @description Resource not found */
+ 404: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content?: never;
+ };
+ };
+ };
+ OrganizationHackathonsAnnouncementsController_publishAnnouncement: {
+ parameters: {
+ query?: never;
+ header?: never;
+ path: {
+ /** @description Organization ID */
+ organizationId: string;
+ /** @description Hackathon ID or slug */
+ idOrSlug: string;
+ /** @description Announcement ID */
+ announcementId: string;
+ };
+ cookie?: never;
+ };
+ requestBody?: never;
+ responses: {
+ /** @description Announcement published successfully */
+ 200: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content: {
+ "application/json": components["schemas"]["AnnouncementResponseDto"];
+ };
+ };
+ /** @description Invalid request */
+ 400: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content?: never;
+ };
+ /** @description Resource not found */
+ 404: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content?: never;
+ };
+ };
+ };
+ HackathonsJudgingController_getCriteria: {
+ parameters: {
+ query?: never;
+ header?: never;
+ path: {
+ /** @description Hackathon ID or Slug */
+ idOrSlug: string;
+ };
+ cookie?: never;
+ };
+ requestBody?: never;
+ responses: {
+ /** @description Criteria retrieved successfully */
+ 200: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content: {
+ "application/json": components["schemas"]["CriterionDto"][];
+ };
+ };
+ /** @description Invalid request */
+ 400: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content?: never;
+ };
+ /** @description Resource not found */
+ 404: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content?: never;
+ };
+ };
+ };
+ HackathonsJudgingController_submitScore: {
+ parameters: {
+ query?: never;
+ header?: never;
+ path?: never;
+ cookie?: never;
+ };
+ requestBody: {
+ content: {
+ "application/json": components["schemas"]["ScoreSubmissionDto"];
+ };
+ };
+ responses: {
+ /** @description Score submitted successfully with compliance verification */
+ 201: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content: {
+ "application/json": {
+ message?: string;
+ judgingScore?: {
+ id?: string;
+ totalScore?: number;
+ criteriaScores?: unknown[];
+ };
+ complianceChecks?: {
+ judgeAssigned?: boolean;
+ noConflictOfInterest?: boolean;
+ rubricValid?: boolean;
+ };
+ };
+ };
+ };
+ /** @description Judge not assigned, conflict of interest detected, or invalid scores */
+ 400: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content?: never;
+ };
+ /** @description Resource not found */
+ 404: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content?: never;
+ };
+ };
+ };
+ HackathonsJudgingController_getJudgingSubmissions: {
+ parameters: {
+ query?: {
+ /** @description Page number (1-indexed) */
+ page?: number;
+ /** @description Number of items per page */
+ limit?: number;
+ /** @description Search term for project name, description, participant name or username */
+ search?: string;
+ /** @description Sort field */
+ sortBy?: "date" | "name" | "score" | "rank";
+ /** @description Sort order */
+ order?: "asc" | "desc";
+ };
+ header?: never;
+ path: {
+ /** @description Hackathon ID or Slug */
+ idOrSlug: string;
+ };
+ cookie?: never;
+ };
+ requestBody?: never;
+ responses: {
+ 200: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content: {
+ "application/json": components["schemas"]["JudgingSubmissionsResponseDto"];
+ };
+ };
+ /** @description Invalid request */
+ 400: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content?: never;
+ };
+ /** @description Resource not found */
+ 404: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content?: never;
+ };
+ };
+ };
+ OrganizationHackathonsJudgingController_getJudges: {
+ parameters: {
+ query?: never;
+ header?: never;
+ path: {
+ /** @description Organization ID */
+ organizationId: string;
+ /** @description Hackathon ID or slug */
+ idOrSlug: string;
+ };
+ cookie?: never;
+ };
+ requestBody?: never;
+ responses: {
+ /** @description Judges retrieved successfully */
+ 200: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content: {
+ "application/json": components["schemas"]["JudgeResponseDto"][];
+ };
+ };
+ /** @description Invalid request */
+ 400: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content?: never;
+ };
+ /** @description Resource not found */
+ 404: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content?: never;
+ };
+ };
+ };
+ OrganizationHackathonsJudgingController_addJudge: {
+ parameters: {
+ query?: never;
+ header?: never;
+ path: {
+ /** @description Organization ID */
+ organizationId: string;
+ /** @description Hackathon ID or slug */
+ idOrSlug: string;
+ };
+ cookie?: never;
+ };
+ requestBody: {
+ content: {
+ "application/json": components["schemas"]["AddJudgeDto"];
+ };
+ };
+ responses: {
+ /** @description Judge added successfully */
+ 201: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content: {
+ "application/json": components["schemas"]["JudgeResponseDto"];
+ };
+ };
+ /** @description Invalid request */
+ 400: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content?: never;
+ };
+ /** @description Resource not found */
+ 404: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content?: never;
+ };
+ };
+ };
+ OrganizationHackathonsJudgingController_removeJudge: {
+ parameters: {
+ query?: never;
+ header?: never;
+ path: {
+ /** @description Organization ID */
+ organizationId: string;
+ /** @description Hackathon ID or slug */
+ idOrSlug: string;
+ /** @description User ID of the judge */
+ userId: string;
+ };
+ cookie?: never;
+ };
+ requestBody?: never;
+ responses: {
+ /** @description Judge removed successfully */
+ 200: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content?: never;
+ };
+ /** @description Invalid request */
+ 400: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content?: never;
+ };
+ /** @description Resource not found */
+ 404: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content?: never;
+ };
+ };
+ };
+ OrganizationHackathonsJudgingController_getResults: {
+ parameters: {
+ query?: {
+ /** @description Page number (1-indexed) */
+ page?: number;
+ /** @description Number of items per page */
+ limit?: number;
+ /** @description Search term for project name, participant name or username */
+ search?: string;
+ /** @description Sort field */
+ sortBy?: "score" | "name" | "rank" | "date";
+ /** @description Sort order */
+ order?: "asc" | "desc";
+ /** @description If true, only returns submissions that have been assigned a rank */
+ onlyWinners?: boolean;
+ };
+ header?: never;
+ path: {
+ /** @description Organization ID */
+ organizationId: string;
+ /** @description Hackathon ID or slug */
+ idOrSlug: string;
+ };
+ cookie?: never;
+ };
+ requestBody?: never;
+ responses: {
+ /** @description Results retrieved successfully */
+ 200: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content: {
+ "application/json": components["schemas"]["JudgingResultsResponseDto"];
+ };
+ };
+ /** @description Invalid request */
+ 400: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content?: never;
+ };
+ /** @description Resource not found */
+ 404: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content?: never;
+ };
+ };
+ };
+ OrganizationHackathonsJudgingController_getIndividualScores: {
+ parameters: {
+ query?: never;
+ header?: never;
+ path: {
+ /** @description Organization ID */
+ organizationId: string;
+ /** @description Hackathon ID or slug */
+ idOrSlug: string;
+ /** @description ID of the submission */
+ submissionId: string;
+ };
+ cookie?: never;
+ };
+ requestBody?: never;
+ responses: {
+ 200: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content: {
+ "application/json": components["schemas"]["IndividualJudgingResultDto"][];
+ };
+ };
+ /** @description Invalid request */
+ 400: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content?: never;
+ };
+ /** @description Resource not found */
+ 404: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content?: never;
+ };
+ };
+ };
+ OrganizationHackathonsJudgingController_getWinnerRanking: {
+ parameters: {
+ query?: {
+ /** @description Page number (1-indexed) */
+ page?: number;
+ /** @description Number of items per page */
+ limit?: number;
+ /** @description Search term for project name, participant name or username */
+ search?: string;
+ /** @description Sort field */
+ sortBy?: "score" | "name" | "rank" | "date";
+ /** @description Sort order */
+ order?: "asc" | "desc";
+ /** @description If true, only returns submissions that have been assigned a rank */
+ onlyWinners?: boolean;
+ };
+ header?: never;
+ path: {
+ /** @description Organization ID */
+ organizationId: string;
+ /** @description Hackathon ID or slug */
+ idOrSlug: string;
+ };
+ cookie?: never;
+ };
+ requestBody?: never;
+ responses: {
+ 200: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content: {
+ "application/json": components["schemas"]["AggregatedJudgingResultDto"][];
+ };
+ };
+ /** @description Invalid request */
+ 400: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content?: never;
+ };
+ /** @description Resource not found */
+ 404: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content?: never;
+ };
+ };
+ };
+ OrganizationHackathonsJudgingController_judgingCoverage: {
+ parameters: {
+ query?: never;
+ header?: never;
+ path: {
+ /** @description Organization ID */
+ organizationId: string;
+ /** @description Hackathon ID or slug */
+ idOrSlug: string;
+ };
+ cookie?: never;
+ };
+ requestBody?: never;
+ responses: {
+ /** @description Invalid request */
+ 400: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content?: never;
+ };
+ /** @description Resource not found */
+ 404: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content?: never;
+ };
+ };
+ };
+ OrganizationHackathonsJudgingController_previewAllocation: {
+ parameters: {
+ query?: never;
+ header?: never;
+ path: {
+ /** @description Organization ID */
+ organizationId: string;
+ /** @description Hackathon ID or slug */
+ idOrSlug: string;
+ };
+ cookie?: never;
+ };
+ requestBody?: never;
+ responses: {
+ /** @description Invalid request */
+ 400: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content?: never;
+ };
+ /** @description Resource not found */
+ 404: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content?: never;
+ };
+ };
+ };
+ OrganizationHackathonsJudgingController_allocationParity: {
+ parameters: {
+ query?: never;
+ header?: never;
+ path: {
+ /** @description Organization ID */
+ organizationId: string;
+ /** @description Hackathon ID or slug */
+ idOrSlug: string;
+ };
+ cookie?: never;
+ };
+ requestBody?: never;
+ responses: {
+ /** @description Invalid request */
+ 400: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content?: never;
+ };
+ /** @description Resource not found */
+ 404: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content?: never;
+ };
+ };
+ };
+ OrganizationHackathonsJudgingController_judgingCompleteness: {
+ parameters: {
+ query?: never;
+ header?: never;
+ path: {
+ /** @description Organization ID */
+ organizationId: string;
+ /** @description Hackathon ID or slug */
+ idOrSlug: string;
+ };
+ cookie?: never;
+ };
+ requestBody?: never;
+ responses: {
+ /** @description Invalid request */
+ 400: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content?: never;
+ };
+ /** @description Resource not found */
+ 404: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content?: never;
+ };
+ };
+ };
+ OrganizationHackathonsJudgingController_publishResults: {
+ parameters: {
+ query?: never;
+ header?: never;
+ path: {
+ /** @description Organization ID */
+ organizationId: string;
+ /** @description Hackathon ID or slug */
+ idOrSlug: string;
+ };
+ cookie?: never;
+ };
+ requestBody?: never;
+ responses: {
+ /** @description Results published successfully */
+ 200: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content?: never;
+ };
+ /** @description Invalid request */
+ 400: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content?: never;
+ };
+ /** @description Resource not found */
+ 404: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content?: never;
+ };
+ };
+ };
+ OrganizationHackathonsJudgingController_winnersBoard: {
+ parameters: {
+ query?: never;
+ header?: never;
+ path: {
+ /** @description Organization ID */
+ organizationId: string;
+ /** @description Hackathon ID or slug */
+ idOrSlug: string;
+ };
+ cookie?: never;
+ };
+ requestBody?: never;
+ responses: {
+ /** @description Invalid request */
+ 400: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content?: never;
+ };
+ /** @description Resource not found */
+ 404: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content?: never;
+ };
+ };
+ };
+ OrganizationHackathonsJudgingController_setPlacementWinner: {
+ parameters: {
+ query?: never;
+ header?: never;
+ path: {
+ /** @description Organization ID */
+ organizationId: string;
+ /** @description Hackathon ID or slug */
+ idOrSlug: string;
+ /** @description Prize placement id */
+ placementId: string;
+ };
+ cookie?: never;
+ };
+ requestBody: {
+ content: {
+ "application/json": components["schemas"]["SetPlacementWinnerDto"];
+ };
+ };
+ responses: {
+ /** @description Invalid request */
+ 400: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content?: never;
+ };
+ /** @description Resource not found */
+ 404: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content?: never;
+ };
+ };
+ };
+ OrganizationHackathonsJudgingController_clearPlacementWinner: {
+ parameters: {
+ query?: never;
+ header?: never;
+ path: {
+ /** @description Organization ID */
+ organizationId: string;
+ /** @description Hackathon ID or slug */
+ idOrSlug: string;
+ /** @description Prize placement id */
+ placementId: string;
+ };
+ cookie?: never;
+ };
+ requestBody?: never;
+ responses: {
+ /** @description Invalid request */
+ 400: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content?: never;
+ };
+ /** @description Resource not found */
+ 404: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content?: never;
+ };
+ };
+ };
+ OrganizationHackathonsJudgingController_withholdPlacement: {
+ parameters: {
+ query?: never;
+ header?: never;
+ path: {
+ /** @description Organization ID */
+ organizationId: string;
+ /** @description Hackathon ID or slug */
+ idOrSlug: string;
+ /** @description Prize placement id */
+ placementId: string;
+ };
+ cookie?: never;
+ };
+ requestBody?: never;
+ responses: {
+ /** @description Invalid request */
+ 400: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content?: never;
+ };
+ /** @description Resource not found */
+ 404: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content?: never;
+ };
+ };
+ };
+ OrganizationHackathonsJudgingController_listInvitations: {
+ parameters: {
+ query?: never;
+ header?: never;
+ path: {
+ /** @description Organization ID */
+ organizationId: string;
+ /** @description Hackathon ID or slug */
+ idOrSlug: string;
+ };
+ cookie?: never;
+ };
+ requestBody?: never;
+ responses: {
+ /** @description Invalid request */
+ 400: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content?: never;
+ };
+ /** @description Resource not found */
+ 404: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content?: never;
+ };
+ };
+ };
+ OrganizationHackathonsJudgingController_inviteJudge: {
+ parameters: {
+ query?: never;
+ header?: never;
+ path: {
+ /** @description Organization ID */
+ organizationId: string;
+ /** @description Hackathon ID or slug */
+ idOrSlug: string;
+ };
+ cookie?: never;
+ };
+ requestBody: {
+ content: {
+ "application/json": components["schemas"]["InviteJudgeDto"];
+ };
+ };
+ responses: {
+ /** @description Invalid request */
+ 400: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content?: never;
+ };
+ /** @description Resource not found */
+ 404: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content?: never;
+ };
+ };
+ };
+ OrganizationHackathonsJudgingController_bulkInviteJudges: {
+ parameters: {
+ query?: never;
+ header?: never;
+ path: {
+ /** @description Organization ID */
+ organizationId: string;
+ /** @description Hackathon ID or slug */
+ idOrSlug: string;
+ };
+ cookie?: never;
+ };
+ requestBody: {
+ content: {
+ "application/json": components["schemas"]["BulkInviteJudgesDto"];
+ };
+ };
+ responses: {
+ 201: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content: {
+ "application/json": components["schemas"]["BulkInviteResultDto"];
+ };
+ };
+ /** @description Invalid request */
+ 400: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content?: never;
+ };
+ /** @description Resource not found */
+ 404: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content?: never;
+ };
+ };
+ };
+ OrganizationHackathonsJudgingController_cancelInvitation: {
+ parameters: {
+ query?: never;
+ header?: never;
+ path: {
+ /** @description Organization ID */
+ organizationId: string;
+ /** @description Hackathon ID or slug */
+ idOrSlug: string;
+ /** @description Invitation ID */
+ invitationId: string;
+ };
+ cookie?: never;
+ };
+ requestBody?: never;
+ responses: {
+ /** @description Invalid request */
+ 400: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content?: never;
+ };
+ /** @description Resource not found */
+ 404: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content?: never;
+ };
+ };
+ };
+ OrganizationHackathonsJudgingController_resendInvitation: {
+ parameters: {
+ query?: never;
+ header?: never;
+ path: {
+ /** @description Organization ID */
+ organizationId: string;
+ /** @description Hackathon ID or slug */
+ idOrSlug: string;
+ /** @description Invitation ID */
+ invitationId: string;
+ };
+ cookie?: never;
+ };
+ requestBody?: never;
+ responses: {
+ /** @description Invalid request */
+ 400: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content?: never;
+ };
+ /** @description Resource not found */
+ 404: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content?: never;
+ };
+ };
+ };
+ OrganizationHackathonsJudgingController_listRecommendationThresholds: {
+ parameters: {
+ query?: never;
+ header?: never;
+ path: {
+ /** @description Hackathon ID or slug */
+ idOrSlug: string;
+ /** @description Organization ID */
+ organizationId: unknown;
+ };
+ cookie?: never;
+ };
+ requestBody?: never;
+ responses: {
+ 200: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content: {
+ "application/json": components["schemas"]["RecommendationThresholdDto"][];
+ };
+ };
+ /** @description Invalid request */
+ 400: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content?: never;
+ };
+ /** @description Resource not found */
+ 404: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content?: never;
+ };
+ };
+ };
+ OrganizationHackathonsJudgingController_setRecommendationThreshold: {
+ parameters: {
+ query?: never;
+ header?: never;
+ path: {
+ /** @description Hackathon ID or slug */
+ idOrSlug: string;
+ /** @description Organization ID */
+ organizationId: unknown;
+ };
+ cookie?: never;
+ };
+ requestBody: {
+ content: {
+ "application/json": components["schemas"]["SetRecommendationThresholdDto"];
+ };
+ };
+ responses: {
+ 200: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content: {
+ "application/json": components["schemas"]["RecommendationThresholdDto"];
+ };
+ };
+ /** @description Invalid request */
+ 400: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content?: never;
+ };
+ /** @description Resource not found */
+ 404: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content?: never;
+ };
+ };
+ };
+ OrganizationHackathonsJudgingController_deleteRecommendationThreshold: {
+ parameters: {
+ query?: never;
+ header?: never;
+ path: {
+ /** @description Hackathon ID or slug */
+ idOrSlug: string;
+ /** @description Threshold ID */
+ thresholdId: string;
+ /** @description Organization ID */
+ organizationId: unknown;
+ };
+ cookie?: never;
+ };
+ requestBody?: never;
+ responses: {
+ /** @description Invalid request */
+ 400: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content?: never;
+ };
+ /** @description Resource not found */
+ 404: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content?: never;
+ };
+ };
+ };
+ OrganizationHackathonsJudgingController_computeRecommendations: {
+ parameters: {
+ query?: never;
+ header?: never;
+ path: {
+ /** @description Hackathon ID or slug */
+ idOrSlug: string;
+ /** @description Organization ID */
+ organizationId: unknown;
+ };
+ cookie?: never;
+ };
+ requestBody?: never;
+ responses: {
+ 200: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content: {
+ "application/json": components["schemas"]["RecommendationComputeResultDto"];
+ };
+ };
+ /** @description Invalid request */
+ 400: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content?: never;
+ };
+ /** @description Resource not found */
+ 404: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content?: never;
+ };
+ };
+ };
+ OrganizationHackathonsJudgingController_aiScoreSubmission: {
+ parameters: {
+ query?: {
+ prizeId?: unknown;
+ };
+ header?: never;
+ path: {
+ /** @description Hackathon ID or slug */
+ idOrSlug: string;
+ /** @description Submission ID */
+ submissionId: string;
+ /** @description Organization ID */
+ organizationId: unknown;
+ };
+ cookie?: never;
+ };
+ requestBody?: never;
+ responses: {
+ /** @description Invalid request */
+ 400: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content?: never;
+ };
+ /** @description Resource not found */
+ 404: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content?: never;
+ };
+ };
+ };
+ OrganizationHackathonsJudgingController_aiScorecards: {
+ parameters: {
+ query?: never;
+ header?: never;
+ path: {
+ /** @description Hackathon ID or slug */
+ idOrSlug: string;
+ /** @description Organization ID */
+ organizationId: unknown;
+ };
+ cookie?: never;
+ };
+ requestBody?: never;
+ responses: {
+ /** @description Invalid request */
+ 400: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content?: never;
+ };
+ /** @description Resource not found */
+ 404: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content?: never;
+ };
+ };
+ };
+ OrganizationHackathonsJudgingController_promoteAiScore: {
+ parameters: {
+ query?: never;
+ header?: never;
+ path: {
+ /** @description Hackathon ID or slug */
+ idOrSlug: string;
+ /** @description Submission ID */
+ submissionId: string;
+ /** @description Organization ID */
+ organizationId: unknown;
+ };
+ cookie?: never;
+ };
+ requestBody?: never;
+ responses: {
+ /** @description Invalid request */
+ 400: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content?: never;
+ };
+ /** @description Resource not found */
+ 404: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content?: never;
+ };
+ };
+ };
+ OrganizationHackathonsJudgingController_unpromoteAiScore: {
+ parameters: {
+ query?: never;
+ header?: never;
+ path: {
+ /** @description Hackathon ID or slug */
+ idOrSlug: string;
+ /** @description Submission ID */
+ submissionId: string;
+ /** @description Organization ID */
+ organizationId: unknown;
+ };
+ cookie?: never;
+ };
+ requestBody?: never;
+ responses: {
+ /** @description Invalid request */
+ 400: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content?: never;
+ };
+ /** @description Resource not found */
+ 404: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content?: never;
+ };
+ };
+ };
+ JudgeController_myInvitations: {
+ parameters: {
+ query?: never;
+ header?: never;
+ path?: never;
+ cookie?: never;
+ };
+ requestBody?: never;
+ responses: {
+ /** @description Invalid request */
+ 400: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content?: never;
+ };
+ /** @description Resource not found */
+ 404: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content?: never;
+ };
+ };
+ };
+ JudgeController_previewInvitation: {
+ parameters: {
+ query?: never;
+ header?: never;
+ path: {
+ /** @description Opaque invitation token */
+ token: string;
+ };
+ cookie?: never;
+ };
+ requestBody?: never;
+ responses: {
+ /** @description Invalid request */
+ 400: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content?: never;
+ };
+ /** @description Resource not found */
+ 404: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content?: never;
+ };
+ };
+ };
+ JudgeController_acceptInvitation: {
+ parameters: {
+ query?: never;
+ header?: never;
+ path: {
+ /** @description Opaque invitation token */
+ token: string;
+ };
+ cookie?: never;
+ };
+ requestBody: {
+ content: {
+ "application/json": components["schemas"]["AcceptJudgeInvitationDto"];
+ };
+ };
+ responses: {
+ /** @description Invalid request */
+ 400: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content?: never;
+ };
+ /** @description Resource not found */
+ 404: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content?: never;
+ };
+ };
+ };
+ JudgeController_declineInvitation: {
+ parameters: {
+ query?: never;
+ header?: never;
+ path: {
+ /** @description Opaque invitation token */
+ token: string;
+ };
+ cookie?: never;
+ };
+ requestBody?: never;
+ responses: {
+ /** @description Invalid request */
+ 400: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content?: never;
+ };
+ /** @description Resource not found */
+ 404: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content?: never;
+ };
+ };
+ };
+ JudgeController_myHackathons: {
+ parameters: {
+ query?: never;
+ header?: never;
+ path?: never;
+ cookie?: never;
+ };
+ requestBody?: never;
+ responses: {
+ /** @description Assigned hackathons */
+ 200: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content?: never;
+ };
+ /** @description Invalid request */
+ 400: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content?: never;
+ };
+ /** @description Resource not found */
+ 404: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content?: never;
+ };
+ };
+ };
+ JudgeController_overview: {
+ parameters: {
+ query?: never;
+ header?: never;
+ path: {
+ /** @description Hackathon ID or slug */
+ hackathonId: unknown;
+ };
+ cookie?: never;
+ };
+ requestBody?: never;
+ responses: {
+ /** @description Hackathon overview */
+ 200: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content?: never;
+ };
+ /** @description Invalid request */
+ 400: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content?: never;
+ };
+ /** @description Resource not found */
+ 404: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content?: never;
+ };
+ };
+ };
+ JudgeController_submissions: {
+ parameters: {
+ query?: {
+ /** @description Page number (1-indexed) */
+ page?: number;
+ /** @description Number of items per page */
+ limit?: number;
+ /** @description Search term for project name, description, participant name or username */
+ search?: string;
+ /** @description Sort field */
+ sortBy?: "date" | "name" | "score" | "rank";
+ /** @description Sort order */
+ order?: "asc" | "desc";
+ };
+ header?: never;
+ path: {
+ /** @description Hackathon ID or slug */
+ hackathonId: unknown;
+ };
+ cookie?: never;
+ };
+ requestBody?: never;
+ responses: {
+ 200: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content: {
+ "application/json": components["schemas"]["JudgingSubmissionsResponseDto"];
+ };
+ };
+ /** @description Invalid request */
+ 400: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content?: never;
+ };
+ /** @description Resource not found */
+ 404: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content?: never;
+ };
+ };
+ };
+ JudgeController_submission: {
+ parameters: {
+ query?: never;
+ header?: never;
+ path: {
+ /** @description Submission ID */
+ submissionId: string;
+ /** @description Hackathon ID or slug */
+ hackathonId: unknown;
+ };
+ cookie?: never;
+ };
+ requestBody?: never;
+ responses: {
+ /** @description Invalid request */
+ 400: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content?: never;
+ };
+ /** @description Resource not found */
+ 404: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content?: never;
+ };
+ };
+ };
+ JudgeController_neighbors: {
+ parameters: {
+ query?: never;
+ header?: never;
+ path: {
+ /** @description Submission ID */
+ submissionId: string;
+ /** @description Hackathon ID or slug */
+ hackathonId: unknown;
+ };
+ cookie?: never;
+ };
+ requestBody?: never;
+ responses: {
+ /** @description Invalid request */
+ 400: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content?: never;
+ };
+ /** @description Resource not found */
+ 404: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content?: never;
+ };
+ };
+ };
+ JudgeController_criteria: {
+ parameters: {
+ query?: never;
+ header?: never;
+ path: {
+ /** @description Hackathon ID or slug */
+ hackathonId: unknown;
+ };
+ cookie?: never;
+ };
+ requestBody?: never;
+ responses: {
+ /** @description Invalid request */
+ 400: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content?: never;
+ };
+ /** @description Resource not found */
+ 404: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content?: never;
+ };
+ };
+ };
+ JudgeController_results: {
+ parameters: {
+ query?: never;
+ header?: never;
+ path: {
+ /** @description Hackathon ID or slug */
+ hackathonId: unknown;
+ };
+ cookie?: never;
+ };
+ requestBody?: never;
+ responses: {
+ /** @description Invalid request */
+ 400: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content?: never;
+ };
+ /** @description Resource not found */
+ 404: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content?: never;
+ };
+ };
+ };
+ JudgeController_score: {
+ parameters: {
+ query?: never;
+ header?: never;
+ path: {
+ /** @description Submission ID */
+ submissionId: string;
+ /** @description Hackathon ID or slug */
+ hackathonId: unknown;
+ };
+ cookie?: never;
+ };
+ requestBody?: never;
+ responses: {
+ /** @description Invalid request */
+ 400: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content?: never;
+ };
+ /** @description Resource not found */
+ 404: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content?: never;
+ };
+ };
+ };
+ JudgeController_aiScorecard: {
+ parameters: {
+ query?: never;
+ header?: never;
+ path: {
+ /** @description Hackathon ID or slug */
+ hackathonId: string;
+ /** @description Submission ID */
+ submissionId: string;
+ };
+ cookie?: never;
+ };
+ requestBody?: never;
+ responses: {
+ /** @description Invalid request */
+ 400: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content?: never;
+ };
+ /** @description Resource not found */
+ 404: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content?: never;
+ };
+ };
+ };
+ JudgeController_runAiScore: {
+ parameters: {
+ query?: never;
+ header?: never;
+ path: {
+ /** @description Hackathon ID or slug */
+ hackathonId: string;
+ /** @description Submission ID */
+ submissionId: string;
+ };
+ cookie?: never;
+ };
+ requestBody?: never;
+ responses: {
+ /** @description Invalid request */
+ 400: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content?: never;
+ };
+ /** @description Resource not found */
+ 404: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content?: never;
+ };
+ };
+ };
+ OrganizationHackathonsUpdatesController_getHackathonStatistics: {
+ parameters: {
+ query?: never;
+ header?: never;
+ path: {
+ /** @description Organization ID */
+ organizationId: string;
+ id: string;
+ /** @description Hackathon ID or slug */
+ idOrSlug: unknown;
+ };
+ cookie?: never;
+ };
+ requestBody?: never;
+ responses: {
+ /** @description Statistics retrieved successfully */
+ 200: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content: {
+ "application/json": {
+ /** @example 45 */
+ totalSubmissions?: number;
+ /** @example 120 */
+ activeParticipants?: number;
+ /** @example 340 */
+ totalFollowers?: number;
+ /** @example 50000 */
+ prizePool?: number;
+ categories?: string[];
+ /** @example active */
+ status?: string;
+ };
+ };
+ };
+ /** @description Invalid request */
+ 400: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content?: never;
+ };
+ /** @description Resource not found */
+ 404: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content?: never;
+ };
+ };
+ };
+ OrganizationHackathonsUpdatesController_updatePublishedContent: {
+ parameters: {
+ query?: never;
+ header?: never;
+ path: {
+ /** @description Organization ID */
+ organizationId: string;
+ id: string;
+ /** @description Hackathon ID or slug */
+ idOrSlug: unknown;
+ };
+ cookie?: never;
+ };
+ requestBody: {
+ content: {
+ "application/json": components["schemas"]["UpdatePublishedHackathonContentDto"];
+ };
+ };
+ responses: {
+ /** @description Published hackathon content updated successfully */
+ 200: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content: {
+ "application/json": components["schemas"]["HackathonResponseDto"];
+ };
+ };
+ /** @description Invalid payload or hackathon state */
+ 400: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content?: never;
+ };
+ /** @description Resource not found */
+ 404: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content?: never;
+ };
+ };
+ };
+ OrganizationHackathonsUpdatesController_updatePublishedSchedule: {
+ parameters: {
+ query?: never;
+ header?: never;
+ path: {
+ /** @description Organization ID */
+ organizationId: string;
+ id: string;
+ /** @description Hackathon ID or slug */
+ idOrSlug: unknown;
+ };
+ cookie?: never;
+ };
+ requestBody: {
+ content: {
+ "application/json": components["schemas"]["UpdatePublishedHackathonScheduleDto"];
+ };
+ };
+ responses: {
+ /** @description Published hackathon schedule updated successfully */
+ 200: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content: {
+ "application/json": components["schemas"]["HackathonResponseDto"];
+ };
+ };
+ /** @description Invalid payload or schedule changes are no longer allowed */
+ 400: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content?: never;
+ };
+ /** @description Resource not found */
+ 404: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content?: never;
+ };
+ };
+ };
+ OrganizationHackathonsUpdatesController_updatePublishedFinancial: {
+ parameters: {
+ query?: never;
+ header?: never;
+ path: {
+ /** @description Organization ID */
+ organizationId: string;
+ id: string;
+ /** @description Hackathon ID or slug */
+ idOrSlug: unknown;
+ };
+ cookie?: never;
+ };
+ requestBody: {
+ content: {
+ "application/json": components["schemas"]["UpdatePublishedHackathonFinancialDto"];
+ };
+ };
+ responses: {
+ /** @description Published hackathon financial settings updated successfully */
+ 200: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content: {
+ "application/json": components["schemas"]["HackathonResponseDto"];
+ };
+ };
+ /** @description Invalid payload or escrow-restricted financial change */
+ 400: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content?: never;
+ };
+ /** @description Resource not found */
+ 404: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content?: never;
+ };
+ };
+ };
+ OrganizationHackathonsUpdatesController_previewPublishedFinancial: {
+ parameters: {
+ query?: never;
+ header?: never;
+ path: {
+ /** @description Organization ID */
+ organizationId: string;
+ id: string;
+ /** @description Hackathon ID or slug */
+ idOrSlug: unknown;
+ };
+ cookie?: never;
+ };
+ requestBody: {
+ content: {
+ "application/json": components["schemas"]["UpdatePublishedHackathonFinancialDto"];
+ };
+ };
+ responses: {
+ /** @description Cost preview computed successfully (no changes made) */
+ 200: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content: {
+ "application/json": {
+ /** @example 180 */
+ currentPrizePool?: number;
+ /** @example 250 */
+ newPrizePool?: number;
+ /** @example 8.5 */
+ currentPlatformFee?: number;
+ /** @example 11.8 */
+ newPlatformFee?: number;
+ /** @example 188.5 */
+ currentTotalRequired?: number;
+ /** @example 261.8 */
+ newTotalRequired?: number;
+ /** @example 73.3 */
+ additionalFundingRequired?: number;
+ /** @example 78.8 */
+ walletBalance?: number | null;
+ /** @example true */
+ sufficient?: boolean;
+ /** @example 0 */
+ shortfall?: number;
+ breakdown?: {
+ /** @example 1st Place */
+ place?: string;
+ /** @example 50 */
+ amount?: number;
+ /** @example 2.25 */
+ fee?: number;
+ /** @example 52.25 */
+ total?: number;
+ }[];
+ };
+ };
+ };
+ /** @description Invalid payload or hackathon state */
+ 400: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content?: never;
+ };
+ /** @description Resource not found */
+ 404: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content?: never;
+ };
+ };
+ };
+ OrganizationHackathonsUpdatesController_updatePublishedAdvancedSettings: {
+ parameters: {
+ query?: never;
+ header?: never;
+ path: {
+ /** @description Organization ID */
+ organizationId: string;
+ id: string;
+ /** @description Hackathon ID or slug */
+ idOrSlug: unknown;
+ };
+ cookie?: never;
+ };
+ requestBody: {
+ content: {
+ "application/json": components["schemas"]["UpdatePublishedHackathonAdvancedSettingsDto"];
+ };
+ };
+ responses: {
+ /** @description Published hackathon advanced settings updated successfully */
+ 200: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content: {
+ "application/json": components["schemas"]["HackathonResponseDto"];
+ };
+ };
+ /** @description Invalid payload or unsupported hackathon state */
+ 400: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content?: never;
+ };
+ /** @description Resource not found */
+ 404: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content?: never;
+ };
+ };
+ };
+ OrganizationHackathonsUpdatesController_setHackathonAccess: {
+ parameters: {
+ query?: never;
+ header?: never;
+ path: {
+ /** @description Organization ID */
+ organizationId: string;
+ id: string;
+ /** @description Hackathon ID or slug */
+ idOrSlug: unknown;
+ };
+ cookie?: never;
+ };
+ requestBody: {
+ content: {
+ "application/json": components["schemas"]["SetHackathonAccessDto"];
+ };
+ };
+ responses: {
+ 200: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content: {
+ "application/json": components["schemas"]["HackathonResponseDto"];
+ };
+ };
+ /** @description Missing password for private access */
+ 400: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content?: never;
+ };
+ /** @description Resource not found */
+ 404: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content?: never;
+ };
+ };
+ };
+ OrganizationHackathonsExportController_exportHackathon: {
+ parameters: {
+ query: {
+ /** @description Output format */
+ format: "csv" | "pdf";
+ /** @description Dataset scope. Defaults to "full" (all sections). */
+ dataset?: "overview" | "participants" | "submissions" | "prize_tiers" | "winners" | "judging" | "full";
+ };
+ header?: never;
+ path: {
+ /** @description ID of the organization that owns the hackathon */
+ organizationId: string;
+ /** @description ID or slug of the hackathon */
+ id: string;
+ };
+ cookie?: never;
+ };
+ requestBody?: never;
+ responses: {
+ /** @description Binary file stream (CSV or PDF) */
+ 200: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content: {
+ "text/csv": string;
+ "application/pdf": string;
+ };
+ };
+ /** @description Unsupported format or dataset */
+ 400: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content?: never;
+ };
+ /** @description Not an organizer of this hackathon */
+ 403: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content?: never;
+ };
+ /** @description Hackathon not found */
+ 404: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content?: never;
+ };
+ };
+ };
+ OrganizationHackathonsPartnersController_invite: {
+ parameters: {
+ query?: never;
+ header?: never;
+ path: {
+ /** @description Organization ID */
+ organizationId: string;
+ /** @description Hackathon ID */
+ hackathonId: string;
+ };
+ cookie?: never;
+ };
+ requestBody: {
+ content: {
+ "application/json": components["schemas"]["InvitePartnerDto"];
+ };
+ };
+ responses: {
+ /** @description Invitation created and email sent */
+ 201: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content?: never;
+ };
+ };
+ };
+ OrganizationHackathonsPartnersController_list: {
+ parameters: {
+ query?: {
+ status?: "PENDING" | "CONFIRMED" | "FAILED" | "REFUNDED" | "CANCELLED";
+ page?: number;
+ limit?: number;
+ };
+ header?: never;
+ path: {
+ /** @description Organization ID */
+ organizationId: string;
+ /** @description Hackathon ID */
+ hackathonId: string;
+ };
+ cookie?: never;
+ };
+ requestBody?: never;
+ responses: {
+ /** @description Contributions retrieved */
+ 200: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content?: never;
+ };
+ };
+ };
+ OrganizationHackathonsPartnersController_cancel: {
+ parameters: {
+ query?: never;
+ header?: never;
+ path: {
+ /** @description Organization ID */
+ organizationId: string;
+ /** @description Hackathon ID */
+ hackathonId: string;
+ /** @description Contribution ID */
+ contributionId: string;
+ };
+ cookie?: never;
+ };
+ requestBody?: never;
+ responses: {
+ /** @description Invitation cancelled */
+ 200: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content?: never;
+ };
+ };
+ };
+ OrganizationHackathonsPartnersController_getAllocations: {
+ parameters: {
+ query?: never;
+ header?: never;
+ path: {
+ organizationId: string;
+ hackathonId: string;
+ contributionId: string;
+ };
+ cookie?: never;
+ };
+ requestBody?: never;
+ responses: {
+ /** @description Allocation summary */
+ 200: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content?: never;
+ };
+ };
+ };
+ OrganizationHackathonsPartnersController_allocate: {
+ parameters: {
+ query?: never;
+ header?: never;
+ path: {
+ organizationId: string;
+ hackathonId: string;
+ contributionId: string;
+ };
+ cookie?: never;
+ };
+ requestBody: {
+ content: {
+ "application/json": components["schemas"]["AllocateContributionDto"];
+ };
+ };
+ responses: {
+ /** @description Contribution allocated */
+ 200: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content?: never;
+ };
+ };
+ };
+ OrganizationHackathonsPartnersController_prizes: {
+ parameters: {
+ query?: never;
+ header?: never;
+ path: {
+ organizationId: string;
+ hackathonId: string;
+ };
+ cookie?: never;
+ };
+ requestBody?: never;
+ responses: {
+ /** @description Prizes with placements */
+ 200: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content?: never;
+ };
+ };
+ };
+ OrganizationHackathonsPartnersController_undoAllocation: {
+ parameters: {
+ query?: never;
+ header?: never;
+ path: {
+ organizationId: string;
+ hackathonId: string;
+ allocationId: string;
+ };
+ cookie?: never;
+ };
+ requestBody?: never;
+ responses: {
+ /** @description Allocation undone */
+ 200: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content?: never;
+ };
+ };
+ };
+ PartnersContributeController_getByToken: {
+ parameters: {
+ query?: never;
+ header?: never;
+ path: {
+ /** @description Hex-encoded invite token */
+ token: string;
+ };
+ cookie?: never;
+ };
+ requestBody?: never;
+ responses: {
+ /** @description Invitation details */
+ 200: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content?: never;
+ };
+ };
+ };
+ PartnersContributeController_prepareFundTx: {
+ parameters: {
+ query?: never;
+ header?: never;
+ path: {
+ /** @description Hex-encoded invite token */
+ token: string;
+ };
+ cookie?: never;
+ };
+ requestBody: {
+ content: {
+ "application/json": components["schemas"]["PrepareFundTransactionDto"];
+ };
+ };
+ responses: {
+ /** @description Unsigned transaction prepared */
+ 200: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content?: never;
+ };
+ };
+ };
+ PartnersContributeController_submitTx: {
+ parameters: {
+ query?: never;
+ header?: never;
+ path: {
+ /** @description Hex-encoded invite token */
+ token: string;
+ };
+ cookie?: never;
+ };
+ requestBody: {
+ content: {
+ "application/json": components["schemas"]["SubmitSignedTransactionDto"];
+ };
+ };
+ responses: {
+ /** @description Contribution confirmed */
+ 200: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content?: never;
+ };
+ };
+ };
+ HackathonsTracksController_listTracks: {
+ parameters: {
+ query?: {
+ /** @description Set true to include archived tracks. */
+ includeArchived?: boolean;
+ };
+ header?: never;
+ path: {
+ /** @description Hackathon ID or slug */
+ idOrSlug: string;
+ };
+ cookie?: never;
+ };
+ requestBody?: never;
+ responses: {
+ 200: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content: {
+ "application/json": components["schemas"]["TrackResponseDto"][];
+ };
+ };
+ /** @description Invalid request */
+ 400: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content?: never;
+ };
+ /** @description Resource not found */
+ 404: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content?: never;
+ };
+ };
+ };
+ HackathonsCustomQuestionsController_list: {
+ parameters: {
+ query?: {
+ scope?: "REGISTRATION" | "SUBMISSION";
+ };
+ header?: never;
+ path: {
+ /** @description Hackathon ID or slug */
+ idOrSlug: string;
+ };
+ cookie?: never;
+ };
+ requestBody?: never;
+ responses: {
+ 200: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content: {
+ "application/json": components["schemas"]["CustomQuestionResponseDto"][];
+ };
+ };
+ /** @description Invalid request */
+ 400: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content?: never;
+ };
+ /** @description Resource not found */
+ 404: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content?: never;
+ };
+ };
+ };
+ OrganizationHackathonsTracksController_list: {
+ parameters: {
+ query?: {
+ includeArchived?: boolean;
+ };
+ header?: never;
+ path: {
+ /** @description Hackathon ID or slug */
+ id: string;
+ organizationId: unknown;
+ };
+ cookie?: never;
+ };
+ requestBody?: never;
+ responses: {
+ 200: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content: {
+ "application/json": components["schemas"]["TrackResponseDto"][];
+ };
+ };
+ };
+ };
+ OrganizationHackathonsTracksController_create: {
+ parameters: {
+ query?: never;
+ header?: never;
+ path: {
+ id: string;
+ };
+ cookie?: never;
+ };
+ requestBody: {
+ content: {
+ "application/json": components["schemas"]["CreateTrackDto"];
+ };
+ };
+ responses: {
+ 201: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content: {
+ "application/json": components["schemas"]["TrackResponseDto"];
+ };
+ };
+ };
+ };
+ OrganizationHackathonsTracksController_updateConfig: {
+ parameters: {
+ query?: never;
+ header?: never;
+ path: {
+ id: string;
+ };
+ cookie?: never;
+ };
+ requestBody: {
+ content: {
+ "application/json": components["schemas"]["UpdateTracksConfigDto"];
+ };
+ };
+ responses: {
+ 200: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content?: never;
+ };
+ };
+ };
+ OrganizationHackathonsTracksController_remove: {
+ parameters: {
+ query?: never;
+ header?: never;
+ path: {
+ trackId: string;
+ };
+ cookie?: never;
+ };
+ requestBody?: never;
+ responses: {
+ /** @description Deleted or archived */
+ 204: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content?: never;
+ };
+ };
+ };
+ OrganizationHackathonsTracksController_update: {
+ parameters: {
+ query?: never;
+ header?: never;
+ path: {
+ trackId: string;
+ };
+ cookie?: never;
+ };
+ requestBody: {
+ content: {
+ "application/json": components["schemas"]["UpdateTrackDto"];
+ };
+ };
+ responses: {
+ 200: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content: {
+ "application/json": components["schemas"]["TrackResponseDto"];
+ };
+ };
+ };
+ };
+ OrganizationHackathonsTracksController_bulkOptIn: {
+ parameters: {
+ query?: never;
+ header?: never;
+ path: {
+ trackId: string;
+ };
+ cookie?: never;
+ };
+ requestBody?: never;
+ responses: {
+ /** @description Bulk opt-in complete; returns counts. */
+ 200: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content: {
+ "application/json": {
+ trackName?: string;
+ added?: number;
+ alreadyOptedIn?: number;
+ skippedDisqualified?: number;
+ totalSubmissions?: number;
+ newCap?: number | null;
+ };
+ };
+ };
+ };
+ };
+ OrganizationHackathonsCustomQuestionsController_list: {
+ parameters: {
+ query?: {
+ scope?: "REGISTRATION" | "SUBMISSION";
+ };
+ header?: never;
+ path: {
+ /** @description Hackathon ID or slug */
+ id: string;
+ organizationId: unknown;
+ };
+ cookie?: never;
+ };
+ requestBody?: never;
+ responses: {
+ 200: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content: {
+ "application/json": components["schemas"]["CustomQuestionResponseDto"][];
+ };
+ };
+ };
+ };
+ OrganizationHackathonsCustomQuestionsController_replace: {
+ parameters: {
+ query?: never;
+ header?: never;
+ path: {
+ id: string;
+ };
+ cookie?: never;
+ };
+ requestBody: {
+ content: {
+ "application/json": components["schemas"]["UpsertCustomQuestionsDto"];
+ };
+ };
+ responses: {
+ 200: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content: {
+ "application/json": components["schemas"]["CustomQuestionResponseDto"][];
+ };
+ };
+ };
+ };
+ OrganizationHackathonsEscrowController_requestFundingOtp: {
+ parameters: {
+ query?: never;
+ header?: never;
+ path: {
+ organizationId: string;
+ /** @description Hackathon id */
+ id: string;
+ };
+ cookie?: never;
+ };
+ requestBody?: never;
+ responses: {
+ 200: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content: {
+ "application/json": components["schemas"]["RequestFundingOtpResponseDto"];
+ };
+ };
+ };
+ };
+ OrganizationHackathonsEscrowController_verifyFundingOtp: {
+ parameters: {
+ query?: never;
+ header?: never;
+ path: {
+ organizationId: string;
+ /** @description Hackathon id */
+ id: string;
+ };
+ cookie?: never;
+ };
+ requestBody: {
+ content: {
+ "application/json": components["schemas"]["VerifyFundingOtpDto"];
+ };
+ };
+ responses: {
+ 200: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content: {
+ "application/json": components["schemas"]["VerifyFundingOtpResponseDto"];
+ };
+ };
+ };
+ };
+ OrganizationHackathonsEscrowController_publish: {
+ parameters: {
+ query?: never;
+ header?: never;
+ path: {
+ organizationId: string;
+ /** @description Hackathon draft id */
+ id: string;
+ };
+ cookie?: never;
+ };
+ requestBody: {
+ content: {
+ "application/json": components["schemas"]["PublishHackathonEscrowDto"];
+ };
+ };
+ responses: {
+ /** @description Escrow op created; unsigned XDR ready for wallet signing. Hackathon transitioned to DRAFT_AWAITING_FUNDING. */
+ 200: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content: {
+ "application/json": components["schemas"]["HackathonEscrowOpResponseDto"];
+ };
+ };
+ /** @description Validation error or hackathon not in DRAFT status */
+ 400: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content?: never;
+ };
+ };
+ };
+ OrganizationHackathonsEscrowController_cancel: {
+ parameters: {
+ query?: never;
+ header?: never;
+ path: {
+ organizationId: string;
+ /** @description Hackathon id */
+ id: string;
+ };
+ cookie?: never;
+ };
+ requestBody: {
+ content: {
+ "application/json": components["schemas"]["CancelHackathonEscrowDto"];
+ };
+ };
+ responses: {
+ 200: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content: {
+ "application/json": components["schemas"]["HackathonEscrowOpResponseDto"];
+ };
+ };
+ };
+ };
+ OrganizationHackathonsEscrowController_selectWinners: {
+ parameters: {
+ query?: never;
+ header?: never;
+ path: {
+ organizationId: string;
+ /** @description Hackathon id */
+ id: string;
+ };
+ cookie?: never;
+ };
+ requestBody: {
+ content: {
+ "application/json": components["schemas"]["SelectHackathonWinnersDto"];
+ };
+ };
+ responses: {
+ 200: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content: {
+ "application/json": components["schemas"]["HackathonEscrowOpResponseDto"];
+ };
+ };
+ };
+ };
+ OrganizationHackathonsEscrowController_submitSigned: {
+ parameters: {
+ query?: never;
+ header?: never;
+ path: {
+ organizationId: string;
+ /** @description Hackathon id */
+ id: string;
+ /** @description EscrowOp uuid returned by the publish call */
+ opRowId: string;
+ };
+ cookie?: never;
+ };
+ requestBody: {
+ content: {
+ "application/json": components["schemas"]["HackathonSubmitSignedXdrDto"];
+ };
+ };
+ responses: {
+ /** @description Signed XDR submitted; op is now PENDING_CONFIRM. */
+ 200: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content: {
+ "application/json": components["schemas"]["HackathonEscrowOpResponseDto"];
+ };
+ };
+ };
+ };
+ OrganizationHackathonsEscrowController_getOp: {
+ parameters: {
+ query?: never;
+ header?: never;
+ path: {
+ organizationId: string;
+ /** @description Hackathon id */
+ id: string;
+ /** @description EscrowOp uuid */
+ opRowId: string;
+ };
+ cookie?: never;
+ };
+ requestBody?: never;
+ responses: {
+ 200: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content: {
+ "application/json": components["schemas"]["HackathonEscrowOpResponseDto"];
+ };
+ };
+ };
+ };
+ OrganizationHackathonsEscrowController_resetToDraft: {
+ parameters: {
+ query?: never;
+ header?: never;
+ path: {
+ organizationId: string;
+ /** @description Hackathon id */
+ id: string;
+ };
+ cookie?: never;
+ };
+ requestBody?: never;
+ responses: {
+ /** @description Hackathon reset to DRAFT. */
+ 200: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content?: never;
+ };
+ };
+ };
+ HackathonParticipantEscrowController_submit: {
+ parameters: {
+ query?: never;
+ header?: never;
+ path: {
+ /** @description Hackathon id */
+ id: string;
+ /** @description HackathonSubmission uuid */
+ submissionId: string;
+ };
+ cookie?: never;
+ };
+ requestBody: {
+ content: {
+ "application/json": components["schemas"]["SubmitHackathonDto"];
+ };
+ };
+ responses: {
+ 200: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content: {
+ "application/json": components["schemas"]["HackathonEscrowOpResponseDto"];
+ };
+ };
+ };
+ };
+ HackathonParticipantEscrowController_withdrawSubmission: {
+ parameters: {
+ query?: never;
+ header?: never;
+ path: {
+ /** @description Hackathon id */
+ id: string;
+ /** @description HackathonSubmission uuid */
+ submissionId: string;
+ };
+ cookie?: never;
+ };
+ requestBody: {
+ content: {
+ "application/json": components["schemas"]["WithdrawHackathonSubmissionDto"];
+ };
+ };
+ responses: {
+ 200: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content: {
+ "application/json": components["schemas"]["HackathonEscrowOpResponseDto"];
+ };
+ };
+ };
+ };
+ HackathonParticipantEscrowController_contribute: {
+ parameters: {
+ query?: never;
+ header?: never;
+ path: {
+ /** @description Hackathon id */
+ id: string;
+ };
+ cookie?: never;
+ };
+ requestBody: {
+ content: {
+ "application/json": components["schemas"]["ContributeHackathonDto"];
+ };
+ };
+ responses: {
+ 200: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content: {
+ "application/json": components["schemas"]["HackathonEscrowOpResponseDto"];
+ };
+ };
+ };
+ };
+ HackathonParticipantEscrowController_submitSigned: {
+ parameters: {
+ query?: never;
+ header?: never;
+ path: {
+ /** @description Hackathon id */
+ id: string;
+ /** @description EscrowOp uuid */
+ opRowId: string;
+ };
+ cookie?: never;
+ };
+ requestBody: {
+ content: {
+ "application/json": components["schemas"]["HackathonSubmitSignedXdrDto"];
+ };
+ };
+ responses: {
+ 200: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content: {
+ "application/json": components["schemas"]["HackathonEscrowOpResponseDto"];
+ };
+ };
+ };
+ };
+ HackathonParticipantEscrowController_getOp: {
+ parameters: {
+ query?: never;
+ header?: never;
+ path: {
+ /** @description Hackathon id */
+ id: string;
+ /** @description EscrowOp uuid */
+ opRowId: string;
+ };
+ cookie?: never;
+ };
+ requestBody?: never;
+ responses: {
+ 200: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content: {
+ "application/json": components["schemas"]["HackathonEscrowOpResponseDto"];
+ };
+ };
+ };
+ };
+ OrganizationsController_getOrganizations: {
+ parameters: {
+ query?: never;
+ header?: never;
+ path?: never;
+ cookie?: never;
+ };
+ requestBody?: never;
+ responses: {
+ 200: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content?: never;
+ };
+ };
+ };
+ OrganizationsController_createOrganization: {
+ parameters: {
+ query?: never;
+ header?: never;
+ path?: never;
+ cookie?: never;
+ };
+ requestBody: {
+ content: {
+ "application/json": components["schemas"]["CreateOrganizationDto"];
+ };
+ };
+ responses: {
+ 201: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content?: never;
+ };
+ };
+ };
+ OrganizationsController_getMyOrganizations: {
+ parameters: {
+ query?: never;
+ header?: never;
+ path?: never;
+ cookie?: never;
+ };
+ requestBody?: never;
+ responses: {
+ 200: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content?: never;
+ };
+ };
+ };
+ OrganizationsController_getOrganizationProfile: {
+ parameters: {
+ query?: never;
+ header?: never;
+ path: {
+ /** @description Organization ID or slug */
+ idOrSlug: string;
+ };
+ cookie?: never;
+ };
+ requestBody?: never;
+ responses: {
+ /** @description Organization profile retrieved successfully */
+ 200: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content: {
+ "application/json": components["schemas"]["OrganizationProfileDto"];
+ };
+ };
+ /** @description Organization not found */
+ 404: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content?: never;
+ };
+ };
+ };
+ OrganizationsController_searchOrganizations: {
+ parameters: {
+ query?: {
+ /** @description Search term (name, slug, tagline) */
+ q?: string;
+ isProfileComplete?: "true" | "false";
+ hasHackathons?: "true" | "false";
+ hasGrants?: "true" | "false";
+ /** @description Max results (default 10) */
+ limit?: number;
+ };
+ header?: never;
+ path?: never;
+ cookie?: never;
+ };
+ requestBody?: never;
+ responses: {
+ /** @description Paginated organizations */
+ 200: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content?: never;
+ };
+ };
+ };
+ OrganizationsController_getOrganization: {
+ parameters: {
+ query?: never;
+ header?: never;
+ path: {
+ /** @description Organization ID */
+ id: string;
+ };
+ cookie?: never;
+ };
+ requestBody?: never;
+ responses: {
+ /** @description Organization retrieved successfully */
+ 200: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content: {
+ "application/json": {
+ /** @example org_1234567890 */
+ id?: string;
+ /** @example Tech Innovators */
+ name?: string;
+ /** @example https://example.com/logo.png */
+ logo?: string;
+ /** @example Building the future of technology */
+ tagline?: string;
+ /** @example We are a community of developers... */
+ about?: string;
+ links?: {
+ /** @example https://techinnovators.com */
+ website?: string;
+ /** @example https://twitter.com/techinnovators */
+ x?: string;
+ /** @example https://github.com/techinnovators */
+ github?: string;
+ /** @example https://linkedin.com/company/techinnovators */
+ others?: string;
+ };
+ /**
+ * @example [
+ * "user_123",
+ * "user_456"
+ * ]
+ */
+ members?: string[];
+ /**
+ * @example [
+ * "user_123"
+ * ]
+ */
+ admins?: string[];
+ /** @example user_123 */
+ owner?: string;
+ /** @example [] */
+ hackathons?: string[];
+ /** @example [] */
+ grants?: string[];
+ /** @example true */
+ isProfileComplete?: boolean;
+ /**
+ * @example [
+ * "invite_123"
+ * ]
+ */
+ pendingInvites?: string[];
+ /** @example better_auth_org_123 */
+ betterAuthOrgId?: string;
+ /** @example false */
+ isArchived?: boolean;
+ /** @example null */
+ archivedBy?: string;
+ /** @example null */
+ archivedAt?: string;
+ /** @example 2024-01-15T10:30:00.000Z */
+ createdAt?: string;
+ /** @example 2024-01-15T10:30:00.000Z */
+ updatedAt?: string;
+ analytics?: {
+ trends?: {
+ members?: {
+ /** @example 25 */
+ current?: number;
+ /** @example 22 */
+ previous?: number;
+ /** @example 3 */
+ change?: number;
+ /** @example 13.64 */
+ changePercentage?: number;
+ /** @example true */
+ isPositive?: boolean;
+ };
+ hackathons?: {
+ /** @example 5 */
+ current?: number;
+ /** @example 4 */
+ previous?: number;
+ /** @example 1 */
+ change?: number;
+ /** @example 25 */
+ changePercentage?: number;
+ /** @example true */
+ isPositive?: boolean;
+ };
+ grants?: {
+ /** @example 0 */
+ current?: number;
+ /** @example 0 */
+ previous?: number;
+ /** @example 0 */
+ change?: number;
+ /** @example 0 */
+ changePercentage?: number;
+ /** @example true */
+ isPositive?: boolean;
+ };
+ };
+ timeSeries?: {
+ hackathons?: {
+ /** @example January */
+ month?: string;
+ /** @example 2024 */
+ year?: number;
+ /** @example 2 */
+ count?: number;
+ /** @example 2024-01-01T00:00:00.000Z */
+ timestamp?: string;
+ }[];
+ };
+ };
+ };
+ };
+ };
+ /** @description Organization not found */
+ 404: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content?: never;
+ };
+ };
+ };
+ OrganizationsController_updateOrganization: {
+ parameters: {
+ query?: never;
+ header?: never;
+ path: {
+ id: string;
+ };
+ cookie?: never;
+ };
+ requestBody: {
+ content: {
+ "application/json": components["schemas"]["UpdateOrganizationDto"];
+ };
+ };
+ responses: {
+ 200: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content?: never;
+ };
+ };
+ };
+ OrganizationsController_deleteOrganization: {
+ parameters: {
+ query?: never;
+ header?: never;
+ path: {
+ id: string;
+ };
+ cookie?: never;
+ };
+ requestBody?: never;
+ responses: {
+ 200: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content?: never;
+ };
+ };
+ };
+ OrganizationsController_getOrganizationMembers: {
+ parameters: {
+ query?: never;
+ header?: never;
+ path: {
+ id: string;
+ };
+ cookie?: never;
+ };
+ requestBody?: never;
+ responses: {
+ 200: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content?: never;
+ };
+ };
+ };
+ OrganizationsController_getOrganizationPermissions: {
+ parameters: {
+ query?: never;
+ header?: never;
+ path: {
+ id: string;
+ };
+ cookie?: never;
+ };
+ requestBody?: never;
+ responses: {
+ 200: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content?: never;
+ };
+ };
+ };
+ OrganizationsController_updateOrganizationPermissions: {
+ parameters: {
+ query?: never;
+ header?: never;
+ path: {
+ id: string;
+ };
+ cookie?: never;
+ };
+ requestBody?: never;
+ responses: {
+ 200: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content?: never;
+ };
+ };
+ };
+ OrganizationsController_resetOrganizationPermissions: {
+ parameters: {
+ query?: never;
+ header?: never;
+ path: {
+ id: string;
+ };
+ cookie?: never;
+ };
+ requestBody?: never;
+ responses: {
+ 200: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content?: never;
+ };
+ };
+ };
+ OrganizationsController_getOrganizationStats: {
+ parameters: {
+ query?: never;
+ header?: never;
+ path: {
+ id: string;
+ };
+ cookie?: never;
+ };
+ requestBody?: never;
+ responses: {
+ 200: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content?: never;
+ };
+ };
+ };
+ MembersController_getMembers: {
+ parameters: {
+ query?: never;
+ header?: never;
+ path: {
+ organizationId: string;
+ };
+ cookie?: never;
+ };
+ requestBody?: never;
+ responses: {
+ 200: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content?: never;
+ };
+ };
+ };
+ MembersController_addMember: {
+ parameters: {
+ query?: never;
+ header?: never;
+ path: {
+ organizationId: string;
+ userId: string;
+ };
+ cookie?: never;
+ };
+ requestBody?: never;
+ responses: {
+ 200: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content?: never;
+ };
+ };
+ };
+ MembersController_removeMember: {
+ parameters: {
+ query?: never;
+ header?: never;
+ path: {
+ organizationId: string;
+ userId: string;
+ };
+ cookie?: never;
+ };
+ requestBody?: never;
+ responses: {
+ 200: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content?: never;
+ };
+ };
+ };
+ MembersController_updateMemberRole: {
+ parameters: {
+ query?: never;
+ header?: never;
+ path: {
+ organizationId: string;
+ userId: string;
+ };
+ cookie?: never;
+ };
+ requestBody: {
+ content: {
+ "application/json": components["schemas"]["UpdateMemberRoleDto"];
+ };
+ };
+ responses: {
+ 200: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content?: never;
+ };
+ };
+ };
+ MembersController_getMyMembership: {
+ parameters: {
+ query?: never;
+ header?: never;
+ path: {
+ organizationId: string;
+ };
+ cookie?: never;
+ };
+ requestBody?: never;
+ responses: {
+ 200: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content?: never;
+ };
+ };
+ };
+ InvitationsController_getInvitations: {
+ parameters: {
+ query?: never;
+ header?: never;
+ path: {
+ organizationId: string;
+ };
+ cookie?: never;
+ };
+ requestBody?: never;
+ responses: {
+ 200: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content?: never;
+ };
+ };
+ };
+ InvitationsController_inviteMember: {
+ parameters: {
+ query?: never;
+ header?: never;
+ path: {
+ organizationId: string;
+ };
+ cookie?: never;
+ };
+ requestBody: {
+ content: {
+ "application/json": components["schemas"]["InviteMemberDto"];
+ };
+ };
+ responses: {
+ 201: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content?: never;
+ };
+ };
+ };
+ InvitationsController_acceptInvitation: {
+ parameters: {
+ query?: never;
+ header?: never;
+ path: {
+ invitationId: string;
+ };
+ cookie?: never;
+ };
+ requestBody?: never;
+ responses: {
+ 200: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content?: never;
+ };
+ };
+ };
+ InvitationsController_rejectInvitation: {
+ parameters: {
+ query?: never;
+ header?: never;
+ path: {
+ invitationId: string;
+ };
+ cookie?: never;
+ };
+ requestBody?: never;
+ responses: {
+ 200: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content?: never;
+ };
+ };
+ };
+ InvitationsController_cancelInvitation: {
+ parameters: {
+ query?: never;
+ header?: never;
+ path: {
+ invitationId: string;
+ organizationId: string;
+ };
+ cookie?: never;
+ };
+ requestBody?: never;
+ responses: {
+ 200: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content?: never;
+ };
+ };
+ };
+ InvitationsController_getMyInvitations: {
+ parameters: {
+ query?: never;
+ header?: never;
+ path?: never;
+ cookie?: never;
+ };
+ requestBody?: never;
+ responses: {
+ 200: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content?: never;
+ };
+ };
+ };
+ OrganizationTreasuryController_listWallets: {
+ parameters: {
+ query?: never;
+ header?: never;
+ path: {
+ organizationId: string;
+ };
+ cookie?: never;
+ };
+ requestBody?: never;
+ responses: {
+ 200: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content: {
+ "application/json": components["schemas"]["TreasuryWalletResponseDto"][];
+ };
+ };
+ };
+ };
+ OrganizationTreasuryController_listArchivedWallets: {
+ parameters: {
+ query?: never;
+ header?: never;
+ path: {
+ organizationId: string;
+ };
+ cookie?: never;
+ };
+ requestBody?: never;
+ responses: {
+ 200: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content: {
+ "application/json": components["schemas"]["TreasuryWalletResponseDto"][];
+ };
+ };
+ };
+ };
+ OrganizationTreasuryController_getDefaultWallet: {
+ parameters: {
+ query?: never;
+ header?: never;
+ path: {
+ organizationId: string;
+ };
+ cookie?: never;
+ };
+ requestBody?: never;
+ responses: {
+ 200: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content: {
+ "application/json": components["schemas"]["TreasuryWalletResponseDto"];
+ };
+ };
+ };
+ };
+ OrganizationTreasuryController_createManagedWallet: {
+ parameters: {
+ query?: never;
+ header?: never;
+ path: {
+ organizationId: string;
+ };
+ cookie?: never;
+ };
+ requestBody: {
+ content: {
+ "application/json": components["schemas"]["CreateManagedWalletDto"];
+ };
+ };
+ responses: {
+ 201: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content: {
+ "application/json": components["schemas"]["TreasuryWalletResponseDto"];
+ };
+ };
+ };
+ };
+ OrganizationTreasuryController_registerConnectedWallet: {
+ parameters: {
+ query?: never;
+ header?: never;
+ path: {
+ organizationId: string;
+ };
+ cookie?: never;
+ };
+ requestBody: {
+ content: {
+ "application/json": components["schemas"]["RegisterConnectedWalletDto"];
+ };
+ };
+ responses: {
+ 201: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content: {
+ "application/json": components["schemas"]["TreasuryWalletResponseDto"];
+ };
+ };
+ };
+ };
+ OrganizationTreasuryController_refreshSigners: {
+ parameters: {
+ query?: never;
+ header?: never;
+ path: {
+ organizationId: string;
+ walletId: string;
+ };
+ cookie?: never;
+ };
+ requestBody?: never;
+ responses: {
+ 200: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content: {
+ "application/json": components["schemas"]["TreasuryWalletResponseDto"];
+ };
+ };
+ };
+ };
+ OrganizationTreasuryController_updateWallet: {
+ parameters: {
+ query?: never;
+ header?: never;
+ path: {
+ organizationId: string;
+ walletId: string;
+ };
+ cookie?: never;
+ };
+ requestBody: {
+ content: {
+ "application/json": components["schemas"]["UpdateTreasuryWalletDto"];
+ };
+ };
+ responses: {
+ 200: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content: {
+ "application/json": components["schemas"]["TreasuryWalletResponseDto"];
+ };
+ };
+ };
+ };
+ OrganizationTreasuryController_archiveWallet: {
+ parameters: {
+ query?: never;
+ header?: never;
+ path: {
+ organizationId: string;
+ walletId: string;
+ };
+ cookie?: never;
+ };
+ requestBody?: never;
+ responses: {
+ 200: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content: {
+ "application/json": components["schemas"]["TreasuryWalletResponseDto"];
+ };
+ };
+ };
+ };
+ OrganizationTreasuryController_restoreWallet: {
+ parameters: {
+ query?: never;
+ header?: never;
+ path: {
+ organizationId: string;
+ walletId: string;
+ };
+ cookie?: never;
+ };
+ requestBody?: never;
+ responses: {
+ 200: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content: {
+ "application/json": components["schemas"]["TreasuryWalletResponseDto"];
+ };
+ };
+ };
+ };
+ OrganizationTreasuryController_walletBalance: {
+ parameters: {
+ query?: never;
+ header?: never;
+ path: {
+ organizationId: string;
+ walletId: string;
+ };
+ cookie?: never;
+ };
+ requestBody?: never;
+ responses: {
+ 200: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content: {
+ "application/json": components["schemas"]["WalletBalanceResponseDto"];
+ };
+ };
+ };
+ };
+ OrganizationTreasuryController_getPolicy: {
+ parameters: {
+ query?: never;
+ header?: never;
+ path: {
+ organizationId: string;
+ };
+ cookie?: never;
+ };
+ requestBody?: never;
+ responses: {
+ 200: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content: {
+ "application/json": components["schemas"]["TreasuryPolicyResponseDto"];
+ };
+ };
+ };
+ };
+ OrganizationTreasuryController_updatePolicy: {
+ parameters: {
+ query?: never;
+ header?: never;
+ path: {
+ organizationId: string;
+ };
+ cookie?: never;
+ };
+ requestBody: {
+ content: {
+ "application/json": components["schemas"]["UpdateTreasuryPolicyDto"];
+ };
+ };
+ responses: {
+ 200: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content: {
+ "application/json": components["schemas"]["TreasuryPolicyResponseDto"];
+ };
+ };
+ };
+ };
+ OrganizationTreasuryController_listSpend: {
+ parameters: {
+ query?: {
+ status?: string;
+ };
+ header?: never;
+ path: {
+ organizationId: string;
+ };
+ cookie?: never;
+ };
+ requestBody?: never;
+ responses: {
+ 200: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content: {
+ "application/json": components["schemas"]["SpendRequestResponseDto"][];
+ };
+ };
+ };
+ };
+ OrganizationTreasuryController_initiateSpend: {
+ parameters: {
+ query?: never;
+ header?: never;
+ path: {
+ organizationId: string;
+ };
+ cookie?: never;
+ };
+ requestBody: {
+ content: {
+ "application/json": components["schemas"]["InitiateSpendDto"];
+ };
+ };
+ responses: {
+ 201: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content: {
+ "application/json": components["schemas"]["SpendRequestResponseDto"];
+ };
+ };
+ };
+ };
+ OrganizationTreasuryController_requestSendOtp: {
+ parameters: {
+ query?: never;
+ header?: never;
+ path: {
+ organizationId: string;
+ };
+ cookie?: never;
+ };
+ requestBody?: never;
+ responses: {
+ 200: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content: {
+ "application/json": components["schemas"]["RequestFundingOtpResponseDto"];
+ };
+ };
+ };
+ };
+ OrganizationTreasuryController_verifySendOtp: {
+ parameters: {
+ query?: never;
+ header?: never;
+ path: {
+ organizationId: string;
+ };
+ cookie?: never;
+ };
+ requestBody: {
+ content: {
+ "application/json": components["schemas"]["VerifyFundingOtpDto"];
+ };
+ };
+ responses: {
+ 200: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content: {
+ "application/json": components["schemas"]["VerifyFundingOtpResponseDto"];
+ };
+ };
+ };
+ };
+ OrganizationTreasuryController_sendFunds: {
+ parameters: {
+ query?: never;
+ header?: never;
+ path: {
+ organizationId: string;
+ };
+ cookie?: never;
+ };
+ requestBody: {
+ content: {
+ "application/json": components["schemas"]["SendTreasuryFundsDto"];
+ };
+ };
+ responses: {
+ 200: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content: {
+ "application/json": components["schemas"]["SpendRequestResponseDto"];
+ };
+ };
+ };
+ };
+ OrganizationTreasuryController_checkSendDestination: {
+ parameters: {
+ query: {
+ address: string;
+ };
+ header?: never;
+ path: {
+ organizationId: string;
+ };
+ cookie?: never;
+ };
+ requestBody?: never;
+ responses: {
+ 200: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content: {
+ "application/json": components["schemas"]["SendDestinationReadinessDto"];
+ };
+ };
+ };
+ };
+ OrganizationTreasuryController_getSpend: {
+ parameters: {
+ query?: never;
+ header?: never;
+ path: {
+ organizationId: string;
+ requestId: string;
+ };
+ cookie?: never;
+ };
+ requestBody?: never;
+ responses: {
+ 200: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content: {
+ "application/json": components["schemas"]["SpendRequestResponseDto"];
+ };
+ };
+ };
+ };
+ OrganizationTreasuryController_approveSpend: {
+ parameters: {
+ query?: never;
+ header?: never;
+ path: {
+ organizationId: string;
+ requestId: string;
+ };
+ cookie?: never;
+ };
+ requestBody?: {
+ content: {
+ "application/json": components["schemas"]["SpendDecisionDto"];
+ };
+ };
+ responses: {
+ 200: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content: {
+ "application/json": components["schemas"]["SpendRequestResponseDto"];
+ };
+ };
+ };
+ };
+ OrganizationTreasuryController_rejectSpend: {
+ parameters: {
+ query?: never;
+ header?: never;
+ path: {
+ organizationId: string;
+ requestId: string;
+ };
+ cookie?: never;
+ };
+ requestBody?: {
+ content: {
+ "application/json": components["schemas"]["SpendDecisionDto"];
+ };
+ };
+ responses: {
+ 200: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content: {
+ "application/json": components["schemas"]["SpendRequestResponseDto"];
+ };
+ };
+ };
+ };
+ OrganizationTreasuryController_cancelSpend: {
+ parameters: {
+ query?: never;
+ header?: never;
+ path: {
+ organizationId: string;
+ requestId: string;
+ };
+ cookie?: never;
+ };
+ requestBody?: never;
+ responses: {
+ 200: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content: {
+ "application/json": components["schemas"]["SpendRequestResponseDto"];
+ };
+ };
+ };
+ };
+ OrganizationTreasuryController_executeSpend: {
+ parameters: {
+ query?: never;
+ header?: never;
+ path: {
+ organizationId: string;
+ requestId: string;
+ };
+ cookie?: never;
+ };
+ requestBody?: never;
+ responses: {
+ 200: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content: {
+ "application/json": components["schemas"]["SpendRequestResponseDto"];
+ };
+ };
+ };
+ };
+ OrganizationTreasuryController_buildSpendXdr: {
+ parameters: {
+ query?: never;
+ header?: never;
+ path: {
+ organizationId: string;
+ requestId: string;
+ };
+ cookie?: never;
+ };
+ requestBody?: never;
+ responses: {
+ 200: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content: {
+ "application/json": components["schemas"]["BuildSpendXdrResponseDto"];
+ };
+ };
+ };
+ };
+ OrganizationTreasuryController_submitSpendSignedXdr: {
+ parameters: {
+ query?: never;
+ header?: never;
+ path: {
+ organizationId: string;
+ requestId: string;
+ };
+ cookie?: never;
+ };
+ requestBody: {
+ content: {
+ "application/json": components["schemas"]["SubmitSpendSignedXdrDto"];
+ };
+ };
+ responses: {
+ 200: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content: {
+ "application/json": components["schemas"]["SpendRequestResponseDto"];
+ };
+ };
+ };
+ };
+ OrganizationTreasuryController_auditLog: {
+ parameters: {
+ query?: {
+ page?: string;
+ limit?: string;
+ };
+ header?: never;
+ path: {
+ organizationId: string;
+ };
+ cookie?: never;
+ };
+ requestBody?: never;
+ responses: {
+ 200: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content: {
+ "application/json": components["schemas"]["TreasuryAuditLogResponseDto"];
+ };
+ };
+ };
+ };
+ OrganizationReceiptsController_list: {
+ parameters: {
+ query?: {
+ page?: string;
+ limit?: string;
+ type?: string;
+ referenceType?: string;
+ referenceId?: string;
+ };
+ header?: never;
+ path: {
+ organizationId: string;
+ };
+ cookie?: never;
+ };
+ requestBody?: never;
+ responses: {
+ 200: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content: {
+ "application/json": components["schemas"]["ReceiptListResponseDto"];
+ };
+ };
+ };
+ };
+ OrganizationReceiptsController_getOne: {
+ parameters: {
+ query?: never;
+ header?: never;
+ path: {
+ organizationId: string;
+ receiptId: string;
+ };
+ cookie?: never;
+ };
+ requestBody?: never;
+ responses: {
+ 200: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content: {
+ "application/json": components["schemas"]["ReceiptResponseDto"];
+ };
+ };
+ };
+ };
+ OrganizationReceiptsController_send: {
+ parameters: {
+ query?: never;
+ header?: never;
+ path: {
+ organizationId: string;
+ receiptId: string;
+ };
+ cookie?: never;
+ };
+ requestBody?: {
+ content: {
+ "application/json": components["schemas"]["SendReceiptDto"];
+ };
+ };
+ responses: {
+ 200: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content?: never;
+ };
+ };
+ };
+ OrganizationReceiptsController_void: {
+ parameters: {
+ query?: never;
+ header?: never;
+ path: {
+ organizationId: string;
+ receiptId: string;
+ };
+ cookie?: never;
+ };
+ requestBody?: {
+ content: {
+ "application/json": components["schemas"]["VoidReceiptDto"];
+ };
+ };
+ responses: {
+ 200: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content: {
+ "application/json": components["schemas"]["ReceiptResponseDto"];
+ };
+ };
+ };
+ };
+ VotesController_getVotes: {
+ parameters: {
+ query: {
+ /** @description Project ID */
+ projectId?: string;
+ /** @description Entity Type */
+ entityType?: string;
+ /** @description Vote Type */
+ voteType: string;
+ /** @description User ID */
+ userId: string;
+ /** @description Limit */
+ limit: number;
+ /** @description Offset */
+ offset: number;
+ };
+ header?: never;
+ path?: never;
+ cookie?: never;
+ };
+ requestBody?: never;
+ responses: {
+ 200: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content?: never;
+ };
+ };
+ };
+ VotesController_createVote: {
+ parameters: {
+ query?: never;
+ header?: never;
+ path?: never;
+ cookie?: never;
+ };
+ requestBody: {
+ content: {
+ "application/json": components["schemas"]["CreateVoteDto"];
+ };
+ };
+ responses: {
+ 201: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content?: never;
+ };
+ };
+ };
+ VotesController_removeVote: {
+ parameters: {
+ query?: never;
+ header?: never;
+ path: {
+ projectId: string;
+ entityType: string;
+ };
+ cookie?: never;
+ };
+ requestBody?: never;
+ responses: {
+ 200: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content?: never;
+ };
+ };
+ };
+ VotesController_getVoteCounts: {
+ parameters: {
+ query?: never;
+ header?: never;
+ path: {
+ projectId: string;
+ entityType: string;
+ };
+ cookie?: never;
+ };
+ requestBody?: never;
+ responses: {
+ 200: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content?: never;
+ };
+ };
+ };
+ VotesController_getUserVote: {
+ parameters: {
+ query?: never;
+ header?: never;
+ path: {
+ projectId: string;
+ entityType: string;
+ };
+ cookie?: never;
+ };
+ requestBody?: never;
+ responses: {
+ 200: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content?: never;
+ };
+ };
+ };
+ VotesController_getProjectVotes: {
+ parameters: {
+ query?: {
+ entityType?: "PROJECT" | "CROWDFUNDING_CAMPAIGN" | "HACKATHON_SUBMISSION" | "GRANT";
+ voteType?: "UPVOTE" | "DOWNVOTE";
+ limit?: number;
+ offset?: number;
+ /** @description Include voter list and vote counts in response */
+ includeVoters?: boolean;
+ };
+ header?: never;
+ path: {
+ projectId: string;
+ };
+ cookie?: never;
+ };
+ requestBody?: never;
+ responses: {
+ 200: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content?: never;
+ };
+ };
+ };
+ LeaderboardController_getLeaderboard: {
+ parameters: {
+ query?: {
+ /** @description Filter by reputation tier */
+ tier?: "NEWCOMER" | "CONTRIBUTOR" | "ESTABLISHED" | "EXPERT" | "LEGEND";
+ /** @description Time window for score aggregation */
+ timeframe?: "ALL_TIME" | "THIS_MONTH" | "THIS_WEEK" | "THIS_DAY";
+ /** @description Items per page, max 50 (default: 20) */
+ limit?: number;
+ /** @description Page number (default: 1) */
+ page?: number;
+ };
+ header?: never;
+ path?: never;
+ cookie?: never;
+ };
+ requestBody?: never;
+ responses: {
+ /** @description Leaderboard retrieved successfully */
+ 200: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content?: never;
+ };
+ };
+ };
+ BlogPostsController_listBlogPosts: {
+ parameters: {
+ query?: {
+ /** @description Author ID to filter posts */
+ authorId?: string;
+ /** @description Post status to filter */
+ status?: "DRAFT" | "PUBLISHED" | "ARCHIVED" | "SCHEDULED";
+ /** @description Search query for post title/content */
+ search?: string;
+ /** @description Filter by tags (comma-separated) */
+ tags?: string;
+ /** @description Filter by categories (comma-separated) */
+ categories?: string;
+ /** @description Include only featured posts */
+ isFeatured?: boolean;
+ /** @description Include pinned posts first */
+ includePinned?: boolean;
+ /** @description Page number */
+ page?: number;
+ /** @description Number of items per page */
+ limit?: number;
+ /** @description Sort field */
+ sortBy?: "createdAt" | "updatedAt" | "publishedAt" | "viewCount" | "title";
+ /** @description Sort order */
+ sortOrder?: "asc" | "desc";
+ };
+ header?: never;
+ path?: never;
+ cookie?: never;
+ };
+ requestBody?: never;
+ responses: {
+ /** @description Blog posts retrieved successfully */
+ 200: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content?: never;
+ };
+ };
+ };
+ BlogPostsController_createBlogPost: {
+ parameters: {
+ query?: never;
+ header?: never;
+ path?: never;
+ cookie?: never;
+ };
+ requestBody: {
+ content: {
+ "application/json": components["schemas"]["CreateBlogPostDto"];
+ };
+ };
+ responses: {
+ /** @description Blog post created successfully */
+ 201: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content?: never;
+ };
+ /** @description Invalid input */
+ 400: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content?: never;
+ };
+ /** @description Forbidden */
+ 403: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content?: never;
+ };
+ /** @description Rate limit exceeded */
+ 429: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content?: never;
+ };
+ };
+ };
+ BlogPostsController_getBlogPostById: {
+ parameters: {
+ query?: never;
+ header?: never;
+ path: {
+ /** @description Blog post ID */
+ id: string;
+ };
+ cookie?: never;
+ };
+ requestBody?: never;
+ responses: {
+ /** @description Blog post retrieved successfully */
+ 200: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content?: never;
+ };
+ /** @description Post is not published */
+ 403: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content?: never;
+ };
+ /** @description Blog post not found */
+ 404: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content?: never;
+ };
+ };
+ };
+ BlogPostsController_getBlogPostBySlug: {
+ parameters: {
+ query?: never;
+ header?: never;
+ path: {
+ /** @description Blog post slug */
+ slug: string;
+ };
+ cookie?: never;
+ };
+ requestBody?: never;
+ responses: {
+ /** @description Blog post retrieved successfully */
+ 200: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content?: never;
+ };
+ /** @description Post is not published */
+ 403: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content?: never;
+ };
+ /** @description Blog post not found */
+ 404: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content?: never;
+ };
+ };
+ };
+ BlogPostsController_getRelatedPosts: {
+ parameters: {
+ query: {
+ limit: string;
+ };
+ header?: never;
+ path: {
+ /** @description Blog post ID */
+ id: string;
+ };
+ cookie?: never;
+ };
+ requestBody?: never;
+ responses: {
+ /** @description Related posts retrieved successfully */
+ 200: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content?: never;
+ };
+ /** @description Blog post not found */
+ 404: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content?: never;
+ };
+ };
+ };
+ BlogPostsController_updateBlogPost: {
+ parameters: {
+ query?: never;
+ header?: never;
+ path: {
+ /** @description Blog post ID */
+ id: string;
+ };
+ cookie?: never;
+ };
+ requestBody: {
+ content: {
+ "application/json": components["schemas"]["UpdateBlogPostDto"];
+ };
+ };
+ responses: {
+ /** @description Blog post updated successfully */
+ 200: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content?: never;
+ };
+ /** @description Forbidden */
+ 403: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content?: never;
+ };
+ /** @description Blog post not found */
+ 404: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content?: never;
+ };
+ };
+ };
+ BlogPostsController_deleteBlogPost: {
+ parameters: {
+ query?: never;
+ header?: never;
+ path: {
+ /** @description Blog post ID */
+ id: string;
+ };
+ cookie?: never;
+ };
+ requestBody?: never;
+ responses: {
+ /** @description Blog post deleted successfully */
+ 204: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content?: never;
+ };
+ /** @description Forbidden */
+ 403: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content?: never;
+ };
+ /** @description Blog post not found */
+ 404: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content?: never;
+ };
+ };
+ };
+ AiController_generateExcerpt: {
+ parameters: {
+ query?: never;
+ header?: never;
+ path?: never;
+ cookie?: never;
+ };
+ requestBody: {
+ content: {
+ "application/json": {
+ content: string;
+ };
+ };
+ };
+ responses: {
+ /** @description Excerpt generated successfully */
+ 200: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content?: never;
+ };
+ };
+ };
+ AiController_generateReadingTime: {
+ parameters: {
+ query?: never;
+ header?: never;
+ path?: never;
+ cookie?: never;
+ };
+ requestBody: {
+ content: {
+ "application/json": {
+ content: string;
+ };
+ };
+ };
+ responses: {
+ /** @description Reading time generated successfully */
+ 200: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content?: never;
+ };
+ };
+ };
+ AiController_generateSEO: {
+ parameters: {
+ query?: never;
+ header?: never;
+ path?: never;
+ cookie?: never;
+ };
+ requestBody: {
+ content: {
+ "application/json": {
+ content: string;
+ };
+ };
+ };
+ responses: {
+ /** @description SEO settings generated successfully */
+ 200: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content?: never;
+ };
+ };
+ };
+ AiController_generateTags: {
+ parameters: {
+ query?: never;
+ header?: never;
+ path?: never;
+ cookie?: never;
+ };
+ requestBody: {
+ content: {
+ "application/json": {
+ content: string;
+ };
+ };
+ };
+ responses: {
+ /** @description Tags generated successfully */
+ 200: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content?: never;
+ };
+ };
+ };
+ AiController_generateCategory: {
+ parameters: {
+ query?: never;
+ header?: never;
+ path?: never;
+ cookie?: never;
+ };
+ requestBody: {
+ content: {
+ "application/json": {
+ content: string;
+ };
+ };
+ };
+ responses: {
+ /** @description Category generated successfully */
+ 200: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content?: never;
+ };
+ };
+ };
+ AdminController_getOverview: {
+ parameters: {
+ query?: {
+ /** @description Time range for the overview data */
+ timeRange?: "7d" | "30d" | "90d";
+ };
+ header?: never;
+ path?: never;
+ cookie?: never;
+ };
+ requestBody?: never;
+ responses: {
+ /** @description Overview data retrieved successfully */
+ 200: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content: {
+ "application/json": components["schemas"]["AdminOverviewResponseDto"];
+ };
+ };
+ /** @description Unauthorized - Authentication required */
+ 401: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content?: never;
+ };
+ /** @description Forbidden - Admin access required */
+ 403: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content?: never;
+ };
+ /** @description Internal server error */
+ 500: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content?: never;
+ };
+ };
+ };
+ AdminController_getUsers: {
+ parameters: {
+ query?: {
+ /** @description Page number */
+ page?: number;
+ /** @description Items per page */
+ limit?: number;
+ /** @description Search by name, email, or username */
+ search?: string;
+ /** @description Filter by user role */
+ role?: string;
+ /** @description Filter by active status (not banned) */
+ isActive?: boolean;
+ };
+ header?: never;
+ path?: never;
+ cookie?: never;
+ };
+ requestBody?: never;
+ responses: {
+ /** @description Users retrieved successfully */
+ 200: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content?: never;
+ };
+ /** @description Unauthorized - Authentication required */
+ 401: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content?: never;
+ };
+ /** @description Forbidden - Admin access required */
+ 403: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content?: never;
+ };
+ };
+ };
+ AdminController_exportUsers: {
+ parameters: {
+ query?: never;
+ header?: never;
+ path?: never;
+ cookie?: never;
+ };
+ requestBody?: never;
+ responses: {
+ /** @description CSV file download */
+ 200: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content?: never;
+ };
+ /** @description Unauthorized - Authentication required */
+ 401: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content?: never;
+ };
+ /** @description Forbidden - Admin access required */
+ 403: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content?: never;
+ };
+ };
+ };
+ AdminController_getUserDetails: {
+ parameters: {
+ query?: never;
+ header?: never;
+ path: {
+ /** @description User username or ID */
+ usernameOrId: string;
+ };
+ cookie?: never;
+ };
+ requestBody?: never;
+ responses: {
+ /** @description User details retrieved successfully */
+ 200: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content?: never;
+ };
+ /** @description Unauthorized - Authentication required */
+ 401: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content?: never;
+ };
+ /** @description Forbidden - Admin access required */
+ 403: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content?: never;
+ };
+ /** @description User not found */
+ 404: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content?: never;
+ };
+ };
+ };
+ AdminController_getUserStats: {
+ parameters: {
+ query?: never;
+ header?: never;
+ path: {
+ /** @description User username or ID */
+ usernameOrId: string;
+ };
+ cookie?: never;
+ };
+ requestBody?: never;
+ responses: {
+ /** @description User statistics retrieved successfully */
+ 200: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content?: never;
+ };
+ /** @description Unauthorized - Authentication required */
+ 401: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content?: never;
+ };
+ /** @description Forbidden - Admin access required */
+ 403: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content?: never;
+ };
+ /** @description User not found */
+ 404: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content?: never;
+ };
+ };
+ };
+ AdminController_getUserActivity: {
+ parameters: {
+ query?: {
+ /** @description Page number */
+ page?: number;
+ /** @description Items per page */
+ limit?: number;
+ };
+ header?: never;
+ path: {
+ /** @description User username or ID */
+ usernameOrId: string;
+ };
+ cookie?: never;
+ };
+ requestBody?: never;
+ responses: {
+ /** @description User activity retrieved successfully */
+ 200: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content?: never;
+ };
+ /** @description Unauthorized - Authentication required */
+ 401: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content?: never;
+ };
+ /** @description Forbidden - Admin access required */
+ 403: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content?: never;
+ };
+ /** @description User not found */
+ 404: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content?: never;
+ };
+ };
+ };
+ AdminController_getUserProjects: {
+ parameters: {
+ query?: {
+ /** @description Page number */
+ page?: number;
+ /** @description Items per page */
+ limit?: number;
+ /** @description Filter by project status */
+ status?: string;
+ /** @description Filter by project category */
+ category?: string;
+ };
+ header?: never;
+ path: {
+ /** @description User username or ID */
+ usernameOrId: string;
+ };
+ cookie?: never;
+ };
+ requestBody?: never;
+ responses: {
+ /** @description User projects retrieved successfully */
+ 200: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content?: never;
+ };
+ /** @description Unauthorized - Authentication required */
+ 401: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content?: never;
+ };
+ /** @description Forbidden - Admin access required */
+ 403: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content?: never;
+ };
+ /** @description User not found */
+ 404: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content?: never;
+ };
+ };
+ };
+ AdminController_getOrganizations: {
+ parameters: {
+ query?: {
+ /** @description Page number */
+ page?: number;
+ /** @description Items per page */
+ limit?: number;
+ /** @description Search by organization name or slug */
+ search?: string;
+ };
+ header?: never;
+ path?: never;
+ cookie?: never;
+ };
+ requestBody?: never;
+ responses: {
+ /** @description Organizations retrieved successfully */
+ 200: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content?: never;
+ };
+ /** @description Unauthorized - Authentication required */
+ 401: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content?: never;
+ };
+ /** @description Forbidden - Admin access required */
+ 403: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content?: never;
+ };
+ };
+ };
+ AdminController_getOrganizationDetails: {
+ parameters: {
+ query?: never;
+ header?: never;
+ path: {
+ /** @description Organization ID */
+ orgId: string;
+ };
+ cookie?: never;
+ };
+ requestBody?: never;
+ responses: {
+ /** @description Organization details retrieved successfully */
+ 200: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content?: never;
+ };
+ /** @description Unauthorized - Authentication required */
+ 401: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content?: never;
+ };
+ /** @description Forbidden - Admin access required */
+ 403: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content?: never;
+ };
+ /** @description Organization not found */
+ 404: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content?: never;
+ };
+ };
+ };
+ AdminController_getUserOrganizations: {
+ parameters: {
+ query?: never;
+ header?: never;
+ path: {
+ /** @description User username or ID */
+ usernameOrId: string;
+ };
+ cookie?: never;
+ };
+ requestBody?: never;
+ responses: {
+ /** @description User organizations retrieved successfully */
+ 200: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content?: never;
+ };
+ /** @description Unauthorized - Authentication required */
+ 401: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content?: never;
+ };
+ /** @description Forbidden - Admin access required */
+ 403: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content?: never;
+ };
+ /** @description User not found */
+ 404: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content?: never;
+ };
+ };
+ };
+ AdminBlogsController_listAllBlogPosts: {
+ parameters: {
+ query?: {
+ /** @description Author ID to filter posts */
+ authorId?: string;
+ /** @description Post status to filter */
+ status?: "DRAFT" | "PUBLISHED" | "ARCHIVED" | "SCHEDULED";
+ /** @description Search query for post title/content */
+ search?: string;
+ /** @description Filter by tags (comma-separated) */
+ tags?: string;
+ /** @description Filter by categories (comma-separated) */
+ categories?: string;
+ /** @description Include only featured posts */
+ isFeatured?: boolean;
+ /** @description Include pinned posts first */
+ includePinned?: boolean;
+ /** @description Page number */
+ page?: number;
+ /** @description Number of items per page */
+ limit?: number;
+ /** @description Sort field */
+ sortBy?: "createdAt" | "updatedAt" | "publishedAt" | "viewCount" | "title";
+ /** @description Sort order */
+ sortOrder?: "asc" | "desc";
+ };
+ header?: never;
+ path?: never;
+ cookie?: never;
+ };
+ requestBody?: never;
+ responses: {
+ /** @description Blog posts retrieved successfully */
+ 200: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content?: never;
+ };
+ };
+ };
+ AdminBlogsController_createBlogPost: {
+ parameters: {
+ query?: never;
+ header?: never;
+ path?: never;
+ cookie?: never;
+ };
+ requestBody: {
+ content: {
+ "application/json": components["schemas"]["CreateBlogPostDto"];
+ };
+ };
+ responses: {
+ /** @description Blog post created successfully */
+ 201: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content?: never;
+ };
+ /** @description Invalid input */
+ 400: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content?: never;
+ };
+ /** @description Forbidden - Admin access required */
+ 403: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content?: never;
+ };
+ /** @description Rate limit exceeded */
+ 429: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content?: never;
+ };
+ };
+ };
+ AdminBlogsController_getBlogPostById: {
+ parameters: {
+ query?: never;
+ header?: never;
+ path: {
+ /** @description Blog post ID */
+ id: string;
+ };
+ cookie?: never;
+ };
+ requestBody?: never;
+ responses: {
+ /** @description Blog post retrieved successfully */
+ 200: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content?: never;
+ };
+ /** @description Blog post not found */
+ 404: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content?: never;
+ };
+ };
+ };
+ AdminBlogsController_updateBlogPost: {
+ parameters: {
+ query?: never;
+ header?: never;
+ path: {
+ /** @description Blog post ID */
+ id: string;
+ };
+ cookie?: never;
+ };
+ requestBody: {
+ content: {
+ "application/json": components["schemas"]["UpdateBlogPostDto"];
+ };
+ };
+ responses: {
+ /** @description Blog post updated successfully */
+ 200: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content?: never;
+ };
+ /** @description Forbidden - Admin access required */
+ 403: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content?: never;
+ };
+ /** @description Blog post not found */
+ 404: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content?: never;
+ };
+ };
+ };
+ AdminBlogsController_deleteBlogPost: {
+ parameters: {
+ query?: never;
+ header?: never;
+ path: {
+ /** @description Blog post ID */
+ id: string;
+ };
+ cookie?: never;
+ };
+ requestBody?: never;
+ responses: {
+ /** @description Blog post deleted successfully */
+ 204: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content?: never;
+ };
+ /** @description Blog post not found */
+ 404: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content?: never;
+ };
+ };
+ };
+ AdminBlogsController_permanentlyDeleteBlogPost: {
+ parameters: {
+ query?: never;
+ header?: never;
+ path: {
+ /** @description Blog post ID */
+ id: string;
+ };
+ cookie?: never;
+ };
+ requestBody?: never;
+ responses: {
+ /** @description Blog post permanently deleted successfully */
+ 204: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content?: never;
+ };
+ /** @description Blog post not found */
+ 404: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content?: never;
+ };
+ };
+ };
+ AdminBlogsController_restoreBlogPost: {
+ parameters: {
+ query?: never;
+ header?: never;
+ path: {
+ /** @description Blog post ID */
+ id: string;
+ };
+ cookie?: never;
+ };
+ requestBody?: never;
+ responses: {
+ /** @description Blog post restored successfully */
+ 200: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content?: never;
+ };
+ /** @description Blog post not found */
+ 404: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content?: never;
+ };
+ };
+ };
+ AdminBlogsController_getAllTags: {
+ parameters: {
+ query: {
+ limit: string;
+ };
+ header?: never;
+ path?: never;
+ cookie?: never;
+ };
+ requestBody?: never;
+ responses: {
+ /** @description Tags retrieved successfully */
+ 200: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content?: never;
+ };
+ };
+ };
+ AdminBlogsController_getTagBySlug: {
+ parameters: {
+ query?: never;
+ header?: never;
+ path: {
+ /** @description Tag slug */
+ slug: string;
+ };
+ cookie?: never;
+ };
+ requestBody?: never;
+ responses: {
+ /** @description Tag retrieved successfully */
+ 200: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content?: never;
+ };
+ /** @description Tag not found */
+ 404: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content?: never;
+ };
+ };
+ };
+ AdminBlogsController_deleteUnusedTags: {
+ parameters: {
+ query?: never;
+ header?: never;
+ path?: never;
+ cookie?: never;
+ };
+ requestBody?: never;
+ responses: {
+ /** @description Unused tags deleted successfully */
+ 200: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content?: never;
+ };
+ };
+ };
+ AdminBlogsController_publishScheduledPosts: {
+ parameters: {
+ query?: never;
+ header?: never;
+ path?: never;
+ cookie?: never;
+ };
+ requestBody?: never;
+ responses: {
+ /** @description Scheduled posts published successfully */
+ 200: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content?: never;
+ };
+ };
+ };
+ AdminCrowdfundingController_list: {
+ parameters: {
+ query?: {
+ limit?: unknown;
+ page?: unknown;
+ };
+ header?: never;
+ path?: never;
+ cookie?: never;
+ };
+ requestBody?: never;
+ responses: {
+ /** @description List of campaigns */
+ 200: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content?: never;
+ };
+ };
+ };
+ AdminCrowdfundingController_listByUser: {
+ parameters: {
+ query?: {
+ limit?: unknown;
+ page?: unknown;
+ };
+ header?: never;
+ path: {
+ /** @description Username or User ID */
+ usernameOrId: string;
+ };
+ cookie?: never;
+ };
+ requestBody?: never;
+ responses: {
+ /** @description List of campaigns by user */
+ 200: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content?: never;
+ };
+ /** @description User not found */
+ 404: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content?: never;
+ };
+ };
+ };
+ AdminCrowdfundingController_getCampaign: {
+ parameters: {
+ query?: never;
+ header?: never;
+ path: {
+ /** @description Campaign ID */
+ campaignId: string;
+ };
+ cookie?: never;
+ };
+ requestBody?: never;
+ responses: {
+ /** @description Campaign details */
+ 200: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content?: never;
+ };
+ /** @description Campaign not found */
+ 404: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content?: never;
+ };
+ };
+ };
+ AdminCrowdfundingController_listPending: {
+ parameters: {
+ query?: {
+ limit?: unknown;
+ page?: unknown;
+ };
+ header?: never;
+ path?: never;
+ cookie?: never;
+ };
+ requestBody?: never;
+ responses: {
+ /** @description List of pending campaigns */
+ 200: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content?: never;
+ };
+ };
+ };
+ AdminCrowdfundingController_approve: {
+ parameters: {
+ query?: never;
+ header?: never;
+ path: {
+ campaignId: string;
+ };
+ cookie?: never;
+ };
+ requestBody?: never;
+ responses: {
+ /** @description Campaign approved */
+ 200: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content?: never;
+ };
+ };
+ };
+ AdminCrowdfundingController_reject: {
+ parameters: {
+ query?: never;
+ header?: never;
+ path: {
+ campaignId: string;
+ };
+ cookie?: never;
+ };
+ requestBody: {
+ content: {
+ "application/json": components["schemas"]["AdminCrowdfundingRejectDto"];
+ };
+ };
+ responses: {
+ /** @description Campaign rejected */
+ 200: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content?: never;
+ };
+ };
+ };
+ AdminCrowdfundingController_requestRevision: {
+ parameters: {
+ query?: never;
+ header?: never;
+ path: {
+ campaignId: string;
+ };
+ cookie?: never;
+ };
+ requestBody: {
+ content: {
+ "application/json": components["schemas"]["AdminCrowdfundingRequestRevisionDto"];
+ };
+ };
+ responses: {
+ /** @description Revision request created */
+ 200: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content?: never;
+ };
+ /** @description Campaign not found */
+ 404: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content?: never;
+ };
+ };
+ };
+ AdminCrowdfundingController_addReviewNote: {
+ parameters: {
+ query?: never;
+ header?: never;
+ path: {
+ campaignId: string;
+ };
+ cookie?: never;
+ };
+ requestBody: {
+ content: {
+ "application/json": components["schemas"]["AdminCrowdfundingNoteDto"];
+ };
+ };
+ responses: {
+ /** @description Review note added */
+ 200: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content?: never;
+ };
+ /** @description Campaign not found */
+ 404: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content?: never;
+ };
+ };
+ };
+ AdminCrowdfundingController_assignReviewer: {
+ parameters: {
+ query?: never;
+ header?: never;
+ path: {
+ campaignId: string;
+ };
+ cookie?: never;
+ };
+ requestBody: {
+ content: {
+ "application/json": components["schemas"]["AdminCrowdfundingAssignDto"];
+ };
+ };
+ responses: {
+ /** @description Reviewer assigned */
+ 200: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content?: never;
+ };
+ /** @description Campaign not found */
+ 404: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content?: never;
+ };
+ };
+ };
+ AdminMilestonesController_listAllMilestonesByCampaign: {
+ parameters: {
+ query?: {
+ /** @description Page number */
+ page?: number;
+ /** @description Items per page */
+ limit?: number;
+ /** @description Filter by review status */
+ status?: "PENDING" | "SUBMITTED" | "UNDER_REVIEW" | "APPROVED" | "REJECTED" | "RESUBMISSION_REQUIRED";
+ /** @description Sort by field */
+ sortBy?: "submittedAt" | "campaignSize" | "creatorReputation" | "createdAt";
+ /** @description Filter by campaign ID */
+ campaignId?: string;
+ };
+ header?: never;
+ path?: never;
+ cookie?: never;
+ };
+ requestBody?: never;
+ responses: {
+ /** @description List of campaigns with their milestones */
+ 200: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content?: never;
+ };
+ };
+ };
+ AdminMilestonesController_listPendingMilestones: {
+ parameters: {
+ query?: {
+ /** @description Page number */
+ page?: number;
+ /** @description Items per page */
+ limit?: number;
+ /** @description Filter by review status */
+ status?: "PENDING" | "SUBMITTED" | "UNDER_REVIEW" | "APPROVED" | "REJECTED" | "RESUBMISSION_REQUIRED";
+ /** @description Sort by field */
+ sortBy?: "submittedAt" | "campaignSize" | "creatorReputation" | "createdAt";
+ /** @description Filter by campaign ID */
+ campaignId?: string;
+ };
+ header?: never;
+ path?: never;
+ cookie?: never;
+ };
+ requestBody?: never;
+ responses: {
+ /** @description List of pending milestones */
+ 200: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content?: never;
+ };
+ };
+ };
+ AdminMilestonesController_getMilestoneForReview: {
+ parameters: {
+ query?: never;
+ header?: never;
+ path: {
+ milestoneId: string;
+ };
+ cookie?: never;
+ };
+ requestBody?: never;
+ responses: {
+ /** @description Milestone details */
+ 200: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content?: never;
+ };
+ /** @description Milestone not found */
+ 404: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content?: never;
+ };
+ };
+ };
+ AdminMilestonesController_approveMilestone: {
+ parameters: {
+ query?: never;
+ header?: never;
+ path: {
+ milestoneId: string;
+ };
+ cookie?: never;
+ };
+ requestBody: {
+ content: {
+ "application/json": components["schemas"]["ApproveMilestoneDto"];
+ };
+ };
+ responses: {
+ /** @description Milestone approved */
+ 200: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content?: never;
+ };
+ /** @description Milestone not found */
+ 404: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content?: never;
+ };
+ };
+ };
+ AdminMilestonesController_rejectMilestone: {
+ parameters: {
+ query?: never;
+ header?: never;
+ path: {
+ milestoneId: string;
+ };
+ cookie?: never;
+ };
+ requestBody: {
+ content: {
+ "application/json": components["schemas"]["RejectMilestoneDto"];
+ };
+ };
+ responses: {
+ /** @description Milestone rejected */
+ 200: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content?: never;
+ };
+ /** @description Milestone not found */
+ 404: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content?: never;
+ };
+ };
+ };
+ AdminMilestonesController_requestResubmission: {
+ parameters: {
+ query?: never;
+ header?: never;
+ path: {
+ milestoneId: string;
+ };
+ cookie?: never;
+ };
+ requestBody: {
+ content: {
+ "application/json": components["schemas"]["RequestMilestoneResubmissionDto"];
+ };
+ };
+ responses: {
+ /** @description Resubmission requested */
+ 200: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content?: never;
+ };
+ /** @description Milestone not found */
+ 404: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content?: never;
+ };
+ };
+ };
+ AdminMilestonesController_addReviewNote: {
+ parameters: {
+ query?: never;
+ header?: never;
+ path: {
+ milestoneId: string;
+ };
+ cookie?: never;
+ };
+ requestBody: {
+ content: {
+ "application/json": components["schemas"]["AddMilestoneReviewNoteDto"];
+ };
+ };
+ responses: {
+ /** @description Review note added */
+ 201: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content?: never;
+ };
+ /** @description Milestone not found */
+ 404: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content?: never;
+ };
+ };
+ };
+ AdminEscrowController_getEscrowInfo: {
+ parameters: {
+ query?: never;
+ header?: never;
+ path: {
+ campaignId: string;
+ };
+ cookie?: never;
+ };
+ requestBody?: never;
+ responses: {
+ /** @description Escrow information */
+ 200: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content?: never;
+ };
+ /** @description Campaign not found */
+ 404: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content?: never;
+ };
+ };
+ };
+ AdminEscrowController_executeEscrowAction: {
+ parameters: {
+ query?: never;
+ header?: never;
+ path: {
+ campaignId: string;
+ };
+ cookie?: never;
+ };
+ requestBody: {
+ content: {
+ "application/json": components["schemas"]["ManualEscrowActionDto"];
+ };
+ };
+ responses: {
+ /** @description Escrow action executed */
+ 200: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content?: never;
+ };
+ /** @description Campaign not found */
+ 404: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content?: never;
+ };
+ };
+ };
+ AdminDisputesController_listDisputes: {
+ parameters: {
+ query?: {
+ /** @description Page number */
+ page?: number;
+ /** @description Items per page */
+ limit?: number;
+ /** @description Filter by dispute status */
+ status?: "OPEN" | "UNDER_REVIEW" | "AWAITING_RESPONSE" | "RESOLVED" | "ESCALATED" | "CLOSED";
+ /** @description Filter by campaign ID */
+ campaignId?: string;
+ };
+ header?: never;
+ path?: never;
+ cookie?: never;
+ };
+ requestBody?: never;
+ responses: {
+ /** @description List of disputes */
+ 200: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content?: never;
+ };
+ };
+ };
+ AdminDisputesController_getDisputeDetail: {
+ parameters: {
+ query?: never;
+ header?: never;
+ path: {
+ disputeId: string;
+ };
+ cookie?: never;
+ };
+ requestBody?: never;
+ responses: {
+ /** @description Dispute details */
+ 200: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content?: never;
+ };
+ /** @description Dispute not found */
+ 404: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content?: never;
+ };
+ };
+ };
+ AdminDisputesController_assignDispute: {
+ parameters: {
+ query?: never;
+ header?: never;
+ path: {
+ disputeId: string;
+ };
+ cookie?: never;
+ };
+ requestBody: {
+ content: {
+ "application/json": components["schemas"]["AssignDisputeDto"];
+ };
+ };
+ responses: {
+ /** @description Dispute assigned */
+ 200: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content?: never;
+ };
+ /** @description Dispute not found */
+ 404: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content?: never;
+ };
+ };
+ };
+ AdminDisputesController_addDisputeNote: {
+ parameters: {
+ query?: never;
+ header?: never;
+ path: {
+ disputeId: string;
+ };
+ cookie?: never;
+ };
+ requestBody: {
+ content: {
+ "application/json": components["schemas"]["AddDisputeNoteDto"];
+ };
+ };
+ responses: {
+ /** @description Note added */
+ 201: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content?: never;
+ };
+ /** @description Dispute not found */
+ 404: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content?: never;
+ };
+ };
+ };
+ AdminDisputesController_resolveDispute: {
+ parameters: {
+ query?: never;
+ header?: never;
+ path: {
+ disputeId: string;
+ };
+ cookie?: never;
+ };
+ requestBody: {
+ content: {
+ "application/json": components["schemas"]["ResolveDisputeDto"];
+ };
+ };
+ responses: {
+ /** @description Dispute resolved */
+ 200: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content?: never;
+ };
+ /** @description Dispute not found */
+ 404: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content?: never;
+ };
+ };
+ };
+ AdminDisputesController_escalateDispute: {
+ parameters: {
+ query?: never;
+ header?: never;
+ path: {
+ disputeId: string;
+ };
+ cookie?: never;
+ };
+ requestBody: {
+ content: {
+ "application/json": components["schemas"]["EscalateDisputeDto"];
+ };
+ };
+ responses: {
+ /** @description Dispute escalated */
+ 200: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content?: never;
+ };
+ /** @description Dispute not found */
+ 404: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content?: never;
+ };
+ };
+ };
+ AdminManualProjectsController_listPendingManualProjects: {
+ parameters: {
+ query?: {
+ page?: number;
+ limit?: number;
+ };
+ header?: never;
+ path?: never;
+ cookie?: never;
+ };
+ requestBody?: never;
+ responses: {
+ 200: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content?: never;
+ };
+ };
+ };
+ AdminManualProjectsController_approveManualProject: {
+ parameters: {
+ query?: never;
+ header?: never;
+ path: {
+ /** @description Project ID */
+ projectId: string;
+ };
+ cookie?: never;
+ };
+ requestBody?: never;
+ responses: {
+ 201: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content?: never;
+ };
+ };
+ };
+ AdminManualProjectsController_rejectManualProject: {
+ parameters: {
+ query?: never;
+ header?: never;
+ path: {
+ /** @description Project ID */
+ projectId: string;
+ };
+ cookie?: never;
+ };
+ requestBody: {
+ content: {
+ "application/json": components["schemas"]["RejectManualProjectDto"];
+ };
+ };
+ responses: {
+ 201: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content?: never;
+ };
+ };
+ };
+ AdminManualProjectsController_requestChanges: {
+ parameters: {
+ query?: never;
+ header?: never;
+ path: {
+ /** @description Project ID */
+ projectId: string;
+ };
+ cookie?: never;
+ };
+ requestBody: {
+ content: {
+ "application/json": components["schemas"]["RequestManualProjectChangesDto"];
+ };
+ };
+ responses: {
+ 201: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content?: never;
+ };
+ };
+ };
+ AdminProjectEditsController_listPendingProjectEdits: {
+ parameters: {
+ query?: {
+ page?: number;
+ limit?: number;
+ };
+ header?: never;
+ path?: never;
+ cookie?: never;
+ };
+ requestBody?: never;
+ responses: {
+ 200: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content?: never;
+ };
+ };
+ };
+ AdminProjectEditsController_approveProjectEdit: {
+ parameters: {
+ query?: never;
+ header?: never;
+ path: {
+ /** @description ProjectEdit ID */
+ editId: string;
+ };
+ cookie?: never;
+ };
+ requestBody?: never;
+ responses: {
+ 201: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content?: never;
+ };
+ };
+ };
+ AdminProjectEditsController_rejectProjectEdit: {
+ parameters: {
+ query?: never;
+ header?: never;
+ path: {
+ /** @description ProjectEdit ID */
+ editId: string;
+ };
+ cookie?: never;
+ };
+ requestBody: {
+ content: {
+ "application/json": components["schemas"]["RejectProjectEditDto"];
+ };
+ };
+ responses: {
+ 201: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content?: never;
+ };
+ };
+ };
+ AdminWalletsController_getStats: {
+ parameters: {
+ query?: {
+ timeRange?: "7d" | "30d" | "90d";
+ };
+ header?: never;
+ path?: never;
+ cookie?: never;
+ };
+ requestBody?: never;
+ responses: {
+ default: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content: {
+ "application/json": components["schemas"]["AdminWalletStatsDto"];
+ };
+ };
+ };
+ };
+ AdminWalletsController_listWallets: {
+ parameters: {
+ query?: {
+ search?: string;
+ limit?: number;
+ page?: number;
+ };
+ header?: never;
+ path?: never;
+ cookie?: never;
+ };
+ requestBody?: never;
+ responses: {
+ default: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content: {
+ "application/json": components["schemas"]["AdminWalletListResponseDto"];
+ };
+ };
+ };
+ };
+ AdminWalletsController_getByUserId: {
+ parameters: {
+ query?: never;
+ header?: never;
+ path: {
+ userId: string;
+ };
+ cookie?: never;
+ };
+ requestBody?: never;
+ responses: {
+ default: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content: {
+ "application/json": components["schemas"]["AdminWalletListItemDto"][];
+ };
+ };
+ };
+ };
+ AdminWalletsController_getDetails: {
+ parameters: {
+ query?: never;
+ header?: never;
+ path: {
+ id: string;
+ };
+ cookie?: never;
+ };
+ requestBody?: never;
+ responses: {
+ default: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content: {
+ "application/json": components["schemas"]["AdminWalletDetailsDto"];
+ };
+ };
+ };
+ };
+ AdminWalletsController_activateWallet: {
+ parameters: {
+ query?: never;
+ header?: never;
+ path: {
+ id: string;
+ };
+ cookie?: never;
+ };
+ requestBody?: never;
+ responses: {
+ /** @description Wallet activated successfully */
+ 200: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content?: never;
+ };
+ };
+ };
+ AdminWalletsController_sponsorActivateUser: {
+ parameters: {
+ query?: never;
+ header?: never;
+ path: {
+ userId: string;
+ };
+ cookie?: never;
+ };
+ requestBody?: never;
+ responses: {
+ /** @description Returns activation result for the user (activated, alreadyActivated, addedTrustlines, hash). */
+ 201: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content?: never;
+ };
+ };
+ };
+ AdminWalletsController_sponsorActivateHackathon: {
+ parameters: {
+ query?: never;
+ header?: never;
+ path: {
+ hackathonId: string;
+ };
+ cookie?: never;
+ };
+ requestBody?: never;
+ responses: {
+ /** @description Job enqueued. Returns { jobId, hackathonId, estimatedParticipants, statusUrl }. */
+ 201: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content?: never;
+ };
+ };
+ };
+ AdminWalletsController_getSponsorActivationJobStatus: {
+ parameters: {
+ query?: never;
+ header?: never;
+ path: {
+ jobId: string;
+ };
+ cookie?: never;
+ };
+ requestBody?: never;
+ responses: {
+ 200: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content?: never;
+ };
+ };
+ };
+ HealthController_liveness: {
+ parameters: {
+ query?: never;
+ header?: never;
+ path?: never;
+ cookie?: never;
+ };
+ requestBody?: never;
+ responses: {
+ 200: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content?: never;
+ };
+ };
+ };
+ HealthController_readiness: {
+ parameters: {
+ query?: never;
+ header?: never;
+ path?: never;
+ cookie?: never;
+ };
+ requestBody?: never;
+ responses: {
+ /** @description The Health Check is successful */
+ 200: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content: {
+ "application/json": {
+ /** @example ok */
+ status?: string;
+ /**
+ * @example {
+ * "database": {
+ * "status": "up"
+ * }
+ * }
+ */
+ info?: {
+ [key: string]: {
+ status: string;
+ } & {
+ [key: string]: unknown;
+ };
+ } | null;
+ /** @example {} */
+ error?: {
+ [key: string]: {
+ status: string;
+ } & {
+ [key: string]: unknown;
+ };
+ } | null;
+ /**
+ * @example {
+ * "database": {
+ * "status": "up"
+ * }
+ * }
+ */
+ details?: {
+ [key: string]: {
+ status: string;
+ } & {
+ [key: string]: unknown;
+ };
+ };
+ };
+ };
+ };
+ /** @description The Health Check is not successful */
+ 503: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content: {
+ "application/json": {
+ /** @example error */
+ status?: string;
+ /**
+ * @example {
+ * "database": {
+ * "status": "up"
+ * }
+ * }
+ */
+ info?: {
+ [key: string]: {
+ status: string;
+ } & {
+ [key: string]: unknown;
+ };
+ } | null;
+ /**
+ * @example {
+ * "redis": {
+ * "status": "down",
+ * "message": "Could not connect"
+ * }
+ * }
+ */
+ error?: {
+ [key: string]: {
+ status: string;
+ } & {
+ [key: string]: unknown;
+ };
+ } | null;
+ /**
+ * @example {
+ * "database": {
+ * "status": "up"
+ * },
+ * "redis": {
+ * "status": "down",
+ * "message": "Could not connect"
+ * }
+ * }
+ */
+ details?: {
+ [key: string]: {
+ status: string;
+ } & {
+ [key: string]: unknown;
+ };
+ };
+ };
+ };
+ };
+ };
+ };
+ DiditController_getStatus: {
+ parameters: {
+ query?: never;
+ header?: never;
+ path?: never;
+ cookie?: never;
+ };
+ requestBody?: never;
+ responses: {
+ 200: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content: {
+ "application/json": components["schemas"]["VerificationStatusDto"];
+ };
+ };
+ };
+ };
+ DiditController_callback: {
+ parameters: {
+ query?: never;
+ header?: never;
+ path?: never;
+ cookie?: never;
+ };
+ requestBody?: never;
+ responses: {
+ 200: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content?: never;
+ };
+ };
+ };
+ DiditController_createSession: {
+ parameters: {
+ query?: never;
+ header?: never;
+ path?: never;
+ cookie?: never;
+ };
+ requestBody?: never;
+ responses: {
+ /** @description Session created */
+ 200: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content: {
+ "application/json": unknown;
+ };
+ };
+ /** @description Missing DIDIT_API_KEY or DIDIT_WORKFLOW_ID */
+ 400: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content?: never;
+ };
+ /** @description Unauthorized */
+ 401: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content?: never;
+ };
+ };
+ };
+ DiditController_webhook: {
+ parameters: {
+ query?: never;
+ header?: never;
+ path?: never;
+ cookie?: never;
+ };
+ requestBody?: never;
+ responses: {
+ /** @description Webhook accepted */
+ 200: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content?: never;
+ };
+ /** @description Invalid or missing signature */
+ 400: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content?: never;
+ };
+ };
+ };
+ PricingController_preview: {
+ parameters: {
+ query: {
+ pillar: "Hackathon" | "Bounty" | "Grant" | "Crowdfunding";
+ organizationId: string;
+ /** @description Budget in stroops (7-decimal). String to preserve precision. */
+ budgetStroops: string;
+ /** @description Override fee bps from a sales authority. 0 = waiver. */
+ salesOverrideBps?: number;
+ /** @description Free-text reason for the audit log. */
+ salesOverrideReason?: string;
+ };
+ header?: never;
+ path?: never;
+ cookie?: never;
+ };
+ requestBody?: never;
+ responses: {
+ 200: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content: {
+ "application/json": components["schemas"]["PricingPreviewResponseDto"];
+ };
+ };
+ };
+ };
+ AiUsageController_getUsage: {
+ parameters: {
+ query?: never;
+ header?: never;
+ path: {
+ /** @description Organization ID */
+ organizationId: string;
+ };
+ cookie?: never;
+ };
+ requestBody?: never;
+ responses: {
+ 200: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content: {
+ "application/json": components["schemas"]["AiUsageResponseDto"];
+ };
+ };
+ };
+ };
+ AdminOpsController_pause: {
+ parameters: {
+ query?: never;
+ header?: never;
+ path?: never;
+ cookie?: never;
+ };
+ requestBody?: never;
+ responses: {
+ 200: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content?: never;
+ };
+ };
+ };
+ AdminOpsController_unpause: {
+ parameters: {
+ query?: never;
+ header?: never;
+ path?: never;
+ cookie?: never;
+ };
+ requestBody?: never;
+ responses: {
+ 200: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content?: never;
+ };
+ };
+ };
+ AdminOpsController_setFeeBps: {
+ parameters: {
+ query?: never;
+ header?: never;
+ path?: never;
+ cookie?: never;
+ };
+ requestBody?: never;
+ responses: {
+ 200: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content?: never;
+ };
+ };
+ };
+ AccessController_me: {
+ parameters: {
+ query?: never;
+ header?: never;
+ path?: never;
+ cookie?: never;
+ };
+ requestBody?: never;
+ responses: {
+ 200: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content: {
+ "application/json": components["schemas"]["MeResponseDto"];
+ };
+ };
+ };
+ };
+ AccessController_roles: {
+ parameters: {
+ query?: never;
+ header?: never;
+ path?: never;
+ cookie?: never;
+ };
+ requestBody?: never;
+ responses: {
+ 200: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content?: never;
+ };
+ };
+ };
+ AnalyticsController_get: {
+ parameters: {
+ query?: never;
+ header?: never;
+ path?: never;
+ cookie?: never;
+ };
+ requestBody?: never;
+ responses: {
+ 200: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content: {
+ "application/json": components["schemas"]["AnalyticsDto"];
+ };
+ };
+ };
+ };
+ OverviewController_get: {
+ parameters: {
+ query?: never;
+ header?: never;
+ path?: never;
+ cookie?: never;
+ };
+ requestBody?: never;
+ responses: {
+ 200: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content: {
+ "application/json": components["schemas"]["OverviewDto"];
+ };
+ };
+ };
+ };
+ UsersController_list: {
+ parameters: {
+ query?: {
+ /** @description Field to sort by (whitelisted per resource; ignored otherwise) */
+ sort?: string;
+ dir?: "asc" | "desc";
+ page?: number;
+ limit?: number;
+ /** @description Match against name, email, or username */
+ search?: string;
+ };
+ header?: never;
+ path?: never;
+ cookie?: never;
+ };
+ requestBody?: never;
+ responses: {
+ 200: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content: {
+ "application/json": components["schemas"]["PaginatedUsersDto"];
+ };
+ };
+ };
+ };
+ UsersController_getById: {
+ parameters: {
+ query?: never;
+ header?: never;
+ path: {
+ id: string;
+ };
+ cookie?: never;
+ };
+ requestBody?: never;
+ responses: {
+ 200: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content: {
+ "application/json": components["schemas"]["AdminUserDetailDto"];
+ };
+ };
+ };
+ };
+ UsersController_getEarnings: {
+ parameters: {
+ query?: never;
+ header?: never;
+ path: {
+ id: string;
+ };
+ cookie?: never;
+ };
+ requestBody?: never;
+ responses: {
+ 200: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content: {
+ "application/json": components["schemas"]["EarningsResponseDto"];
+ };
+ };
+ };
+ };
+ UsersController_getOrganizations: {
+ parameters: {
+ query?: never;
+ header?: never;
+ path: {
+ id: string;
+ };
+ cookie?: never;
+ };
+ requestBody?: never;
+ responses: {
+ 200: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content: {
+ "application/json": components["schemas"]["AdminUserOrganizationDto"][];
+ };
+ };
+ };
+ };
+ UsersController_getWallet: {
+ parameters: {
+ query?: never;
+ header?: never;
+ path: {
+ id: string;
+ };
+ cookie?: never;
+ };
+ requestBody?: never;
+ responses: {
+ 200: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content: {
+ "application/json": components["schemas"]["AdminUserWalletDto"];
+ };
+ };
+ };
+ };
+ UsersController_setBanned: {
+ parameters: {
+ query?: never;
+ header?: never;
+ path: {
+ id: string;
+ };
+ cookie?: never;
+ };
+ requestBody: {
+ content: {
+ "application/json": components["schemas"]["BanUserDto"];
+ };
+ };
+ responses: {
+ 200: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content: {
+ "application/json": components["schemas"]["BanUserResponseDto"];
+ };
+ };
+ };
+ };
+ OrganizationsController_list: {
+ parameters: {
+ query?: {
+ /** @description Field to sort by (whitelisted per resource; ignored otherwise) */
+ sort?: string;
+ dir?: "asc" | "desc";
+ page?: number;
+ limit?: number;
+ /** @description Match against name or slug */
+ search?: string;
+ };
+ header?: never;
+ path?: never;
+ cookie?: never;
+ };
+ requestBody?: never;
+ responses: {
+ 200: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content: {
+ "application/json": components["schemas"]["PaginatedOrganizationsDto"];
+ };
+ };
+ };
+ };
+ OrganizationsController_getById: {
+ parameters: {
+ query?: never;
+ header?: never;
+ path: {
+ id: string;
+ };
+ cookie?: never;
+ };
+ requestBody?: never;
+ responses: {
+ 200: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content: {
+ "application/json": components["schemas"]["AdminOrgDetailDto"];
+ };
+ };
+ };
+ };
+ OrganizationsController_update: {
+ parameters: {
+ query?: never;
+ header?: never;
+ path: {
+ id: string;
+ };
+ cookie?: never;
+ };
+ requestBody: {
+ content: {
+ "application/json": components["schemas"]["UpdateOrgDto"];
+ };
+ };
+ responses: {
+ 200: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content: {
+ "application/json": components["schemas"]["OrgActionResponseDto"];
+ };
+ };
+ };
+ };
+ OrganizationsController_suspend: {
+ parameters: {
+ query?: never;
+ header?: never;
+ path: {
+ id: string;
+ };
+ cookie?: never;
+ };
+ requestBody: {
+ content: {
+ "application/json": components["schemas"]["SuspendOrgDto"];
+ };
+ };
+ responses: {
+ 200: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content: {
+ "application/json": components["schemas"]["OrgSuspensionResponseDto"];
+ };
+ };
+ };
+ };
+ OrganizationsController_reinstate: {
+ parameters: {
+ query?: never;
+ header?: never;
+ path: {
+ id: string;
+ };
+ cookie?: never;
+ };
+ requestBody: {
+ content: {
+ "application/json": components["schemas"]["ReinstateOrgDto"];
+ };
+ };
+ responses: {
+ 200: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content: {
+ "application/json": components["schemas"]["OrgSuspensionResponseDto"];
+ };
+ };
+ };
+ };
+ ProgramsController_list: {
+ parameters: {
+ query?: {
+ /** @description Field to sort by (whitelisted per resource; ignored otherwise) */
+ sort?: string;
+ dir?: "asc" | "desc";
+ /** @description Which pillar to list. Defaults to hackathons. */
+ type?: "hackathon" | "bounty" | "grant" | "crowdfunding";
+ page?: number;
+ limit?: number;
+ /** @description Match against the program title */
+ search?: string;
+ };
+ header?: never;
+ path?: never;
+ cookie?: never;
+ };
+ requestBody?: never;
+ responses: {
+ 200: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content: {
+ "application/json": components["schemas"]["PaginatedProgramsDto"];
+ };
+ };
+ };
+ };
+ ProgramsController_getById: {
+ parameters: {
+ query: {
+ /** @description Which pillar the id belongs to */
+ type: "hackathon" | "bounty" | "grant" | "crowdfunding";
+ };
+ header?: never;
+ path: {
+ id: string;
+ };
+ cookie?: never;
+ };
+ requestBody?: never;
+ responses: {
+ 200: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content: {
+ "application/json": components["schemas"]["AdminProgramDetailDto"];
+ };
+ };
+ };
+ };
+ ProgramsController_setFeatured: {
+ parameters: {
+ query?: never;
+ header?: never;
+ path: {
+ id: string;
+ };
+ cookie?: never;
+ };
+ requestBody: {
+ content: {
+ "application/json": components["schemas"]["SetFeaturedDto"];
+ };
+ };
+ responses: {
+ 200: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content: {
+ "application/json": components["schemas"]["ProgramActionResponseDto"];
+ };
+ };
+ };
+ };
+ ProgramsController_setStatus: {
+ parameters: {
+ query?: never;
+ header?: never;
+ path: {
+ id: string;
+ };
+ cookie?: never;
+ };
+ requestBody: {
+ content: {
+ "application/json": components["schemas"]["SetProgramStatusDto"];
+ };
+ };
+ responses: {
+ 200: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content: {
+ "application/json": components["schemas"]["ProgramActionResponseDto"];
+ };
+ };
+ };
+ };
+ DisputesController_list: {
+ parameters: {
+ query?: {
+ /** @description Field to sort by (whitelisted per resource; ignored otherwise) */
+ sort?: string;
+ dir?: "asc" | "desc";
+ page?: number;
+ limit?: number;
+ /** @description Match against the dispute description or campaign title */
+ search?: string;
+ };
+ header?: never;
+ path?: never;
+ cookie?: never;
+ };
+ requestBody?: never;
+ responses: {
+ 200: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content: {
+ "application/json": components["schemas"]["PaginatedDisputesDto"];
+ };
+ };
+ };
+ };
+ DisputesController_getById: {
+ parameters: {
+ query?: never;
+ header?: never;
+ path: {
+ id: string;
+ };
+ cookie?: never;
+ };
+ requestBody?: never;
+ responses: {
+ 200: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content: {
+ "application/json": components["schemas"]["AdminDisputeDetailDto"];
+ };
+ };
+ };
+ };
+ DisputesController_assign: {
+ parameters: {
+ query?: never;
+ header?: never;
+ path: {
+ id: string;
+ };
+ cookie?: never;
+ };
+ requestBody: {
+ content: {
+ "application/json": components["schemas"]["AdminV2AssignDisputeDto"];
+ };
+ };
+ responses: {
+ 200: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content: {
+ "application/json": components["schemas"]["DisputeAssignmentResponseDto"];
+ };
+ };
+ };
+ };
+ DisputesController_note: {
+ parameters: {
+ query?: never;
+ header?: never;
+ path: {
+ id: string;
+ };
+ cookie?: never;
+ };
+ requestBody: {
+ content: {
+ "application/json": components["schemas"]["NoteDisputeDto"];
+ };
+ };
+ responses: {
+ 200: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content: {
+ "application/json": components["schemas"]["DisputeNoteResponseDto"];
+ };
+ };
+ };
+ };
+ DisputesController_resolve: {
+ parameters: {
+ query?: never;
+ header?: never;
+ path: {
+ id: string;
+ };
+ cookie?: never;
+ };
+ requestBody: {
+ content: {
+ "application/json": components["schemas"]["AdminV2ResolveDisputeDto"];
+ };
+ };
+ responses: {
+ 200: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content: {
+ "application/json": components["schemas"]["DisputeActionResponseDto"];
+ };
+ };
+ };
+ };
+ DisputesController_escalate: {
+ parameters: {
+ query?: never;
+ header?: never;
+ path: {
+ id: string;
+ };
+ cookie?: never;
+ };
+ requestBody: {
+ content: {
+ "application/json": components["schemas"]["AdminV2EscalateDisputeDto"];
+ };
+ };
+ responses: {
+ 200: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content: {
+ "application/json": components["schemas"]["DisputeActionResponseDto"];
+ };
+ };
+ };
+ };
+ EscrowController_list: {
+ parameters: {
+ query?: {
+ /** @description Field to sort by (whitelisted per resource; ignored otherwise) */
+ sort?: string;
+ dir?: "asc" | "desc";
+ page?: number;
+ limit?: number;
+ /** @description Match against the on-chain reference (hash or address) */
+ search?: string;
+ };
+ header?: never;
+ path?: never;
+ cookie?: never;
+ };
+ requestBody?: never;
+ responses: {
+ 200: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content: {
+ "application/json": components["schemas"]["PaginatedMoneyDto"];
+ };
+ };
+ };
+ };
+ EscrowController_listRequests: {
+ parameters: {
+ query?: {
+ /** @description Filter to a single request status */
+ status?: "PROPOSED" | "APPROVED" | "REJECTED" | "EXECUTED";
+ };
+ header?: never;
+ path?: never;
+ cookie?: never;
+ };
+ requestBody?: never;
+ responses: {
+ 200: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content: {
+ "application/json": components["schemas"]["EscrowRequestListResponseDto"];
+ };
+ };
+ };
+ };
+ EscrowController_propose: {
+ parameters: {
+ query?: never;
+ header?: never;
+ path?: never;
+ cookie?: never;
+ };
+ requestBody: {
+ content: {
+ "application/json": components["schemas"]["ProposeEscrowRequestDto"];
+ };
+ };
+ responses: {
+ 200: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content: {
+ "application/json": components["schemas"]["EscrowRequestDto"];
+ };
+ };
+ };
+ };
+ EscrowController_decide: {
+ parameters: {
+ query?: never;
+ header?: never;
+ path: {
+ id: string;
+ };
+ cookie?: never;
+ };
+ requestBody: {
+ content: {
+ "application/json": components["schemas"]["DecideEscrowRequestDto"];
+ };
+ };
+ responses: {
+ 200: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content: {
+ "application/json": components["schemas"]["EscrowRequestDto"];
+ };
+ };
+ };
+ };
+ EscrowController_execute: {
+ parameters: {
+ query?: never;
+ header?: never;
+ path: {
+ id: string;
+ };
+ cookie?: never;
+ };
+ requestBody: {
+ content: {
+ "application/json": components["schemas"]["ExecuteEscrowRequestDto"];
+ };
+ };
+ responses: {
+ 200: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content: {
+ "application/json": components["schemas"]["EscrowRequestDto"];
+ };
+ };
+ };
+ };
+ PayoutsController_list: {
+ parameters: {
+ query?: {
+ /** @description Field to sort by (whitelisted per resource; ignored otherwise) */
+ sort?: string;
+ dir?: "asc" | "desc";
+ page?: number;
+ limit?: number;
+ /** @description Match against the on-chain reference (hash or address) */
+ search?: string;
+ };
+ header?: never;
+ path?: never;
+ cookie?: never;
+ };
+ requestBody?: never;
+ responses: {
+ 200: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content: {
+ "application/json": components["schemas"]["PaginatedMoneyDto"];
+ };
+ };
+ };
+ };
+ PayoutsController_listRequests: {
+ parameters: {
+ query?: {
+ /** @description Filter to a single request status */
+ status?: "PROPOSED" | "APPROVED" | "AWAITING_SIGNATURE" | "REJECTED" | "EXECUTED";
+ };
+ header?: never;
+ path?: never;
+ cookie?: never;
+ };
+ requestBody?: never;
+ responses: {
+ 200: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content: {
+ "application/json": components["schemas"]["PayoutRequestListResponseDto"];
+ };
+ };
+ };
+ };
+ PayoutsController_propose: {
+ parameters: {
+ query?: never;
+ header?: never;
+ path?: never;
+ cookie?: never;
+ };
+ requestBody: {
+ content: {
+ "application/json": components["schemas"]["ProposePayoutRequestDto"];
+ };
+ };
+ responses: {
+ 200: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content: {
+ "application/json": components["schemas"]["PayoutRequestDto"];
+ };
+ };
+ };
+ };
+ PayoutsController_decide: {
+ parameters: {
+ query?: never;
+ header?: never;
+ path: {
id: string;
- name?: string;
- email?: string;
- image?: string;
- emailVerified: boolean;
- };
- data: {
- [key: string]: unknown;
- };
- };
- };
- };
- /** @description Bad Request. Usually due to missing parameters, or invalid parameters. */
- 400: {
- headers: {
- [name: string]: unknown;
- };
- content: {
- 'application/json': {
- message: string;
- };
- };
- };
- /** @description Unauthorized. Due to missing or invalid authentication. */
- 401: {
- headers: {
- [name: string]: unknown;
- };
- content: {
- 'application/json': {
- message: string;
- };
- };
- };
- /** @description Forbidden. You do not have permission to access this resource or to perform this action. */
- 403: {
- headers: {
- [name: string]: unknown;
- };
- content: {
- 'application/json': {
- message?: string;
- };
- };
- };
- /** @description Not Found. The requested resource was not found. */
- 404: {
- headers: {
- [name: string]: unknown;
- };
- content: {
- 'application/json': {
- message?: string;
- };
- };
- };
- /** @description Too Many Requests. You have exceeded the rate limit. Try again later. */
- 429: {
- headers: {
- [name: string]: unknown;
- };
- content: {
- 'application/json': {
- message?: string;
- };
- };
- };
- /** @description Internal Server Error. This is a problem with the server that you cannot fix. */
- 500: {
- headers: {
- [name: string]: unknown;
- };
- content: {
- 'application/json': {
- message?: string;
- };
- };
- };
- };
- };
- put?: never;
- post?: never;
- delete?: never;
- options?: never;
- head?: never;
- patch?: never;
- trace?: never;
- };
- '/api/auth/ok': {
- parameters: {
- query?: never;
- header?: never;
- path?: never;
- cookie?: never;
- };
- /** @description Check if the API is working */
- get: {
- parameters: {
- query?: never;
- header?: never;
- path?: never;
- cookie?: never;
- };
- requestBody?: never;
- responses: {
- /** @description API is working */
- 200: {
- headers: {
- [name: string]: unknown;
- };
- content: {
- 'application/json': {
- /** @description Indicates if the API is working */
- ok: boolean;
- };
- };
- };
- /** @description Bad Request. Usually due to missing parameters, or invalid parameters. */
- 400: {
- headers: {
- [name: string]: unknown;
- };
- content: {
- 'application/json': {
- message: string;
- };
- };
- };
- /** @description Unauthorized. Due to missing or invalid authentication. */
- 401: {
- headers: {
- [name: string]: unknown;
- };
- content: {
- 'application/json': {
- message: string;
- };
- };
- };
- /** @description Forbidden. You do not have permission to access this resource or to perform this action. */
- 403: {
- headers: {
- [name: string]: unknown;
- };
- content: {
- 'application/json': {
- message?: string;
- };
- };
- };
- /** @description Not Found. The requested resource was not found. */
- 404: {
- headers: {
- [name: string]: unknown;
- };
- content: {
- 'application/json': {
- message?: string;
- };
- };
- };
- /** @description Too Many Requests. You have exceeded the rate limit. Try again later. */
- 429: {
- headers: {
- [name: string]: unknown;
- };
- content: {
- 'application/json': {
- message?: string;
- };
- };
- };
- /** @description Internal Server Error. This is a problem with the server that you cannot fix. */
- 500: {
- headers: {
- [name: string]: unknown;
- };
- content: {
- 'application/json': {
- message?: string;
- };
- };
- };
- };
- };
- put?: never;
- post?: never;
- delete?: never;
- options?: never;
- head?: never;
- patch?: never;
- trace?: never;
- };
- '/api/auth/error': {
- parameters: {
- query?: never;
- header?: never;
- path?: never;
- cookie?: never;
- };
- /** @description Displays an error page */
- get: {
- parameters: {
- query?: never;
- header?: never;
- path?: never;
- cookie?: never;
- };
- requestBody?: never;
- responses: {
- /** @description Success */
- 200: {
- headers: {
- [name: string]: unknown;
- };
- content: {
- 'text/html': string;
- };
- };
- /** @description Bad Request. Usually due to missing parameters, or invalid parameters. */
- 400: {
- headers: {
- [name: string]: unknown;
- };
- content: {
- 'application/json': {
- message: string;
- };
- };
- };
- /** @description Unauthorized. Due to missing or invalid authentication. */
- 401: {
- headers: {
- [name: string]: unknown;
- };
- content: {
- 'application/json': {
- message: string;
- };
- };
- };
- /** @description Forbidden. You do not have permission to access this resource or to perform this action. */
- 403: {
- headers: {
- [name: string]: unknown;
- };
- content: {
- 'application/json': {
- message?: string;
- };
- };
- };
- /** @description Not Found. The requested resource was not found. */
- 404: {
- headers: {
- [name: string]: unknown;
- };
- content: {
- 'application/json': {
- message?: string;
- };
- };
- };
- /** @description Too Many Requests. You have exceeded the rate limit. Try again later. */
- 429: {
- headers: {
- [name: string]: unknown;
- };
- content: {
- 'application/json': {
- message?: string;
- };
- };
- };
- /** @description Internal Server Error. This is a problem with the server that you cannot fix. */
- 500: {
- headers: {
- [name: string]: unknown;
- };
- content: {
- 'application/json': {
- message?: string;
- };
- };
- };
- };
- };
- put?: never;
- post?: never;
- delete?: never;
- options?: never;
- head?: never;
- patch?: never;
- trace?: never;
- };
- '/api/auth/sign-in/username': {
- parameters: {
- query?: never;
- header?: never;
- path?: never;
- cookie?: never;
- };
- get?: never;
- put?: never;
- /** @description Sign in with username */
- post: {
- parameters: {
- query?: never;
- header?: never;
- path?: never;
- cookie?: never;
- };
- requestBody: {
- content: {
- 'application/json': {
- /** @description The username of the user */
- username: string;
- /** @description The password of the user */
- password: string;
- /** @description Remember the user session */
- rememberMe?: boolean | null;
- /** @description The URL to redirect to after email verification */
- callbackURL?: string | null;
- };
- };
- };
- responses: {
- /** @description Success */
- 200: {
- headers: {
- [name: string]: unknown;
- };
- content: {
- 'application/json': {
- /** @description Session token for the authenticated session */
- token: string;
- user: components['schemas']['User'];
- };
- };
- };
- /** @description Bad Request. Usually due to missing parameters, or invalid parameters. */
- 400: {
- headers: {
- [name: string]: unknown;
- };
- content: {
- 'application/json': {
- message: string;
- };
- };
- };
- /** @description Unauthorized. Due to missing or invalid authentication. */
- 401: {
- headers: {
- [name: string]: unknown;
- };
- content: {
- 'application/json': {
- message: string;
- };
- };
- };
- /** @description Forbidden. You do not have permission to access this resource or to perform this action. */
- 403: {
- headers: {
- [name: string]: unknown;
- };
- content: {
- 'application/json': {
- message?: string;
- };
- };
- };
- /** @description Not Found. The requested resource was not found. */
- 404: {
- headers: {
- [name: string]: unknown;
- };
- content: {
- 'application/json': {
- message?: string;
- };
- };
- };
- /** @description Unprocessable Entity. Validation error */
- 422: {
- headers: {
- [name: string]: unknown;
- };
- content: {
- 'application/json': {
- message?: string;
- };
- };
- };
- /** @description Too Many Requests. You have exceeded the rate limit. Try again later. */
- 429: {
- headers: {
- [name: string]: unknown;
- };
- content: {
- 'application/json': {
- message?: string;
- };
- };
- };
- /** @description Internal Server Error. This is a problem with the server that you cannot fix. */
- 500: {
- headers: {
- [name: string]: unknown;
- };
- content: {
- 'application/json': {
- message?: string;
- };
- };
- };
- };
- };
- delete?: never;
- options?: never;
- head?: never;
- patch?: never;
- trace?: never;
- };
- '/api/auth/is-username-available': {
- parameters: {
- query?: never;
- header?: never;
- path?: never;
- cookie?: never;
- };
- get?: never;
- put?: never;
- post: {
- parameters: {
- query?: never;
- header?: never;
- path?: never;
- cookie?: never;
- };
- requestBody: {
- content: {
- 'application/json': {
- /** @description The username to check */
- username: string;
- };
- };
- };
- responses: {
- /** @description Bad Request. Usually due to missing parameters, or invalid parameters. */
- 400: {
- headers: {
- [name: string]: unknown;
- };
- content: {
- 'application/json': {
- message: string;
- };
- };
- };
- /** @description Unauthorized. Due to missing or invalid authentication. */
- 401: {
- headers: {
- [name: string]: unknown;
- };
- content: {
- 'application/json': {
- message: string;
- };
- };
- };
- /** @description Forbidden. You do not have permission to access this resource or to perform this action. */
- 403: {
- headers: {
- [name: string]: unknown;
- };
- content: {
- 'application/json': {
- message?: string;
- };
- };
- };
- /** @description Not Found. The requested resource was not found. */
- 404: {
- headers: {
- [name: string]: unknown;
- };
- content: {
- 'application/json': {
- message?: string;
- };
- };
- };
- /** @description Too Many Requests. You have exceeded the rate limit. Try again later. */
- 429: {
- headers: {
- [name: string]: unknown;
- };
- content: {
- 'application/json': {
- message?: string;
- };
- };
- };
- /** @description Internal Server Error. This is a problem with the server that you cannot fix. */
- 500: {
- headers: {
- [name: string]: unknown;
- };
- content: {
- 'application/json': {
- message?: string;
- };
- };
- };
- };
- };
- delete?: never;
- options?: never;
- head?: never;
- patch?: never;
- trace?: never;
- };
- '/api/auth/two-factor/get-totp-uri': {
- parameters: {
- query?: never;
- header?: never;
- path?: never;
- cookie?: never;
- };
- get?: never;
- put?: never;
- /** @description Use this endpoint to get the TOTP URI */
- post: {
- parameters: {
- query?: never;
- header?: never;
- path?: never;
- cookie?: never;
- };
- requestBody: {
- content: {
- 'application/json': {
- /** @description User password */
- password: string;
- };
- };
- };
- responses: {
- /** @description Successful response */
- 200: {
- headers: {
- [name: string]: unknown;
- };
- content: {
- 'application/json': {
- totpURI?: string;
- };
- };
- };
- /** @description Bad Request. Usually due to missing parameters, or invalid parameters. */
- 400: {
- headers: {
- [name: string]: unknown;
- };
- content: {
- 'application/json': {
- message: string;
- };
- };
- };
- /** @description Unauthorized. Due to missing or invalid authentication. */
- 401: {
- headers: {
- [name: string]: unknown;
- };
- content: {
- 'application/json': {
- message: string;
- };
- };
- };
- /** @description Forbidden. You do not have permission to access this resource or to perform this action. */
- 403: {
- headers: {
- [name: string]: unknown;
- };
- content: {
- 'application/json': {
- message?: string;
- };
- };
- };
- /** @description Not Found. The requested resource was not found. */
- 404: {
- headers: {
- [name: string]: unknown;
- };
- content: {
- 'application/json': {
- message?: string;
- };
- };
- };
- /** @description Too Many Requests. You have exceeded the rate limit. Try again later. */
- 429: {
- headers: {
- [name: string]: unknown;
- };
- content: {
- 'application/json': {
- message?: string;
- };
- };
- };
- /** @description Internal Server Error. This is a problem with the server that you cannot fix. */
- 500: {
- headers: {
- [name: string]: unknown;
- };
- content: {
- 'application/json': {
- message?: string;
- };
- };
- };
- };
- };
- delete?: never;
- options?: never;
- head?: never;
- patch?: never;
- trace?: never;
- };
- '/api/auth/two-factor/verify-totp': {
- parameters: {
- query?: never;
- header?: never;
- path?: never;
- cookie?: never;
- };
- get?: never;
- put?: never;
- /** @description Verify two factor TOTP */
- post: {
- parameters: {
- query?: never;
- header?: never;
- path?: never;
- cookie?: never;
- };
- requestBody: {
- content: {
- 'application/json': {
- /** @description The otp code to verify. Eg: "012345" */
- code: string;
- /** @description If true, the device will be trusted for 30 days. It'll be refreshed on every sign in request within this time. Eg: true */
- trustDevice?: boolean | null;
- };
- };
- };
- responses: {
- /** @description Successful response */
- 200: {
- headers: {
- [name: string]: unknown;
- };
- content: {
- 'application/json': {
- status?: boolean;
- };
- };
- };
- /** @description Bad Request. Usually due to missing parameters, or invalid parameters. */
- 400: {
- headers: {
- [name: string]: unknown;
- };
- content: {
- 'application/json': {
- message: string;
- };
- };
- };
- /** @description Unauthorized. Due to missing or invalid authentication. */
- 401: {
- headers: {
- [name: string]: unknown;
- };
- content: {
- 'application/json': {
- message: string;
- };
- };
- };
- /** @description Forbidden. You do not have permission to access this resource or to perform this action. */
- 403: {
- headers: {
- [name: string]: unknown;
- };
- content: {
- 'application/json': {
- message?: string;
- };
- };
- };
- /** @description Not Found. The requested resource was not found. */
- 404: {
- headers: {
- [name: string]: unknown;
- };
- content: {
- 'application/json': {
- message?: string;
- };
- };
- };
- /** @description Too Many Requests. You have exceeded the rate limit. Try again later. */
- 429: {
- headers: {
- [name: string]: unknown;
- };
- content: {
- 'application/json': {
- message?: string;
- };
- };
- };
- /** @description Internal Server Error. This is a problem with the server that you cannot fix. */
- 500: {
- headers: {
- [name: string]: unknown;
- };
- content: {
- 'application/json': {
- message?: string;
- };
- };
- };
- };
- };
- delete?: never;
- options?: never;
- head?: never;
- patch?: never;
- trace?: never;
- };
- '/api/auth/two-factor/send-otp': {
- parameters: {
- query?: never;
- header?: never;
- path?: never;
- cookie?: never;
- };
- get?: never;
- put?: never;
- /** @description Send two factor OTP to the user */
- post: {
- parameters: {
- query?: never;
- header?: never;
- path?: never;
- cookie?: never;
- };
- requestBody?: never;
- responses: {
- /** @description Successful response */
- 200: {
- headers: {
- [name: string]: unknown;
- };
- content: {
- 'application/json': {
- status?: boolean;
- };
- };
- };
- /** @description Bad Request. Usually due to missing parameters, or invalid parameters. */
- 400: {
- headers: {
- [name: string]: unknown;
- };
- content: {
- 'application/json': {
- message: string;
- };
- };
- };
- /** @description Unauthorized. Due to missing or invalid authentication. */
- 401: {
- headers: {
- [name: string]: unknown;
- };
- content: {
- 'application/json': {
- message: string;
- };
- };
- };
- /** @description Forbidden. You do not have permission to access this resource or to perform this action. */
- 403: {
- headers: {
- [name: string]: unknown;
- };
- content: {
- 'application/json': {
- message?: string;
- };
- };
- };
- /** @description Not Found. The requested resource was not found. */
- 404: {
- headers: {
- [name: string]: unknown;
- };
- content: {
- 'application/json': {
- message?: string;
- };
- };
- };
- /** @description Too Many Requests. You have exceeded the rate limit. Try again later. */
- 429: {
- headers: {
- [name: string]: unknown;
- };
- content: {
- 'application/json': {
- message?: string;
- };
- };
- };
- /** @description Internal Server Error. This is a problem with the server that you cannot fix. */
- 500: {
- headers: {
- [name: string]: unknown;
- };
- content: {
- 'application/json': {
- message?: string;
- };
- };
- };
- };
- };
- delete?: never;
- options?: never;
- head?: never;
- patch?: never;
- trace?: never;
- };
- '/api/auth/two-factor/verify-otp': {
- parameters: {
- query?: never;
- header?: never;
- path?: never;
- cookie?: never;
- };
- get?: never;
- put?: never;
- /** @description Verify two factor OTP */
- post: {
- parameters: {
- query?: never;
- header?: never;
- path?: never;
- cookie?: never;
- };
- requestBody: {
- content: {
- 'application/json': {
- /** @description The otp code to verify. Eg: "012345" */
- code: string;
- trustDevice?: boolean | null;
- };
- };
- };
- responses: {
- /** @description Two-factor OTP verified successfully */
- 200: {
- headers: {
- [name: string]: unknown;
- };
- content: {
- 'application/json': {
- /** @description Session token for the authenticated session */
- token: string;
- /** @description The authenticated user object */
- user: {
- /** @description Unique identifier of the user */
+ };
+ cookie?: never;
+ };
+ requestBody: {
+ content: {
+ "application/json": components["schemas"]["DecidePayoutRequestDto"];
+ };
+ };
+ responses: {
+ 200: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content: {
+ "application/json": components["schemas"]["PayoutRequestDto"];
+ };
+ };
+ };
+ };
+ PayoutsController_buildXdr: {
+ parameters: {
+ query?: never;
+ header?: never;
+ path: {
id: string;
- /**
- * Format: email
- * @description User's email address
- */
- email?: string | null;
- /** @description Whether the email is verified */
- emailVerified?: boolean | null;
- /** @description User's name */
- name?: string | null;
- /**
- * Format: uri
- * @description User's profile image URL
- */
- image?: string | null;
- /**
- * Format: date-time
- * @description Timestamp when the user was created
- */
- createdAt: string;
- /**
- * Format: date-time
- * @description Timestamp when the user was last updated
- */
- updatedAt: string;
- };
- };
- };
- };
- /** @description Bad Request. Usually due to missing parameters, or invalid parameters. */
- 400: {
- headers: {
- [name: string]: unknown;
- };
- content: {
- 'application/json': {
- message: string;
- };
- };
- };
- /** @description Unauthorized. Due to missing or invalid authentication. */
- 401: {
- headers: {
- [name: string]: unknown;
- };
- content: {
- 'application/json': {
- message: string;
- };
- };
- };
- /** @description Forbidden. You do not have permission to access this resource or to perform this action. */
- 403: {
- headers: {
- [name: string]: unknown;
- };
- content: {
- 'application/json': {
- message?: string;
- };
- };
- };
- /** @description Not Found. The requested resource was not found. */
- 404: {
- headers: {
- [name: string]: unknown;
- };
- content: {
- 'application/json': {
- message?: string;
- };
- };
- };
- /** @description Too Many Requests. You have exceeded the rate limit. Try again later. */
- 429: {
- headers: {
- [name: string]: unknown;
- };
- content: {
- 'application/json': {
- message?: string;
- };
- };
- };
- /** @description Internal Server Error. This is a problem with the server that you cannot fix. */
- 500: {
- headers: {
- [name: string]: unknown;
- };
- content: {
- 'application/json': {
- message?: string;
- };
- };
- };
- };
- };
- delete?: never;
- options?: never;
- head?: never;
- patch?: never;
- trace?: never;
- };
- '/api/auth/two-factor/verify-backup-code': {
- parameters: {
- query?: never;
- header?: never;
- path?: never;
- cookie?: never;
- };
- get?: never;
- put?: never;
- /** @description Verify a backup code for two-factor authentication */
- post: {
- parameters: {
- query?: never;
- header?: never;
- path?: never;
- cookie?: never;
- };
- requestBody: {
- content: {
- 'application/json': {
- /** @description A backup code to verify. Eg: "123456" */
- code: string;
- /** @description If true, the session cookie will not be set. */
- disableSession?: boolean | null;
- /** @description If true, the device will be trusted for 30 days. It'll be refreshed on every sign in request within this time. Eg: true */
- trustDevice?: boolean | null;
- };
- };
- };
- responses: {
- /** @description Backup code verified successfully */
- 200: {
- headers: {
- [name: string]: unknown;
- };
- content: {
- 'application/json': {
- /** @description The authenticated user object with two-factor details */
- user: {
- /** @description Unique identifier of the user */
+ };
+ cookie?: never;
+ };
+ requestBody?: never;
+ responses: {
+ 200: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content: {
+ "application/json": components["schemas"]["BuildXdrResponseDto"];
+ };
+ };
+ };
+ };
+ PayoutsController_submitSigned: {
+ parameters: {
+ query?: never;
+ header?: never;
+ path: {
id: string;
- /**
- * Format: email
- * @description User's email address
- */
- email?: string | null;
- /** @description Whether the email is verified */
- emailVerified?: boolean | null;
- /** @description User's name */
- name?: string | null;
- /**
- * Format: uri
- * @description User's profile image URL
- */
- image?: string | null;
- /** @description Whether two-factor authentication is enabled for the user */
- twoFactorEnabled: boolean;
- /**
- * Format: date-time
- * @description Timestamp when the user was created
- */
- createdAt: string;
- /**
- * Format: date-time
- * @description Timestamp when the user was last updated
- */
- updatedAt: string;
- };
- /** @description The current session object, included unless disableSession is true */
- session: {
- /** @description Session token */
- token: string;
- /** @description ID of the user associated with the session */
- userId: string;
- /**
- * Format: date-time
- * @description Timestamp when the session was created
- */
- createdAt: string;
- /**
- * Format: date-time
- * @description Timestamp when the session expires
- */
- expiresAt: string;
- };
- };
- };
- };
- /** @description Bad Request. Usually due to missing parameters, or invalid parameters. */
- 400: {
- headers: {
- [name: string]: unknown;
- };
- content: {
- 'application/json': {
- message: string;
- };
- };
- };
- /** @description Unauthorized. Due to missing or invalid authentication. */
- 401: {
- headers: {
- [name: string]: unknown;
- };
- content: {
- 'application/json': {
- message: string;
- };
- };
- };
- /** @description Forbidden. You do not have permission to access this resource or to perform this action. */
- 403: {
- headers: {
- [name: string]: unknown;
- };
- content: {
- 'application/json': {
- message?: string;
- };
- };
- };
- /** @description Not Found. The requested resource was not found. */
- 404: {
- headers: {
- [name: string]: unknown;
- };
- content: {
- 'application/json': {
- message?: string;
- };
- };
- };
- /** @description Too Many Requests. You have exceeded the rate limit. Try again later. */
- 429: {
- headers: {
- [name: string]: unknown;
- };
- content: {
- 'application/json': {
- message?: string;
- };
- };
- };
- /** @description Internal Server Error. This is a problem with the server that you cannot fix. */
- 500: {
- headers: {
- [name: string]: unknown;
- };
- content: {
- 'application/json': {
- message?: string;
- };
- };
- };
- };
- };
- delete?: never;
- options?: never;
- head?: never;
- patch?: never;
- trace?: never;
- };
- '/api/auth/two-factor/generate-backup-codes': {
- parameters: {
- query?: never;
- header?: never;
- path?: never;
- cookie?: never;
- };
- get?: never;
- put?: never;
- /** @description Generate new backup codes for two-factor authentication */
- post: {
- parameters: {
- query?: never;
- header?: never;
- path?: never;
- cookie?: never;
- };
- requestBody: {
- content: {
- 'application/json': {
- /** @description The users password. */
- password: string;
- };
- };
- };
- responses: {
- /** @description Backup codes generated successfully */
- 200: {
- headers: {
- [name: string]: unknown;
- };
- content: {
- 'application/json': {
- /**
- * @description Indicates if the backup codes were generated successfully
- * @enum {boolean}
- */
- status: true;
- /** @description Array of generated backup codes in plain text */
- backupCodes: string[];
- };
- };
- };
- /** @description Bad Request. Usually due to missing parameters, or invalid parameters. */
- 400: {
- headers: {
- [name: string]: unknown;
- };
- content: {
- 'application/json': {
- message: string;
- };
- };
- };
- /** @description Unauthorized. Due to missing or invalid authentication. */
- 401: {
- headers: {
- [name: string]: unknown;
- };
- content: {
- 'application/json': {
- message: string;
- };
- };
- };
- /** @description Forbidden. You do not have permission to access this resource or to perform this action. */
- 403: {
- headers: {
- [name: string]: unknown;
- };
- content: {
- 'application/json': {
- message?: string;
- };
- };
- };
- /** @description Not Found. The requested resource was not found. */
- 404: {
- headers: {
- [name: string]: unknown;
- };
- content: {
- 'application/json': {
- message?: string;
- };
- };
- };
- /** @description Too Many Requests. You have exceeded the rate limit. Try again later. */
- 429: {
- headers: {
- [name: string]: unknown;
- };
- content: {
- 'application/json': {
- message?: string;
- };
- };
- };
- /** @description Internal Server Error. This is a problem with the server that you cannot fix. */
- 500: {
- headers: {
- [name: string]: unknown;
- };
- content: {
- 'application/json': {
- message?: string;
- };
- };
- };
- };
- };
- delete?: never;
- options?: never;
- head?: never;
- patch?: never;
- trace?: never;
- };
- '/api/auth/two-factor/enable': {
- parameters: {
- query?: never;
- header?: never;
- path?: never;
- cookie?: never;
- };
- get?: never;
- put?: never;
- /** @description Use this endpoint to enable two factor authentication. This will generate a TOTP URI and backup codes. Once the user verifies the TOTP URI, the two factor authentication will be enabled. */
- post: {
- parameters: {
- query?: never;
- header?: never;
- path?: never;
- cookie?: never;
- };
- requestBody: {
- content: {
- 'application/json': {
- /** @description User password */
- password: string;
- /** @description Custom issuer for the TOTP URI */
- issuer?: string | null;
- };
- };
- };
- responses: {
- /** @description Successful response */
- 200: {
- headers: {
- [name: string]: unknown;
- };
- content: {
- 'application/json': {
- /** @description TOTP URI */
- totpURI?: string;
- /** @description Backup codes */
- backupCodes?: string[];
- };
- };
- };
- /** @description Bad Request. Usually due to missing parameters, or invalid parameters. */
- 400: {
- headers: {
- [name: string]: unknown;
- };
- content: {
- 'application/json': {
- message: string;
- };
- };
- };
- /** @description Unauthorized. Due to missing or invalid authentication. */
- 401: {
- headers: {
- [name: string]: unknown;
- };
- content: {
- 'application/json': {
- message: string;
- };
- };
- };
- /** @description Forbidden. You do not have permission to access this resource or to perform this action. */
- 403: {
- headers: {
- [name: string]: unknown;
- };
- content: {
- 'application/json': {
- message?: string;
- };
- };
- };
- /** @description Not Found. The requested resource was not found. */
- 404: {
- headers: {
- [name: string]: unknown;
- };
- content: {
- 'application/json': {
- message?: string;
- };
- };
- };
- /** @description Too Many Requests. You have exceeded the rate limit. Try again later. */
- 429: {
- headers: {
- [name: string]: unknown;
- };
- content: {
- 'application/json': {
- message?: string;
- };
- };
- };
- /** @description Internal Server Error. This is a problem with the server that you cannot fix. */
- 500: {
- headers: {
- [name: string]: unknown;
- };
- content: {
- 'application/json': {
- message?: string;
- };
- };
- };
- };
- };
- delete?: never;
- options?: never;
- head?: never;
- patch?: never;
- trace?: never;
- };
- '/api/auth/two-factor/disable': {
- parameters: {
- query?: never;
- header?: never;
- path?: never;
- cookie?: never;
- };
- get?: never;
- put?: never;
- /** @description Use this endpoint to disable two factor authentication. */
- post: {
- parameters: {
- query?: never;
- header?: never;
- path?: never;
- cookie?: never;
- };
- requestBody: {
- content: {
- 'application/json': {
- /** @description User password */
- password: string;
- };
- };
- };
- responses: {
- /** @description Successful response */
- 200: {
- headers: {
- [name: string]: unknown;
- };
- content: {
- 'application/json': {
- status?: boolean;
- };
- };
- };
- /** @description Bad Request. Usually due to missing parameters, or invalid parameters. */
- 400: {
- headers: {
- [name: string]: unknown;
- };
- content: {
- 'application/json': {
- message: string;
- };
- };
- };
- /** @description Unauthorized. Due to missing or invalid authentication. */
- 401: {
- headers: {
- [name: string]: unknown;
- };
- content: {
- 'application/json': {
- message: string;
- };
- };
- };
- /** @description Forbidden. You do not have permission to access this resource or to perform this action. */
- 403: {
- headers: {
- [name: string]: unknown;
- };
- content: {
- 'application/json': {
- message?: string;
- };
- };
- };
- /** @description Not Found. The requested resource was not found. */
- 404: {
- headers: {
- [name: string]: unknown;
- };
- content: {
- 'application/json': {
- message?: string;
- };
- };
- };
- /** @description Too Many Requests. You have exceeded the rate limit. Try again later. */
- 429: {
- headers: {
- [name: string]: unknown;
- };
- content: {
- 'application/json': {
- message?: string;
- };
- };
- };
- /** @description Internal Server Error. This is a problem with the server that you cannot fix. */
- 500: {
- headers: {
- [name: string]: unknown;
- };
- content: {
- 'application/json': {
- message?: string;
- };
- };
- };
- };
- };
- delete?: never;
- options?: never;
- head?: never;
- patch?: never;
- trace?: never;
- };
- '/api/auth/one-tap/callback': {
- parameters: {
- query?: never;
- header?: never;
- path?: never;
- cookie?: never;
- };
- get?: never;
- put?: never;
- /** @description Use this endpoint to authenticate with Google One Tap */
- post: {
- parameters: {
- query?: never;
- header?: never;
- path?: never;
- cookie?: never;
- };
- requestBody: {
- content: {
- 'application/json': {
- /** @description Google ID token, which the client obtains from the One Tap API */
- idToken: string;
- };
- };
- };
- responses: {
- /** @description Successful response */
- 200: {
- headers: {
- [name: string]: unknown;
- };
- content: {
- 'application/json': {
- session?: components['schemas']['Session'];
- user?: components['schemas']['User'];
- };
- };
- };
- /** @description Invalid token */
- 400: {
- headers: {
- [name: string]: unknown;
- };
- content?: never;
- };
- /** @description Unauthorized. Due to missing or invalid authentication. */
- 401: {
- headers: {
- [name: string]: unknown;
- };
- content: {
- 'application/json': {
- message: string;
- };
- };
- };
- /** @description Forbidden. You do not have permission to access this resource or to perform this action. */
- 403: {
- headers: {
- [name: string]: unknown;
- };
- content: {
- 'application/json': {
- message?: string;
- };
- };
- };
- /** @description Not Found. The requested resource was not found. */
- 404: {
- headers: {
- [name: string]: unknown;
- };
- content: {
- 'application/json': {
- message?: string;
- };
- };
- };
- /** @description Too Many Requests. You have exceeded the rate limit. Try again later. */
- 429: {
- headers: {
- [name: string]: unknown;
- };
- content: {
- 'application/json': {
- message?: string;
- };
- };
- };
- /** @description Internal Server Error. This is a problem with the server that you cannot fix. */
- 500: {
- headers: {
- [name: string]: unknown;
- };
- content: {
- 'application/json': {
- message?: string;
- };
- };
- };
- };
- };
- delete?: never;
- options?: never;
- head?: never;
- patch?: never;
- trace?: never;
- };
- '/api/auth/email-otp/send-verification-otp': {
- parameters: {
- query?: never;
- header?: never;
- path?: never;
- cookie?: never;
- };
- get?: never;
- put?: never;
- /** @description Send a verification OTP to an email */
- post: operations['sendEmailVerificationOTP'];
- delete?: never;
- options?: never;
- head?: never;
- patch?: never;
- trace?: never;
- };
- '/api/auth/email-otp/check-verification-otp': {
- parameters: {
- query?: never;
- header?: never;
- path?: never;
- cookie?: never;
- };
- get?: never;
- put?: never;
- /** @description Verify an email with an OTP */
- post: operations['verifyEmailWithOTP'];
- delete?: never;
- options?: never;
- head?: never;
- patch?: never;
- trace?: never;
- };
- '/api/auth/email-otp/verify-email': {
- parameters: {
- query?: never;
- header?: never;
- path?: never;
- cookie?: never;
- };
- get?: never;
- put?: never;
- /** @description Verify email with OTP */
- post: {
- parameters: {
- query?: never;
- header?: never;
- path?: never;
- cookie?: never;
- };
- requestBody: {
- content: {
- 'application/json': {
- /** @description Email address to verify */
- email: string;
- /** @description OTP to verify */
- otp: string;
- };
- };
- };
- responses: {
- /** @description Success */
- 200: {
- headers: {
- [name: string]: unknown;
- };
- content: {
- 'application/json': {
- /**
- * @description Indicates if the verification was successful
- * @enum {boolean}
- */
- status: true;
- /** @description Session token if autoSignInAfterVerification is enabled, otherwise null */
- token: string | null;
- user: components['schemas']['User'];
- };
- };
- };
- /** @description Bad Request. Usually due to missing parameters, or invalid parameters. */
- 400: {
- headers: {
- [name: string]: unknown;
- };
- content: {
- 'application/json': {
- message: string;
- };
- };
- };
- /** @description Unauthorized. Due to missing or invalid authentication. */
- 401: {
- headers: {
- [name: string]: unknown;
- };
- content: {
- 'application/json': {
- message: string;
- };
- };
- };
- /** @description Forbidden. You do not have permission to access this resource or to perform this action. */
- 403: {
- headers: {
- [name: string]: unknown;
- };
- content: {
- 'application/json': {
- message?: string;
- };
- };
- };
- /** @description Not Found. The requested resource was not found. */
- 404: {
- headers: {
- [name: string]: unknown;
- };
- content: {
- 'application/json': {
- message?: string;
- };
- };
- };
- /** @description Too Many Requests. You have exceeded the rate limit. Try again later. */
- 429: {
- headers: {
- [name: string]: unknown;
- };
- content: {
- 'application/json': {
- message?: string;
- };
- };
- };
- /** @description Internal Server Error. This is a problem with the server that you cannot fix. */
- 500: {
- headers: {
- [name: string]: unknown;
- };
- content: {
- 'application/json': {
- message?: string;
- };
- };
- };
- };
- };
- delete?: never;
- options?: never;
- head?: never;
- patch?: never;
- trace?: never;
- };
- '/api/auth/sign-in/email-otp': {
- parameters: {
- query?: never;
- header?: never;
- path?: never;
- cookie?: never;
- };
- get?: never;
- put?: never;
- /** @description Sign in with email and OTP */
- post: operations['signInWithEmailOTP'];
- delete?: never;
- options?: never;
- head?: never;
- patch?: never;
- trace?: never;
- };
- '/api/auth/email-otp/request-password-reset': {
- parameters: {
- query?: never;
- header?: never;
- path?: never;
- cookie?: never;
- };
- get?: never;
- put?: never;
- /** @description Request password reset with email and OTP */
- post: operations['requestPasswordResetWithEmailOTP'];
- delete?: never;
- options?: never;
- head?: never;
- patch?: never;
- trace?: never;
- };
- '/api/auth/forget-password/email-otp': {
- parameters: {
- query?: never;
- header?: never;
- path?: never;
- cookie?: never;
- };
- get?: never;
- put?: never;
- /** @description Deprecated: Use /email-otp/request-password-reset instead. */
- post: operations['forgetPasswordWithEmailOTP'];
- delete?: never;
- options?: never;
- head?: never;
- patch?: never;
- trace?: never;
- };
- '/api/auth/email-otp/reset-password': {
- parameters: {
- query?: never;
- header?: never;
- path?: never;
- cookie?: never;
- };
- get?: never;
- put?: never;
- /** @description Reset password with email and OTP */
- post: operations['resetPasswordWithEmailOTP'];
- delete?: never;
- options?: never;
- head?: never;
- patch?: never;
- trace?: never;
- };
- '/api/auth/organization/create': {
- parameters: {
- query?: never;
- header?: never;
- path?: never;
- cookie?: never;
- };
- get?: never;
- put?: never;
- /** @description Create an organization */
- post: {
- parameters: {
- query?: never;
- header?: never;
- path?: never;
- cookie?: never;
- };
- requestBody: {
- content: {
- 'application/json': {
- /** @description The name of the organization */
- name: string;
- /** @description The slug of the organization */
- slug: string;
- /** @description The user id of the organization creator. If not provided, the current user will be used. Should only be used by admins or when called by the server. server-only. Eg: "user-id" */
- userId?: string | null;
- /** @description The logo of the organization */
- logo?: string | null;
- /** @description The metadata of the organization */
- metadata?: string | null;
- /** @description Whether to keep the current active organization active after creating a new one. Eg: true */
- keepCurrentActiveOrganization?: boolean | null;
- };
- };
- };
- responses: {
- /** @description Success */
- 200: {
- headers: {
- [name: string]: unknown;
- };
- content: {
- 'application/json': components['schemas']['Organization'];
- };
- };
- /** @description Bad Request. Usually due to missing parameters, or invalid parameters. */
- 400: {
- headers: {
- [name: string]: unknown;
- };
- content: {
- 'application/json': {
- message: string;
- };
- };
- };
- /** @description Unauthorized. Due to missing or invalid authentication. */
- 401: {
- headers: {
- [name: string]: unknown;
- };
- content: {
- 'application/json': {
- message: string;
- };
- };
- };
- /** @description Forbidden. You do not have permission to access this resource or to perform this action. */
- 403: {
- headers: {
- [name: string]: unknown;
- };
- content: {
- 'application/json': {
- message?: string;
- };
- };
- };
- /** @description Not Found. The requested resource was not found. */
- 404: {
- headers: {
- [name: string]: unknown;
- };
- content: {
- 'application/json': {
- message?: string;
- };
- };
- };
- /** @description Too Many Requests. You have exceeded the rate limit. Try again later. */
- 429: {
- headers: {
- [name: string]: unknown;
- };
- content: {
- 'application/json': {
- message?: string;
- };
- };
- };
- /** @description Internal Server Error. This is a problem with the server that you cannot fix. */
- 500: {
- headers: {
- [name: string]: unknown;
- };
- content: {
- 'application/json': {
- message?: string;
- };
- };
- };
- };
- };
- delete?: never;
- options?: never;
- head?: never;
- patch?: never;
- trace?: never;
- };
- '/api/auth/organization/update': {
- parameters: {
- query?: never;
- header?: never;
- path?: never;
- cookie?: never;
- };
- get?: never;
- put?: never;
- /** @description Update an organization */
- post: {
- parameters: {
- query?: never;
- header?: never;
- path?: never;
- cookie?: never;
- };
- requestBody: {
- content: {
- 'application/json': {
- data: {
- /** @description The name of the organization */
- name?: string | null;
- /** @description The slug of the organization */
- slug?: string | null;
- /** @description The logo of the organization */
- logo?: string | null;
- /** @description The metadata of the organization */
- metadata?: string | null;
- };
- /** @description The organization ID. Eg: "org-id" */
- organizationId?: string | null;
- };
- };
- };
- responses: {
- /** @description Success */
- 200: {
- headers: {
- [name: string]: unknown;
- };
- content: {
- 'application/json': components['schemas']['Organization'];
- };
- };
- /** @description Bad Request. Usually due to missing parameters, or invalid parameters. */
- 400: {
- headers: {
- [name: string]: unknown;
- };
- content: {
- 'application/json': {
- message: string;
- };
- };
- };
- /** @description Unauthorized. Due to missing or invalid authentication. */
- 401: {
- headers: {
- [name: string]: unknown;
- };
- content: {
- 'application/json': {
- message: string;
- };
- };
- };
- /** @description Forbidden. You do not have permission to access this resource or to perform this action. */
- 403: {
- headers: {
- [name: string]: unknown;
- };
- content: {
- 'application/json': {
- message?: string;
- };
- };
- };
- /** @description Not Found. The requested resource was not found. */
- 404: {
- headers: {
- [name: string]: unknown;
- };
- content: {
- 'application/json': {
- message?: string;
- };
- };
- };
- /** @description Too Many Requests. You have exceeded the rate limit. Try again later. */
- 429: {
- headers: {
- [name: string]: unknown;
- };
- content: {
- 'application/json': {
- message?: string;
- };
- };
- };
- /** @description Internal Server Error. This is a problem with the server that you cannot fix. */
- 500: {
- headers: {
- [name: string]: unknown;
- };
- content: {
- 'application/json': {
- message?: string;
- };
- };
- };
- };
- };
- delete?: never;
- options?: never;
- head?: never;
- patch?: never;
- trace?: never;
- };
- '/api/auth/organization/delete': {
- parameters: {
- query?: never;
- header?: never;
- path?: never;
- cookie?: never;
- };
- get?: never;
- put?: never;
- /** @description Delete an organization */
- post: {
- parameters: {
- query?: never;
- header?: never;
- path?: never;
- cookie?: never;
- };
- requestBody: {
- content: {
- 'application/json': {
- /** @description The organization id to delete */
- organizationId: string;
- };
- };
- };
- responses: {
- /** @description Success */
- 200: {
- headers: {
- [name: string]: unknown;
- };
- content: {
- 'application/json': string;
- };
- };
- /** @description Bad Request. Usually due to missing parameters, or invalid parameters. */
- 400: {
- headers: {
- [name: string]: unknown;
- };
- content: {
- 'application/json': {
- message: string;
- };
- };
- };
- /** @description Unauthorized. Due to missing or invalid authentication. */
- 401: {
- headers: {
- [name: string]: unknown;
- };
- content: {
- 'application/json': {
- message: string;
- };
- };
- };
- /** @description Forbidden. You do not have permission to access this resource or to perform this action. */
- 403: {
- headers: {
- [name: string]: unknown;
- };
- content: {
- 'application/json': {
- message?: string;
- };
- };
- };
- /** @description Not Found. The requested resource was not found. */
- 404: {
- headers: {
- [name: string]: unknown;
- };
- content: {
- 'application/json': {
- message?: string;
- };
- };
- };
- /** @description Too Many Requests. You have exceeded the rate limit. Try again later. */
- 429: {
- headers: {
- [name: string]: unknown;
- };
- content: {
- 'application/json': {
- message?: string;
- };
- };
- };
- /** @description Internal Server Error. This is a problem with the server that you cannot fix. */
- 500: {
- headers: {
- [name: string]: unknown;
- };
- content: {
- 'application/json': {
- message?: string;
- };
- };
- };
- };
- };
- delete?: never;
- options?: never;
- head?: never;
- patch?: never;
- trace?: never;
- };
- '/api/auth/organization/set-active': {
- parameters: {
- query?: never;
- header?: never;
- path?: never;
- cookie?: never;
- };
- get?: never;
- put?: never;
- /** @description Set the active organization */
- post: operations['setActiveOrganization'];
- delete?: never;
- options?: never;
- head?: never;
- patch?: never;
- trace?: never;
- };
- '/api/auth/organization/get-full-organization': {
- parameters: {
- query?: never;
- header?: never;
- path?: never;
- cookie?: never;
- };
- /** @description Get the full organization */
- get: operations['getOrganization'];
- put?: never;
- post?: never;
- delete?: never;
- options?: never;
- head?: never;
- patch?: never;
- trace?: never;
- };
- '/api/auth/organization/list': {
- parameters: {
- query?: never;
- header?: never;
- path?: never;
- cookie?: never;
- };
- /** @description List all organizations */
- get: {
- parameters: {
- query?: never;
- header?: never;
- path?: never;
- cookie?: never;
- };
- requestBody?: never;
- responses: {
- /** @description Success */
- 200: {
- headers: {
- [name: string]: unknown;
- };
- content: {
- 'application/json': components['schemas']['Organization'][];
- };
- };
- /** @description Bad Request. Usually due to missing parameters, or invalid parameters. */
- 400: {
- headers: {
- [name: string]: unknown;
- };
- content: {
- 'application/json': {
- message: string;
- };
- };
- };
- /** @description Unauthorized. Due to missing or invalid authentication. */
- 401: {
- headers: {
- [name: string]: unknown;
- };
- content: {
- 'application/json': {
- message: string;
- };
- };
- };
- /** @description Forbidden. You do not have permission to access this resource or to perform this action. */
- 403: {
- headers: {
- [name: string]: unknown;
- };
- content: {
- 'application/json': {
- message?: string;
- };
- };
- };
- /** @description Not Found. The requested resource was not found. */
- 404: {
- headers: {
- [name: string]: unknown;
- };
- content: {
- 'application/json': {
- message?: string;
- };
- };
- };
- /** @description Too Many Requests. You have exceeded the rate limit. Try again later. */
- 429: {
- headers: {
- [name: string]: unknown;
- };
- content: {
- 'application/json': {
- message?: string;
- };
- };
- };
- /** @description Internal Server Error. This is a problem with the server that you cannot fix. */
- 500: {
- headers: {
- [name: string]: unknown;
- };
- content: {
- 'application/json': {
- message?: string;
- };
- };
- };
- };
- };
- put?: never;
- post?: never;
- delete?: never;
- options?: never;
- head?: never;
- patch?: never;
- trace?: never;
- };
- '/api/auth/organization/invite-member': {
- parameters: {
- query?: never;
- header?: never;
- path?: never;
- cookie?: never;
- };
- get?: never;
- put?: never;
- /** @description Create an invitation to an organization */
- post: operations['createOrganizationInvitation'];
- delete?: never;
- options?: never;
- head?: never;
- patch?: never;
- trace?: never;
- };
- '/api/auth/organization/cancel-invitation': {
- parameters: {
- query?: never;
- header?: never;
- path?: never;
- cookie?: never;
- };
- get?: never;
- put?: never;
- post: {
- parameters: {
- query?: never;
- header?: never;
- path?: never;
- cookie?: never;
- };
- requestBody: {
- content: {
- 'application/json': {
- /** @description The ID of the invitation to cancel */
- invitationId: string;
- };
- };
- };
- responses: {
- /** @description Bad Request. Usually due to missing parameters, or invalid parameters. */
- 400: {
- headers: {
- [name: string]: unknown;
- };
- content: {
- 'application/json': {
- message: string;
- };
- };
- };
- /** @description Unauthorized. Due to missing or invalid authentication. */
- 401: {
- headers: {
- [name: string]: unknown;
- };
- content: {
- 'application/json': {
- message: string;
- };
- };
- };
- /** @description Forbidden. You do not have permission to access this resource or to perform this action. */
- 403: {
- headers: {
- [name: string]: unknown;
- };
- content: {
- 'application/json': {
- message?: string;
- };
- };
- };
- /** @description Not Found. The requested resource was not found. */
- 404: {
- headers: {
- [name: string]: unknown;
- };
- content: {
- 'application/json': {
- message?: string;
- };
- };
- };
- /** @description Too Many Requests. You have exceeded the rate limit. Try again later. */
- 429: {
- headers: {
- [name: string]: unknown;
- };
- content: {
- 'application/json': {
- message?: string;
- };
- };
- };
- /** @description Internal Server Error. This is a problem with the server that you cannot fix. */
- 500: {
- headers: {
- [name: string]: unknown;
- };
- content: {
- 'application/json': {
- message?: string;
- };
- };
- };
- };
- };
- delete?: never;
- options?: never;
- head?: never;
- patch?: never;
- trace?: never;
- };
- '/api/auth/organization/accept-invitation': {
- parameters: {
- query?: never;
- header?: never;
- path?: never;
- cookie?: never;
- };
- get?: never;
- put?: never;
- /** @description Accept an invitation to an organization */
- post: {
- parameters: {
- query?: never;
- header?: never;
- path?: never;
- cookie?: never;
- };
- requestBody: {
- content: {
- 'application/json': {
- /** @description The ID of the invitation to accept */
- invitationId: string;
- };
- };
- };
- responses: {
- /** @description Success */
- 200: {
- headers: {
- [name: string]: unknown;
- };
- content: {
- 'application/json': {
- invitation?: Record;
- member?: Record;
- };
- };
- };
- /** @description Bad Request. Usually due to missing parameters, or invalid parameters. */
- 400: {
- headers: {
- [name: string]: unknown;
- };
- content: {
- 'application/json': {
- message: string;
- };
- };
- };
- /** @description Unauthorized. Due to missing or invalid authentication. */
- 401: {
- headers: {
- [name: string]: unknown;
- };
- content: {
- 'application/json': {
- message: string;
- };
- };
- };
- /** @description Forbidden. You do not have permission to access this resource or to perform this action. */
- 403: {
- headers: {
- [name: string]: unknown;
- };
- content: {
- 'application/json': {
- message?: string;
- };
- };
- };
- /** @description Not Found. The requested resource was not found. */
- 404: {
- headers: {
- [name: string]: unknown;
- };
- content: {
- 'application/json': {
- message?: string;
- };
- };
- };
- /** @description Too Many Requests. You have exceeded the rate limit. Try again later. */
- 429: {
- headers: {
- [name: string]: unknown;
- };
- content: {
- 'application/json': {
- message?: string;
- };
- };
- };
- /** @description Internal Server Error. This is a problem with the server that you cannot fix. */
- 500: {
- headers: {
- [name: string]: unknown;
- };
- content: {
- 'application/json': {
- message?: string;
- };
- };
- };
- };
- };
- delete?: never;
- options?: never;
- head?: never;
- patch?: never;
- trace?: never;
- };
- '/api/auth/organization/get-invitation': {
- parameters: {
- query?: never;
- header?: never;
- path?: never;
- cookie?: never;
- };
- /** @description Get an invitation by ID */
- get: {
- parameters: {
- query?: {
- id?: string;
- };
- header?: never;
- path?: never;
- cookie?: never;
- };
- requestBody?: never;
- responses: {
- /** @description Success */
- 200: {
- headers: {
- [name: string]: unknown;
- };
- content: {
- 'application/json': {
- id: string;
- email: string;
- role: string;
- organizationId: string;
- inviterId: string;
- status: string;
- expiresAt: string;
- organizationName: string;
- organizationSlug: string;
- inviterEmail: string;
- };
- };
- };
- /** @description Bad Request. Usually due to missing parameters, or invalid parameters. */
- 400: {
- headers: {
- [name: string]: unknown;
- };
- content: {
- 'application/json': {
- message: string;
- };
- };
- };
- /** @description Unauthorized. Due to missing or invalid authentication. */
- 401: {
- headers: {
- [name: string]: unknown;
- };
- content: {
- 'application/json': {
- message: string;
- };
- };
- };
- /** @description Forbidden. You do not have permission to access this resource or to perform this action. */
- 403: {
- headers: {
- [name: string]: unknown;
- };
- content: {
- 'application/json': {
- message?: string;
- };
- };
- };
- /** @description Not Found. The requested resource was not found. */
- 404: {
- headers: {
- [name: string]: unknown;
- };
- content: {
- 'application/json': {
- message?: string;
- };
- };
- };
- /** @description Too Many Requests. You have exceeded the rate limit. Try again later. */
- 429: {
- headers: {
- [name: string]: unknown;
- };
- content: {
- 'application/json': {
- message?: string;
- };
- };
- };
- /** @description Internal Server Error. This is a problem with the server that you cannot fix. */
- 500: {
- headers: {
- [name: string]: unknown;
- };
- content: {
- 'application/json': {
- message?: string;
- };
- };
- };
- };
- };
- put?: never;
- post?: never;
- delete?: never;
- options?: never;
- head?: never;
- patch?: never;
- trace?: never;
- };
- '/api/auth/organization/reject-invitation': {
- parameters: {
- query?: never;
- header?: never;
- path?: never;
- cookie?: never;
- };
- get?: never;
- put?: never;
- /** @description Reject an invitation to an organization */
- post: {
- parameters: {
- query?: never;
- header?: never;
- path?: never;
- cookie?: never;
- };
- requestBody: {
- content: {
- 'application/json': {
- /** @description The ID of the invitation to reject */
- invitationId: string;
- };
- };
- };
- responses: {
- /** @description Success */
- 200: {
- headers: {
- [name: string]: unknown;
- };
- content: {
- 'application/json': {
- invitation?: Record;
- member?: Record | null;
- };
- };
- };
- /** @description Bad Request. Usually due to missing parameters, or invalid parameters. */
- 400: {
- headers: {
- [name: string]: unknown;
- };
- content: {
- 'application/json': {
- message: string;
- };
- };
- };
- /** @description Unauthorized. Due to missing or invalid authentication. */
- 401: {
- headers: {
- [name: string]: unknown;
- };
- content: {
- 'application/json': {
- message: string;
- };
- };
- };
- /** @description Forbidden. You do not have permission to access this resource or to perform this action. */
- 403: {
- headers: {
- [name: string]: unknown;
- };
- content: {
- 'application/json': {
- message?: string;
- };
- };
- };
- /** @description Not Found. The requested resource was not found. */
- 404: {
- headers: {
- [name: string]: unknown;
- };
- content: {
- 'application/json': {
- message?: string;
- };
- };
- };
- /** @description Too Many Requests. You have exceeded the rate limit. Try again later. */
- 429: {
- headers: {
- [name: string]: unknown;
- };
- content: {
- 'application/json': {
- message?: string;
- };
- };
- };
- /** @description Internal Server Error. This is a problem with the server that you cannot fix. */
- 500: {
- headers: {
- [name: string]: unknown;
- };
- content: {
- 'application/json': {
- message?: string;
- };
- };
- };
- };
- };
- delete?: never;
- options?: never;
- head?: never;
- patch?: never;
- trace?: never;
- };
- '/api/auth/organization/list-invitations': {
- parameters: {
- query?: never;
- header?: never;
- path?: never;
- cookie?: never;
- };
- get: {
- parameters: {
- query?: never;
- header?: never;
- path?: never;
- cookie?: never;
- };
- requestBody?: never;
- responses: {
- /** @description Bad Request. Usually due to missing parameters, or invalid parameters. */
- 400: {
- headers: {
- [name: string]: unknown;
- };
- content: {
- 'application/json': {
- message: string;
- };
- };
- };
- /** @description Unauthorized. Due to missing or invalid authentication. */
- 401: {
- headers: {
- [name: string]: unknown;
- };
- content: {
- 'application/json': {
- message: string;
- };
- };
- };
- /** @description Forbidden. You do not have permission to access this resource or to perform this action. */
- 403: {
- headers: {
- [name: string]: unknown;
- };
- content: {
- 'application/json': {
- message?: string;
- };
- };
- };
- /** @description Not Found. The requested resource was not found. */
- 404: {
- headers: {
- [name: string]: unknown;
- };
- content: {
- 'application/json': {
- message?: string;
- };
- };
- };
- /** @description Too Many Requests. You have exceeded the rate limit. Try again later. */
- 429: {
- headers: {
- [name: string]: unknown;
- };
- content: {
- 'application/json': {
- message?: string;
- };
- };
- };
- /** @description Internal Server Error. This is a problem with the server that you cannot fix. */
- 500: {
- headers: {
- [name: string]: unknown;
- };
- content: {
- 'application/json': {
- message?: string;
- };
- };
- };
- };
- };
- put?: never;
- post?: never;
- delete?: never;
- options?: never;
- head?: never;
- patch?: never;
- trace?: never;
- };
- '/api/auth/organization/get-active-member': {
- parameters: {
- query?: never;
- header?: never;
- path?: never;
- cookie?: never;
- };
- /** @description Get the member details of the active organization */
- get: {
- parameters: {
- query?: never;
- header?: never;
- path?: never;
- cookie?: never;
- };
- requestBody?: never;
- responses: {
- /** @description Success */
- 200: {
- headers: {
- [name: string]: unknown;
- };
- content: {
- 'application/json': {
- id: string;
- userId: string;
- organizationId: string;
- role: string;
- };
- };
- };
- /** @description Bad Request. Usually due to missing parameters, or invalid parameters. */
- 400: {
- headers: {
- [name: string]: unknown;
- };
- content: {
- 'application/json': {
- message: string;
- };
- };
- };
- /** @description Unauthorized. Due to missing or invalid authentication. */
- 401: {
- headers: {
- [name: string]: unknown;
- };
- content: {
- 'application/json': {
- message: string;
- };
- };
- };
- /** @description Forbidden. You do not have permission to access this resource or to perform this action. */
- 403: {
- headers: {
- [name: string]: unknown;
- };
- content: {
- 'application/json': {
- message?: string;
- };
- };
- };
- /** @description Not Found. The requested resource was not found. */
- 404: {
- headers: {
- [name: string]: unknown;
- };
- content: {
- 'application/json': {
- message?: string;
- };
- };
- };
- /** @description Too Many Requests. You have exceeded the rate limit. Try again later. */
- 429: {
- headers: {
- [name: string]: unknown;
- };
- content: {
- 'application/json': {
- message?: string;
- };
- };
- };
- /** @description Internal Server Error. This is a problem with the server that you cannot fix. */
- 500: {
- headers: {
- [name: string]: unknown;
- };
- content: {
- 'application/json': {
- message?: string;
- };
- };
- };
- };
- };
- put?: never;
- post?: never;
- delete?: never;
- options?: never;
- head?: never;
- patch?: never;
- trace?: never;
- };
- '/api/auth/organization/check-slug': {
- parameters: {
- query?: never;
- header?: never;
- path?: never;
- cookie?: never;
- };
- get?: never;
- put?: never;
- post: {
- parameters: {
- query?: never;
- header?: never;
- path?: never;
- cookie?: never;
- };
- requestBody: {
- content: {
- 'application/json': {
- /** @description The organization slug to check. Eg: "my-org" */
- slug: string;
- };
- };
- };
- responses: {
- /** @description Bad Request. Usually due to missing parameters, or invalid parameters. */
- 400: {
- headers: {
- [name: string]: unknown;
- };
- content: {
- 'application/json': {
- message: string;
- };
- };
- };
- /** @description Unauthorized. Due to missing or invalid authentication. */
- 401: {
- headers: {
- [name: string]: unknown;
- };
- content: {
- 'application/json': {
- message: string;
- };
- };
- };
- /** @description Forbidden. You do not have permission to access this resource or to perform this action. */
- 403: {
- headers: {
- [name: string]: unknown;
- };
- content: {
- 'application/json': {
- message?: string;
- };
- };
- };
- /** @description Not Found. The requested resource was not found. */
- 404: {
- headers: {
- [name: string]: unknown;
- };
- content: {
- 'application/json': {
- message?: string;
- };
- };
- };
- /** @description Too Many Requests. You have exceeded the rate limit. Try again later. */
- 429: {
- headers: {
- [name: string]: unknown;
- };
- content: {
- 'application/json': {
- message?: string;
- };
- };
- };
- /** @description Internal Server Error. This is a problem with the server that you cannot fix. */
- 500: {
- headers: {
- [name: string]: unknown;
- };
- content: {
- 'application/json': {
- message?: string;
- };
- };
- };
- };
- };
- delete?: never;
- options?: never;
- head?: never;
- patch?: never;
- trace?: never;
- };
- '/api/auth/organization/remove-member': {
- parameters: {
- query?: never;
- header?: never;
- path?: never;
- cookie?: never;
- };
- get?: never;
- put?: never;
- /** @description Remove a member from an organization */
- post: {
- parameters: {
- query?: never;
- header?: never;
- path?: never;
- cookie?: never;
- };
- requestBody: {
- content: {
- 'application/json': {
- /** @description The ID or email of the member to remove */
- memberIdOrEmail: string;
- /** @description The ID of the organization to remove the member from. If not provided, the active organization will be used. Eg: "org-id" */
- organizationId?: string | null;
- };
- };
- };
- responses: {
- /** @description Success */
- 200: {
- headers: {
- [name: string]: unknown;
- };
- content: {
- 'application/json': {
- member: {
+ };
+ cookie?: never;
+ };
+ requestBody: {
+ content: {
+ "application/json": components["schemas"]["SubmitPayoutSignedXdrDto"];
+ };
+ };
+ responses: {
+ 200: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content: {
+ "application/json": components["schemas"]["PayoutRequestDto"];
+ };
+ };
+ };
+ };
+ PayoutsController_execute: {
+ parameters: {
+ query?: never;
+ header?: never;
+ path: {
id: string;
- userId: string;
- organizationId: string;
- role: string;
- };
- };
- };
- };
- /** @description Bad Request. Usually due to missing parameters, or invalid parameters. */
- 400: {
- headers: {
- [name: string]: unknown;
- };
- content: {
- 'application/json': {
- message: string;
- };
- };
- };
- /** @description Unauthorized. Due to missing or invalid authentication. */
- 401: {
- headers: {
- [name: string]: unknown;
- };
- content: {
- 'application/json': {
- message: string;
- };
- };
- };
- /** @description Forbidden. You do not have permission to access this resource or to perform this action. */
- 403: {
- headers: {
- [name: string]: unknown;
- };
- content: {
- 'application/json': {
- message?: string;
- };
- };
- };
- /** @description Not Found. The requested resource was not found. */
- 404: {
- headers: {
- [name: string]: unknown;
- };
- content: {
- 'application/json': {
- message?: string;
- };
- };
- };
- /** @description Too Many Requests. You have exceeded the rate limit. Try again later. */
- 429: {
- headers: {
- [name: string]: unknown;
- };
- content: {
- 'application/json': {
- message?: string;
- };
- };
- };
- /** @description Internal Server Error. This is a problem with the server that you cannot fix. */
- 500: {
- headers: {
- [name: string]: unknown;
- };
- content: {
- 'application/json': {
- message?: string;
- };
- };
- };
- };
- };
- delete?: never;
- options?: never;
- head?: never;
- patch?: never;
- trace?: never;
- };
- '/api/auth/organization/update-member-role': {
- parameters: {
- query?: never;
- header?: never;
- path?: never;
- cookie?: never;
- };
- get?: never;
- put?: never;
- /** @description Update the role of a member in an organization */
- post: operations['updateOrganizationMemberRole'];
- delete?: never;
- options?: never;
- head?: never;
- patch?: never;
- trace?: never;
- };
- '/api/auth/organization/leave': {
- parameters: {
- query?: never;
- header?: never;
- path?: never;
- cookie?: never;
- };
- get?: never;
- put?: never;
- post: {
- parameters: {
- query?: never;
- header?: never;
- path?: never;
- cookie?: never;
- };
- requestBody: {
- content: {
- 'application/json': {
- /** @description The organization Id for the member to leave. Eg: "organization-id" */
- organizationId: string;
- };
- };
- };
- responses: {
- /** @description Bad Request. Usually due to missing parameters, or invalid parameters. */
- 400: {
- headers: {
- [name: string]: unknown;
- };
- content: {
- 'application/json': {
- message: string;
- };
- };
- };
- /** @description Unauthorized. Due to missing or invalid authentication. */
- 401: {
- headers: {
- [name: string]: unknown;
- };
- content: {
- 'application/json': {
- message: string;
- };
- };
- };
- /** @description Forbidden. You do not have permission to access this resource or to perform this action. */
- 403: {
- headers: {
- [name: string]: unknown;
- };
- content: {
- 'application/json': {
- message?: string;
- };
- };
- };
- /** @description Not Found. The requested resource was not found. */
- 404: {
- headers: {
- [name: string]: unknown;
- };
- content: {
- 'application/json': {
- message?: string;
- };
- };
- };
- /** @description Too Many Requests. You have exceeded the rate limit. Try again later. */
- 429: {
- headers: {
- [name: string]: unknown;
- };
- content: {
- 'application/json': {
- message?: string;
- };
- };
- };
- /** @description Internal Server Error. This is a problem with the server that you cannot fix. */
- 500: {
- headers: {
- [name: string]: unknown;
- };
- content: {
- 'application/json': {
- message?: string;
- };
- };
- };
- };
- };
- delete?: never;
- options?: never;
- head?: never;
- patch?: never;
- trace?: never;
- };
- '/api/auth/organization/list-user-invitations': {
- parameters: {
- query?: never;
- header?: never;
- path?: never;
- cookie?: never;
- };
- /** @description List all invitations a user has received */
- get: {
- parameters: {
- query?: never;
- header?: never;
- path?: never;
- cookie?: never;
- };
- requestBody?: never;
- responses: {
- /** @description Success */
- 200: {
- headers: {
- [name: string]: unknown;
- };
- content: {
- 'application/json': {
- id: string;
- email: string;
- role: string;
- organizationId: string;
- organizationName: string;
- /** @description The ID of the user who created the invitation */
- inviterId: string;
- /** @description The ID of the team associated with the invitation */
- teamId?: string | null;
- status: string;
- expiresAt: string;
- createdAt: string;
- }[];
- };
- };
- /** @description Bad Request. Usually due to missing parameters, or invalid parameters. */
- 400: {
- headers: {
- [name: string]: unknown;
- };
- content: {
- 'application/json': {
- message: string;
- };
- };
- };
- /** @description Unauthorized. Due to missing or invalid authentication. */
- 401: {
- headers: {
- [name: string]: unknown;
- };
- content: {
- 'application/json': {
- message: string;
- };
- };
- };
- /** @description Forbidden. You do not have permission to access this resource or to perform this action. */
- 403: {
- headers: {
- [name: string]: unknown;
- };
- content: {
- 'application/json': {
- message?: string;
- };
- };
- };
- /** @description Not Found. The requested resource was not found. */
- 404: {
- headers: {
- [name: string]: unknown;
- };
- content: {
- 'application/json': {
- message?: string;
- };
- };
- };
- /** @description Too Many Requests. You have exceeded the rate limit. Try again later. */
- 429: {
- headers: {
- [name: string]: unknown;
- };
- content: {
- 'application/json': {
- message?: string;
- };
- };
- };
- /** @description Internal Server Error. This is a problem with the server that you cannot fix. */
- 500: {
- headers: {
- [name: string]: unknown;
- };
- content: {
- 'application/json': {
- message?: string;
- };
- };
- };
- };
- };
- put?: never;
- post?: never;
- delete?: never;
- options?: never;
- head?: never;
- patch?: never;
- trace?: never;
- };
- '/api/auth/organization/list-members': {
- parameters: {
- query?: never;
- header?: never;
- path?: never;
- cookie?: never;
- };
- get: {
- parameters: {
- query?: never;
- header?: never;
- path?: never;
- cookie?: never;
- };
- requestBody?: never;
- responses: {
- /** @description Bad Request. Usually due to missing parameters, or invalid parameters. */
- 400: {
- headers: {
- [name: string]: unknown;
- };
- content: {
- 'application/json': {
- message: string;
- };
- };
- };
- /** @description Unauthorized. Due to missing or invalid authentication. */
- 401: {
- headers: {
- [name: string]: unknown;
- };
- content: {
- 'application/json': {
- message: string;
- };
- };
- };
- /** @description Forbidden. You do not have permission to access this resource or to perform this action. */
- 403: {
- headers: {
- [name: string]: unknown;
- };
- content: {
- 'application/json': {
- message?: string;
- };
- };
- };
- /** @description Not Found. The requested resource was not found. */
- 404: {
- headers: {
- [name: string]: unknown;
- };
- content: {
- 'application/json': {
- message?: string;
- };
- };
- };
- /** @description Too Many Requests. You have exceeded the rate limit. Try again later. */
- 429: {
- headers: {
- [name: string]: unknown;
- };
- content: {
- 'application/json': {
- message?: string;
- };
- };
- };
- /** @description Internal Server Error. This is a problem with the server that you cannot fix. */
- 500: {
- headers: {
- [name: string]: unknown;
- };
- content: {
- 'application/json': {
- message?: string;
- };
- };
- };
- };
- };
- put?: never;
- post?: never;
- delete?: never;
- options?: never;
- head?: never;
- patch?: never;
- trace?: never;
- };
- '/api/auth/organization/get-active-member-role': {
- parameters: {
- query?: never;
- header?: never;
- path?: never;
- cookie?: never;
- };
- get: {
- parameters: {
- query?: never;
- header?: never;
- path?: never;
- cookie?: never;
- };
- requestBody?: never;
- responses: {
- /** @description Bad Request. Usually due to missing parameters, or invalid parameters. */
- 400: {
- headers: {
- [name: string]: unknown;
- };
- content: {
- 'application/json': {
- message: string;
- };
- };
- };
- /** @description Unauthorized. Due to missing or invalid authentication. */
- 401: {
- headers: {
- [name: string]: unknown;
- };
- content: {
- 'application/json': {
- message: string;
- };
- };
- };
- /** @description Forbidden. You do not have permission to access this resource or to perform this action. */
- 403: {
- headers: {
- [name: string]: unknown;
- };
- content: {
- 'application/json': {
- message?: string;
- };
- };
- };
- /** @description Not Found. The requested resource was not found. */
- 404: {
- headers: {
- [name: string]: unknown;
- };
- content: {
- 'application/json': {
- message?: string;
- };
- };
- };
- /** @description Too Many Requests. You have exceeded the rate limit. Try again later. */
- 429: {
- headers: {
- [name: string]: unknown;
- };
- content: {
- 'application/json': {
- message?: string;
- };
- };
- };
- /** @description Internal Server Error. This is a problem with the server that you cannot fix. */
- 500: {
- headers: {
- [name: string]: unknown;
- };
- content: {
- 'application/json': {
- message?: string;
- };
- };
- };
- };
- };
- put?: never;
- post?: never;
- delete?: never;
- options?: never;
- head?: never;
- patch?: never;
- trace?: never;
- };
- '/api/auth/organization/has-permission': {
- parameters: {
- query?: never;
- header?: never;
- path?: never;
- cookie?: never;
- };
- get?: never;
- put?: never;
- /** @description Check if the user has permission */
- post: {
- parameters: {
- query?: never;
- header?: never;
- path?: never;
- cookie?: never;
- };
- requestBody?: {
- content: {
- 'application/json': {
- /**
- * @deprecated
- * @description The permission to check
- */
- permission?: Record;
- /** @description The permission to check */
- permissions: Record;
- };
- };
- };
- responses: {
- /** @description Success */
- 200: {
- headers: {
- [name: string]: unknown;
- };
- content: {
- 'application/json': {
- error?: string;
- success: boolean;
- };
- };
- };
- /** @description Bad Request. Usually due to missing parameters, or invalid parameters. */
- 400: {
- headers: {
- [name: string]: unknown;
- };
- content: {
- 'application/json': {
- message: string;
- };
- };
- };
- /** @description Unauthorized. Due to missing or invalid authentication. */
- 401: {
- headers: {
- [name: string]: unknown;
- };
- content: {
- 'application/json': {
- message: string;
- };
- };
- };
- /** @description Forbidden. You do not have permission to access this resource or to perform this action. */
- 403: {
- headers: {
- [name: string]: unknown;
- };
- content: {
- 'application/json': {
- message?: string;
- };
- };
- };
- /** @description Not Found. The requested resource was not found. */
- 404: {
- headers: {
- [name: string]: unknown;
- };
- content: {
- 'application/json': {
- message?: string;
- };
- };
- };
- /** @description Too Many Requests. You have exceeded the rate limit. Try again later. */
- 429: {
- headers: {
- [name: string]: unknown;
- };
- content: {
- 'application/json': {
- message?: string;
- };
- };
- };
- /** @description Internal Server Error. This is a problem with the server that you cannot fix. */
- 500: {
- headers: {
- [name: string]: unknown;
- };
- content: {
- 'application/json': {
- message?: string;
- };
- };
- };
- };
- };
- delete?: never;
- options?: never;
- head?: never;
- patch?: never;
- trace?: never;
- };
- '/api/auth/admin/set-role': {
- parameters: {
- query?: never;
- header?: never;
- path?: never;
- cookie?: never;
- };
- get?: never;
- put?: never;
- /** @description Set the role of a user */
- post: operations['setUserRole'];
- delete?: never;
- options?: never;
- head?: never;
- patch?: never;
- trace?: never;
- };
- '/api/auth/admin/get-user': {
- parameters: {
- query?: never;
- header?: never;
- path?: never;
- cookie?: never;
- };
- /** @description Get an existing user */
- get: operations['getUser'];
- put?: never;
- post?: never;
- delete?: never;
- options?: never;
- head?: never;
- patch?: never;
- trace?: never;
- };
- '/api/auth/admin/create-user': {
- parameters: {
- query?: never;
- header?: never;
- path?: never;
- cookie?: never;
- };
- get?: never;
- put?: never;
- /** @description Create a new user */
- post: operations['createUser'];
- delete?: never;
- options?: never;
- head?: never;
- patch?: never;
- trace?: never;
- };
- '/api/auth/admin/update-user': {
- parameters: {
- query?: never;
- header?: never;
- path?: never;
- cookie?: never;
- };
- get?: never;
- put?: never;
- /** @description Update a user's details */
- post: operations['updateUser'];
- delete?: never;
- options?: never;
- head?: never;
- patch?: never;
- trace?: never;
- };
- '/api/auth/admin/list-users': {
- parameters: {
- query?: never;
- header?: never;
- path?: never;
- cookie?: never;
- };
- /** @description List users */
- get: operations['listUsers'];
- put?: never;
- post?: never;
- delete?: never;
- options?: never;
- head?: never;
- patch?: never;
- trace?: never;
- };
- '/api/auth/admin/list-user-sessions': {
- parameters: {
- query?: never;
- header?: never;
- path?: never;
- cookie?: never;
- };
- get?: never;
- put?: never;
- /** @description List user sessions */
- post: operations['listUserSessions'];
- delete?: never;
- options?: never;
- head?: never;
- patch?: never;
- trace?: never;
- };
- '/api/auth/admin/unban-user': {
- parameters: {
- query?: never;
- header?: never;
- path?: never;
- cookie?: never;
- };
- get?: never;
- put?: never;
- /** @description Unban a user */
- post: operations['unbanUser'];
- delete?: never;
- options?: never;
- head?: never;
- patch?: never;
- trace?: never;
- };
- '/api/auth/admin/ban-user': {
- parameters: {
- query?: never;
- header?: never;
- path?: never;
- cookie?: never;
- };
- get?: never;
- put?: never;
- /** @description Ban a user */
- post: operations['banUser'];
- delete?: never;
- options?: never;
- head?: never;
- patch?: never;
- trace?: never;
- };
- '/api/auth/admin/impersonate-user': {
- parameters: {
- query?: never;
- header?: never;
- path?: never;
- cookie?: never;
- };
- get?: never;
- put?: never;
- /** @description Impersonate a user */
- post: operations['impersonateUser'];
- delete?: never;
- options?: never;
- head?: never;
- patch?: never;
- trace?: never;
- };
- '/api/auth/admin/stop-impersonating': {
- parameters: {
- query?: never;
- header?: never;
- path?: never;
- cookie?: never;
- };
- get?: never;
- put?: never;
- post: {
- parameters: {
- query?: never;
- header?: never;
- path?: never;
- cookie?: never;
- };
- requestBody?: never;
- responses: {
- /** @description Bad Request. Usually due to missing parameters, or invalid parameters. */
- 400: {
- headers: {
- [name: string]: unknown;
- };
- content: {
- 'application/json': {
- message: string;
- };
- };
- };
- /** @description Unauthorized. Due to missing or invalid authentication. */
- 401: {
- headers: {
- [name: string]: unknown;
- };
- content: {
- 'application/json': {
- message: string;
- };
- };
- };
- /** @description Forbidden. You do not have permission to access this resource or to perform this action. */
- 403: {
- headers: {
- [name: string]: unknown;
- };
- content: {
- 'application/json': {
- message?: string;
- };
- };
- };
- /** @description Not Found. The requested resource was not found. */
- 404: {
- headers: {
- [name: string]: unknown;
- };
- content: {
- 'application/json': {
- message?: string;
- };
- };
- };
- /** @description Too Many Requests. You have exceeded the rate limit. Try again later. */
- 429: {
- headers: {
- [name: string]: unknown;
- };
- content: {
- 'application/json': {
- message?: string;
- };
- };
- };
- /** @description Internal Server Error. This is a problem with the server that you cannot fix. */
- 500: {
- headers: {
- [name: string]: unknown;
- };
- content: {
- 'application/json': {
- message?: string;
- };
- };
- };
- };
- };
- delete?: never;
- options?: never;
- head?: never;
- patch?: never;
- trace?: never;
- };
- '/api/auth/admin/revoke-user-session': {
- parameters: {
- query?: never;
- header?: never;
- path?: never;
- cookie?: never;
- };
- get?: never;
- put?: never;
- /** @description Revoke a user session */
- post: operations['revokeUserSession'];
- delete?: never;
- options?: never;
- head?: never;
- patch?: never;
- trace?: never;
- };
- '/api/auth/admin/revoke-user-sessions': {
- parameters: {
- query?: never;
- header?: never;
- path?: never;
- cookie?: never;
- };
- get?: never;
- put?: never;
- /** @description Revoke all user sessions */
- post: operations['revokeUserSessions'];
- delete?: never;
- options?: never;
- head?: never;
- patch?: never;
- trace?: never;
- };
- '/api/auth/admin/remove-user': {
- parameters: {
- query?: never;
- header?: never;
- path?: never;
- cookie?: never;
- };
- get?: never;
- put?: never;
- /** @description Delete a user and all their sessions and accounts. Cannot be undone. */
- post: operations['removeUser'];
- delete?: never;
- options?: never;
- head?: never;
- patch?: never;
- trace?: never;
- };
- '/api/auth/admin/set-user-password': {
- parameters: {
- query?: never;
- header?: never;
- path?: never;
- cookie?: never;
- };
- get?: never;
- put?: never;
- /** @description Set a user's password */
- post: operations['setUserPassword'];
- delete?: never;
- options?: never;
- head?: never;
- patch?: never;
- trace?: never;
- };
- '/api/auth/admin/has-permission': {
- parameters: {
- query?: never;
- header?: never;
- path?: never;
- cookie?: never;
- };
- get?: never;
- put?: never;
- /** @description Check if the user has permission */
- post: {
- parameters: {
- query?: never;
- header?: never;
- path?: never;
- cookie?: never;
- };
- requestBody?: {
- content: {
- 'application/json': {
- /**
- * @deprecated
- * @description The permission to check
- */
- permission?: Record;
- /** @description The permission to check */
- permissions: Record;
- };
- };
- };
- responses: {
- /** @description Success */
- 200: {
- headers: {
- [name: string]: unknown;
- };
- content: {
- 'application/json': {
- error?: string;
- success: boolean;
- };
- };
- };
- /** @description Bad Request. Usually due to missing parameters, or invalid parameters. */
- 400: {
- headers: {
- [name: string]: unknown;
- };
- content: {
- 'application/json': {
- message: string;
- };
- };
- };
- /** @description Unauthorized. Due to missing or invalid authentication. */
- 401: {
- headers: {
- [name: string]: unknown;
- };
- content: {
- 'application/json': {
- message: string;
- };
- };
- };
- /** @description Forbidden. You do not have permission to access this resource or to perform this action. */
- 403: {
- headers: {
- [name: string]: unknown;
- };
- content: {
- 'application/json': {
- message?: string;
- };
- };
- };
- /** @description Not Found. The requested resource was not found. */
- 404: {
- headers: {
- [name: string]: unknown;
- };
- content: {
- 'application/json': {
- message?: string;
- };
- };
- };
- /** @description Too Many Requests. You have exceeded the rate limit. Try again later. */
- 429: {
- headers: {
- [name: string]: unknown;
- };
- content: {
- 'application/json': {
- message?: string;
- };
- };
- };
- /** @description Internal Server Error. This is a problem with the server that you cannot fix. */
- 500: {
- headers: {
- [name: string]: unknown;
- };
- content: {
- 'application/json': {
- message?: string;
- };
- };
- };
- };
- };
- delete?: never;
- options?: never;
- head?: never;
- patch?: never;
- trace?: never;
- };
- '/api/auth/passkey/generate-register-options': {
- parameters: {
- query?: never;
- header?: never;
- path?: never;
- cookie?: never;
- };
- /** @description Generate registration options for a new passkey */
- get: operations['generatePasskeyRegistrationOptions'];
- put?: never;
- post?: never;
- delete?: never;
- options?: never;
- head?: never;
- patch?: never;
- trace?: never;
- };
- '/api/auth/passkey/generate-authenticate-options': {
- parameters: {
- query?: never;
- header?: never;
- path?: never;
- cookie?: never;
- };
- /** @description Generate authentication options for a passkey */
- get: operations['passkeyGenerateAuthenticateOptions'];
- put?: never;
- post?: never;
- delete?: never;
- options?: never;
- head?: never;
- patch?: never;
- trace?: never;
- };
- '/api/auth/passkey/verify-registration': {
- parameters: {
- query?: never;
- header?: never;
- path?: never;
- cookie?: never;
- };
- get?: never;
- put?: never;
- /** @description Verify registration of a new passkey */
- post: operations['passkeyVerifyRegistration'];
- delete?: never;
- options?: never;
- head?: never;
- patch?: never;
- trace?: never;
- };
- '/api/auth/passkey/verify-authentication': {
- parameters: {
- query?: never;
- header?: never;
- path?: never;
- cookie?: never;
- };
- get?: never;
- put?: never;
- /** @description Verify authentication of a passkey */
- post: operations['passkeyVerifyAuthentication'];
- delete?: never;
- options?: never;
- head?: never;
- patch?: never;
- trace?: never;
- };
- '/api/auth/passkey/list-user-passkeys': {
- parameters: {
- query?: never;
- header?: never;
- path?: never;
- cookie?: never;
- };
- /** @description List all passkeys for the authenticated user */
- get: {
- parameters: {
- query?: never;
- header?: never;
- path?: never;
- cookie?: never;
- };
- requestBody?: never;
- responses: {
- /** @description Passkeys retrieved successfully */
- 200: {
- headers: {
- [name: string]: unknown;
- };
- content: {
- 'application/json': components['schemas']['Passkey'][];
- };
- };
- /** @description Bad Request. Usually due to missing parameters, or invalid parameters. */
- 400: {
- headers: {
- [name: string]: unknown;
- };
- content: {
- 'application/json': {
- message: string;
- };
- };
- };
- /** @description Unauthorized. Due to missing or invalid authentication. */
- 401: {
- headers: {
- [name: string]: unknown;
- };
- content: {
- 'application/json': {
- message: string;
- };
- };
- };
- /** @description Forbidden. You do not have permission to access this resource or to perform this action. */
- 403: {
- headers: {
- [name: string]: unknown;
- };
- content: {
- 'application/json': {
- message?: string;
- };
- };
- };
- /** @description Not Found. The requested resource was not found. */
- 404: {
- headers: {
- [name: string]: unknown;
- };
- content: {
- 'application/json': {
- message?: string;
- };
- };
- };
- /** @description Too Many Requests. You have exceeded the rate limit. Try again later. */
- 429: {
- headers: {
- [name: string]: unknown;
- };
- content: {
- 'application/json': {
- message?: string;
- };
- };
- };
- /** @description Internal Server Error. This is a problem with the server that you cannot fix. */
- 500: {
- headers: {
- [name: string]: unknown;
- };
- content: {
- 'application/json': {
- message?: string;
- };
- };
- };
- };
- };
- put?: never;
- post?: never;
- delete?: never;
- options?: never;
- head?: never;
- patch?: never;
- trace?: never;
- };
- '/api/auth/passkey/delete-passkey': {
- parameters: {
- query?: never;
- header?: never;
- path?: never;
- cookie?: never;
- };
- get?: never;
- put?: never;
- /** @description Delete a specific passkey */
- post: {
- parameters: {
- query?: never;
- header?: never;
- path?: never;
- cookie?: never;
- };
- requestBody: {
- content: {
- 'application/json': {
- /** @description The ID of the passkey to delete. Eg: "some-passkey-id" */
- id: string;
- };
- };
- };
- responses: {
- /** @description Passkey deleted successfully */
- 200: {
- headers: {
- [name: string]: unknown;
- };
- content: {
- 'application/json': {
- /** @description Indicates whether the deletion was successful */
- status: boolean;
- };
- };
- };
- /** @description Bad Request. Usually due to missing parameters, or invalid parameters. */
- 400: {
- headers: {
- [name: string]: unknown;
- };
- content: {
- 'application/json': {
- message: string;
- };
- };
- };
- /** @description Unauthorized. Due to missing or invalid authentication. */
- 401: {
- headers: {
- [name: string]: unknown;
- };
- content: {
- 'application/json': {
- message: string;
- };
- };
- };
- /** @description Forbidden. You do not have permission to access this resource or to perform this action. */
- 403: {
- headers: {
- [name: string]: unknown;
- };
- content: {
- 'application/json': {
- message?: string;
- };
- };
- };
- /** @description Not Found. The requested resource was not found. */
- 404: {
- headers: {
- [name: string]: unknown;
- };
- content: {
- 'application/json': {
- message?: string;
- };
- };
- };
- /** @description Too Many Requests. You have exceeded the rate limit. Try again later. */
- 429: {
- headers: {
- [name: string]: unknown;
- };
- content: {
- 'application/json': {
- message?: string;
- };
- };
- };
- /** @description Internal Server Error. This is a problem with the server that you cannot fix. */
- 500: {
- headers: {
- [name: string]: unknown;
- };
- content: {
- 'application/json': {
- message?: string;
- };
- };
- };
- };
- };
- delete?: never;
- options?: never;
- head?: never;
- patch?: never;
- trace?: never;
- };
- '/api/auth/passkey/update-passkey': {
- parameters: {
- query?: never;
- header?: never;
- path?: never;
- cookie?: never;
- };
- get?: never;
- put?: never;
- /** @description Update a specific passkey's name */
- post: {
- parameters: {
- query?: never;
- header?: never;
- path?: never;
- cookie?: never;
- };
- requestBody: {
- content: {
- 'application/json': {
- /** @description The ID of the passkey which will be updated. Eg: "passkey-id" */
- id: string;
- /** @description The new name which the passkey will be updated to. Eg: "my-new-passkey-name" */
- name: string;
- };
- };
- };
- responses: {
- /** @description Passkey updated successfully */
- 200: {
- headers: {
- [name: string]: unknown;
- };
- content: {
- 'application/json': {
- passkey: components['schemas']['Passkey'];
- };
- };
- };
- /** @description Bad Request. Usually due to missing parameters, or invalid parameters. */
- 400: {
- headers: {
- [name: string]: unknown;
- };
- content: {
- 'application/json': {
- message: string;
- };
- };
- };
- /** @description Unauthorized. Due to missing or invalid authentication. */
- 401: {
- headers: {
- [name: string]: unknown;
- };
- content: {
- 'application/json': {
- message: string;
- };
- };
- };
- /** @description Forbidden. You do not have permission to access this resource or to perform this action. */
- 403: {
- headers: {
- [name: string]: unknown;
- };
- content: {
- 'application/json': {
- message?: string;
- };
- };
- };
- /** @description Not Found. The requested resource was not found. */
- 404: {
- headers: {
- [name: string]: unknown;
- };
- content: {
- 'application/json': {
- message?: string;
- };
- };
- };
- /** @description Too Many Requests. You have exceeded the rate limit. Try again later. */
- 429: {
- headers: {
- [name: string]: unknown;
- };
- content: {
- 'application/json': {
- message?: string;
- };
- };
- };
- /** @description Internal Server Error. This is a problem with the server that you cannot fix. */
- 500: {
- headers: {
- [name: string]: unknown;
- };
- content: {
- 'application/json': {
- message?: string;
- };
- };
- };
- };
- };
- delete?: never;
- options?: never;
- head?: never;
- patch?: never;
- trace?: never;
- };
- '/api/auth/sign-in/magic-link': {
- parameters: {
- query?: never;
- header?: never;
- path?: never;
- cookie?: never;
- };
- get?: never;
- put?: never;
- /** @description Sign in with magic link */
- post: operations['signInWithMagicLink'];
- delete?: never;
- options?: never;
- head?: never;
- patch?: never;
- trace?: never;
- };
- '/api/auth/magic-link/verify': {
- parameters: {
- query?: never;
- header?: never;
- path?: never;
- cookie?: never;
- };
- /** @description Verify magic link */
- get: operations['verifyMagicLink'];
- put?: never;
- post?: never;
- delete?: never;
- options?: never;
- head?: never;
- patch?: never;
- trace?: never;
- };
-}
-export type webhooks = Record;
-export interface components {
- schemas: {
- NotificationPreferencesDto: Record;
- UpdatePrivacySettingsDto: {
- /**
- * @description Public profile
- * @example true
- */
- publicProfile: boolean;
- /**
- * @description Email visibility
- * @example true
- */
- emailVisibility: boolean;
- /**
- * @description Location visibility
- * @example true
- */
- locationVisibility: boolean;
- /**
- * @description Company visibility
- * @example true
- */
- companyVisibility: boolean;
- /**
- * @description Website visibility
- * @example true
- */
- websiteVisibility: boolean;
- /**
- * @description Social links visibility
- * @example true
- */
- socialLinksVisibility: boolean;
- };
- UpdateAppearanceSettingsDto: {
- /**
- * @description Theme
- * @example light
- * @enum {string}
- */
- theme: 'light' | 'dark' | 'auto';
- };
- PublicEarningsSummaryDto: {
- /**
- * @description All-time total earned (normalized, e.g. USDC 7 decimals)
- * @example 50000
- */
- totalEarned: number;
- };
- EarningsBreakdownDto: {
- /**
- * @description Total from hackathons
- * @example 20000
- */
- hackathons: number;
- /**
- * @description Total from grants
- * @example 10000
- */
- grants: number;
- /**
- * @description Total from crowdfunding
- * @example 15000
- */
- crowdfunding: number;
- /**
- * @description Total from bounties
- * @example 5000
- */
- bounties: number;
- };
- PublicEarningActivityDto: {
- /** @description Unique activity id */
- id: string;
- /**
- * @description Earnings source category
- * @enum {string}
- */
- source: 'hackathons' | 'grants' | 'crowdfunding' | 'bounties';
- /**
- * @description Human-readable title
- * @example Winner of Stellar Hackathon Q1
- */
- title: string;
- /**
- * @description Amount (normalized)
- * @example 5000
- */
- amount: number;
- /**
- * @description Currency code
- * @example USDC
- */
- currency: string;
- /**
- * @description When the earning occurred (ISO date string)
- * @example 2024-01-19T14:30:00Z
- */
- occurredAt: string;
- };
- PublicEarningsResponseDto: {
- summary: components['schemas']['PublicEarningsSummaryDto'];
- breakdown: components['schemas']['EarningsBreakdownDto'];
- /** @description Verified activity history (completed only) */
- activities: components['schemas']['PublicEarningActivityDto'][];
- };
- EarningsSummaryDto: {
- /**
- * @description All-time total earned (normalized, e.g. USDC 7 decimals)
- * @example 50000
- */
- totalEarned: number;
- /**
- * @description Amount currently claimable / pending withdrawal
- * @example 10000
- */
- pendingWithdrawal: number;
- /**
- * @description Amount already paid out (completed withdrawals)
- * @example 40000
- */
- completedWithdrawal: number;
- };
- EarningActivityDto: {
- /** @description Unique activity id (e.g. submissionId or milestoneId) */
- id: string;
- /**
- * @description Earnings source category
- * @enum {string}
- */
- source: 'hackathons' | 'grants' | 'crowdfunding' | 'bounties';
- /**
- * @description Human-readable title
- * @example Winner of Stellar Hackathon Q1
- */
- title: string;
- /**
- * @description Amount (normalized)
- * @example 5000
- */
- amount: number;
- /**
- * @description Currency code
- * @example USDC
- */
- currency: string;
- /**
- * @description Activity status
- * @enum {string}
- */
- status: 'pending' | 'claimable' | 'completed';
- /**
- * @description When the earning occurred (ISO date string)
- * @example 2024-01-19T14:30:00Z
- */
- occurredAt: string;
- /** @description Entity id for claim (e.g. submissionId, milestoneId) */
- entityId?: string;
- /** @description On-chain payout transaction hash (when settled). */
- txHash?: string;
- };
- EarningsResponseDto: {
- summary: components['schemas']['EarningsSummaryDto'];
- breakdown: components['schemas']['EarningsBreakdownDto'];
- /** @description Activity feed */
- activities: components['schemas']['EarningActivityDto'][];
- };
- ProfileDetailsDto: {
- bio: string | null;
- website: string | null;
- location: string | null;
- company: string | null;
- skills: string[];
- /** @description Social links keyed by platform. */
- socialLinks: {
- [key: string]: unknown;
- } | null;
- };
- ProfileResponseDto: {
- id: string;
- name: string | null;
- email: string;
- username: string | null;
- displayUsername: string | null;
- image: string | null;
- emailVerified: boolean;
- /** @description contributor | host (onboarding persona) */
- persona: string | null;
- /** @description When onboarding was completed; null if not done. */
- onboardingCompletedAt: string | null;
- /** Format: date-time */
- createdAt: string;
- /** Format: date-time */
- updatedAt: string;
- profile: components['schemas']['ProfileDetailsDto'];
- };
- ProfileSocialLinksDto: {
- /** @description GitHub profile or repository URL */
- github?: string;
- /** @description Twitter/X profile URL */
- twitter?: string;
- /** @description LinkedIn profile URL */
- linkedin?: string;
- /** @description Discord profile or server URL */
- discord?: string;
- };
- UpdateProfileDto: {
- /** @description Short bio */
- bio?: string;
- /** @description Personal or project website URL */
- website?: string;
- /** @description Country or location */
- location?: string;
- /** @description Company or organization */
- company?: string;
- /** @description Skill tags */
- skills?: string[];
- socialLinks?: components['schemas']['ProfileSocialLinksDto'];
- };
- DashboardUserStatsDto: {
- followers: number;
- following: number;
- };
- DashboardUserDto: {
- id: string;
- name: string | null;
- email: string;
- username: string | null;
- displayUsername: string | null;
- image: string | null;
- role: string;
- /** Format: date-time */
- createdAt: string;
- stats?: components['schemas']['DashboardUserStatsDto'];
- };
- CurrentUserDto: {
- /** @description Current user */
- user: components['schemas']['DashboardUserDto'];
- };
- UserStatsDto: {
- projectsCreated: number;
- projectsFunded: number;
- totalContributed: number;
- commentsPosted: number;
- votes: number;
- grants: number;
- hackathons: number;
- followers: number;
- following: number;
- reputation: number;
- communityScore: number;
- };
- ChartDataPointDto: {
- /** @description Date in YYYY-MM-DD format */
- date: string;
- /** @description Count for that date */
- count: number;
- };
- ChartDto: {
- data: components['schemas']['ChartDataPointDto'][];
- };
- ActivitiesGraphDto: {
- data: components['schemas']['ChartDataPointDto'][];
- };
- ActivityProjectDto: {
- id: string;
- title: string;
- banner?: string | null;
- logo?: string | null;
- };
- ActivityOrganizationDto: {
- id: string;
- name: string;
- };
- RecentActivityDto: {
- id: string;
- type: string;
- userId: string;
- projectId?: string | null;
- organizationId?: string | null;
- /** Format: date-time */
- createdAt: string;
- project?: components['schemas']['ActivityProjectDto'];
- organization?: components['schemas']['ActivityOrganizationDto'];
- };
- DashboardDto: {
- /** @description User profile data */
- user: components['schemas']['DashboardUserDto'];
- stats: components['schemas']['UserStatsDto'];
- chart: components['schemas']['ChartDto'];
- activitiesGraph: components['schemas']['ActivitiesGraphDto'];
- /** @description Recent activities */
- recentActivities: components['schemas']['RecentActivityDto'][];
- };
- CompleteOnboardingDto: {
- /**
- * @description How the user plans to use Boundless.
- * @enum {string}
- */
- persona: 'contributor' | 'host';
- /** @description How the user heard about Boundless. */
- referralSource?: string;
- /** @description Skill tags. */
- skills?: string[];
- /** @description What the user wants to use Boundless for. */
- goals?: string[];
- };
- UpdateUserDto: Record;
- UploadResponseDto: Record;
- MultipleUploadResponseDto: Record;
- FileInfoResponseDto: Record;
- SearchFilesResponseDto: Record;
- OptimizedUrlResponseDto: Record;
- ResponsiveUrlsResponseDto: Record;
- UsageStatsResponseDto: Record;
- RegisterDto: Record;
- LoginDto: Record;
- RefreshTokenDto: Record;
- VerifySignatureDto: Record;
- CreateConversationDto: {
- /** @description User ID of the other participant */
- otherUserId: string;
- };
- CreateMessageDto: {
- /** @description Message text */
- body: string;
- };
- /** @enum {string} */
- CreditTier: 'BRONZE' | 'SILVER' | 'GOLD' | 'PLATINUM';
- CreditSummaryDto: {
- /**
- * @description Current credit balance.
- * @example 6
- */
- balance: number;
- /**
- * @description Hard ceiling on the balance.
- * @example 12
- */
- cap: number;
- /** @example BRONZE */
- tier: components['schemas']['CreditTier'];
- /**
- * @description Credits this user resets to on the next refill.
- * @example 3
- */
- refillAmount: number;
- /**
- * @description Credits spent so far this calendar month.
- * @example 8
- */
- usedThisMonth: number;
- /**
- * Format: date-time
- * @description When the next monthly refill applies.
- */
- nextRefillAt: string;
- };
- /** @enum {string} */
- CreditLedgerReason:
- | 'WELCOME'
- | 'REFILL'
- | 'SPEND'
- | 'REFUND'
- | 'SPAM_FORFEIT'
- | 'ADMIN_GRANT'
- | 'PURCHASE';
- CreditLedgerEntryDto: {
- id: string;
- /**
- * @description Signed change to the balance.
- * @example -1
- */
- delta: number;
- /**
- * @description Balance after this entry.
- * @example 5
- */
- balanceAfter: number;
- reason: components['schemas']['CreditLedgerReason'];
- /** @example BOUNTY_APPLICATION */
- refType: Record | null;
- refId: Record | null;
- /** @example 2026-06 */
- period: Record | null;
- /** Format: date-time */
- createdAt: string;
- };
- CreditHistoryDto: {
- rows: components['schemas']['CreditLedgerEntryDto'][];
- total: number;
- page: number;
- limit: number;
- };
- ContactDto: Record;
- CreateCampaignDto: {
- /**
- * @description Title of the campaign
- * @example Web3 Campaign
- */
- title: string;
- /**
- * @description Logo of the campaign
- * @example https://example.com/logo.png
- */
- logo: string;
- /**
- * @description Vision of the campaign
- * @example Web3 Campaign
- */
- vision: string;
- /**
- * @description Banner image URL of the campaign
- * @example https://example.com/banner.png
- */
- banner: string;
- /**
- * @description Category of the campaign
- * @example web3
- */
- category: string;
- /**
- * @description Details of the campaign
- * @example Web3 Campaign
- */
- details: string;
- /**
- * @description Funding amount of the campaign
- * @example 1000
- */
- fundingAmount: number;
- /**
- * @description Github URL of the campaign
- * @example https://github.com/example/project
- */
- githubUrl: string;
- /**
- * @description Gitlab URL of the campaign
- * @example https://gitlab.com/example/project
- */
- gitlabUrl: string;
- /**
- * @description Bitbucket URL of the campaign
- * @example https://bitbucket.com/example/project
- */
- bitbucketUrl: string;
- /**
- * @description Project website of the campaign
- * @example https://example.com/project
- */
- projectWebsite: string;
- /**
- * @description Demo video of the campaign
- * @example https://example.com/demo.mp4
- */
- demoVideo: string;
- /**
- * @description Milestones of the campaign
- * @example [
- * {
- * "name": "Milestone 1",
- * "description": "Milestone 1 description",
- * "startDate": "2025-01-01",
- * "endDate": "2025-01-02",
- * "amount": 1000
- * }
- * ]
- */
- milestones: string[];
- /**
- * @description Team of the campaign (optional; solo builders may omit)
- * @example [
- * {
- * "name": "John Doe",
- * "role": "Developer",
- * "email": "john.doe@example.com",
- * "linkedin": "https://linkedin.com/in/john-doe",
- * "twitter": "https://twitter.com/john-doe"
- * }
- * ]
- */
- team?: string[];
- /**
- * @description Contact of the campaign
- * @example {
- * "primary": "john.doe",
- * "backup": "john.doe@example.com"
- * }
- */
- contact: components['schemas']['ContactDto'];
- /**
- * @description Social links of the campaign (optional)
- * @example [
- * {
- * "platform": "twitter",
- * "url": "https://twitter.com/john-doe"
- * }
- * ]
- */
- socialLinks?: string[];
- };
- CreateDraftDto: {
- /**
- * @description Working title for the campaign
- * @example Stellar Analytics Dashboard
- */
- title: string;
- };
- UpdateCampaignDto: {
- /**
- * @description Title of the campaign
- * @example Web3 Campaign
- */
- title?: string;
- /**
- * @description Logo of the campaign
- * @example https://example.com/logo.png
- */
- logo?: string;
- /**
- * @description Vision of the campaign
- * @example Web3 Campaign
- */
- vision?: string;
- /**
- * @description Banner image URL of the campaign
- * @example https://example.com/banner.png
- */
- banner?: string;
- /**
- * @description Category of the campaign
- * @example web3
- */
- category?: string;
- /**
- * @description Details of the campaign
- * @example Web3 Campaign
- */
- details?: string;
- /**
- * @description Funding amount of the campaign
- * @example 1000
- */
- fundingAmount?: number;
- /**
- * @description Github URL of the campaign
- * @example https://github.com/example/project
- */
- githubUrl?: string;
- /**
- * @description Gitlab URL of the campaign
- * @example https://gitlab.com/example/project
- */
- gitlabUrl?: string;
- /**
- * @description Bitbucket URL of the campaign
- * @example https://bitbucket.com/example/project
- */
- bitbucketUrl?: string;
- /**
- * @description Project website of the campaign
- * @example https://example.com/project
- */
- projectWebsite?: string;
- /**
- * @description Demo video of the campaign
- * @example https://example.com/demo.mp4
- */
- demoVideo?: string;
- /**
- * @description Milestones of the campaign
- * @example [
- * {
- * "name": "Milestone 1",
- * "description": "Milestone 1 description",
- * "startDate": "2025-01-01",
- * "endDate": "2025-01-02",
- * "amount": 1000
- * }
- * ]
- */
- milestones?: string[];
- /**
- * @description Team of the campaign (optional; solo builders may omit)
- * @example [
- * {
- * "name": "John Doe",
- * "role": "Developer",
- * "email": "john.doe@example.com",
- * "linkedin": "https://linkedin.com/in/john-doe",
- * "twitter": "https://twitter.com/john-doe"
- * }
- * ]
- */
- team?: string[];
- /**
- * @description Contact of the campaign
- * @example {
- * "primary": "john.doe",
- * "backup": "john.doe@example.com"
- * }
- */
- contact?: components['schemas']['ContactDto'];
- /**
- * @description Social links of the campaign (optional)
- * @example [
- * {
- * "platform": "twitter",
- * "url": "https://twitter.com/john-doe"
- * }
- * ]
- */
- socialLinks?: string[];
- };
- InviteTeamMemberDto: {
- /**
- * @description The email address of the team member to invite
- * @example user@example.com
- */
- email: string;
- /**
- * @description The role of the team member in the campaign
- * @example Developer
- */
- role: string;
- };
- ValidateMilestoneSubmissionDto: {
- /**
- * @description Array of proof of work file URLs (documents, images, reports, etc.) - must be valid URLs with http, https, or ipfs protocol
- * @example [
- * "https://example.com/report.pdf",
- * "https://example.com/screenshot.png"
- * ]
- */
- proofOfWorkFiles: string[];
- /**
- * @description Array of proof of work links (GitHub PRs, demos, deployed sites, etc.) - must be valid URLs
- * @example [
- * "https://github.com/user/repo/pull/123",
- * "https://demo.example.com"
- * ]
- */
- proofOfWorkLinks: string[];
- /**
- * @description Additional notes about the submission - optional but must be at least 10 characters if provided
- * @example Successfully deployed the MVP with all core features implemented and tested.
- */
- submissionNotes?: string;
- };
- UpdateMilestoneDto: {
- /** @description Array of proof of work file URLs (documents, images, etc.) */
- proofOfWorkFiles: string[];
- /** @description Array of proof of work links (GitHub PRs, demos, etc.) */
- proofOfWorkLinks: string[];
- /** @description Additional notes about the submission */
- submissionNotes?: string;
- };
- PublishCrowdfundingEscrowDto: {
- /**
- * @description Stellar G-address that signs create_event. Strictly the builder's Boundless abstracted wallet (D9). Optional: defaults to the authenticated builder's managed wallet, the only valid value.
- * @example GBXNQFDSBDPOIA3Q4LYIWBOJFFPCCV6IEDHBSJZEAYFKIKZVUO4QEDVS
- */
- builderAddress?: string;
- /**
- * @description Whitelisted SAC token contract (USDC by default).
- * @example CBIELTK6YBZJU5UP2WWQEUCYKLPU6AUNZ2BQ4WWFEIE3USCIHMXQDAMA
- */
- tokenAddress: string;
- /**
- * @description Funding goal in token-native units (e.g. 5000 = 5000 USDC). Informational on chain; backers determine the actual raised total.
- * @example 5000
- */
- fundingGoal: string;
- /**
- * @description Number of milestones for ReleaseKind::Multi(n).
- * @example 3
- */
- nMilestones: number;
- /**
- * @description Funding deadline as Unix seconds.
- * @example 1735689600
- */
- fundingDeadline: number;
- /** @description Override content URI. */
- contentUri?: string;
- };
- CancelCrowdfundingEscrowDto: {
- /** @description Builder G-address. Optional: defaults to the authenticated builder's managed wallet (the only valid value). */
- builderAddress?: string;
- };
- ContributeCrowdfundingDto: {
- /**
- * @description G-address that signs add_funds.
- * @example GBXNQFDSBDPOIA3Q4LYIWBOJFFPCCV6IEDHBSJZEAYFKIKZVUO4QEDVS
- */
- contributorAddress: string;
- /**
- * @description Wallet origin: BOUNDLESS uses the managed signer; EXTERNAL returns an unsigned XDR for the connected wallet (D9).
- * @example BOUNDLESS
- * @enum {string}
- */
- walletOrigin: 'BOUNDLESS' | 'EXTERNAL';
- /**
- * @description Amount in token-native units (10 USDC minimum).
- * @example 25
- */
- amount: string;
- /** @description Optional message attached. */
- message?: string;
- /**
- * @description Hide displayName / usernameSnapshot if true.
- * @default false
- */
- anonymous: boolean;
- };
- CrowdfundingSubmitSignedXdrDto: {
- /** @description Signed transaction XDR returned by the wallet. */
- signedXdr: string;
- };
- CastCrowdfundingVoteDto: {
- /**
- * @description UP supports the campaign, DOWN opposes it.
- * @example UP
- * @enum {string}
- */
- choice: 'UP' | 'DOWN';
- };
- ApproveCrowdfundingCampaignDto: {
- /**
- * @description The user delegated to validate this campaign's milestones. D6=A: exactly one reviewer per campaign, assigned at approval time.
- * @example user_1234567890
- */
- delegatedReviewerId: string;
- /**
- * @description Minimum total community votes required to resolve the vote (quorum). Defaults to 1 for now (target is 10 at launch).
- * @example 10
- */
- voteGoal?: number;
- /**
- * @description Bypass community voting and approve straight to launch-ready (REVIEW_APPROVED). Default false: the campaign enters community voting.
- * @example false
- */
- bypassVoting?: boolean;
- };
- RejectCrowdfundingCampaignDto: {
- /** @description Reason for rejection; surfaced to the builder. */
- reason?: string;
- };
- ExtendCrowdfundingFundingDto: {
- /**
- * @description New funding deadline (ISO 8601). Must be in the future. Enforced off-chain by the contribute gate.
- * @example 2026-08-01T00:00:00.000Z
- */
- fundingEndDate: string;
- };
- PauseCrowdfundingCampaignDto: {
- /** @description Reason for the pause. */
- reason?: string;
- };
- ApproveCrowdfundingMilestoneDto: Record;
- RejectCrowdfundingMilestoneDto: {
- /** @description Feedback shown to the builder. */
- rejectionFeedback: string;
- /** @description Deadline by which the builder must resubmit (ISO 8601). */
- resubmissionDeadline?: string;
- };
- FileDisputeDto: {
- /** @description Specific milestone being disputed (optional). */
- milestoneId?: string;
- /** @enum {string} */
- reason:
- | 'MILESTONE_NOT_DELIVERED'
- | 'POOR_QUALITY_WORK'
- | 'DEADLINE_MISSED'
- | 'MISUSE_OF_FUNDS'
- | 'COMMUNICATION_ISSUES'
- | 'SCOPE_CHANGE'
- | 'OTHER';
- description: string;
- /** @description Links to supporting evidence (max 10). */
- evidenceLinks?: string[];
- /** @description Uploaded evidence file references (max 10). */
- evidenceFiles?: string[];
- };
- DisputeResponseDto: {
- id: string;
- campaignId: string;
- milestoneId: string | null;
- reason: string;
- status: string;
- description: string;
- /** @description ISO timestamp the dispute was filed */
- createdAt: string;
- };
- WalletSummaryAssetDto: {
- /** @example USDC */
- assetCode: string;
- /**
- * @description Raw asset amount.
- * @example 125.0000000
- */
- balance: string;
- /** @example 125 */
- usdValue: Record | null;
- };
- WalletSummaryDto: {
- /** @description Wallet G-address. */
- address: Record | null;
- isActivated: boolean;
- /**
- * @description Total USD across all assets.
- * @example 125
- */
- totalUsd: number;
- assets: components['schemas']['WalletSummaryAssetDto'][];
- };
- ReclaimDormantDto: {
- /**
- * @description Minimum days a wallet must have been idle to be eligible. Default 90.
- * @example 90
- */
- minIdleDays?: number;
- /**
- * @description Maximum number of wallets to reclaim in this call. Hard-capped at 100.
- * @example 25
- */
- maxToProcess?: number;
- /**
- * @description When true (default), report what would be reclaimed without submitting transactions. Set false to actually merge accounts.
- * @example true
- */
- dryRun?: boolean;
- };
- AddTrustlineDto: {
- /**
- * @description Asset code to add a trustline for (e.g. USDC, EURC)
- * @example USDC
- */
- assetCode: string;
- };
- UserSendDto: {
- /**
- * @description Stellar destination public key (G...)
- * @example GABCD...
- */
- destinationPublicKey: string;
- /**
- * @description Amount to send (positive number)
- * @example 100.5
- */
- amount: number;
- /**
- * @description Asset code (XLM, USDC, EURC, etc.)
- * @example USDC
- */
- currency: string;
- /** @description Memo (required by some exchanges). Max 28 bytes UTF-8. */
- memo?: string;
- /** @description If true, request fails when memo is missing (e.g. exchange requires it) */
- memoRequired?: boolean;
- /** @description Idempotency key to prevent duplicate sends */
- idempotencyKey?: string;
- };
- CreateCommentDto: {
- /**
- * @description Comment content
- * @example This is a great project!
- */
- content: string;
- /**
- * @description Entity type for the comment
- * @example PROJECT
- * @enum {string}
- */
- entityType:
- | 'PROJECT'
- | 'BOUNTY'
- | 'CROWDFUNDING_CAMPAIGN'
- | 'GRANT'
- | 'GRANT_APPLICATION'
- | 'HACKATHON'
- | 'HACKATHON_SUBMISSION'
- | 'BLOG_POST';
- /**
- * @description Entity ID for the comment
- * @example cm12345abcde
- */
- entityId: string;
- /**
- * @description Parent comment ID for threaded replies
- * @example cm12345abcde
- */
- parentId?: string;
- };
- UpdateCommentDto: Record;
- AddReactionDto: {
- /**
- * @description Type of reaction
- * @example LIKE
- * @enum {string}
- */
- reactionType:
- | 'LIKE'
- | 'DISLIKE'
- | 'LOVE'
- | 'LAUGH'
- | 'THUMBS_UP'
- | 'THUMBS_DOWN'
- | 'FIRE'
- | 'ROCKET';
- };
- ReportCommentDto: {
- /**
- * @description Reason for reporting the comment
- * @example SPAM
- * @enum {string}
- */
- reason:
- | 'SPAM'
- | 'HARASSMENT'
- | 'HATE_SPEECH'
- | 'INAPPROPRIATE_CONTENT'
- | 'COPYRIGHT_VIOLATION'
- | 'OTHER';
- /**
- * @description Additional details about the report
- * @example This comment contains unsolicited advertising
- */
- description?: string;
- };
- ResolveReportDto: {
- /**
- * @description Resolution status for the report
- * @example RESOLVED
- * @enum {string}
- */
- status: 'PENDING' | 'REVIEWED' | 'RESOLVED' | 'DISMISSED';
- /**
- * @description Moderator notes about the resolution
- * @example Comment was reviewed and found to violate community guidelines
- */
- resolution?: string;
- };
- HackathonsListResponseDto: Record;
- FeeEstimateResponseDto: {
- /**
- * @description Total prize pool (USDC)
- * @example 5000
- */
- totalPool: number;
- /**
- * @description Fee rate as decimal
- * @example 0.023
- */
- feeRate: number;
- /**
- * @description Fee rate as percentage
- * @example 2.3
- */
- feeRatePercent: number;
- /**
- * @description Fee amount (USDC)
- * @example 115
- */
- feeAmount: number;
- /**
- * @description Total to pay (prize pool + fee)
- * @example 5115
- */
- totalFunds: number;
- /**
- * @description Display label for the fee
- * @example Platform Fee (2.3%)
- */
- feeLabel: string;
- };
- ParticipantDto: {
- /** @description Username of the participant */
- username: string;
- /** @description Avatar URL of the participant */
- avatar?: Record;
- };
- HackathonWinnerDto: {
- /** @description Rank of the winner (1, 2, 3, etc.) */
- rank: number;
- /** @description Name of the project */
- projectName: string;
- /** @description Name of the team */
- teamName?: Record;
- /** @description Logo of the project */
- logo?: Record;
- /** @description List of participants */
- participants: components['schemas']['ParticipantDto'][];
- /** @description Prize information */
- prize: string;
- /** @description Submission ID */
- submissionId: string;
- };
- HackathonWinnersResponseDto: {
- /** @description Hackathon ID */
- hackathonId: string;
- /** @description List of winners */
- winners: components['schemas']['HackathonWinnerDto'][];
- };
- PublicAggregatedJudgingResultDto: {
- submissionId: string;
- projectName: string;
- teamId?: Record;
- participantId: string;
- status: string;
- /** Format: date-time */
- submittedAt: string;
- averageScore: number;
- totalScore: number;
- judgeCount: number;
- expectedJudgeCount: number;
- judgingProgress: string;
- rank?: Record;
- isComplete: boolean;
- isPending: boolean;
- hasDisagreement: boolean;
- };
- JudgingResultsMetadataDto: {
- sortedBy: string;
- includesVariance: boolean;
- includesIndividualScores: boolean;
- includesProgressTracking: boolean;
- onlyWinners?: boolean;
- };
- PublicJudgingResultsResponseDto: {
- hackathonId: string;
- totalSubmissions: number;
- submissionsScoredCount: number;
- submissionsPendingCount: number;
- averageScoreAcrossAll: number;
- resultsPublished: boolean;
- judgesAssigned: number;
- results: components['schemas']['PublicAggregatedJudgingResultDto'][];
- /** Format: date-time */
- generatedAt: string;
- /** @description Manual winner assignments override (submissionId -> rank) */
- winnerOverrides?: {
- [key: string]: number;
- };
- metadata: components['schemas']['JudgingResultsMetadataDto'];
- };
- CreatorRelationDto: {
- id: string;
- name: string;
- username?: string;
- image?: string;
- };
- OrganizationRelationDto: {
- id: string;
- name: string;
- logo?: string;
- slug?: string;
- };
- HackathonResponseDto: {
- createdBy: components['schemas']['CreatorRelationDto'];
- organization?: components['schemas']['OrganizationRelationDto'];
- };
- VerifyHackathonAccessDto: {
- /** @description The access password for a private hackathon */
- password: string;
- };
- HackathonAccessTokenResponseDto: {
- accessToken: string;
- };
- JoinHackathonDto: {
- /**
- * @description Answers to REGISTRATION-scope custom questions. Keyed by question id; each value is a string (or string[] for multi-select).
- * @example {
- * "cq_role": "Backend developer"
- * }
- */
- customAnswers?: Record;
- };
- ParticipationResponseDto: Record;
- ParticipantResponseDto: Record;
- HackathonParticipantsResponseDto: {
- participants: components['schemas']['ParticipantResponseDto'][];
- };
- TeamMemberDto: {
- /**
- * @description User ID of the team member
- * @example user_1234567890
- */
- userId: string;
- /**
- * @description Name of the team member
- * @example John Doe
- */
- name: string;
- /**
- * @description Username of the team member
- * @example johndoe
- */
- username?: string;
- /**
- * @description Role of the team member in the project
- * @example Full Stack Developer
- */
- role: string;
- /**
- * @description Avatar URL of the team member
- * @example https://example.com/avatar.png
- */
- avatar?: string;
- };
- SubmissionLinkDto: {
- /**
- * @description Type of link. Each fixed type (github, demo, video, document, presentation) can be used at most once per submission. Use "other" for additional links, up to a maximum of 5.
- * @example github
- * @enum {string}
- */
- type: 'github' | 'demo' | 'video' | 'document' | 'presentation' | 'other';
- /**
- * @description URL of the link
- * @example https://github.com/username/project
- */
- url: string;
- /**
- * @description Optional description of the link
- * @example Main repository with source code
- */
- description?: string;
- };
- SocialLinksDto: {
- /**
- * @description GitHub profile or repository
- * @example https://github.com/username
- */
- github?: string;
- /**
- * @description Telegram username or group
- * @example https://t.me/username
- */
- telegram?: string;
- /**
- * @description Twitter/X handle
- * @example https://twitter.com/username
- */
- twitter?: string;
- /**
- * @description Email address
- * @example contact@example.com
- */
- email?: string;
- };
- SubmissionResponseDto: {
- id: string;
- hackathonId: string;
- projectId: string;
- participantId: string;
- organizationId: string;
- /** @enum {string} */
- participationType: 'INDIVIDUAL' | 'TEAM';
- teamId?: string;
- teamName?: string;
- teamMembers?: components['schemas']['TeamMemberDto'][];
- projectName: string;
- category: string;
- description: string;
- logo?: string;
- banner?: string;
- videoUrl?: string;
- introduction?: string;
- links: components['schemas']['SubmissionLinkDto'][];
- socialLinks?: components['schemas']['SocialLinksDto'];
- status: string;
- rank?: number;
- /** @description Track entries this submission has opted into. Each entry carries the track slug/name and a wonRank stamped when the submission won that track (null until results are published). */
- trackEntries?: unknown[][];
- tagline?: string;
- builtWith?: string[];
- screenshots?: string[];
- license?: string;
- /** Format: date-time */
- codeAttestedAt?: string;
- /** Format: date-time */
- registeredAt: string;
- /** Format: date-time */
- submittedAt?: string;
- /** Format: date-time */
- createdAt: string;
- /** Format: date-time */
- updatedAt: string;
- };
- CreateSubmissionDto: {
- /**
- * @description Organization ID
- * @example org_1234567890
- */
- organizationId: string;
- /**
- * @description Project ID (must be owned by the user or organization). If not provided, a base project will be created automatically.
- * @example proj_1234567890
- */
- projectId?: string;
- /**
- * @description Type of participation
- * @example INDIVIDUAL
- * @enum {string}
- */
- participationType: 'INDIVIDUAL' | 'TEAM';
- /**
- * @deprecated
- * @description [Ignored by backend.] Team ID is snapshotted from the user's authoritative team record at submission time. Field accepted for backwards compatibility only.
- * @example team_1234567890
- */
- teamId?: string;
- /**
- * @deprecated
- * @description [Ignored by backend.] Team name is snapshotted from the user's authoritative team record at submission time.
- * @example Awesome Hackers
- */
- teamName?: string;
- /**
- * @deprecated
- * @description [Ignored by backend.] Team members are snapshotted from the user's authoritative team record at submission time. Sending this field has no effect.
- */
- teamMembers?: components['schemas']['TeamMemberDto'][];
- /**
- * @description Project name for the submission
- * @example DeFi Lending Platform
- */
- projectName: string;
- /**
- * @description Category of the project
- * @example DeFi
- */
- category: string;
- /**
- * @description Detailed description of the project
- * @example A decentralized lending platform built on Stellar...
- */
- description: string;
- /**
- * @description Project logo URL
- * @example https://example.com/logo.png
- */
- logo?: string;
- /**
- * @description Project banner image URL (wide hero image)
- * @example https://example.com/banner.png
- */
- banner?: string;
- /**
- * @description Video demonstration URL
- * @example https://youtube.com/watch?v=xyz
- */
- videoUrl?: string;
- /**
- * @description Brief introduction to the project
- * @example We built a platform that allows users to...
- */
- introduction?: string;
- /** @description Links to project resources. Each fixed link type (github, demo, video, document, presentation) can appear at most once. Use "other" for additional links, up to a maximum of 5. */
- links: components['schemas']['SubmissionLinkDto'][];
- /** @description Social links for the project */
- socialLinks?: components['schemas']['SocialLinksDto'];
- /**
- * @description Optional list of track ids to enter. Only allowed when the hackathon has prizeStructure != OVERALL_ONLY. Capped at Hackathon.tracksMaxPerSubmission.
- * @example [
- * "trk_abc",
- * "trk_def"
- * ]
- */
- trackIds?: string[];
- /**
- * @description Per-track answers. Keyed by trackId; each value is { promptAnswer?, customAnswers?, artifacts? }. Phase B.
- * @example {
- * "trk_abc": {
- * "promptAnswer": "We focused on a one-tap escrow flow.",
- * "customAnswers": {
- * "q_audience": "Freelancers"
- * },
- * "artifacts": {
- * "figma": "https://figma.com/file/..."
- * }
- * }
- * }
- */
- trackAnswers?: Record;
- /**
- * @description Answers to hackathon-level SUBMISSION-scope custom questions. Keyed by question id; each value is a string (or string[] for multi-select). Validated against the question set.
- * @example {
- * "cq_audience": "Freelancers",
- * "cq_stack": [
- * "Web",
- * "AI"
- * ]
- * }
- */
- customAnswers?: Record;
- /**
- * @description Short elevator pitch shown on cards / sidebars / judge queue. Max ~160 chars.
- * @example Milestone-based escrow for one-time freelance gigs on Stellar.
- */
- tagline?: string;
- /**
- * @description Free-form tech-stack tags. Max 20 entries, 40 chars each.
- * @example [
- * "Soroban",
- * "Stellar SDK",
- * "Next.js",
- * "Rust"
- * ]
- */
- builtWith?: string[];
- /** @description Up to 5 screenshot URLs for the project gallery. */
- screenshots?: string[];
- /**
- * @description License the submission ships under.
- * @enum {string}
- */
- license?:
- | 'MIT'
- | 'Apache-2.0'
- | 'GPL-3.0'
- | 'BSD-3'
- | 'PROPRIETARY'
- | 'OTHER';
- /** @description Submitter attests the code is original or properly attributed. Required to mark a submission SUBMITTED (vs DRAFT). */
- codeAttested?: boolean;
- };
- UpdateSubmissionDto: {
- /**
- * @description Project name for the submission
- * @example DeFi Lending Platform
- */
- projectName?: string;
- /**
- * @description Category of the project
- * @example DeFi
- */
- category?: string;
- /**
- * @description Detailed description of the project
- * @example A decentralized lending platform built on Stellar...
- */
- description?: string;
- /**
- * @description Project logo URL
- * @example https://example.com/logo.png
- */
- logo?: string;
- /**
- * @description Project banner image URL (wide hero image)
- * @example https://example.com/banner.png
- */
- banner?: string;
- /**
- * @description Video demonstration URL
- * @example https://youtube.com/watch?v=xyz
- */
- videoUrl?: string;
- /**
- * @description Brief introduction to the project
- * @example We built a platform that allows users to...
- */
- introduction?: string;
- /** @description Links to project resources. Each fixed link type (github, demo, video, document, presentation) can appear at most once. Use "other" for additional links, up to a maximum of 5. */
- links?: components['schemas']['SubmissionLinkDto'][];
- /** @description Social links for the project */
- socialLinks?: components['schemas']['SocialLinksDto'];
- /** @description Team members (for team submissions) */
- teamMembers?: components['schemas']['TeamMemberDto'][];
- /** @description Replace the submission's track picks. Omit to leave existing entries untouched; pass an empty array to clear all picks. */
- trackIds?: string[];
- /** @description Per-track answers, same shape as on create. Phase B. */
- trackAnswers?: Record;
- /**
- * @description Answers to hackathon-level SUBMISSION-scope custom questions. Keyed by question id; each value is a string (or string[] for multi-select). Replaces the stored answers when provided.
- * @example {
- * "cq_audience": "Freelancers",
- * "cq_stack": [
- * "Web",
- * "AI"
- * ]
- * }
- */
- customAnswers?: Record;
- tagline?: string;
- builtWith?: string[];
- screenshots?: string[];
- /** @enum {string} */
- license?:
- | 'MIT'
- | 'Apache-2.0'
- | 'GPL-3.0'
- | 'BSD-3'
- | 'PROPRIETARY'
- | 'OTHER';
- codeAttested?: boolean;
- };
- TeamMemberResponseDto: {
- /** @description User ID */
- userId: string;
- /** @description Username */
- username: string;
- /** @description Display name */
- name: string;
- /** @description Role in team (e.g. leader, member) */
- role: string;
- /** @description Profile image URL */
- image?: string;
- /** @description When the member joined the team (ISO string) */
- joinedAt: string;
- };
- LookingForRoleDto: {
- /**
- * @description Role title (e.g. "Frontend Developer", "UI Designer")
- * @example Frontend Developer
- */
- role: string;
- /**
- * @description Optional free-form skills associated with this role
- * @example [
- * "React",
- * "TypeScript"
- * ]
- */
- skills?: unknown[][];
- };
- TeamRoleResponseDto: {
- /** @description Skill/role name */
- skill: string;
- /** @description Whether this role has been filled */
- hired: boolean;
- };
- TeamResponseDto: {
- /**
- * @description Team ID
- * @example team_1234567890
- */
- id: string;
- /**
- * @description Team name
- * @example Stellar Innovators
- */
- teamName: string;
- /** @description Team description */
- description: string;
- /** @description Hackathon ID */
- hackathonId: string;
- /** @description Team leader information */
- leader: Record;
- /** @description Team members */
- members: components['schemas']['TeamMemberResponseDto'][];
- /**
- * @description Current number of members
- * @example 3
- */
- memberCount: number;
- /**
- * @description Maximum team size allowed
- * @example 5
- */
- maxSize: number;
- /** @description Roles the team is looking for, with optional free-form skills */
- lookingFor?: components['schemas']['LookingForRoleDto'][];
- /** @description Hired status per role (when using lookingFor) */
- rolesStatus?: components['schemas']['TeamRoleResponseDto'][];
- /** @description Contact information (e.g. telegram, discord, email) */
- contactInfo?: Record;
- /**
- * @description Whether team is accepting new members
- * @example true
- */
- isOpen: boolean;
- /** @description Team creation date */
- createdAt: string;
- /** @description Last update date */
- updatedAt: string;
- };
- TeamListResponseDto: {
- /** @description List of teams */
- teams: components['schemas']['TeamResponseDto'][];
- /** @description Pagination metadata */
- pagination: Record;
- };
- CreateTeamDto: {
- /**
- * @description Team name
- * @example Stellar Innovators
- */
- teamName: string;
- /**
- * @description Team description
- * @example We are building the next generation DeFi platform
- */
- description: string;
- /** @description Roles the team is looking for. Each entry is a role title with optional free-form skills. Team will be CLOSED unless at least one role is specified. The number of roles is bounded by the hackathon's teamMin/teamMax (excluding the leader). */
- lookingFor?: components['schemas']['LookingForRoleDto'][];
- /**
- * @description Contact information for interested members
- * @example {
- * "telegram": "@teamlead",
- * "discord": "lead#1234"
- * }
- */
- contactInfo?: Record;
- };
- UpdateTeamDto: {
- /**
- * @description Updated team name
- * @example Stellar Innovators Pro
- */
- teamName?: string;
- /** @description Updated team description */
- description?: string;
- /** @description Roles the team is looking for. Set to empty array to close the team. Each entry is a role title with optional free-form skills. */
- lookingFor?: components['schemas']['LookingForRoleDto'][];
- /** @description Updated contact information */
- contactInfo?: Record;
- /** @description Explicitly set team open/closed status. Can only be true if lookingFor is not empty. */
- isOpen?: boolean;
- };
- InviteToTeamDto: {
- /**
- * @description User ID or username of the person to invite
- * @example user_1234567890
- */
- inviteeIdentifier: string;
- /**
- * @description Optional message to include with the invitation
- * @example We would love to have you on our team!
- */
- message?: string;
- };
- TeamInvitationResponseDto: {
- /**
- * @description Invitation ID
- * @example inv_1234567890
- */
- id: string;
- /**
- * @description Team ID
- * @example team_1234567890
- */
- teamId: string;
- /** @description Hackathon information */
- hackathon: Record;
- /** @description Invitee information */
- invitee: Record;
- /** @description Inviter information */
- inviter: Record;
- /**
- * @description Invitation status
- * @example pending
- * @enum {string}
- */
- status: 'pending' | 'accepted' | 'rejected' | 'expired';
- /**
- * @description Optional message from inviter
- * @example We would love to have you on our team!
- */
- message?: Record;
- /**
- * @description Role in the team
- * @example member
- */
- role: Record;
- /**
- * Format: date-time
- * @description Invitation expiration date
- * @example 2026-01-30T12:00:00.000Z
- */
- expiresAt: string;
- /**
- * Format: date-time
- * @description Invitation creation date
- * @example 2026-01-23T12:00:00.000Z
- */
- createdAt: string;
- /**
- * @description Date when invitation was responded to
- * @example 2026-01-24T12:00:00.000Z
- */
- respondedAt?: Record;
- };
- TeamInvitationListResponseDto: {
- /** @description List of invitations */
- invitations: components['schemas']['TeamInvitationResponseDto'][];
- /**
- * @description Total count
- * @example 5
- */
- total: number;
- };
- InvitationActionResponseDto: {
- /**
- * @description Success message
- * @example Successfully accepted team invitation
- */
- message: string;
- /**
- * @description Team ID that was joined (only for accept)
- * @example team_1234567890
- */
- teamId: string;
- /** @description Updated invitation */
- invitation: components['schemas']['TeamInvitationResponseDto'];
- };
- ToggleRoleHiredDto: {
- /**
- * @description Skill/role name to toggle hired status
- * @example Rust Developer
- */
- skill: string;
- };
- TransferLeadershipDto: {
- /**
- * @description User ID of the new team leader (must be an existing member)
- * @example user_1234567890
- */
- newLeaderId: string;
- /**
- * @description Optional reason for the leadership transfer
- * @example Stepping down to focus on development tasks
- */
- reason?: string;
- };
- LeadershipTransferResponseDto: {
- /**
- * @description Success message
- * @example Leadership successfully transferred
- */
- message: string;
- /** @description Updated team with new leader */
- team: components['schemas']['TeamResponseDto'];
- /**
- * @description Previous leader ID
- * @example user_1234567890
- */
- previousLeaderId: string;
- /**
- * @description New leader ID
- * @example user_0987654321
- */
- newLeaderId: string;
- /**
- * Format: date-time
- * @description Timestamp of the transfer
- * @example 2026-02-16T10:30:00.000Z
- */
- transferredAt: string;
- };
- InfoFormData: {
- /** @description Hackathon title */
- name: string;
- /**
- * Format: uri
- * @description Banner image URL
- */
- banner: string;
- /** @description Hackathon description */
- description: string;
- /** @description One or more hackathon categories */
- categories: (
- | 'DeFi'
- | 'Payments'
- | 'Stablecoins'
- | 'Lending & Borrowing'
- | 'Trading & DEXs'
- | 'Derivatives'
- | 'Prediction Markets'
- | 'NFTs'
- | 'Creator Economy'
- | 'Social'
- | 'Social Tokens'
- | 'DAOs'
- | 'Governance'
- | 'Web3 Gaming'
- | 'Metaverse'
- | 'Layer 1'
- | 'Layer 2'
- | 'Cross-chain'
- | 'Interoperability'
- | 'Infrastructure'
- | 'Developer Tooling'
- | 'Wallets'
- | 'Account Abstraction'
- | 'Oracles'
- | 'Data & Indexing'
- | 'Analytics'
- | 'AI'
- | 'AI Agents'
- | 'DePIN'
- | 'DeSci'
- | 'Privacy'
- | 'Zero-Knowledge'
- | 'Security'
- | 'Identity'
- | 'Real World Assets'
- | 'Tokenization'
- | 'Supply Chain'
- | 'Sustainability'
- | 'Climate'
- | 'Education'
- | 'Healthcare'
- | 'Consumer Apps'
- | 'Mobile'
- | 'Other'
- )[];
- /**
- * @description Venue type
- * @enum {string}
- */
- venueType: 'virtual' | 'physical';
- /** @description Short tagline */
- tagline: string;
- country?: string;
- state?: string;
- city?: string;
- venueName?: string;
- venueAddress?: string;
- /** @description Read-only URL slug (server-assigned) */
- slug?: string;
- };
- PhaseDto: {
- /** @description Phase name */
- name: string;
- /** Format: date-time */
- startDate: string;
- /** Format: date-time */
- endDate: string;
- description?: string;
- };
- TimelineFormData: {
- /** Format: date-time */
- startDate: string;
- /** Format: date-time */
- submissionDeadline: string;
- /** @description IANA timezone */
- timezone: string;
- /** Format: date-time */
- registrationDeadline?: string;
- /** Format: date-time */
- judgingDeadline?: string;
- phases?: components['schemas']['PhaseDto'][];
- /**
- * Format: date-time
- * @description Read-only: original submission deadline before any extension
- */
- submissionDeadlineOriginal?: string;
- /**
- * Format: date-time
- * @description Read-only: timestamp the submission deadline was last extended
- */
- submissionDeadlineExtendedAt?: string;
- };
- ParticipantFormData: {
- /** @enum {string} */
- participantType: 'individual' | 'team' | 'team_or_individual';
- teamMin?: number;
- teamMax?: number;
- /** @description Participant cap; omit for unlimited */
- maxParticipants?: number;
- require_github?: boolean;
- require_demo_video?: boolean;
- require_other_links?: boolean;
- detailsTab?: boolean;
- participantsTab?: boolean;
- resourcesTab?: boolean;
- submissionTab?: boolean;
- announcementsTab?: boolean;
- discussionTab?: boolean;
- winnersTab?: boolean;
- sponsorsTab?: boolean;
- joinATeamTab?: boolean;
- rulesTab?: boolean;
- /** @enum {string} */
- submissionVisibility?: 'PUBLIC' | 'PARTICIPANTS_ONLY';
- /** @enum {string} */
- submissionStatusVisibility?:
- | 'ALL'
- | 'ACCEPTED_SHORTLISTED'
- | 'HIDDEN_UNTIL_RESULTS';
- };
- HackathonDraftTracksDto: {
- /** @description Max number of tracks a single submission may enter (1-20). */
- tracksMaxPerSubmission?: number;
- };
- PrizeTierDto: {
- /** @description Client-generated tier id */
- id: string;
- /** @description Placement label, e.g. "1st Place" */
- place: string;
- /** @description Prize amount as a decimal string */
- prizeAmount: string;
- description?: string;
- currency?: string;
- passMark: number;
- /** @enum {string} */
- kind?: 'OVERALL' | 'TRACK';
- trackId?: string;
- };
- PrizePlacementWriteDto: {
- /** @description 1 = 1st place; unique within a prize */
- position: number;
- label?: string;
- /** @description Prize amount as a decimal string */
- amount: string;
- currency?: string;
- passMark?: number;
- };
- PrizeWriteDto: {
- /** @description Prize name, e.g. "Grand Prize" or "Best UI/UX" */
- name: string;
- description?: string;
- /** @description Linked HackathonTrack ids; empty = overall prize */
- trackIds: string[];
- placements: components['schemas']['PrizePlacementWriteDto'][];
- };
- WinnerOverrideDto: {
- /** @description Submission id the override targets */
- submissionId: string;
- rank?: number;
- prizeAmount?: string;
- currency?: string;
- };
- RewardsFormData: {
- prizeTiers?: components['schemas']['PrizeTierDto'][];
- prizes?: components['schemas']['PrizeWriteDto'][];
- winnerOverrides?: components['schemas']['WinnerOverrideDto'][];
- /** @enum {string} */
- prizeStructure?: 'OVERALL_ONLY' | 'OVERALL_AND_TRACKS' | 'TRACKS_ONLY';
- tracksMaxPerSubmission?: number;
- allowWinnerStacking?: boolean;
- };
- ResourceItemDto: {
- /** @description Client-generated resource id */
- id: string;
- link?: string;
- description?: string;
- /** @description Uploaded file metadata */
- file?: {
- url?: string;
- name?: string;
- };
- };
- ResourcesFormData: {
- resources: components['schemas']['ResourceItemDto'][];
- };
- CriterionDto: {
- /** @description Client-generated criterion id */
- id: string;
- /** @description Criterion name */
- name: string;
- weight: number;
- description?: string;
- };
- JudgingFormData: {
- criteria: components['schemas']['CriterionDto'][];
- };
- SponsorPartnerDto: {
- /** @description Client-generated sponsor/partner id */
- id: string;
- name?: string;
- logo?: string;
- link?: string;
- };
- CollaborationFormData: {
- /** @description Organizer contact email */
- contactEmail: string;
- telegram?: string;
- discord?: string;
- socialLinks?: string[];
- sponsorsPartners?: components['schemas']['SponsorPartnerDto'][];
- };
- HackathonDraftDataDto: {
- information?: components['schemas']['InfoFormData'];
- timeline?: components['schemas']['TimelineFormData'];
- participation?: components['schemas']['ParticipantFormData'];
- tracks?: components['schemas']['HackathonDraftTracksDto'];
- rewards?: components['schemas']['RewardsFormData'];
- resources?: components['schemas']['ResourcesFormData'];
- judging?: components['schemas']['JudgingFormData'];
- collaboration?: components['schemas']['CollaborationFormData'];
- };
- HackathonDraftAssumptionDto: {
- /** @description Wizard section the assumption belongs to. */
- section: string;
- /** @description Field within the section. */
- field: string;
- /** @description One-line plain reason for the choice. */
- note: string;
- };
- HackathonDraftAiGenerationDto: {
- /** @description AI generationId that produced or last-updated this draft. */
- generationId: string;
- /** @description Non-obvious choices the AI made, for review. */
- assumptions: components['schemas']['HackathonDraftAssumptionDto'][];
- /** @description The brief that produced this draft (shown beside the draft). */
- brief?: string | null;
- };
- HackathonDraftPrizePlacementDto: {
- id: string;
- /** @description 1 = 1st place, unique within a prize */
- position: number;
- label?: string | null;
- /** @description Decimal string in the prize currency */
- amount: string;
- currency: string;
- /** @description Minimum score (0-100) to win this placement */
- passMark: number;
- };
- HackathonDraftPrizeDto: {
- id: string;
- name: string;
- description?: string | null;
- displayOrder: number;
- /** @description Linked track ids; empty = overall prize */
- trackIds: string[];
- placements: components['schemas']['HackathonDraftPrizePlacementDto'][];
- };
- HackathonDraftResponseDto: {
- id: string;
- /** @enum {string} */
- status:
- | 'DRAFT'
- | 'DRAFT_AWAITING_FUNDING'
- | 'PUBLISHED'
- | 'ARCHIVED'
- | 'CANCELLED';
- /** @description First incomplete step (1-based) */
- currentStep: number;
- completedSteps: string[];
- data: components['schemas']['HackathonDraftDataDto'];
- isValidForPublish: boolean;
- /** @description Per-section validation messages, keyed by step */
- validationErrors: {
- [key: string]: string[];
- };
- /** Format: date-time */
- createdAt: string;
- /** Format: date-time */
- updatedAt: string;
- /** @description Present when the draft was generated with Organizer Assist; enables per-section AI regenerate in the wizard. */
- aiGeneration?: components['schemas']['HackathonDraftAiGenerationDto'];
- /** @description Prize entity (named prizes + linked tracks + placements). Additive read path alongside data.rewards.prizeTiers; becomes authoritative as readers cut over. */
- prizes: components['schemas']['HackathonDraftPrizeDto'][];
- };
- UpdateHackathonDraftDto: {
- information?: components['schemas']['InfoFormData'];
- timeline?: components['schemas']['TimelineFormData'];
- participation?: components['schemas']['ParticipantFormData'];
- rewards?: components['schemas']['RewardsFormData'];
- resources?: components['schemas']['ResourcesFormData'];
- judging?: components['schemas']['JudgingFormData'];
- collaboration?: components['schemas']['CollaborationFormData'];
- /** @description Hint that this is an autosave (no completion side effects). */
- autoSave?: boolean;
- };
- ClarifyHackathonBriefDto: {
- /** @description Free-text brief to triage for clarifying questions. */
- brief: string;
- };
- ClarifyHackathonQuestionOptionDto: {
- value: string;
- label: string;
- };
- ClarifyHackathonQuestionDto: {
- /** @description Axis key, e.g. "duration" | "structure" | "participation". */
- id: string;
- question: string;
- options: components['schemas']['ClarifyHackathonQuestionOptionDto'][];
- };
- ClarifyHackathonDraftResponseDto: {
- /** @description True when the brief is specific enough to draft immediately. */
- ready: boolean;
- questions: components['schemas']['ClarifyHackathonQuestionDto'][];
- };
- GenerateDraftFromBriefDto: {
- /**
- * @description Free-text brief describing the hackathon to generate.
- * @example A two-week hackathon for AI agent tooling on Stellar, aimed at indie builders.
- */
- brief: string;
- /**
- * @description Total budget cap in USDC, as a decimal string.
- * @example 10000
- */
- budgetCapUsdc: string;
- /**
- * @description Earliest the hackathon may start (YYYY-MM-DD).
- * @example 2026-07-01
- */
- earliestStart: string;
- /** @description Up to 3 example briefs/drafts to steer style. */
- examples?: string[];
- };
- AiGenerationMetaDto: {
- generationId: string;
- model: string;
- promptVersion: string;
- /** @description Cost in USD as a decimal string (never a float). */
- costUsd: string;
- };
- GenerateDraftFromBriefResponseDto: {
- /** @description Id of the created draft. */
- draftId: string;
- draft: components['schemas']['HackathonDraftResponseDto'];
- generation: components['schemas']['AiGenerationMetaDto'];
- };
- RegenerateDraftSectionDto: {
- /** @enum {string} */
- section: 'criteria' | 'prizes' | 'tracks' | 'timeline' | 'description';
- /** @description Optional steering instructions for the regeneration. */
- instructions?: string;
- };
- RegenerateDraftSectionResponseDto: {
- /** @enum {string} */
- section: 'criteria' | 'prizes' | 'tracks' | 'timeline' | 'description';
- /** @description Regenerated values in the wizard section shape. */
- data: {
- [key: string]: unknown;
- };
- generation: components['schemas']['AiGenerationMetaDto'];
- };
- UpdateVisibilitySettingsDto: {
- /**
- * @description Who can view hackathon submissions
- * @example PUBLIC
- * @enum {string}
- */
- submissionVisibility?: 'PUBLIC' | 'PARTICIPANTS_ONLY';
- /**
- * @description Which submission statuses are visible to others. ALL exposes SUBMITTED and SHORTLISTED. ACCEPTED_SHORTLISTED exposes only SHORTLISTED. HIDDEN_UNTIL_RESULTS hides every submission from non-owners and non-organizers until the hackathon results are published, then exposes only SHORTLISTED. DISQUALIFIED is never visible to anyone other than the owner or an organizer.
- * @example ACCEPTED_SHORTLISTED
- * @enum {string}
- */
- submissionStatusVisibility?:
- | 'ALL'
- | 'ACCEPTED_SHORTLISTED'
- | 'HIDDEN_UNTIL_RESULTS';
- };
- ReviewSubmissionDto: {
- /**
- * @description ID of the assigned judge performing the review
- * @example user_1234567890
- */
- judgeId: string;
- /**
- * @description Review action
- * @example SHORTLISTED
- * @enum {string}
- */
- status: 'SHORTLISTED' | 'SUBMITTED';
- /**
- * @description Reviewer notes or feedback
- * @example Great project with innovative approach
- */
- notes?: string;
- /**
- * @description Rank/position for the submission
- * @example 1
- */
- rank?: number;
- /**
- * @description Whether this is an organizational override (bypasses COI and assignment checks)
- * @default false
- */
- isOrganizerOverride: boolean;
- };
- OrganizationHackathonParticipantsResponseDto: Record;
- DisqualifySubmissionDto: {
- /**
- * @description Reason for disqualification
- * @example Submission does not meet hackathon requirements
- */
- disqualificationReason: string;
- };
- BulkSubmissionActionDto: {
- /**
- * @description Array of submission IDs
- * @example [
- * "sub_1234567890",
- * "sub_0987654321"
- * ]
- */
- submissionIds: string[];
- /**
- * @description Action to perform
- * @example SHORTLISTED
- * @enum {string}
- */
- action: 'SHORTLISTED' | 'SUBMITTED' | 'DISQUALIFIED';
- /**
- * @description Reason (required for DISQUALIFIED action)
- * @example Does not meet requirements
- */
- reason?: string;
- };
- SummaryMetricsDto: {
- /** @example 120 */
- participantsCount: number;
- /** @example 45 */
- submissionsCount: number;
- /** @example 6 */
- activeJudges: number;
- /** @example 3 */
- completedMilestones: number;
- };
- TrendPointDto: {
- /** @example 2026-02-01 */
- date: string;
- /** @example 5 */
- count: number;
- };
- TrendsDto: {
- submissionsOverTime: components['schemas']['TrendPointDto'][];
- participantSignupsOverTime: components['schemas']['TrendPointDto'][];
- };
- TimelinePhaseDto: {
- /** @example Registration */
- phase: string;
- /** @example Individuals and teams are signing up to participate in the hackathon. */
- description: string;
- /** @example 2026-01-20 */
- date: string;
- /** @enum {string} */
- status: 'upcoming' | 'ongoing' | 'completed';
- };
- HackathonAnalyticsResponseDto: {
- /** @example hack_1234567890 */
- hackathonId: string;
- summary: components['schemas']['SummaryMetricsDto'];
- trends: components['schemas']['TrendsDto'];
- timeline: components['schemas']['TimelinePhaseDto'][];
- };
- AnnouncementAuthorDto: {
- id: string;
- name: string;
- image?: string;
- username?: string;
- };
- AnnouncementResponseDto: {
- id: string;
- hackathonId: string;
- title: string;
- content: string;
- isDraft: boolean;
- isPinned: boolean;
- /** Format: date-time */
- publishedAt?: string;
- /** Format: date-time */
- createdAt: string;
- /** Format: date-time */
- updatedAt: string;
- author: components['schemas']['AnnouncementAuthorDto'];
- };
- CreateAnnouncementDto: {
- /**
- * @description Title of the announcement
- * @example Hackathon Starts Now!
- */
- title: string;
- /**
- * @description Content of the announcement in Markdown
- * @example # Welcome
- *
- * We are excited to start...
- */
- content: string;
- /**
- * @description Whether the announcement is a draft
- * @default true
- */
- isDraft: boolean;
- /**
- * @description Whether the announcement should be pinned
- * @default false
- */
- isPinned: boolean;
- };
- UpdateAnnouncementDto: {
- /**
- * @description Title of the announcement
- * @example Hackathon Starts Now!
- */
- title?: string;
- /**
- * @description Content of the announcement in Markdown
- * @example # Welcome
- *
- * We are excited to start...
- */
- content?: string;
- /** @description Whether the announcement is a draft */
- isDraft?: boolean;
- /** @description Whether the announcement should be pinned */
- isPinned?: boolean;
- };
- CriterionScoreDto: {
- /**
- * @description Criterion ID or name
- * @example Technical Complexity
- */
- criterionId: string;
- /**
- * @description Score for this criterion (0-10)
- * @example 8.5
- */
- score: number;
- /**
- * @description Optional comment for this criterion
- * @example Great technical implementation
- */
- comment?: string;
- };
- ScoreSubmissionDto: {
- /**
- * @description Submission ID being judged
- * @example sub_1234567890
- */
- submissionId: string;
- /** @description Scores for each individual criterion */
- criteriaScores: components['schemas']['CriterionScoreDto'][];
- /**
- * @description Optional ID of the judge to attribute this score to (defaults to calling user)
- * @example user_123
- */
- judgeId?: string;
- /**
- * @description Optional admin notes
- * @example Score adjusted per appeal
- */
- notes?: string;
- /**
- * @description Whether this is an organizational override (bypasses COI and assignment checks)
- * @default false
- */
- isOrganizerOverride: boolean;
- };
- UserDetailsDto: {
- id: string;
- email: string;
- name: string;
- username: string;
- image?: string;
- };
- JudgingSubmissionParticipantDto: {
- id: string;
- userId: string;
- user: components['schemas']['UserDetailsDto'];
- participationType: string;
- teamId?: string;
- teamName?: string;
- teamMembers?: Record[];
- };
- JudgingSubmissionDataDto: {
- id: string;
- projectName: string;
- category: string;
- description: string;
- logo?: string;
- videoUrl?: string;
- introduction?: string;
- links?: Record[];
- socialLinks?: {
- [key: string]: unknown;
- };
- submissionDate: string;
- status: string;
- rank?: number;
- };
- IndividualJudgingResultDto: {
- judgeId: string;
- judgeName: string;
- criteriaScores: components['schemas']['CriterionScoreDto'][];
- totalScore: number;
- /** Format: date-time */
- submittedAt: string;
- };
- JudgingSubmissionDto: {
- participant: components['schemas']['JudgingSubmissionParticipantDto'];
- submission: components['schemas']['JudgingSubmissionDataDto'];
- myScore?: components['schemas']['IndividualJudgingResultDto'];
- averageScore: Record | null;
- judgeCount: number;
- };
- JudgingPaginationDto: {
- page: number;
- limit: number;
- total: number;
- totalPages: number;
- };
- JudgingSubmissionsResponseDto: {
- submissions: components['schemas']['JudgingSubmissionDto'][];
- criteria: components['schemas']['CriterionDto'][];
- pagination: components['schemas']['JudgingPaginationDto'];
- /** @description Number of submissions in this hackathon that the calling judge has already scored. Independent of pagination so the progress strip is accurate even when the user is on page 2. */
- scoredCount?: number;
- };
- AddJudgeDto: {
- /**
- * @description Email address of the user to be assigned as a judge
- * @example judge@example.com
- */
- email: string;
- };
- JudgeResponseDto: {
- id: string;
- userId: string;
- name: string;
- image?: Record;
- };
- IndividualScoreDto: {
- judgeId: string;
- judgeName: string;
- score: number;
- };
- ScoreRangeDto: {
- min: number;
- max: number;
- };
- CriteriaBreakdownDto: {
- criterionId: string;
- averageScore: number;
- min: number;
- max: number;
- variance: number;
- };
- AggregatedJudgingResultDto: {
- submissionId: string;
- projectName: string;
- teamId?: Record;
- participantId: string;
- status: string;
- /** Format: date-time */
- submittedAt: string;
- averageScore: number;
- totalScore: number;
- judgeCount: number;
- expectedJudgeCount: number;
- judgingProgress: string;
- individualScores: components['schemas']['IndividualScoreDto'][];
- scoreVariance: number;
- scoreRange: components['schemas']['ScoreRangeDto'];
- criteriaBreakdown: components['schemas']['CriteriaBreakdownDto'][];
- rank?: Record;
- computedRank?: number;
- prize?: string;
- isComplete: boolean;
- isPending: boolean;
- hasDisagreement: boolean;
- trackIds?: string[];
- /** @description True when this submission is in the top X% overall per the recommendation threshold. */
- recommendedOverall?: boolean;
- /** @description Track ids where this submission is in the top X% per the per-track recommendation threshold. */
- recommendedTrackIds?: string[];
- };
- JudgingResultsResponseDto: {
- hackathonId: string;
- totalSubmissions: number;
- submissionsScoredCount: number;
- submissionsPendingCount: number;
- averageScoreAcrossAll: number;
- resultsPublished: boolean;
- judgesAssigned: number;
- results: components['schemas']['AggregatedJudgingResultDto'][];
- /** Format: date-time */
- generatedAt: string;
- /** @description Manual winner assignments override (submissionId -> rank) */
- winnerOverrides?: {
- [key: string]: number;
- };
- metadata: components['schemas']['JudgingResultsMetadataDto'];
- };
- SetPlacementWinnerDto: {
- /** @description The submission to award this placement to. */
- submissionId: string;
- };
- InviteJudgeDto: {
- /** @example judge@example.com */
- email: string;
- /** @description Optional public display name for the judge */
- displayName?: string;
- /** @description Optional title/role shown with the judge (e.g. "Time Traveler"). */
- title?: string;
- /** @description Personal message included in the invitation email */
- message?: string;
- /** @description Override expiry in days (default 14). Maximum 60 to prevent indefinite invitations. */
- expiresInDays?: number;
- };
- BulkInviteJudgesDto: {
- /** @description Up to 25 judges per request */
- invites: components['schemas']['InviteJudgeDto'][];
- };
- BulkInviteRowResultDto: {
- email: string;
- /**
- * @description 'invited' = sent; 'failed' = skipped with a reason.
- * @enum {string}
- */
- status: 'invited' | 'failed';
- /** @description Failure reason when status is failed. */
- reason?: string;
- };
- BulkInviteResultDto: {
- results: components['schemas']['BulkInviteRowResultDto'][];
- /** @description Count of invitations sent. */
- invited: number;
- /** @description Count of rows that failed / were skipped. */
- failed: number;
- };
- RecommendationThresholdDto: {
- id: string;
- hackathonId: string;
- /** @description null = overall threshold; otherwise the scoped track id. */
- trackId?: string | null;
- /** @description Top percent (0-100). */
- topPercent: number;
- };
- SetRecommendationThresholdDto: {
- /** @description Track id to scope the threshold to; omit for the overall cut. */
- trackId?: string;
- /**
- * @description Top percent (0-100) of submissions flagged as recommended.
- * @example 10
- */
- topPercent: number;
- };
- RecommendationComputeDiagnosticsDto: {
- /** @description Submissions currently SHORTLISTED. */
- shortlistedSubmissions: number;
- /** @description Shortlisted submissions with at least one counted score (active judge or promoted AI scorecard; advisory AI_ASSIST excluded). These are the only submissions a threshold can rank. */
- scoredSubmissions: number;
- /** @description Whether an overall (all-submissions) cut is set. */
- overallThresholdConfigured: boolean;
- /** @description Number of per-track cuts configured. */
- trackThresholdsConfigured: number;
- /**
- * @description Human-readable reasons explaining the outcome (e.g. why nothing was flagged). Empty when the compute produced recommendations with nothing outstanding.
- * @example [
- * "No recommendation thresholds are configured. Set a top-X% cut (overall or per track), then recompute."
- * ]
- */
- reasons: string[];
- };
- RecommendationComputeResultDto: {
- /** @description Submissions flagged recommendedOverall. */
- overallRecommended: number;
- /**
- * @description Per-track recommended counts.
- * @example [
- * {
- * "trackId": "trk_1",
- * "recommended": 3
- * }
- * ]
- */
- tracks: string[];
- /** @description Why the compute produced what it did, so an empty result is never silent. */
- diagnostics: components['schemas']['RecommendationComputeDiagnosticsDto'];
- };
- AcceptJudgeInvitationDto: {
- /** @description Optional display name override. If omitted, the inviter-provided displayName (or the user’s account name) is used. */
- displayName?: string;
- };
- PublishedInfoFormDataDto: {
- /** @example Web3 Innovation Hackathon */
- name: string;
- /** @example https://example.com/banner.png */
- banner: string;
- /** @example Build products for the decentralized future. */
- description: string;
- categories: (
- | 'DeFi'
- | 'NFTs'
- | 'DAOs'
- | 'Layer 2'
- | 'Cross-chain'
- | 'Web3 Gaming'
- | 'Social Tokens'
- | 'Infrastructure'
- | 'Privacy'
- | 'Sustainability'
- | 'Real World Assets'
- | 'Other'
- )[];
- /**
- * @example virtual
- * @enum {string}
- */
- venueType: 'virtual' | 'physical';
- /** @example Build the future of Web3 */
- tagline: string;
- /** @example Nigeria */
- country?: string;
- /** @example Lagos */
- state?: string;
- /** @example Ikeja */
- city?: string;
- /** @example Eko Convention Center */
- venueName?: string;
- /** @example Plot 1415 Adetokunbo Ademola St */
- venueAddress?: string;
- /** @example web3-innovation-hackathon */
- slug?: string;
- };
- PublishedSponsorPartnerDto: {
- /** @example sp-1 */
- id: string;
- /** @example Stellar Foundation */
- name?: string;
- /** @example https://example.com/logo.png */
- logo?: string;
- /** @example https://stellar.org */
- link?: string;
- };
- PublishedCollaborationFormDataDto: {
- /** @example organizer@boundless.dev */
- contactEmail: string;
- /** @example @boundless */
- telegram?: string;
- /** @example boundless-hackathon */
- discord?: string;
- /**
- * @example [
- * "https://x.com/boundless"
- * ]
- */
- socialLinks: string[];
- sponsorsPartners: components['schemas']['PublishedSponsorPartnerDto'][];
- };
- UpdatePublishedHackathonContentDto: {
- information?: components['schemas']['PublishedInfoFormDataDto'];
- collaboration?: components['schemas']['PublishedCollaborationFormDataDto'];
- };
- PublishedPhaseDto: {
- /** @example Building Phase */
- name: string;
- /** @example 2026-04-01T00:00:00.000Z */
- startDate: string;
- /** @example 2026-04-10T00:00:00.000Z */
- endDate: string;
- /** @example Core build phase for teams */
- description?: string;
- };
- PublishedTimelineFormDataDto: {
- /** @example 2026-04-01T00:00:00.000Z */
- startDate?: string;
- /** @example 2026-04-15T00:00:00.000Z */
- submissionDeadline?: string;
- /** @example Africa/Lagos */
- timezone?: string;
- /**
- * @description Optional. When null, registration stays open until submission deadline.
- * @example 2026-04-02T00:00:00.000Z
- */
- registrationDeadline?: string;
- /**
- * @description Optional judging deadline. When null, no judging phase is rendered on the timeline.
- * @example 2026-04-18T00:00:00.000Z
- */
- judgingDeadline?: string;
- phases?: components['schemas']['PublishedPhaseDto'][];
- };
- PublishedParticipantFormDataDto: {
- /** @enum {string} */
- participantType: 'individual' | 'team' | 'team_or_individual';
- /** @example 2 */
- teamMin?: number;
- /** @example 5 */
- teamMax?: number;
- /**
- * @description Optional cap on total participants. null = unlimited. Can be updated after publishing.
- * @example 200
- */
- maxParticipants?: number;
- /** @example true */
- require_github?: boolean;
- /** @example false */
- require_demo_video?: boolean;
- /** @example true */
- require_other_links?: boolean;
- detailsTab?: boolean;
- participantsTab?: boolean;
- resourcesTab?: boolean;
- submissionTab?: boolean;
- announcementsTab?: boolean;
- discussionTab?: boolean;
- winnersTab?: boolean;
- sponsorsTab?: boolean;
- joinATeamTab?: boolean;
- rulesTab?: boolean;
- };
- UpdatePublishedHackathonScheduleDto: {
- timeline?: components['schemas']['PublishedTimelineFormDataDto'];
- participation?: components['schemas']['PublishedParticipantFormDataDto'];
- };
- PublishedPrizeTierDto: {
- /** @example tier-1 */
- id: string;
- /** @example 1st Place */
- place: string;
- /** @example 5000 */
- prizeAmount: string;
- /** @example USDC */
- currency?: string;
- /** @example Top overall project */
- description?: string;
- /**
- * @description Display rank / ordering of the tier (1 = highest)
- * @example 1
- */
- rank?: number;
- /** @example 70 */
- passMark: number;
- /** @enum {string} */
- kind?: 'OVERALL' | 'TRACK';
- /** @description Required when kind=TRACK. References a HackathonTrack id. */
- trackId?: string;
- };
- PublishedRewardsFormDataDto: {
- prizeTiers?: components['schemas']['PublishedPrizeTierDto'][];
- prizes?: components['schemas']['PrizeWriteDto'][];
- /**
- * @description Manual winner assignments override (submissionId -> rank)
- * @example {
- * "sub-1": 1,
- * "sub-2": 2
- * }
- */
- winnerOverrides?: {
- [key: string]: number;
- };
- /** @enum {string} */
- prizeStructure?: 'OVERALL_ONLY' | 'OVERALL_AND_TRACKS' | 'TRACKS_ONLY';
- tracksMaxPerSubmission?: number;
- allowWinnerStacking?: boolean;
- };
- UpdatePublishedHackathonFinancialDto: {
- rewards: components['schemas']['PublishedRewardsFormDataDto'];
- };
- AdvancedSettingsFormDataDto: {
- /** @example true */
- isPublic: boolean;
- /** @example false */
- allowLateRegistration: boolean;
- /** @example true */
- requireApproval: boolean;
- /** @example 500 */
- maxParticipants?: number;
- /** @example hackathons.boundless.dev */
- customDomain?: string;
- /** @example true */
- enableDiscord: boolean;
- /** @example https://discord.gg/boundless */
- discordInviteLink?: string;
- /** @example true */
- enableTelegram: boolean;
- /** @example https://t.me/boundless */
- telegramInviteLink?: string;
- };
- UpdatePublishedHackathonAdvancedSettingsDto: {
- advancedSettings: components['schemas']['AdvancedSettingsFormDataDto'];
- };
- SetHackathonAccessDto: {
- /** @enum {string} */
- visibility: 'PUBLIC' | 'PRIVATE';
- /** @description Access password. Required when first making a hackathon private; ignored (cleared) when visibility is PUBLIC. */
- password?: string;
- };
- InvitePartnerDto: {
- /** @example sponsor@partner.io */
- partnerEmail: string;
- /** @example Acme Corp */
- partnerName: string;
- /** @example https://cdn.example.com/logo.png */
- partnerLogo?: string;
- /** @example https://acme.io */
- partnerLink?: string;
- /**
- * @description Pledged amount in USDC
- * @example 1000
- */
- pledgedAmount: number;
- /**
- * @default USDC
- * @example USDC
- */
- currency: string;
- /** @description Optional message included in the invite */
- message?: string;
- /**
- * @description Whether the partner is shown publicly on the hackathon page
- * @default true
- */
- showPublicly: boolean;
- };
- AllocationTargetDto: {
- /** @description PrizePlacement id (the fundable slot) this allocation adds to. Placements are created in the Rewards step. */
- placementId: string;
- /** @description Net amount (USDC) to add to the placement */
- amount: number;
- };
- AllocateContributionDto: {
- /** @description One or more tiers to allocate this contribution into */
- targets: components['schemas']['AllocationTargetDto'][];
- };
- PrepareFundTransactionDto: {
- /** @description Stellar address of the partner wallet that will sign the transaction */
- signerAddress: string;
- };
- SubmitSignedTransactionDto: {
- /** @description Signed transaction XDR returned by the partner wallet */
- signedXdr: string;
- };
- TrackCustomQuestionDto: {
- /** @description Stable id, unique within the track. */
- id: string;
- /** @description Question label shown on the submission form. */
- label: string;
- /**
- * @description Input type. 'short' = single-line, 'long' = textarea, 'url' = URL field.
- * @enum {string}
- */
- type: 'short' | 'long' | 'url';
- /** @description Optional maxLength override (defaults: short=200, long=1000). */
- maxLength?: number;
- /** @description Whether an answer is required. */
- required?: boolean;
- };
- TrackRequiredArtifactDto: {
- /** @description Stable id, unique within the track. */
- id: string;
- /** @description Artifact label (e.g. "Figma file URL"). */
- label: string;
- /**
- * @description Artifact type — drives the placeholder + light hint UI.
- * @enum {string}
- */
- type: 'figma' | 'github' | 'video' | 'pdf' | 'url';
- /** @description Whether submitting this artifact is required. */
- required?: boolean;
- };
- TrackResponseDto: {
- id: string;
- hackathonId: string;
- slug: string;
- name: string;
- description?: string;
- type?: string;
- /** @enum {string} */
- eligibility: 'OPT_IN' | 'OPEN';
- displayOrder: number;
- isArchived: boolean;
- /** @description Count of submissions that have opted into this track. Useful for organizer dashboards. */
- entryCount: number;
- /** @description Per-track customization (Phase B). */
- prompt?: string;
- customQuestions?: components['schemas']['TrackCustomQuestionDto'][];
- requiredArtifacts?: components['schemas']['TrackRequiredArtifactDto'][];
- /** Format: date-time */
- createdAt: string;
- /** Format: date-time */
- updatedAt: string;
- };
- CustomQuestionResponseDto: {
- id: string;
- hackathonId: string;
- /** @enum {string} */
- scope: 'REGISTRATION' | 'SUBMISSION';
- label: string;
- helpText?: string | null;
- /** @enum {string} */
- type:
- | 'SHORT'
- | 'LONG'
- | 'URL'
- | 'SINGLE_SELECT'
- | 'MULTI_SELECT'
- | 'BOOLEAN';
- required: boolean;
- options?: string[] | null;
- maxLength?: number | null;
- displayOrder: number;
- };
- UpdateTracksConfigDto: {
- /** @description Max number of tracks a single submission may enter (1-20). */
- tracksMaxPerSubmission?: number;
- };
- CreateTrackDto: {
- /**
- * @description Human-readable track name shown on the hackathon page.
- * @example Best UI/UX
- */
- name: string;
- /**
- * @description URL-safe handle, unique within the hackathon. Auto-generated from name if omitted.
- * @example best-ui-ux
- */
- slug?: string;
- /**
- * @description Short blurb shown in the track picker and on results.
- * @example Best end-to-end user experience and visual polish.
- */
- description?: string;
- /**
- * @description Free-form classifier for badge styling. Common values: skill, technology, theme, special.
- * @example skill
- */
- type?: string;
- /**
- * @description OPT_IN (default): submitters explicitly enter. OPEN: every submission auto-eligible.
- * @default OPT_IN
- * @enum {string}
- */
- eligibility: 'OPT_IN' | 'OPEN';
- /**
- * @description Sort order. Lower numbers render first. Defaults to 0.
- * @example 10
- */
- displayOrder?: number;
- /**
- * @description Single open-ended prompt shown on the submission form. When set, the submitter must answer to opt in.
- * @example Why does this project fit Best UI/UX?
- */
- prompt?: string;
- customQuestions?: components['schemas']['TrackCustomQuestionDto'][];
- requiredArtifacts?: components['schemas']['TrackRequiredArtifactDto'][];
- };
- UpdateTrackDto: {
- name?: string;
- slug?: string;
- description?: string;
- type?: string;
- /** @enum {string} */
- eligibility?: 'OPT_IN' | 'OPEN';
- displayOrder?: number;
- /** @description Soft-archive instead of delete when entries already exist. Cannot be unset via this endpoint; recreate the track if needed. */
- isArchived?: boolean;
- /** @description Single open-ended prompt. */
- prompt?: string;
- customQuestions?: components['schemas']['TrackCustomQuestionDto'][];
- requiredArtifacts?: components['schemas']['TrackRequiredArtifactDto'][];
- };
- CustomQuestionWriteDto: {
- /** @enum {string} */
- scope: 'REGISTRATION' | 'SUBMISSION';
- /** @description Question shown to the participant. */
- label: string;
- /** @description Optional helper text under the field. */
- helpText?: string;
- /**
- * @default SHORT
- * @enum {string}
- */
- type:
- | 'SHORT'
- | 'LONG'
- | 'URL'
- | 'SINGLE_SELECT'
- | 'MULTI_SELECT'
- | 'BOOLEAN';
- /** @description Whether an answer is required. */
- required?: boolean;
- /** @description Choices for SINGLE_SELECT / MULTI_SELECT. */
- options?: string[];
- /** @description Optional length cap for SHORT / LONG answers. */
- maxLength?: number;
- /** @description Sort order; lower renders first. */
- displayOrder?: number;
- };
- UpsertCustomQuestionsDto: {
- questions: components['schemas']['CustomQuestionWriteDto'][];
- };
- RequestFundingOtpResponseDto: {
- /** @description Whether funding step-up is enforced for this action */
- required: boolean;
- /** @description True when a recent verification is still valid; the client can fund without entering a new code */
- alreadyVerified: boolean;
- /** @description True when a fresh code was just emailed */
- sent: boolean;
- /** @description Seconds until the emailed code expires (0 when none sent) */
- expiresInSeconds: number;
- };
- VerifyFundingOtpDto: {
- /**
- * @description The 6-digit code emailed to the organizer
- * @example 123456
- */
- code: string;
- };
- VerifyFundingOtpResponseDto: {
- /** @description True when the code was accepted */
- verified: boolean;
- /** @description Seconds the funding authorization remains valid */
- expiresInSeconds: number;
- };
- WinnerDistributionEntryDto: {
- /**
- * @description Winner position (1-indexed; 1 = top winner).
- * @example 1
- */
- position: number;
- /**
- * @description Percentage of the total budget allocated to this position. All entries must sum to exactly 100.
- * @example 100
- */
- percent: number;
- };
- PublishHackathonEscrowDto: {
- /**
- * @description Stellar G-address that will own and sign the on-chain create_event transaction. For managed wallets, this is the platform-derived address tied to the organizer's account; for connected/multisig, it's the org treasury's G-address.
- * @example GDVGP7DWODFVYQ5NHHLLD3WFVLUH5Y3HHELIKSNO4STEFCBETQAWDMKZ
- */
- ownerAddress: string;
- /**
- * @description Stellar Asset Contract (SAC) address the prize pool is denominated in. Must be whitelisted on the events contract (see admin runbook).
- * @example CBIELTK6YBZJU5UP2WWQEUCYKLPU6AUNZ2BQ4WWFEIE3USCIHMXQDAMA
- */
- tokenAddress: string;
- /**
- * @description Total prize budget in token-native units (e.g. 1000 = 1000 USDC, NOT stroops). Use a string when the value exceeds JavaScript's safe integer range. The backend converts to stroops via *10^7.
- * @example 1000
- */
- budget: string;
- /** @description Optional override for the winner distribution. Each entry maps a position to a percent of total_budget. Percents must sum to exactly 100. Defaults to a single winner at position 1 taking 100%. */
- winnerDistribution?: components['schemas']['WinnerDistributionEntryDto'][];
- /**
- * @description Override for the public content_uri the contract stores against the event. Defaults to https://api.boundless.fi/hackathons//content.
- * @example https://api.boundless.fi/hackathons/abc/content
- */
- contentUri?: string;
- /**
- * @description Signing path. Defaults to EXTERNAL (return unsigned XDR for the caller to sign). Set to MANAGED to have the backend sign + submit using the caller user's managed wallet; the response carries the op in PENDING_CONFIRM with a txHash.
- * @default EXTERNAL
- * @example MANAGED
- * @enum {string}
- */
- fundingMode: 'EXTERNAL' | 'MANAGED';
- /** @description For MANAGED funding, the organization treasury wallet to fund from. When set, the backend signs with that treasury (managed) wallet instead of the caller's personal wallet; ownerAddress must match the treasury wallet address. Omit to fund from the personal managed wallet. */
- sourceWalletId?: string;
- };
- HackathonEscrowOpResponseDto: {
- /**
- * @description Internal uuid for the EscrowOp row. Use this for follow-up calls.
- * @example cmpwiox7u0000yy4404ojbk9t
- */
- id: string;
- /**
- * @description Hex-encoded 32-byte op_id derived deterministically from the operation parameters. Used by the on-chain idempotency check.
- * @example 3cc257d743b1b44423dc8dbd417aedfe6e47ad489b5d301a2fbec5284d36de1c
- */
- opId: string;
- /**
- * @description Contract operation kind.
- * @example CREATE_EVENT
- * @enum {string}
- */
- kind:
- | 'CREATE_EVENT'
- | 'CANCEL_EVENT'
- | 'ADD_FUNDS'
- | 'APPLY_TO_BOUNTY'
- | 'WITHDRAW_APPLICATION'
- | 'SUBMIT'
- | 'WITHDRAW_SUBMISSION'
- | 'SELECT_WINNERS'
- | 'CLAIM_MILESTONE';
- /**
- * @description Status of the EscrowOp in its lifecycle.
- * @example PENDING_SIGN
- * @enum {string}
- */
- status:
- | 'PENDING_BUILD'
- | 'PENDING_SIGN'
- | 'PENDING_SUBMIT'
- | 'PENDING_CONFIRM'
- | 'COMPLETED'
- | 'FAILED'
- | 'CANCELLED';
- /**
- * @description Entity kind the op operates on. Matches the application-level row (hackathon, bounty, grant, etc.).
- * @example HACKATHON
- */
- entityKind: string;
- /**
- * @description Application-level row id this op acts on.
- * @example cmpwihilf0000fd44iln3dzbg
- */
- entityId: string;
- /**
- * @description Unsigned XDR transaction the wallet must sign. Present after the build phase completes (PENDING_SIGN onwards).
- * @example AAAAAgAAAACdiamX7q...truncated...
- */
- unsignedXdr?: string | null;
- /**
- * @description Stellar G-address expected to sign this op. The wallet routing layer on the webapp uses this to pick the right signer.
- * @example GDVGP7DWODFVYQ5NHHLLD3WFVLUH5Y3HHELIKSNO4STEFCBETQAWDMKZ
- */
- signerHint?: string | null;
- /**
- * @description Soroban tx hash assigned at submit time. Set once the op reaches PENDING_CONFIRM or beyond.
- * @example daafec9027da007b54eec34c54a5919edd7a8682bc96ccf7c7072982305cfa3b
- */
- txHash?: string | null;
- /**
- * @description Contract error code when the op transitions to FAILED. Mirrors the on-chain error name (e.g. "InsufficientEscrow", "OpAlreadySeen", "txBadAuth").
- * @example txBadAuth
- */
- errorCode?: string | null;
- /**
- * Format: date-time
- * @description Row creation time.
- * @example 2026-06-02T11:45:36.927Z
- */
- createdAt: string;
- /**
- * Format: date-time
- * @description Row last-updated time.
- * @example 2026-06-02T11:45:44.310Z
- */
- updatedAt: string;
- };
- CancelHackathonEscrowDto: {
- /**
- * @description Organizer's Stellar G-address. Must match the on-chain hackathon owner.
- * @example GDVGP7DWODFVYQ5NHHLLD3WFVLUH5Y3HHELIKSNO4STEFCBETQAWDMKZ
- */
- ownerAddress: string;
- /**
- * @description Signing path. EXTERNAL (default) returns unsigned XDR; MANAGED signs server-side with the caller's platform-held wallet.
- * @default EXTERNAL
- * @enum {string}
- */
- fundingMode: 'EXTERNAL' | 'MANAGED';
- /** @description For MANAGED, the organization treasury wallet to sign with (the event contract-auth identity). ownerAddress must match it. Omit to use the caller's personal managed wallet. */
- sourceWalletId?: string;
- };
- HackathonWinnerSelectionDto: {
- /**
- * @description ID of the winning submission. The payout recipient is resolved server-side = the submitter's (team leader's) Boundless managed wallet; no on-chain submission anchor is required.
- * @example cmq7sgwst0001abcd1234efgh
- */
- submissionId: string;
- /**
- * @description Winner position, 1-indexed. Must exist in the hackathon's on-chain winner_distribution.
- * @example 1
- */
- position: number;
- /**
- * @description Override the platform default reputation_bump for this position. Defaults to 50/25/10 for positions 1/2/3 and 5 for the rest.
- * @example 50
- */
- reputationBump?: number;
- };
- SelectHackathonWinnersDto: {
- /**
- * @description Organizer's Stellar G-address — a hint only. select_winners is authorized by the event manager resolved on-chain (the org treasury for new events), which the backend signs with server-side; this value is used only as a fallback when that on-chain read is unavailable (legacy/pre-upgrade events). Omit for the MANAGED flow.
- * @example GDVGP7DWODFVYQ5NHHLLD3WFVLUH5Y3HHELIKSNO4STEFCBETQAWDMKZ
- */
- ownerAddress?: string;
- /** @description Winners to declare, each by winning submissionId + position. The payout recipient is resolved server-side = the submitter's (team leader's) Boundless managed wallet; no on-chain submission anchor is required. Positions and submissionIds must be unique within the array. */
- selections: components['schemas']['HackathonWinnerSelectionDto'][];
- /**
- * @description Signing path. EXTERNAL (default) returns unsigned XDR; MANAGED signs server-side.
- * @default EXTERNAL
- * @enum {string}
- */
- fundingMode: 'EXTERNAL' | 'MANAGED';
- /** @description For MANAGED, the organization treasury wallet to sign with (the event contract-auth identity). ownerAddress must match it. Omit to use the caller's personal managed wallet. */
- sourceWalletId?: string;
- };
- HackathonSubmitSignedXdrDto: {
- /**
- * @description The fully-signed XDR returned by the wallet (Freighter, Albedo, platform-managed signer, or a multisig coordinator). Backend submits this verbatim to Soroban RPC.
- * @example AAAAAgAAAACdiamX7q...truncated...
- */
- signedXdr: string;
- };
- SubmitHackathonDto: {
- /**
- * @description Caller's Stellar G-address. Must match the caller's linked wallet.
- * @example GBXNQFDSBDPOIA3Q4LYIWBOJFFPCCV6IEDHBSJZEAYFKIKZVUO4QEDVS
- */
- applicantAddress: string;
- /**
- * @description Signing path. EXTERNAL (default) returns unsigned XDR. MANAGED signs server-side with the caller's platform-held wallet.
- * @default EXTERNAL
- * @enum {string}
- */
- fundingMode: 'EXTERNAL' | 'MANAGED';
- /**
- * @description On-chain content URI for the submission. Stored verbatim in the contract's submission anchor; off-chain content lives wherever the URI points (IPFS, S3, GitHub PR, etc.).
- * @example ipfs://Qm.../project.json
- */
- contentUri: string;
- };
- WithdrawHackathonSubmissionDto: {
- /**
- * @description Caller's Stellar G-address. Must match the caller's linked wallet.
- * @example GBXNQFDSBDPOIA3Q4LYIWBOJFFPCCV6IEDHBSJZEAYFKIKZVUO4QEDVS
- */
- applicantAddress: string;
- /**
- * @description Signing path. EXTERNAL (default) returns unsigned XDR. MANAGED signs server-side with the caller's platform-held wallet.
- * @default EXTERNAL
- * @enum {string}
- */
- fundingMode: 'EXTERNAL' | 'MANAGED';
- };
- ContributeHackathonDto: {
- /**
- * @description Caller's Stellar G-address. Must match the caller's linked wallet.
- * @example GBXNQFDSBDPOIA3Q4LYIWBOJFFPCCV6IEDHBSJZEAYFKIKZVUO4QEDVS
- */
- applicantAddress: string;
- /**
- * @description Signing path. EXTERNAL (default) returns unsigned XDR. MANAGED signs server-side with the caller's platform-held wallet.
- * @default EXTERNAL
- * @enum {string}
- */
- fundingMode: 'EXTERNAL' | 'MANAGED';
- /**
- * @description Amount in token-native units (e.g. 30 = 30 USDC, NOT stroops). Must be >= 10 USDC (contract minimum).
- * @example 30
- */
- amount: string;
- };
- CreateOrganizationDto: Record;
- OrganizationProfileStatsDto: {
- /**
- * @description Number of projects under this organization
- * @example 12
- */
- projectsCount: number;
- /**
- * @description Total hackathons run by this organization
- * @example 5
- */
- totalHackathons: number;
- /**
- * @description Total bounties offered by this organization
- * @example 8
- */
- totalBounties: number;
- /**
- * @description Total grants (projects with grants) under this organization
- * @example 3
- */
- totalGrants: number;
- };
- OrganizationProfileDto: {
- /**
- * @description Organization ID
- * @example org_1234567890
- */
- id: string;
- /**
- * @description Organization name
- * @example Tech Innovators
- */
- name: string;
- /**
- * @description Organization slug
- * @example tech-innovators
- */
- slug: string;
- /**
- * @description Logo URL
- * @example https://example.com/logo.png
- */
- logoUrl: string;
- /**
- * @description Organization description (from about or tagline)
- * @example We are a community of developers building the future.
- */
- description: string;
- /** @description Key stats for the organization profile */
- stats: components['schemas']['OrganizationProfileStatsDto'];
- };
- UpdateOrganizationDto: Record;
- UpdateMemberRoleDto: Record;
- InviteMemberDto: Record;
- TreasuryWalletResponseDto: {
- id: string;
- organizationId: string;
- /** @enum {string} */
- kind: 'MANAGED' | 'CONNECTED';
- publicKey: string;
- label: string;
- isDefault: boolean;
- /** @enum {string} */
- status: 'ACTIVE' | 'ARCHIVED' | 'NEEDS_REVIEW';
- isMultisig: boolean;
- multisigThreshold: number | null;
- connectionMethod: string | null;
- lastVerifiedAt: string | null;
- createdAt: string;
- updatedAt: string;
- };
- CreateManagedWalletDto: {
- /**
- * @description Display label for the wallet
- * @example Main treasury
- */
- label: string;
- };
- RegisterConnectedWalletDto: {
- /** @description G-address of the external wallet */
- publicKey: string;
- /**
- * @description Display label
- * @example Company multisig
- */
- label: string;
- /** @enum {string} */
- connectionMethod:
- | 'freighter'
- | 'lobstr'
- | 'albedo'
- | 'xbull'
- | 'hana'
- | 'rabet'
- | 'walletkit_generic';
- };
- UpdateTreasuryWalletDto: {
- /** @description New display label */
- label?: string;
- /** @description Make this the organization default */
- isDefault?: boolean;
- };
- WalletBalanceResponseDto: {
- publicKey: string;
- /** @description USDC balance */
- usdc: string;
- /** @description XLM balance (fee float) */
- xlm: string;
- };
- TreasuryPolicyRuleDto: {
- /** @example 0 */
- min_usdc: number;
- /** @example 1000 */
- max_usdc?: Record | null;
- /** @example 1 */
- required_approvals: number;
- /**
- * @example [
- * "owner",
- * "admin"
- * ]
- */
- approver_roles: string[];
- };
- TreasuryPolicyResponseDto: {
- organizationId: string;
- defaultWalletId: string | null;
- rules: components['schemas']['TreasuryPolicyRuleDto'][];
- /** @description True when no policy is saved yet (defaults returned) */
- isDefault: boolean;
- updatedAt: string | null;
- };
- UpdateTreasuryPolicyDto: {
- rules: components['schemas']['TreasuryPolicyRuleDto'][];
- /** @description Default source wallet id */
- defaultWalletId?: string;
- };
- InitiateSpendDto: {
- /** @description Treasury wallet to spend from */
- sourceWalletId: string;
- /** @description Destination G-address or escrow contract id */
- destination: string;
- /**
- * @description Amount in USDC
- * @example 2500.00
- */
- amount: string;
- /**
- * @description What the spend funds
- * @example fund_hackathon_escrow
- */
- purpose: string;
- /** @enum {string} */
- referenceType?: 'hackathon' | 'bounty' | 'grant';
- referenceId?: string;
- };
- SpendRequestResponseDto: {
- id: string;
- organizationId: string;
- sourceWalletId: string;
- destination: string;
- amount: string;
- currency: string;
- purpose: string;
- referenceType: string | null;
- referenceId: string | null;
- initiatorUserId: string;
- requiredApprovals: number;
- approvals: Record[];
- status: string;
- onChainTxHash: string | null;
- createdAt: string;
- approvedAt: string | null;
- };
- SendTreasuryFundsDto: {
- /** @description Wallet to send from */
- sourceWalletId: string;
- /**
- * @description Recipient Stellar address (starts with G)
- * @example GA...
- */
- destination: string;
- /**
- * @description Amount in USDC
- * @example 250.00
- */
- amount: string;
- /**
- * @description What this payment is for (shown in your activity log)
- * @example Contributor payout
- */
- note?: string;
- };
- SendDestinationReadinessDto: {
- /** @description Whether the recipient account exists on-chain */
- exists: boolean;
- /** @description Whether the recipient has a USDC trustline (so it can receive USDC) */
- hasUsdcTrustline: boolean;
- };
- SpendDecisionDto: {
- /** @description Optional note for the decision */
- note?: string;
- };
- BuildSpendXdrResponseDto: {
- /** @description Unsigned transaction XDR to sign in-browser */
- unsignedXdr: string;
- request: components['schemas']['SpendRequestResponseDto'];
- };
- SubmitSpendSignedXdrDto: {
- /** @description The browser-signed transaction XDR */
- signedXdr: string;
- };
- TreasuryActorDto: {
- id: string;
- name: string | null;
- image: string | null;
- };
- TreasuryAuditEntryDto: {
- id: string;
- action: string;
- actorUserId: string | null;
- actorKind: string;
- /** @description Resolved profile of the actor (name + avatar), if a user. */
- actor: components['schemas']['TreasuryActorDto'] | null;
- walletId: string | null;
- spendRequestId: string | null;
- details: {
- [key: string]: unknown;
- } | null;
- createdAt: string;
- };
- TreasuryAuditLogResponseDto: {
- data: components['schemas']['TreasuryAuditEntryDto'][];
- total: number;
- page: number;
- limit: number;
- };
- ReceiptResponseDto: {
- id: string;
- /** @example RCPT-100001 */
- receiptNumber: string;
- organizationId: string;
- /** @example TREASURY_SEND */
- type: string;
- /** @example Funds sent */
- typeLabel: string;
- /** @example ISSUED */
- status: string;
- /** @example OUTGOING */
- direction: string;
- /** @example 250.00 */
- amount: string;
- /** @example USDC */
- currency: string;
- fromLabel: Record | null;
- fromAddress: Record | null;
- toLabel: Record | null;
- toAddress: Record | null;
- description: Record | null;
- onChainTxHash: Record | null;
- explorerUrl: Record | null;
- network: Record | null;
- issuedByUserId: Record | null;
- issuedAt: string;
- voidedAt: Record | null;
- };
- ReceiptListResponseDto: {
- data: components['schemas']['ReceiptResponseDto'][];
- total: number;
- page: number;
- limit: number;
- };
- SendReceiptDto: {
- /** @description Where to email the receipt. Defaults to your account email. */
- email?: string;
- };
- VoidReceiptDto: {
- /** @description Why the receipt is being voided */
- reason?: string;
- };
- CreateVoteDto: {
- /** @description ID of the project being voted on */
- projectId: string;
- /**
- * @description Type of entity being voted on
- * @enum {string}
- */
- entityType:
- | 'PROJECT'
- | 'CROWDFUNDING_CAMPAIGN'
- | 'HACKATHON_SUBMISSION'
- | 'GRANT';
- /**
- * @description Type of vote (UPVOTE or DOWNVOTE)
- * @default UPVOTE
- * @enum {string}
- */
- voteType: 'UPVOTE' | 'DOWNVOTE';
- /**
- * @description Weight of the vote
- * @default 1
- */
- weight: number;
- };
- CreateBlogPostDto: {
- /**
- * @description Blog post title
- * @example Getting Started with Stellar Smart Contracts
- */
- title: string;
- /**
- * @description Blog post content in markdown format
- * @example # Introduction
- *
- * This tutorial will teach you...
- */
- content: string;
- /**
- * @description Short excerpt or summary
- * @example Learn how to build your first smart contract on Stellar
- */
- excerpt?: string;
- /**
- * @description Cover image URL
- * @example https://res.cloudinary.com/demo/image/upload/v1234567890/post-cover.jpg
- */
- coverImage?: string;
- /**
- * @description Post status
- * @default DRAFT
- * @example DRAFT
- * @enum {string}
- */
- status: 'DRAFT' | 'PUBLISHED' | 'ARCHIVED' | 'SCHEDULED';
- /**
- * @description Post tags
- * @example [
- * "smart-contracts",
- * "soroban",
- * "tutorial"
- * ]
- */
- tags?: string[];
- /**
- * @description Post categories
- * @example [
- * "tutorials"
- * ]
- */
- categories?: string[];
- /**
- * @description Mark as featured post
- * @default false
- * @example false
- */
- isFeatured: boolean;
- /**
- * @description Pin post to top
- * @default false
- * @example false
- */
- isPinned: boolean;
- /**
- * @description Reading time in minutes (auto-calculated if not provided)
- * @example 5
- */
- readingTime?: number;
- /** @description SEO title (overrides post title) */
- seoTitle?: string;
- /** @description SEO meta description */
- seoDescription?: string;
- /**
- * @description SEO keywords
- * @example [
- * "stellar",
- * "blockchain",
- * "smart contracts"
- * ]
- */
- seoKeywords?: string[];
- /**
- * @description Schedule publication date (for SCHEDULED status)
- * @example 2025-12-31T10:00:00Z
- */
- scheduledFor?: string;
- /**
- * @description Generate AI content (excerpt, reading time, SEO, tags, category) if not provided
- * @default false
- * @example true
- */
- generateAI: boolean;
- };
- UpdateBlogPostDto: Record;
- MetricDataDto: {
- /**
- * @description The metric value
- * @example 1250
- */
- value: number;
- /**
- * @description Percentage change
- * @example 12.5
- */
- change: number;
- /**
- * @description Type of change
- * @example positive
- * @enum {string}
- */
- changeType: 'positive' | 'negative' | 'neutral';
- /**
- * @description Metric label
- * @example Total Users
- */
- label: string;
- /**
- * @description Additional description
- * @example Active users in the platform
- */
- description?: string;
- };
- HackathonMetricDataDto: {
- /**
- * @description The metric value
- * @example 1250
- */
- value: number;
- /**
- * @description Percentage change
- * @example 12.5
- */
- change: number;
- /**
- * @description Type of change
- * @example positive
- * @enum {string}
- */
- changeType: 'positive' | 'negative' | 'neutral';
- /**
- * @description Metric label
- * @example Total Users
- */
- label: string;
- /**
- * @description Additional description
- * @example Active users in the platform
- */
- description?: string;
- /**
- * @description Additional hackathon info
- * @example 3 active, 7 upcoming
- */
- additionalInfo?: string;
- };
- OverviewMetricsDto: {
- totalUsers: components['schemas']['MetricDataDto'];
- organizations: components['schemas']['MetricDataDto'];
- projects: components['schemas']['MetricDataDto'];
- hackathons: components['schemas']['HackathonMetricDataDto'];
- };
- OverviewChartDataDto: {
- data: components['schemas']['ChartDataPointDto'][];
- /**
- * @description Time range for the chart
- * @example 7d
- * @enum {string}
- */
- timeRange: '7d' | '30d' | '90d';
- };
- AdminOverviewResponseDto: {
- metrics: components['schemas']['OverviewMetricsDto'];
- chart: components['schemas']['OverviewChartDataDto'];
- /**
- * @description Last updated timestamp
- * @example 2025-12-26T10:30:00Z
- */
- lastUpdated: string;
- };
- AdminCrowdfundingRejectDto: {
- /**
- * @description Reason for rejection
- * @example Campaign does not meet requirements
- */
- reason?: string;
- };
- AdminCrowdfundingRequestRevisionDto: {
- /**
- * @description Message for the creator explaining requested revisions
- * @example Please update the project description to be more detailed
- */
- message: string;
- /**
- * @description Optional structured reasons
- * @example [
- * "incomplete_description",
- * "missing_team_info"
- * ]
- */
- reasons?: string[];
- };
- AdminCrowdfundingNoteDto: {
- /**
- * @description Short admin note or comment
- * @example Reviewed initial submission
- */
- note: string;
- };
- AdminCrowdfundingAssignDto: {
- /**
- * @description Reviewer (user) id to assign
- * @example 550e8400-e29b-41d4-a716-446655440000
- */
- reviewerId: string;
- };
- ApproveMilestoneDto: {
- /**
- * @description Optional approval notes
- * @example Milestone completed successfully
- */
- notes?: string;
- };
- RejectMilestoneDto: {
- /**
- * @description Rejection reason
- * @example Incomplete deliverables
- */
- reason: string;
- /**
- * @description Detailed feedback for rejection
- * @example The submitted work does not meet the project requirements. Please revise and resubmit.
- */
- feedback: string;
- /**
- * @description Deadline for resubmission
- * @example 2025-02-01
- */
- resubmissionDeadline?: string;
- };
- RequestMilestoneResubmissionDto: {
- /**
- * @description Feedback explaining what needs to change
- * @example Please improve the documentation and add more test cases
- */
- feedback: string;
- /**
- * @description Deadline for resubmission
- * @example 2025-02-15
- */
- resubmissionDeadline: string;
- };
- AddMilestoneReviewNoteDto: {
- /**
- * @description Review note content
- * @example Reviewed the code quality and found it satisfactory
- */
- note: string;
- };
- ManualEscrowActionDto: {
- /**
- * @description Type of escrow action to execute
- * @example RELEASE
- * @enum {string}
- */
- action: 'RELEASE' | 'REFUND' | 'PAUSE' | 'RESUME';
- /**
- * @description Amount to transfer (for RELEASE/REFUND)
- * @example 1000
- */
- amount?: number;
- /**
- * @description Optional notes for this action
- * @example Releasing funds for completed milestone
- */
- notes?: string;
- /**
- * @description Recipient address (for RELEASE/REFUND)
- * @example GAXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
- */
- recipientAddress?: string;
- };
- AssignDisputeDto: {
- /**
- * @description Admin user ID to assign dispute to
- * @example 550e8400-e29b-41d4-a716-446655440000
- */
- adminId: string;
- };
- AddDisputeNoteDto: {
- /**
- * @description Message content
- * @example Contacted the project creator for more information
- */
- message: string;
- /**
- * @description Whether this is an internal note (not visible to parties)
- * @example false
- */
- isInternal?: boolean;
- };
- ResolveDisputeDto: {
- /**
- * @description Resolution type
- * @example APPROVED_WITH_CONDITIONS
- * @enum {string}
- */
- resolution:
- | 'APPROVED_WITH_CONDITIONS'
- | 'REQUIRE_RESUBMISSION'
- | 'PARTIAL_REFUND'
- | 'FULL_REFUND'
- | 'DISMISSED'
- | 'ARBITRATION';
- /**
- * @description Detailed notes explaining the resolution
- * @example Approved with condition that milestone is completed by next week
- */
- resolutionNotes: string;
- };
- EscalateDisputeDto: {
- /**
- * @description Reason for escalation to arbitration
- * @example Parties cannot agree on resolution terms
- */
- reason: string;
- };
- RejectManualProjectDto: Record;
- RequestManualProjectChangesDto: Record;
- RejectProjectEditDto: Record;
- AdminWalletStatsDto: {
- totalWallets: components['schemas']['MetricDataDto'];
- activatedWallets: components['schemas']['MetricDataDto'];
- inactiveWallets: components['schemas']['MetricDataDto'];
- };
- AdminWalletUserDto: {
- id: string;
- name: string;
- email: string;
- username?: string;
- image?: string;
- };
- AdminWalletListItemDto: {
- id: string;
- publicKey: string;
- isActivated: boolean;
- /** Format: date-time */
- createdAt: string;
- users: components['schemas']['AdminWalletUserDto'][];
- };
- AdminWalletListResponseDto: {
- wallets: components['schemas']['AdminWalletListItemDto'][];
- total: number;
- page: number;
- limit: number;
- totalPages: number;
- };
- AdminWalletBalanceDto: {
- balance: string;
- assetCode: string;
- assetIssuer?: string;
- assetType: string;
- };
- AdminWalletDetailsDto: {
- id: string;
- publicKey: string;
- isActivated: boolean;
- /** Format: date-time */
- createdAt: string;
- balances: components['schemas']['AdminWalletBalanceDto'][];
- users: components['schemas']['AdminWalletUserDto'][];
- };
- ReviewWindowDto: {
- /** @example 1 */
- minBusinessDays: number;
- /** @example 3 */
- maxBusinessDays: number;
- /** @description ISO timestamp by which the review is expected to complete. */
- estimatedCompletionAt: string;
- };
- DeclineDetailsDto: {
- /** @description Human-readable reason from Didit, if available. */
- reason?: string;
- /**
- * @description Whether the user is allowed to start a new verification.
- * @example true
- */
- canRetry: boolean;
- };
- VerificationStatusDto: {
- /**
- * @description Normalized verification state. Frontend should hide the verify button unless this is one of: not_started, declined, abandoned, expired.
- * @enum {string}
- */
- state:
- | 'not_started'
- | 'in_progress'
- | 'in_review'
- | 'approved'
- | 'declined'
- | 'abandoned'
- | 'expired';
- /** @description Whether the user can start a new verification session. */
- canStartNew: boolean;
- /** @description Polite, render-ready copy summarising the current state. */
- message: string;
- /** @description ISO timestamp when the user became verified. */
- verifiedAt?: string;
- /** @description ISO timestamp of the last status transition. */
- reviewedAt?: string;
- /** @description Estimated review window. Present only when state === "in_review". */
- reviewWindow?: components['schemas']['ReviewWindowDto'];
- /** @description Decline details. Present only when state === "declined". */
- decline?: components['schemas']['DeclineDetailsDto'];
- };
- PricingPreviewResponseDto: {
- /** @description Effective rate applied to this preview. */
- feeBps: number;
- /** @description Fee in stroops. String to preserve i128 precision. */
- feeStroops: string;
- /** @description Pool released to winners; equals the requested budget. */
- poolStroops: string;
- /** @description budgetStroops + feeStroops; what the organizer signs for. */
- totalDepositStroops: string;
- /** @description Audit label for the rate choice: default | foundation-tier | sales-override:* | waiver:*. */
- reason: string;
- };
- AiUsageResponseDto: {
- /** @description Subscription tier (FREE | PRO | BYOK | ENTERPRISE). */
- tier: string;
- /** @description Monthly billable-call limit, or null for unlimited tiers. */
- limit: number | null;
- /** @description Billable calls used this month. */
- used: number;
- /** @description Remaining billable calls, or null for unlimited. */
- remaining: number | null;
- /**
- * Format: date-time
- * @description Window reset (UTC).
- */
- resetAt: string;
- /** @description Total spend this month as a decimal string (incl. clarify). */
- costUsdThisMonth: string;
- };
- StaffPrincipalDto: {
- id: string;
- email: string;
- name: string;
- role: string;
- /** @description Whether an authenticator (TOTP) is activated */
- totpEnabled: boolean;
- /** @description ISO timestamp of the last successful step-up */
- lastStepUpAt: string | null;
- };
- MeResponseDto: {
- staff: components['schemas']['StaffPrincipalDto'];
- };
- AnalyticsTotalsDto: {
- users: number;
- organizations: number;
- /** @description All pillars combined */
- programs: number;
- disputes: number;
- wallets: number;
- };
- ProgramsByPillarDto: {
- hackathons: number;
- bounties: number;
- grants: number;
- crowdfunding: number;
- };
- AnalyticsBucketDto: {
- label: string;
- count: number;
- };
- AnalyticsTrendPointDto: {
- /** @description UTC day, YYYY-MM-DD */
- date: string;
- count: number;
- };
- AnalyticsDto: {
- totals: components['schemas']['AnalyticsTotalsDto'];
- /** @description New users in the last 30 days */
- newUsers30d: number;
- programsByPillar: components['schemas']['ProgramsByPillarDto'];
- disputesByStatus: components['schemas']['AnalyticsBucketDto'][];
- crowdfundingByStatus: components['schemas']['AnalyticsBucketDto'][];
- /** @description New users per day, last 14 days */
- newUsersTrend: components['schemas']['AnalyticsTrendPointDto'][];
- };
- OverviewDto: {
- users: number;
- organizations: number;
- hackathons: number;
- crowdfundingCampaigns: number;
- /** @description Disputes in OPEN status */
- openDisputes: number;
- };
- AdminUserListItemDto: {
- id: string;
- name: string;
- email: string;
- /** @description Profile photo URL, when set */
- image: string | null;
- username: string | null;
- role: string | null;
- /** @enum {string} */
- status: 'active' | 'banned';
- /** @description ISO timestamp the user joined */
- joined: string;
- };
- PaginatedUsersDto: {
- items: components['schemas']['AdminUserListItemDto'][];
- page: number;
- limit: number;
- total: number;
- totalPages: number;
- };
- AdminUserDetailDto: {
- id: string;
- name: string;
- email: string;
- /** @description Profile photo URL, when set */
- image: string | null;
- username: string | null;
- role: string | null;
- /** @enum {string} */
- status: 'active' | 'banned';
- /** @description Reason, when banned */
- banReason: string | null;
- /** @description Identity (KYC) verification status, when known */
- verification: string | null;
- /** @description Public key of the user's abstracted wallet, when one exists */
- walletAddress: string | null;
- /** @description Number of organizations the user belongs to */
- organizations: number;
- /** @description ISO timestamp the user joined */
- joined: string;
- };
- AdminUserOrganizationDto: {
- id: string;
- name: string;
- slug: string | null;
- /** @description The user's role in this organization */
- role: string;
- /** @description ISO timestamp the user joined the organization */
- joinedAt: string;
- };
- AdminUserWalletBalanceDto: {
- /** @description On-chain balance, as a decimal string */
- balance: string;
- /** @description Asset code, e.g. XLM or USDC */
- assetCode: string;
- /** @description Asset issuer (null for native XLM) */
- assetIssuer: string | null;
- /** @description Stellar asset type, e.g. native or credit_alphanum4 */
- assetType: string;
- /** @description Estimated USD value, when priced */
- usdValue: number | null;
- };
- AdminUserWalletDto: {
- /** @description Whether the user has an abstracted wallet */
- hasWallet: boolean;
- /** @description Stellar public key (G-address) */
- address: string | null;
- /** @description Whether the on-chain account is activated */
- isActivated: boolean;
- /** @description ISO timestamp the wallet was created */
- createdAt: string | null;
- /** @description Live on-chain balances. Empty when the account is unfunded or Horizon is unreachable. */
- balances: components['schemas']['AdminUserWalletBalanceDto'][];
- };
- BanUserDto: {
- /** @description true to ban, false to lift the ban */
- banned: boolean;
- /** @description Reason for the ban (recorded in the audit log) */
- reason?: string;
- };
- BanUserResponseDto: {
- id: string;
- banned: boolean;
- };
- AdminOrgListItemDto: {
- id: string;
- name: string;
- slug: string | null;
- /** @description Member count */
- members: number;
- /** @description Programs run by the org (hackathons + bounties) */
- programs: number;
- /** @description ISO timestamp the org was suspended, or null if active */
- suspendedAt: string | null;
- /** @description ISO timestamp the org was created */
- created: string;
- };
- PaginatedOrganizationsDto: {
- items: components['schemas']['AdminOrgListItemDto'][];
- page: number;
- limit: number;
- total: number;
- totalPages: number;
- };
- AdminOrgDetailDto: {
- id: string;
- name: string;
- slug: string | null;
- /** @description Member count */
- members: number;
- /** @description Hackathons run by the org */
- hackathons: number;
- /** @description Bounties run by the org */
- bounties: number;
- /** @description ISO timestamp the org was suspended, or null if active */
- suspendedAt: string | null;
- suspendedByEmail: string | null;
- suspensionReason: string | null;
- /** @description ISO timestamp the org was created */
- created: string;
- };
- UpdateOrgDto: {
- name?: string;
- /** @description URL slug (lowercase letters, numbers, hyphens) */
- slug?: string;
- /** @description Logo URL */
- logo?: string;
- /** @description Whether org announcements are enabled */
- announcementsEnabled?: boolean;
- };
- OrgActionResponseDto: {
- id: string;
- name: string;
- slug: string | null;
- announcementsEnabled: boolean;
- };
- SuspendOrgDto: {
- /** @description Why the organization is being suspended (shown in audit log) */
- reason: string;
- };
- OrgSuspensionResponseDto: {
- id: string;
- name: string;
- slug: string | null;
- /** @description ISO timestamp the org was suspended, or null if active */
- suspendedAt: string | null;
- suspensionReason: string | null;
- };
- ReinstateOrgDto: {
- /** @description Optional note recorded with the reinstatement */
- note?: string;
- };
- AdminProgramListItemDto: {
- id: string;
- /** @enum {string} */
- type: 'hackathon' | 'bounty' | 'grant' | 'crowdfunding';
- title: string;
- /** @description Pillar-specific lifecycle status */
- status: string;
- /** @description Owning organization name, when the pillar has one */
- organization: string | null;
- /** @description Marketplace featured boost (always false for pillars without it) */
- isFeatured: boolean;
- /** @description ISO timestamp the program was created */
- created: string;
- };
- PaginatedProgramsDto: {
- items: components['schemas']['AdminProgramListItemDto'][];
- page: number;
- limit: number;
- total: number;
- totalPages: number;
- };
- AdminProgramDetailDto: {
- id: string;
- /** @enum {string} */
- type: 'hackathon' | 'bounty' | 'grant' | 'crowdfunding';
- title: string;
- status: string;
- organization: string | null;
- description: string | null;
- /** @description ISO timestamp the program was created */
- created: string;
- };
- SetFeaturedDto: {
- /**
- * @description Which pillar the id is in.
- * @enum {string}
- */
- type: 'hackathon' | 'bounty' | 'grant' | 'crowdfunding';
- /** @description Feature (true) or unfeature (false) the program. */
- featured: boolean;
- };
- ProgramActionResponseDto: {
- id: string;
- /** @enum {string} */
- type: 'hackathon' | 'bounty' | 'grant' | 'crowdfunding';
- /** @description Status after the action */
- status: string;
- /** @description Whether the program is featured (false if unsupported) */
- isFeatured: boolean;
- };
- SetProgramStatusDto: {
- /**
- * @description Which pillar the id is in.
- * @enum {string}
- */
- type: 'hackathon' | 'bounty' | 'grant' | 'crowdfunding';
- /** @description Target lifecycle status. Must be one of the admin-settable states for the pillar (archive/suspend/cancel-type). */
- status: string;
- };
- AdminDisputeListItemDto: {
- id: string;
- /** @description Title of the campaign the dispute is against */
- campaign: string | null;
- /** @description Reported reason */
- reason: string;
- /** @description Dispute lifecycle status */
- status: string;
- /** @description Reporter name */
- reportedBy: string | null;
- /** @description Assigned staff name, when assigned */
- assignedTo: string | null;
- /** @description ISO timestamp the dispute was opened */
- created: string;
- };
- PaginatedDisputesDto: {
- items: components['schemas']['AdminDisputeListItemDto'][];
- page: number;
- limit: number;
- total: number;
- totalPages: number;
- };
- AdminDisputeDetailDto: {
- id: string;
- campaign: string | null;
- reason: string;
- status: string;
- description: string;
- /** @description Title of the disputed milestone, if the dispute names one */
- milestone: string | null;
- /** @description Evidence links the reporter provided */
- evidenceLinks: string[];
- /** @description Evidence file references the reporter provided */
- evidenceFiles: string[];
- reportedBy: string | null;
- /** @description Assigned staff email, when assigned */
- assignedTo: string | null;
- /** @description Assigned staff id (for pre-selecting the assignee) */
- assignedToStaffId: string | null;
- /** @description Resolution outcome */
- resolution: string | null;
- resolutionNotes: string | null;
- /** @description ISO timestamp the dispute was opened */
- created: string;
- };
- AdminV2AssignDisputeDto: {
- /** @description staff_users id to assign the dispute to, or null to unassign. */
- assignedToStaffId: string | null;
- };
- DisputeAssignmentResponseDto: {
- id: string;
- /** @description Assigned staff email, or null when unassigned */
- assignedTo: string | null;
- assignedAt: string | null;
- };
- NoteDisputeDto: {
- /** @description Internal note recorded on the dispute audit trail. */
- note: string;
- };
- DisputeNoteResponseDto: {
- id: string;
- note: string;
- /** @description ISO timestamp the note was recorded */
- createdAt: string;
- };
- AdminV2ResolveDisputeDto: {
- /**
- * @description Resolution outcome recorded on the dispute.
- * @enum {string}
- */
- resolution:
- | 'APPROVED_WITH_CONDITIONS'
- | 'REQUIRE_RESUBMISSION'
- | 'PARTIAL_REFUND'
- | 'FULL_REFUND'
- | 'DISMISSED'
- | 'ARBITRATION';
- /** @description Resolution notes shown to the reporter and campaign creator. */
- resolutionNotes: string;
- };
- DisputeActionResponseDto: {
- id: string;
- /** @description New dispute lifecycle status */
- status: string;
- /** @description Resolution outcome, when resolved */
- resolution: string | null;
- /** @description Whether the dispute is escalated to arbitration */
- escalatedToArbitration: boolean;
- };
- AdminV2EscalateDisputeDto: {
- /** @description Why this dispute is being escalated to arbitration. Recorded in the audit log. */
- reason: string;
- };
- AdminMoneyEntryDto: {
- id: string;
- /** @enum {string} */
- kind: 'escrow' | 'payout';
- /** @description On-chain reference: tx hash or destination key */
- reference: string;
- /** @description What the movement is (tx type, or "Payout") */
- label: string;
- /** @description Amount, as a precise string */
- amount: string;
- /** @description Currency, if known */
- currency: string | null;
- /** @description Settlement status */
- status: string;
- /** @description ISO timestamp the movement was created */
- created: string;
- };
- PaginatedMoneyDto: {
- items: components['schemas']['AdminMoneyEntryDto'][];
- page: number;
- limit: number;
- total: number;
- totalPages: number;
- };
- EscrowRequestDto: {
- id: string;
- /** @enum {string} */
- kind: 'release' | 'refund';
- campaignId: string;
- milestoneId: string | null;
- /** @description Amount as a string (decimal-safe) */
- amount: string;
- currency: string;
- toAddress: string | null;
- reason: string | null;
- /** @description PROPOSED | APPROVED | REJECTED | EXECUTED */
- status: string;
- /** @description Maker email */
- proposedBy: string;
- /** @description Checker email */
- decidedBy: string | null;
- decidedAt: string | null;
- decisionNote: string | null;
- /** @description Settled tx hash */
- txHash: string | null;
- executedBy: string | null;
- executedAt: string | null;
- created: string;
- };
- EscrowRequestListResponseDto: {
- items: components['schemas']['EscrowRequestDto'][];
- };
- ProposeEscrowRequestDto: {
- /** @enum {string} */
- kind: 'release' | 'refund';
- /** @description Campaign whose escrow is being acted on */
- campaignId: string;
- /** @description Milestone id, for a milestone release */
- milestoneId?: string;
- /** @description Amount to move */
- amount: number;
- /** @default USDC */
- currency: string;
- /** @description Destination address (for a release) */
- toAddress?: string;
- /** @description Why the funds are being moved */
- reason?: string;
- };
- DecideEscrowRequestDto: {
- /** @enum {string} */
- decision: 'approve' | 'reject';
- /** @description Note recorded with the decision */
- note?: string;
- };
- ExecuteEscrowRequestDto: {
- /** @description Hash of the settled, offline-signed release/refund tx */
- txHash: string;
- };
- PayoutRequestDto: {
- id: string;
- destinationPublicKey: string;
- /** @description Amount as a string (decimal-safe) */
- amount: string;
- currency: string;
- memo: string | null;
- memoType: string | null;
- reason: string | null;
- /** @description PROPOSED | APPROVED | AWAITING_SIGNATURE | REJECTED | EXECUTED */
- status: string;
- /** @description Platform source address the payout is sent from */
- sourcePublicKey: string | null;
- /** @description Unsigned XDR awaiting an offline signature (when AWAITING_SIGNATURE) */
- unsignedXdr: string | null;
- /** @description Maker email */
- proposedBy: string;
- /** @description Checker email */
- decidedBy: string | null;
- decidedAt: string | null;
- decisionNote: string | null;
- /** @description Settled tx hash */
- txHash: string | null;
- executedBy: string | null;
- executedAt: string | null;
- created: string;
- };
- PayoutRequestListResponseDto: {
- items: components['schemas']['PayoutRequestDto'][];
- };
- ProposePayoutRequestDto: {
- /** @description Stellar destination address (G…) */
- destinationPublicKey: string;
- /** @description Platform Stellar source address (G…) the payout is sent FROM. Defaults to the configured platform payout wallet (PLATFORM_ADDRESS). */
- sourcePublicKey?: string;
- /** @description Amount to send */
- amount: number;
- /** @default USDC */
- currency: string;
- /** @description Optional memo (required by some exchanges) */
- memo?: string;
- /** @enum {string} */
- memoType?: 'text' | 'id';
- /** @description Why the payout is being sent */
- reason?: string;
- };
- DecidePayoutRequestDto: {
- /** @enum {string} */
- decision: 'approve' | 'reject';
- /** @description Note recorded with the decision */
- note?: string;
- };
- BuildXdrResponseDto: {
- /** @description Unsigned transaction XDR to sign offline (Stellar Lab / hardware / multisig). */
- unsignedXdr: string;
- /**
- * @description Network the transaction targets.
- * @enum {string}
- */
- network: 'public' | 'testnet';
- /** @description Network passphrase to select when signing. */
- passphrase: string;
- /** @description Source G-address that must sign this transaction. */
- source: string;
- /** @description Deep-link to the Stellar Lab Sign Transaction page. Paste the copied XDR there. */
- labUrl: string;
- };
- SubmitPayoutSignedXdrDto: {
- /** @description Fully-signed payout XDR returned by the wallet / multisig coordinator. Verified against the built unsigned XDR before broadcast. */
- signedXdr: string;
- };
- ExecutePayoutRequestDto: {
- /** @description Hash of the settled, offline-signed payout tx */
- txHash: string;
- };
- AdminContentListItemDto: {
- id: string;
- title: string;
- slug: string;
- /** @description Publishing status */
- status: string;
- /** @description Author name */
- author: string;
- /** @description View count */
- views: number;
- /** @description Whether the post is archived (soft-deleted) */
- archived: boolean;
- /** @description ISO timestamp the post was created */
- created: string;
- };
- PaginatedContentDto: {
- items: components['schemas']['AdminContentListItemDto'][];
- page: number;
- limit: number;
- total: number;
- totalPages: number;
- };
- AdminContentDetailDto: {
- id: string;
- title: string;
- slug: string;
- /** @description Post body in MDX (markdown + JSX) */
- content: string;
- excerpt: string | null;
- coverImage: string | null;
- /** @description Publishing status */
- status: string;
- categories: string[];
- /** @description Tag names */
- tags: string[];
- isFeatured: boolean;
- isPinned: boolean;
- seoTitle: string | null;
- seoDescription: string | null;
- seoKeywords: string[];
- /** @description ISO timestamp for a scheduled publish */
- scheduledFor: string | null;
- /** @description Whether the post is archived (soft-deleted) */
- archived: boolean;
- created: string;
- updated: string;
- };
- ContentMutationResponseDto: {
- id: string;
- /** @description Generated (or existing) URL slug */
- slug: string;
- /** @description Publishing status */
- status: string;
- };
- UpdateContentDto: {
- /**
- * @description Blog post title
- * @example Getting Started with Stellar Smart Contracts
- */
- title?: string;
- /**
- * @description Blog post content in markdown format
- * @example # Introduction
- *
- * This tutorial will teach you...
- */
- content?: string;
- /**
- * @description Short excerpt or summary
- * @example Learn how to build your first smart contract on Stellar
- */
- excerpt?: string;
- /**
- * @description Cover image URL
- * @example https://res.cloudinary.com/demo/image/upload/v1234567890/post-cover.jpg
- */
- coverImage?: string;
- /**
- * @description Post status
- * @default DRAFT
- * @example DRAFT
- * @enum {string}
- */
- status: 'DRAFT' | 'PUBLISHED' | 'ARCHIVED' | 'SCHEDULED';
- /**
- * @description Post tags
- * @example [
- * "smart-contracts",
- * "soroban",
- * "tutorial"
- * ]
- */
- tags?: string[];
- /**
- * @description Post categories
- * @example [
- * "tutorials"
- * ]
- */
- categories?: string[];
- /**
- * @description Mark as featured post
- * @default false
- * @example false
- */
- isFeatured: boolean;
- /**
- * @description Pin post to top
- * @default false
- * @example false
- */
- isPinned: boolean;
- /**
- * @description Reading time in minutes (auto-calculated if not provided)
- * @example 5
- */
- readingTime?: number;
- /** @description SEO title (overrides post title) */
- seoTitle?: string;
- /** @description SEO meta description */
- seoDescription?: string;
- /**
- * @description SEO keywords
- * @example [
- * "stellar",
- * "blockchain",
- * "smart contracts"
- * ]
- */
- seoKeywords?: string[];
- /**
- * @description Schedule publication date (for SCHEDULED status)
- * @example 2025-12-31T10:00:00Z
- */
- scheduledFor?: string;
- /**
- * @description Generate AI content (excerpt, reading time, SEO, tags, category) if not provided
- * @default false
- * @example true
- */
- generateAI: boolean;
- };
- SetPublishedDto: {
- /** @description true publishes the post; false unpublishes (back to draft). */
- published: boolean;
- };
- ContentActionResponseDto: {
- id: string;
- /** @description Publishing status after the action */
- status: string;
- /** @description Whether the post is currently published */
- published: boolean;
- /** @description Whether the post is archived (soft-deleted) */
- archived: boolean;
- };
- ArchiveContentDto: {
- /** @description Why the post is being archived. Recorded in the audit log. */
- reason?: string;
- };
- ChecklistItemDto: {
- id: string;
- /** @description What the reviewer should verify */
- label: string;
- /** @description Optional help text */
- description: string | null;
- /** @description Whether this is a required check */
- required: boolean;
- /** @description Position in the list */
- orderIndex: number;
- };
- CreateChecklistItemDto: {
- label: string;
- description?: string;
- /** @default false */
- required: boolean;
- };
- ReorderChecklistDto: {
- /** @description All active item ids in the desired order (a permutation). */
- orderedIds: string[];
- };
- UpdateChecklistItemDto: {
- label?: string;
- /** @description Pass an empty string to clear the help text */
- description?: string | null;
- required?: boolean;
- };
- AdminCrowdfundingListItemDto: {
- id: string;
- title: string;
- /** @description v2 lifecycle status */
- status: string;
- /** @description Creator name */
- creator: string | null;
- /** @description Funding goal */
- fundingGoal: number;
- /** @description ISO timestamp the campaign was submitted for review */
- submittedForReviewAt: string | null;
- /** @description ISO timestamp the campaign was created */
- created: string;
- };
- PaginatedCrowdfundingDto: {
- items: components['schemas']['AdminCrowdfundingListItemDto'][];
- page: number;
- limit: number;
- total: number;
- totalPages: number;
- };
- AdminCrowdfundingProjectDto: {
- description: string | null;
- summary: string | null;
- /** @description Vision statement */
- vision: string | null;
- /** @description Markdown details / pitch */
- details: string | null;
- category: string | null;
- tags: string[];
- /** @description Tech stack */
- techStack: string[];
- /** @description Team members ({ name?, role, ... }) */
- teamMembers: {
- [key: string]: unknown;
- }[];
- /** @description Social links ({ platform, url }) */
- socialLinks:
- | {
- [key: string]: unknown;
- }[]
- | null;
- /** @description Contact ({ primary, backup }) */
- contact: {
- [key: string]: unknown;
- } | null;
- githubUrl: string | null;
- gitlabUrl: string | null;
- bitbucketUrl: string | null;
- projectWebsite: string | null;
- liveUrl: string | null;
- docsUrl: string | null;
- demoVideo: string | null;
- pitchVideoUrl: string | null;
- whitepaperUrl: string | null;
- logo: string | null;
- banner: string | null;
- thumbnail: string | null;
- screenshots: string[];
- };
- AdminCrowdfundingReviewDto: {
- /** @description NOTE | REQUEST_REVISION | APPROVED | REJECTED */
- action: string;
- reason: string | null;
- /** @description Reviewer name (User) or null when a staff member reviewed */
- reviewer: string | null;
- /** @description Staff email when a staff member reviewed */
- reviewerStaffEmail: string | null;
- createdAt: string;
- };
- AdminCrowdfundingMilestoneDto: {
- id: string;
- title: string;
- /** @description Position in the release sequence */
- orderIndex: number;
- /** @description Planned share of the goal (percent) */
- fundingPercentage: number;
- /** @description Planned amount */
- amount: number;
- /** @description Off-chain review status */
- reviewStatus: string;
- /** @description What the milestone delivers */
- description: string;
- /** @description Concrete deliverable */
- deliverable: string | null;
- /** @description Acceptance / success criteria */
- successCriteria: string | null;
- /** @description Expected delivery date */
- expectedDeliveryDate: string | null;
- submittedAt: string | null;
- /** @description On-chain claim anchor: pending_confirm | confirmed | failed */
- escrowAnchorStatus: string | null;
- escrowClaimTxHash: string | null;
- claimedAt: string | null;
- };
- AdminCrowdfundingDetailDto: {
- id: string;
- title: string;
- tagline: string | null;
- /** @description v2 lifecycle status */
- status: string;
- /** @description Creator name */
- creator: string | null;
- /** @description Full submitted project content for review */
- project: components['schemas']['AdminCrowdfundingProjectDto'];
- fundingGoal: number;
- fundingRaised: number;
- fundingCurrency: string;
- /** @description Funding deadline */
- fundingEndDate: string | null;
- /** @description Total released to the builder so far (across milestones) */
- totalDisbursed: number;
- /** @description Per-campaign voting quorum */
- voteGoal: number;
- /** @description Builder's wallet (escrow owner) */
- builderAddress: string | null;
- /** @description Number of milestones */
- nMilestones: number | null;
- /** @description On-chain event id once the escrow is live (FUNDING) */
- escrowEventId: string | null;
- /** @description create_event tx hash */
- escrowTxHash: string | null;
- escrowSettledLedger: number | null;
- escrowToken: string | null;
- /** @description Total escrow budget (stroops/decimal) */
- escrowBudget: string | null;
- /** @description Escrow failure code if create_event failed (FAILED) */
- escrowFailureCode: string | null;
- escrowFailedAt: string | null;
- completedAt: string | null;
- cancelledAt: string | null;
- /** @description Assigned delegated reviewer (User id), set at approval */
- assignedReviewerId: string | null;
- submittedForReviewAt: string | null;
- reviewedAt: string | null;
- /** @description ISO timestamp the campaign was created */
- created: string;
- /** @description Review history */
- reviews: components['schemas']['AdminCrowdfundingReviewDto'][];
- /** @description Milestones with review + on-chain claim status */
- milestones: components['schemas']['AdminCrowdfundingMilestoneDto'][];
- };
- ApproveCampaignDto: {
- /** @description StaffUser id of the delegated reviewer who signs off milestones for this campaign. Must be an active staff member. */
- delegatedReviewerId: string;
- /** @description Per-campaign voting quorum. Defaults to the contract default. */
- voteGoal?: number;
- /**
- * @description Bypass community voting and approve straight to launch-ready (REVIEW_APPROVED). Default false: the campaign enters community voting.
- * @default false
- */
- bypassVoting: boolean;
- };
- CrowdfundingActionResponseDto: {
- id: string;
- /** @description New v2 lifecycle status */
- status: string;
- };
- RejectCampaignDto: {
- /** @description Reason shown to the builder in the review history. */
- reason?: string;
- };
- RequestRevisionDto: {
- /** @description What the builder needs to change. Shown in the review history. */
- reason: string;
- };
- TotpEnrollResponseDto: {
- /** @description Base32 secret, shown once for manual entry */
- secret: string;
- /** @description otpauth:// URI for QR enrollment */
- otpauthUri: string;
- };
- TotpCodeDto: {
- /** @description Six-digit code from the authenticator app */
- code: string;
- };
- OkResponseDto: {
- /** @default true */
- ok: boolean;
- };
- AdminAuditListItemDto: {
- id: string;
- /** @description Email of the staff member who acted */
- actor: string;
- /** @description Dotted action name, e.g. "users.ban" */
- action: string;
- /** @description Permission resource the action belongs to */
- resource: string;
- /** @description Affected entity id */
- targetId: string | null;
- /** @description Human note captured with the action (e.g. ban reason) */
- details: string | null;
- /** @description ISO timestamp the action was recorded */
- created: string;
- };
- PaginatedAuditDto: {
- items: components['schemas']['AdminAuditListItemDto'][];
- page: number;
- limit: number;
- total: number;
- totalPages: number;
- };
- FeatureFlagDto: {
- /** @description Stable flag key, e.g. "crowdfunding.public_launch" */
- key: string;
- /** @description Human description of what the flag gates */
- description: string;
- enabled: boolean;
- /** @description ISO timestamp the flag was last changed */
- updated: string;
- };
- FeatureFlagsResponseDto: {
- items: components['schemas']['FeatureFlagDto'][];
- };
- ToggleFeatureFlagDto: {
- /** @description Desired enabled state */
- enabled: boolean;
- };
- StaffListItemDto: {
- id: string;
- name: string;
- email: string;
- /** @description Staff role token, e.g. "operations" */
- role: string;
- /** @description active | disabled */
- status: string;
- /** @description Whether the staff has an activated authenticator */
- totpEnabled: boolean;
- /** @description ISO timestamp the staff record was created */
- created: string;
- };
- StaffListResponseDto: {
- items: components['schemas']['StaffListItemDto'][];
- };
- SetRoleDto: {
- /**
- * @description The role to assign
- * @enum {string}
- */
- role:
- | 'super_admin'
- | 'operations'
- | 'finance'
- | 'compliance'
- | 'content'
- | 'support';
- };
- GovernanceProposalDto: {
- id: string;
- title: string;
- description: string | null;
- /** @description Target contract, e.g. "boundless-events" */
- contract: string;
- /** @description Contract action, e.g. "upgrade" */
- action: string;
- /** @description Action parameters for the offline signers */
- params?: {
- [key: string]: unknown;
- } | null;
- /** @description PROPOSED | APPROVED | REJECTED | EXECUTED */
- status: string;
- /** @description Email of the maker who proposed */
- proposedBy: string;
- /** @description Checker email */
- decidedBy: string | null;
- decidedAt: string | null;
- decisionNote: string | null;
- /** @description Offline-signed tx hash */
- txHash: string | null;
- executedBy: string | null;
- executedAt: string | null;
- created: string;
- };
- GovernanceListResponseDto: {
- items: components['schemas']['GovernanceProposalDto'][];
- };
- CreateProposalDto: {
- title: string;
- description?: string;
- /** @description Target contract */
- contract: string;
- /** @description Contract action */
- action: string;
- params?: {
- [key: string]: unknown;
- };
- };
- DecideProposalDto: {
- /** @enum {string} */
- decision: 'approve' | 'reject';
- /** @description Note recorded with the decision */
- note?: string;
- };
- ExecuteProposalDto: {
- /** @description Hash of the offline-signed, executed transaction */
- txHash: string;
- };
- SupportedTokenDto: {
- id: string;
- address: string;
- symbol: string | null;
- label: string | null;
- logoUrl: string | null;
- /** @description Last observed on-chain whitelist state. */
- lastKnownOnChain: boolean;
- createdAt: string;
- };
- SyncTokensResultDto: {
- /** @description Number of token rows created or updated. */
- applied: number;
- /** @description Tokens seen on-chain (whitelist size for state sync, events scanned for the events fallback). */
- total: number;
- /**
- * @description Which mechanism ran: authoritative state enumeration, or the events fallback when the contract predates the enumerable index.
- * @enum {string}
- */
- source: 'state' | 'events';
- };
- RegisterTokenDto: {
- /** @description Stellar Asset Contract (C...) address of the token to whitelist as an escrow denomination. */
- token: string;
- /** @description Display symbol, e.g. "USDC". */
- symbol?: string;
- /** @description Human label shown in the portal. */
- label?: string;
- /** @description Hosted logo image URL, shown next to the token on consumer surfaces. */
- logoUrl?: string;
- };
- PauseStateDto: {
- /** @description Live on-chain pause flag for the events contract. */
- paused: boolean;
- };
- ContractOpXdrDto: {
- /** @description AdminContractOp row id tracking this op. */
- opId: string;
- /** @enum {string} */
- intent: 'REGISTER_TOKEN' | 'DEREGISTER_TOKEN' | 'PAUSE' | 'UNPAUSE';
- /** @description On-chain contract admin G-address. This is the transaction source and the account that must sign at the Lab. */
- source: string;
- /** @description Unsigned transaction XDR for the admin to sign. */
- unsignedXdr: string;
- /** @description Stellar Lab "Sign Transaction" deep link. */
- labUrl: string;
- /** @enum {string} */
- network: 'public' | 'testnet';
- /** @description Network passphrase the signer must use. */
- passphrase: string;
- };
- DeregisterTokenDto: {
- /** @description Stellar Asset Contract (C...) address to deregister. */
- token: string;
- };
- SubmitSignedContractOpDto: {
- /** @description Base64 transaction XDR signed offline by the admin at the Stellar Lab. Must be the exact transaction returned by build-xdr (hash-checked). */
- signedXdr: string;
- };
- ContractOpResultDto: {
- opId: string;
- /** @enum {string} */
- intent: 'REGISTER_TOKEN' | 'DEREGISTER_TOKEN' | 'PAUSE' | 'UNPAUSE';
- /** @description AdminContractOp status after submission. */
- status: string;
- txHash: string | null;
- };
- AdminKycListItemDto: {
- /** @description User id */
- id: string;
- name: string;
- email: string;
- /** @enum {string} */
- status: 'in_review' | 'approved' | 'declined';
- /** @description Decline reason from Didit, when declined */
- declineReason: string | null;
- /** @description ISO timestamp of the last verification activity */
- reviewedAt: string;
- /** @description ISO timestamp the user became verified */
- verifiedAt: string | null;
- };
- PaginatedKycDto: {
- items: components['schemas']['AdminKycListItemDto'][];
- page: number;
- limit: number;
- total: number;
- totalPages: number;
- };
- DiditConnectionDto: {
- /** @description DIDIT_API_KEY is configured */
- apiKey: boolean;
- /** @description DIDIT_WORKFLOW_ID is configured */
- workflowId: boolean;
- /** @description DIDIT_WEBHOOK_SECRET is configured */
- webhookSecret: boolean;
- /** @description API key + workflow present: live calls (sync, re-trigger) work */
- connected: boolean;
- };
- KycSyncResponseDto: {
- userId: string;
- /** @description Raw Didit status after the sync */
- status: string;
- /** @description Whether the user record status changed */
- changed: boolean;
- /** @description False if no Boundless user could be linked to the session */
- userResolved: boolean;
- };
- KycRetriggerResponseDto: {
- userId: string;
- /** @description The new Didit session id */
- sessionId: string;
- /** @description Hosted verification URL to share with the user */
- verificationUrl: string;
- /** @description Initial Didit session status */
- status: string;
- /** @description Whether the user was notified (in-app + email) with the link. If false, share the URL manually. */
- notified: boolean;
- };
- KycOverrideDto: {
- /**
- * @description The decision to force onto the user record.
- * @enum {string}
- */
- decision: 'approved' | 'declined';
- /** @description Why the automated Didit decision is being overridden. Recorded in the audit log. */
- reason: string;
- };
- KycOverrideResponseDto: {
- userId: string;
- /**
- * @description The resulting normalized state
- * @enum {string}
- */
- status: 'approved' | 'declined';
- };
- AdminMilestoneListItemDto: {
- id: string;
- /** @enum {string} */
- type: 'crowdfunding' | 'grant';
- /** @description Parent program title */
- program: string | null;
- title: string;
- /** @description Milestone amount */
- amount: number;
- /** @description Review/lifecycle status */
- status: string;
- /** @description ISO timestamp the milestone was submitted, if any */
- submitted: string | null;
- /**
- * @description Crowdfunding only: on-chain payout release state (derived from the escrow anchor status). Null for grant milestones.
- * @enum {string|null}
- */
- releaseStatus:
- | 'NOT_RELEASED'
- | 'RELEASING'
- | 'RELEASED'
- | 'FAILED'
- | null;
- };
- PaginatedMilestonesDto: {
- items: components['schemas']['AdminMilestoneListItemDto'][];
- page: number;
- limit: number;
- total: number;
- totalPages: number;
- };
- AdminMilestoneDetailDto: {
- id: string;
- title: string;
- description: string;
- deliverable: string | null;
- successCriteria: string | null;
- expectedDeliveryDate: string | null;
- reviewStatus: string;
- completedAt: string | null;
- submittedAt: string | null;
- campaignId: string;
- proofOfWorkFiles: string[];
- proofOfWorkLinks: string[];
- submissionNotes: string | null;
- fundingPercentage: number;
- orderIndex: number;
- rejectionReason: string | null;
- rejectionFeedback: string | null;
- resubmissionDeadline: string | null;
- releaseTransactionHash: string | null;
- claimedAt: string | null;
- /** @description Derived payout release state. */
- releaseStatus: string;
- };
- MilestoneActionResponseDto: {
- id: string;
- /** @description New milestone review status */
- status: string;
- };
- AdminV2RejectMilestoneDto: {
- /** @description Feedback shown to the builder; what needs to change. */
- rejectionFeedback: string;
- /** @description Optional ISO date by which the builder must resubmit. */
- resubmissionDeadline?: string;
- };
- MilestoneReleaseXdrDto: {
- /** @description EscrowOp row id tracking this release. */
- opId: string;
- milestoneId: string;
- /** @description On-chain contract admin G-address. This is the transaction source and the account that must sign at the Lab. */
- source: string;
- /** @description Unsigned transaction XDR (the builder managed auth entry is already signed server-side; the admin signs the envelope offline). */
- unsignedXdr: string;
- /** @description Stellar Lab "Sign Transaction" deep link. */
- labUrl: string;
- /** @enum {string} */
- network: 'public' | 'testnet';
- /** @description Network passphrase the signer must use. */
- passphrase: string;
- };
- SubmitMilestoneReleaseDto: {
- /** @description Base64 transaction XDR signed offline by the admin at the Stellar Lab. Must be the exact transaction returned by build-xdr (hash-checked). */
- signedXdr: string;
- };
- MilestoneReleaseResultDto: {
- opId: string;
- milestoneId: string;
- /** @description EscrowOp status after submission. */
- status: string;
- txHash: string | null;
- };
- AdminWalletUserPreviewDto: {
- id: string;
- name: string;
- /** @description Profile photo URL, when set */
- image: string | null;
- };
- AdminWalletRowDto: {
- id: string;
- /** @description Stellar public key (G-address) */
- address: string;
- /**
- * @description Activation state
- * @enum {string}
- */
- status: 'active' | 'inactive';
- /** @description Number of users linked to this wallet */
- users: number;
- /** @description A capped preview of the linked users, for avatars in the list */
- userPreviews: components['schemas']['AdminWalletUserPreviewDto'][];
- /** @description ISO timestamp the wallet was created */
- created: string;
- };
- PaginatedWalletsDto: {
- items: components['schemas']['AdminWalletRowDto'][];
- page: number;
- limit: number;
- total: number;
- totalPages: number;
- };
- HackathonBriefTemplateDto: {
- id: string;
- name: string;
- description: string;
- category: string;
- brief: string;
- isActive: boolean;
- sortOrder: number;
- createdAt: string;
- updatedAt: string;
- };
- HackathonBriefTemplatesResponseDto: {
- items: components['schemas']['HackathonBriefTemplateDto'][];
- };
- CreateHackathonBriefTemplateDto: {
- name: string;
- description: string;
- category: string;
- brief: string;
- /** @default true */
- isActive: boolean;
- /** @default 0 */
- sortOrder: number;
- };
- UpdateHackathonBriefTemplateDto: {
- name?: string;
- description?: string;
- category?: string;
- brief?: string;
- isActive?: boolean;
- sortOrder?: number;
- };
- MarketingTemplateDto: {
- id: string;
- name: string;
- subject: string;
- body: string;
- variables: string[];
- isActive: boolean;
- sortOrder: number;
- createdAt: string;
- updatedAt: string;
- };
- MarketingTemplatesResponseDto: {
- items: components['schemas']['MarketingTemplateDto'][];
- };
- CreateMarketingTemplateDto: {
- name: string;
- subject: string;
- body: string;
- variables?: string[];
- isActive?: boolean;
- sortOrder?: number;
- };
- UpdateMarketingTemplateDto: {
- name?: string;
- subject?: string;
- body?: string;
- variables?: string[];
- isActive?: boolean;
- sortOrder?: number;
- };
- AudienceFilterDto: {
- /** @enum {string} */
- type:
- | 'all'
- | 'skills_match'
- | 'participated_in'
- | 'location'
- | 'never_applied';
- skills?: string[];
- /** @enum {string} */
- programType?: 'hackathon' | 'bounty' | 'grant';
- location?: string;
- };
- MarketingCampaignDto: {
- id: string;
- name: string;
- subject: string;
- body: string;
- audience: components['schemas']['AudienceFilterDto'];
- templateId?: Record;
- status: string;
- scheduledAt?: Record;
- sentAt?: Record;
- sentCount: number;
- /** @description Custom substitution vars for {{key}} placeholders */
- variables: {
- [key: string]: string;
- };
- createdById: string;
- createdByEmail: string;
- createdAt: string;
- updatedAt: string;
- };
- MarketingCampaignsResponseDto: {
- items: components['schemas']['MarketingCampaignDto'][];
- };
- CreateMarketingCampaignDto: {
- name: string;
- subject: string;
- body: string;
- audience: components['schemas']['AudienceFilterDto'];
- templateId?: string;
- scheduledAt?: string;
- /** @description Key-value pairs substituted into {{key}} placeholders in subject/body */
- variables?: {
- [key: string]: string;
- };
- };
- UpdateMarketingCampaignDto: {
- name?: string;
- subject?: string;
- body?: string;
- audience?: components['schemas']['AudienceFilterDto'];
- templateId?: string;
- scheduledAt?: string;
- variables?: {
- [key: string]: string;
- };
- };
- PreviewCampaignAudienceDto: {
- audience: components['schemas']['AudienceFilterDto'];
- };
- CampaignAudienceSizeDto: {
- count: number;
- };
- AutomationConditionsDto: {
- /** @description Min hours before re-sending to same user */
- cooldownHours?: number;
- };
- MarketingAutomationDto: {
- id: string;
- name: string;
- trigger: string;
- audience: components['schemas']['AudienceFilterDto'];
- templateId: string;
- templateName: string;
- conditions: components['schemas']['AutomationConditionsDto'];
- isActive: boolean;
- lastFiredAt?: Record;
- fireCount: number;
- createdById: string;
- createdByEmail: string;
- createdAt: string;
- updatedAt: string;
- };
- MarketingAutomationsResponseDto: {
- items: components['schemas']['MarketingAutomationDto'][];
- };
- CreateMarketingAutomationDto: {
- name: string;
- /** @enum {string} */
- trigger:
- | 'new_hackathon_published'
- | 'new_bounty_published'
- | 'new_grant_published'
- | 'new_crowdfunding_launched'
- | 'hackathon_deadline_3d'
- | 'hackathon_deadline_7d'
- | 'bounty_deadline_3d'
- | 'grant_deadline_3d'
- | 'user_signup'
- | 'user_inactive';
- audience: components['schemas']['AudienceFilterDto'];
- templateId: string;
- conditions?: components['schemas']['AutomationConditionsDto'];
- };
- UpdateMarketingAutomationDto: {
- name?: string;
- /** @enum {string} */
- trigger?:
- | 'new_hackathon_published'
- | 'new_bounty_published'
- | 'new_grant_published'
- | 'new_crowdfunding_launched'
- | 'hackathon_deadline_3d'
- | 'hackathon_deadline_7d'
- | 'bounty_deadline_3d'
- | 'grant_deadline_3d'
- | 'user_signup'
- | 'user_inactive';
- audience?: components['schemas']['AudienceFilterDto'];
- templateId?: string;
- conditions?: components['schemas']['AutomationConditionsDto'];
- };
- Function: Record;
- BountyScopeSectionDto: {
- /** @description Bounty title */
- title: string;
- /** @description Bounty description */
- description: string;
- /**
- * @description Discipline the bounty falls under. DEVELOPMENT requires githubIssueUrl.
- * @enum {string}
- */
- category?: 'DESIGN' | 'DEVELOPMENT' | 'CONTENT' | 'GROWTH' | 'COMMUNITY';
- /** @description Country where the bounty is created. */
- country?: string | null;
- /**
- * Format: uri
- * @description Required when category = DEVELOPMENT.
- */
- githubIssueUrl?: string | null;
- projectId?: string | null;
- bountyWindowId?: string | null;
- };
- BountyModeSectionDto: {
- /** @enum {string} */
- claimType: 'SINGLE_CLAIM' | 'COMPETITION';
- /** @enum {string} */
- entryType: 'OPEN' | 'APPLICATION_LIGHT' | 'APPLICATION_FULL';
- };
- BountySubmissionSectionDto: {
- /** Format: date-time */
- submissionDeadline: string;
- /** Format: date-time */
- applicationWindowCloseAt?: string | null;
- maxApplicants?: number | null;
- shortlistSize?: number | null;
- reputationMinimum?: number | null;
- /** @enum {string} */
- submissionVisibility?: 'ORGANIZER_ONLY' | 'HIDDEN_UNTIL_DEADLINE';
- /** @description Require a documentation link when submitting work. */
- requireDocumentation?: boolean;
- /** @description Require a tweet link when submitting work. */
- requireTweet?: boolean;
- /** @description Require a demo video link when submitting work. */
- requireDemoVideo?: boolean;
- /** @description Require at least one media image when submitting work. */
- requireMedia?: boolean;
- /** @description Credits required to apply (anti-spam). Supplied to the contract at publish via PublishBountyEscrowDto; not a Bounty column. */
- applicationCreditCost?: number | null;
- };
- BountyPrizeTierInputDto: {
- /** @description 1 = 1st place; unique within a bounty */
- position: number;
- /** @description Tier amount as a positive decimal string */
- amount: string;
- passMark?: number | null;
- };
- BountyRewardSectionDto: {
- /** @description Token / currency code the prize is denominated in */
- rewardCurrency: string;
- /** @description 1 tier for single claim; 1-3 tiers for a competition (multiple winners). */
- prizeTiers: components['schemas']['BountyPrizeTierInputDto'][];
- };
- BountyResourceItemDto: {
- /** @description Client-generated resource id */
- id: string;
- link?: string;
- description?: string;
- /** @description Uploaded file metadata */
- file?: {
- url?: string;
- name?: string;
- };
- };
- BountyResourcesSectionDto: {
- resources: components['schemas']['BountyResourceItemDto'][];
- };
- BountyDraftDataDto: {
- scope?: components['schemas']['BountyScopeSectionDto'];
- mode?: components['schemas']['BountyModeSectionDto'];
- submission?: components['schemas']['BountySubmissionSectionDto'];
- reward?: components['schemas']['BountyRewardSectionDto'];
- resources?: components['schemas']['BountyResourcesSectionDto'];
- };
- BountyDraftPrizeTierDto: {
- position: number;
- /** @description Tier amount as a decimal string */
- amount: string;
- passMark?: number | null;
- };
- BountyDraftAssumptionDto: {
- /** @description Wizard section the assumption belongs to. */
- section: string;
- /** @description Field within the section. */
- field: string;
- /** @description One-line plain reason for the choice. */
- note: string;
- };
- BountyDraftGeneratedModeDto: {
- entryType: string;
- claimType: string;
- };
- BountyDraftAiGenerationDto: {
- /** @description AI generationId that produced this draft. */
- generationId: string;
- /** @description Non-obvious choices the AI made, for review. */
- assumptions: components['schemas']['BountyDraftAssumptionDto'][];
- /** @description The brief that produced this draft (shown beside the draft). */
- brief?: string | null;
- /** @description The mode the AI generated for (to detect a later mode change). */
- generatedMode?:
- | components['schemas']['BountyDraftGeneratedModeDto']
- | null;
- };
- BountyDraftResponseDto: {
- id: string;
- /**
- * @description Bounty lifecycle state (lowercase).
- * @example draft
- */
- status: string;
- /** @description First incomplete step (1-based) */
- currentStep: number;
- completedSteps: string[];
- /** @description Plain mode label derived from (entryType, claimType, winner count), e.g. "Open competition (multiple winners)". */
- modeLabel?: string | null;
- data: components['schemas']['BountyDraftDataDto'];
- prizeTiers: components['schemas']['BountyDraftPrizeTierDto'][];
- isValidForPublish: boolean;
- /** @description Per-section validation messages, keyed by step */
- validationErrors: {
- [key: string]: Record[];
- };
- /** @description Present when the draft was generated with Organizer Assist; enables per-section AI regenerate in the wizard. */
- aiGeneration?: components['schemas']['BountyDraftAiGenerationDto'];
- /** Format: date-time */
- createdAt: string;
- /** Format: date-time */
- updatedAt: string;
- };
- UpdateBountyDraftDto: {
- scope?: components['schemas']['BountyScopeSectionDto'];
- mode?: components['schemas']['BountyModeSectionDto'];
- submission?: components['schemas']['BountySubmissionSectionDto'];
- reward?: components['schemas']['BountyRewardSectionDto'];
- resources?: components['schemas']['BountyResourcesSectionDto'];
- /** @description Hint that this is an autosave (no completion side effects). */
- autoSave?: boolean;
- };
- ClarifyBountyBriefDto: {
- /** @description Free-text brief to triage for clarifying questions. */
- brief: string;
- };
- ClarifyQuestionOptionDto: {
- value: string;
- label: string;
- };
- ClarifyQuestionDto: {
- /** @description Axis key, e.g. "winners" | "entry" | "deadline". */
- id: string;
- question: string;
- options: components['schemas']['ClarifyQuestionOptionDto'][];
- };
- ClarifyBountyDraftResponseDto: {
- /** @description True when the brief is specific enough to draft immediately. */
- ready: boolean;
- questions: components['schemas']['ClarifyQuestionDto'][];
- };
- GenerateBountyDraftFromBriefDto: {
- /**
- * @description Free-text brief describing the bounty to generate.
- * @example A one-week bounty to design three onboarding illustrations for a Stellar wallet, paid to the best entry.
- */
- brief: string;
- /**
- * @description Total reward budget in USDC, as a decimal string.
- * @example 500
- */
- budgetCapUsdc: string;
- /**
- * @description Earliest the bounty may start (YYYY-MM-DD).
- * @example 2026-07-01
- */
- earliestStart: string;
- /** @description Up to 3 example briefs to steer style. */
- examples?: string[];
- };
- BountyAiGenerationMetaDto: {
- generationId: string;
- model: string;
- promptVersion: string;
- /** @description Cost in USD as a decimal string (never a float). */
- costUsd: string;
- };
- GenerateBountyDraftFromBriefResponseDto: {
- /** @description Id of the created draft. */
- draftId: string;
- draft: components['schemas']['BountyDraftResponseDto'];
- generation: components['schemas']['BountyAiGenerationMetaDto'];
- };
- RegenerateBountyDraftSectionDto: {
- /** @enum {string} */
- section: 'description' | 'submission' | 'reward';
- /** @description Optional steering instructions for the regeneration. */
- instructions?: string;
- };
- RegenerateBountyDraftSectionResponseDto: {
- /** @enum {string} */
- section: 'description' | 'submission' | 'reward';
- /** @description Regenerated values in the wizard section shape. */
- data: {
- [key: string]: unknown;
- };
- generation: components['schemas']['BountyAiGenerationMetaDto'];
- };
- BountyWinnerDistributionEntryDto: {
- /**
- * @description 1-indexed winner position.
- * @example 1
- */
- position: number;
- /**
- * @description Percent of total_budget for this position. All entries sum to 100.
- * @example 100
- */
- percent: number;
- };
- PublishBountyEscrowDto: {
- /**
- * @description Stellar G-address that will own and sign the create_event transaction.
- * @example GDVGP7DWODFVYQ5NHHLLD3WFVLUH5Y3HHELIKSNO4STEFCBETQAWDMKZ
- */
- ownerAddress: string;
- /**
- * @description Whitelisted Stellar Asset Contract address the prize is in.
- * @example CBIELTK6YBZJU5UP2WWQEUCYKLPU6AUNZ2BQ4WWFEIE3USCIHMXQDAMA
- */
- tokenAddress: string;
- /**
- * @description Total prize in token-native units (e.g. 500 = 500 USDC, NOT stroops). String is required when the value exceeds the JS safe-integer range.
- * @example 500
- */
- budget: string;
- /**
- * @description Submission deadline as a Unix timestamp in seconds. Required for bounties that close at a specific time. Pass null only for always-open bounties (rare).
- * @example 1804383600
- */
- submissionDeadline: number | null;
- /** @description Override for the winner distribution. Defaults to 100% to position 1. */
- winnerDistribution?: components['schemas']['BountyWinnerDistributionEntryDto'][];
- /** @description Override for the content URI stored on chain. Defaults to https://api.boundless.fi/bounties//content. */
- contentUri?: string;
- /**
- * @description Signing path. EXTERNAL (default) returns unsigned XDR for the wallet or multisig coordinator to sign. MANAGED has the backend sign and submit using the caller's platform-held wallet; the response is PENDING_CONFIRM with a txHash.
- * @default EXTERNAL
- * @example MANAGED
- * @enum {string}
- */
- fundingMode: 'EXTERNAL' | 'MANAGED';
- /** @description For MANAGED funding, the organization treasury wallet to fund from. When set, the backend signs with that treasury (managed) wallet instead of the caller's personal wallet; ownerAddress must match the treasury wallet address. Omit to fund from the personal managed wallet. */
- sourceWalletId?: string;
- };
- BountyEscrowOpResponseDto: {
- /** @description Internal EscrowOp uuid. */
- id: string;
- /** @description Hex-encoded 32-byte contract op_id. */
- opId: string;
- /** @description Contract operation kind. */
- kind: string;
- /** @description EscrowOp status. */
- status: string;
- /** @description EntityKind (BOUNTY for this surface). */
- entityKind: string;
- /** @description Bounty id. */
- entityId: string;
- /** @description Unsigned XDR for the wallet to sign (PENDING_SIGN onward). */
- unsignedXdr?: string | null;
- /** @description Stellar G-address expected to sign this op. */
- signerHint?: string | null;
- /** @description Soroban tx hash (set once the op reaches PENDING_CONFIRM). */
- txHash?: string | null;
- /** @description On-chain or platform-side error code when the op transitions to FAILED. */
- errorCode?: string | null;
- /** Format: date-time */
- createdAt: string;
- /** Format: date-time */
- updatedAt: string;
- };
- CancelBountyEscrowDto: {
- /**
- * @description Organizer's Stellar G-address that signs cancel_event. Must match the bounty's on-chain owner.
- * @example GDVGP7DWODFVYQ5NHHLLD3WFVLUH5Y3HHELIKSNO4STEFCBETQAWDMKZ
- */
- ownerAddress: string;
- /**
- * @description Signing path. EXTERNAL (default) returns unsigned XDR; MANAGED signs server-side with the caller's platform-held wallet and submits.
- * @default EXTERNAL
- * @enum {string}
- */
- fundingMode: 'EXTERNAL' | 'MANAGED';
- };
- BountyWinnerSelectionDto: {
- /**
- * @description Stellar G-address of the applicant being declared winner. Must have an active submission anchor for this bounty.
- * @example GBXNQFDSBDPOIA3Q4LYIWBOJFFPCCV6IEDHBSJZEAYFKIKZVUO4QEDVS
- */
- applicantAddress: string;
- /**
- * @description Winner position, 1-indexed. Must exist in the bounty's on-chain winner_distribution (the contract rejects unknown positions).
- * @example 1
- */
- position: number;
- /**
- * @description Override the platform default reputation_bump for this position. Defaults to 50/25/10 for positions 1/2/3 and 5 for the rest.
- * @example 50
- */
- reputationBump?: number;
- };
- SelectBountyWinnersDto: {
- /**
- * @description Organizer's Stellar G-address that signs select_winners. Must match the bounty's on-chain owner.
- * @example GDVGP7DWODFVYQ5NHHLLD3WFVLUH5Y3HHELIKSNO4STEFCBETQAWDMKZ
- */
- ownerAddress: string;
- /** @description Winners to declare. Each entry must reference an applicant with an active submission. Positions must be unique within the array. */
- selections: components['schemas']['BountyWinnerSelectionDto'][];
- /**
- * @description Signing path. EXTERNAL (default) returns unsigned XDR; MANAGED signs server-side with the caller's platform-held wallet and submits.
- * @default EXTERNAL
- * @enum {string}
- */
- fundingMode: 'EXTERNAL' | 'MANAGED';
- };
- BountySubmitSignedXdrDto: {
- /** @description Fully-signed XDR returned by the wallet or coordinator. */
- signedXdr: string;
- };
- ApplyBountyDto: {
- /**
- * @description Caller's Stellar G-address. Must match the caller's linked wallet on the platform; the backend rejects mismatches up front so the wallet does not get a tx it cannot sign.
- * @example GBXNQFDSBDPOIA3Q4LYIWBOJFFPCCV6IEDHBSJZEAYFKIKZVUO4QEDVS
- */
- applicantAddress: string;
- /**
- * @description EXTERNAL (default) returns unsigned XDR for the caller to sign. MANAGED signs server-side using the caller's platform-held wallet and submits immediately. Identical semantics to the publish flow.
- * @default EXTERNAL
- * @enum {string}
- */
- fundingMode: 'EXTERNAL' | 'MANAGED';
- };
- WithdrawApplicationDto: {
- /**
- * @description Caller's Stellar G-address. Must match the caller's linked wallet on the platform; the backend rejects mismatches up front so the wallet does not get a tx it cannot sign.
- * @example GBXNQFDSBDPOIA3Q4LYIWBOJFFPCCV6IEDHBSJZEAYFKIKZVUO4QEDVS
- */
- applicantAddress: string;
- /**
- * @description EXTERNAL (default) returns unsigned XDR for the caller to sign. MANAGED signs server-side using the caller's platform-held wallet and submits immediately. Identical semantics to the publish flow.
- * @default EXTERNAL
- * @enum {string}
- */
- fundingMode: 'EXTERNAL' | 'MANAGED';
- };
- SubmitBountyDto: {
- /**
- * @description Caller's Stellar G-address. Must match the caller's linked wallet on the platform; the backend rejects mismatches up front so the wallet does not get a tx it cannot sign.
- * @example GBXNQFDSBDPOIA3Q4LYIWBOJFFPCCV6IEDHBSJZEAYFKIKZVUO4QEDVS
- */
- applicantAddress: string;
- /**
- * @description EXTERNAL (default) returns unsigned XDR for the caller to sign. MANAGED signs server-side using the caller's platform-held wallet and submits immediately. Identical semantics to the publish flow.
- * @default EXTERNAL
- * @enum {string}
- */
- fundingMode: 'EXTERNAL' | 'MANAGED';
- /**
- * @description URI of the participant's submission content. Stored on chain in the contract's submission anchor; off-chain content lives wherever the URI points (S3, IPFS, GitHub PR, etc.).
- * @example https://github.com/me/boundless-fix/pull/1
- */
- contentUri: string;
- /** @description Documentation / setup / API reference URL. */
- documentationUrl?: string;
- /** @description Tweet / X post URL. */
- tweetUrl?: string;
- /** @description Demo video URL. */
- demoVideoUrl?: string;
- /** @description Media image URLs (uploaded screenshots / assets). */
- mediaUrls?: string[];
- };
- WithdrawSubmissionDto: {
- /**
- * @description Caller's Stellar G-address. Must match the caller's linked wallet on the platform; the backend rejects mismatches up front so the wallet does not get a tx it cannot sign.
- * @example GBXNQFDSBDPOIA3Q4LYIWBOJFFPCCV6IEDHBSJZEAYFKIKZVUO4QEDVS
- */
- applicantAddress: string;
- /**
- * @description EXTERNAL (default) returns unsigned XDR for the caller to sign. MANAGED signs server-side using the caller's platform-held wallet and submits immediately. Identical semantics to the publish flow.
- * @default EXTERNAL
- * @enum {string}
- */
- fundingMode: 'EXTERNAL' | 'MANAGED';
- };
- ContributeBountyDto: {
- /**
- * @description Caller's Stellar G-address. Must match the caller's linked wallet on the platform; the backend rejects mismatches up front so the wallet does not get a tx it cannot sign.
- * @example GBXNQFDSBDPOIA3Q4LYIWBOJFFPCCV6IEDHBSJZEAYFKIKZVUO4QEDVS
- */
- applicantAddress: string;
- /**
- * @description EXTERNAL (default) returns unsigned XDR for the caller to sign. MANAGED signs server-side using the caller's platform-held wallet and submits immediately. Identical semantics to the publish flow.
- * @default EXTERNAL
- * @enum {string}
- */
- fundingMode: 'EXTERNAL' | 'MANAGED';
- /**
- * @description Amount in token-native units (e.g. 30 = 30 USDC, NOT stroops). Pass a string when the value exceeds the JS safe-integer range. Must be >= 10 USDC (contract minimum).
- * @example 30
- */
- amount: string;
- };
- CreateBountyApplicationDto: {
- /**
- * @description G-address that will receive payout if selected.
- * @example GBXNQFDSBDPOIA3Q4LYIWBOJFFPCCV6IEDHBSJZEAYFKIKZVUO4QEDVS
- */
- applicantAddress: string;
- /** @description Light proposal text (light application): 100 to 300 words. Required for APPLICATION_LIGHT mode. */
- proposalShort?: string;
- /** @description Full proposal text (full application): 500 to 2000 words. Required for APPLICATION_FULL mode. */
- proposalFull?: string;
- /** @description Portfolio links. APPLICATION_LIGHT: up to 3. APPLICATION_FULL: up to 6. */
- portfolioLinks?: string[];
- /** @description Estimated days to complete (APPLICATION_LIGHT). Required for APPLICATION_LIGHT mode. */
- estimatedDays?: number;
- /** @description Qualifications text (APPLICATION_FULL). Required for APPLICATION_FULL mode. */
- qualifications?: string;
- /** @description Optional video intro URL (APPLICATION_FULL). */
- videoIntroUrl?: string;
- };
- BountyApplicationResponseDto: {
- id: string;
- bountyId: string;
- /** @description G-address that receives payout if selected. */
- applicantAddress: string;
- /** @description Escrow lifecycle: pending_confirm | active | withdrawn | failed. */
- status: string;
- /**
- * @description Application lifecycle (SUBMITTED/SHORTLISTED/SELECTED/DECLINED/WITHDRAWN). Null for legacy OPEN + SINGLE_CLAIM rows.
- * @enum {string|null}
- */
- applicationStatus?:
- | 'SUBMITTED'
- | 'SHORTLISTED'
- | 'SELECTED'
- | 'DECLINED'
- | 'WITHDRAWN'
- | null;
- proposalShort?: string | null;
- proposalFull?: string | null;
- portfolioLinks: string[];
- estimatedDays?: number | null;
- qualifications?: string | null;
- videoIntroUrl?: string | null;
- declineReason?: string | null;
- /** Format: date-time */
- shortlistedAt?: string | null;
- /** Format: date-time */
- selectedAt?: string | null;
- /** Format: date-time */
- declinedAt?: string | null;
- /** Format: date-time */
- withdrawnAt?: string | null;
- /** Format: date-time */
- createdAt: string;
- /** Format: date-time */
- updatedAt: string;
- };
- EditBountyApplicationDto: {
- /** @description Light proposal text. */
- proposalShort?: string;
- /** @description Full proposal text. */
- proposalFull?: string;
- portfolioLinks?: string[];
- estimatedDays?: number;
- qualifications?: string;
- videoIntroUrl?: string;
- };
- SelectForSingleClaimDto: {
- /** @description Application id to select as the single winner. */
- applicationId: string;
- };
- CreateShortlistDto: {
- /** @description Application ids to include in the shortlist. */
- applicationIds: string[];
- };
- DeclineApplicationDto: {
- /** @description Reason for decline (surfaced to builder). */
- reason?: string;
- };
- JoinCompetitionDto: {
- /**
- * @description G-address that will receive payout if winning
- * @example GBXNQFDSBDPOIA3Q4LYIWBOJFFPCCV6IEDHBSJZEAYFKIKZVUO4QEDVS
- */
- applicantAddress: string;
- };
- BountySummaryDto: {
- id: string;
- title: string;
- /** @description Pillar lifecycle state (lowercase). */
- status: string;
- /** @enum {string|null} */
- entryType?: 'OPEN' | 'APPLICATION_LIGHT' | 'APPLICATION_FULL' | null;
- /** @enum {string|null} */
- claimType?: 'SINGLE_CLAIM' | 'COMPETITION' | null;
- rewardCurrency: string;
- /**
- * Format: date-time
- * @description Work/submission deadline (published value, falling back to the draft).
- */
- deadline?: string | null;
- };
- MyBountyApplicationRowDto: {
- id: string;
- /**
- * @description SUBMITTED / SHORTLISTED / SELECTED / DECLINED / WITHDRAWN.
- * @enum {string|null}
- */
- applicationStatus?:
- | 'SUBMITTED'
- | 'SHORTLISTED'
- | 'SELECTED'
- | 'DECLINED'
- | 'WITHDRAWN'
- | null;
- /** @description Escrow lifecycle: pending_confirm | active | withdrawn | failed. */
- status: string;
- /** Format: date-time */
- createdAt: string;
- /** Format: date-time */
- updatedAt: string;
- bounty: components['schemas']['BountySummaryDto'];
- };
- MyBountyApplicationListDto: {
- items: components['schemas']['MyBountyApplicationRowDto'][];
- total: number;
- page: number;
- limit: number;
- };
- MyBountySubmissionRowDto: {
- id: string;
- /** @description Off-chain review state. */
- status: string;
- escrowAnchorStatus?: string | null;
- githubPullRequestUrl?: string | null;
- tierPosition?: number | null;
- /** @description Won amount in token-native units (decimal string). */
- tierAmount?: string | null;
- rewardTransactionHash?: string | null;
- /** Format: date-time */
- paidAt?: string | null;
- /** Format: date-time */
- createdAt: string;
- /** Format: date-time */
- updatedAt: string;
- bounty: components['schemas']['BountySummaryDto'];
- };
- MyBountySubmissionListDto: {
- items: components['schemas']['MyBountySubmissionRowDto'][];
- total: number;
- page: number;
- limit: number;
- };
- BountyWinnerDto: {
- submissionId: string;
- /** @description 1 = 1st place. */
- tierPosition: number;
- /** @description Won amount (token-native units, decimal string). */
- tierAmount: string;
- /** @description User id of the winner. */
- submittedBy: string;
- applicantAddress?: string | null;
- githubPullRequestUrl?: string | null;
- contentUri?: string | null;
- rewardTransactionHash?: string | null;
- /** Format: date-time */
- paidAt?: string | null;
- };
- BountyResultsDto: {
- bountyId: string;
- /** @description Pillar lifecycle state (lowercase). */
- status: string;
- /** @description True once the bounty has completed. */
- isComplete: boolean;
- rewardCurrency: string;
- /** @description Winners, by tier. */
- winners: components['schemas']['BountyWinnerDto'][];
- };
- BountySubmissionViewDto: {
- id: string;
- submittedBy: string;
- /** @description True when this is the caller’s own submission. */
- isOwn: boolean;
- /** @description Off-chain review state. */
- status: string;
- escrowAnchorStatus?: string | null;
- applicantAddress?: string | null;
- githubPullRequestUrl?: string | null;
- contentUri?: string | null;
- tierPosition?: number | null;
- tierAmount?: string | null;
- /** Format: date-time */
- createdAt: string;
- };
- BountySubmissionListDto: {
- items: components['schemas']['BountySubmissionViewDto'][];
- /** @enum {string} */
- visibility: 'ORGANIZER_ONLY' | 'HIDDEN_UNTIL_DEADLINE';
- /** @description Whether peer submissions are visible to the caller (organizer, or HIDDEN_UNTIL_DEADLINE past the deadline). When false, only the caller’s own submission is returned. */
- peersVisible: boolean;
- };
- BountyPrizeTierPublicDto: {
- position: number;
- /** @description Tier amount in token-native units. */
- amount: string;
- /** @description Optional minimum quality bar. */
- passMark?: number | null;
- };
- BountyOrganizationPublicDto: {
- id: string;
- name: string;
- slug?: string | null;
- logo?: string | null;
- };
- BountySubmissionRequirementsDto: {
- documentation: boolean;
- tweet: boolean;
- demoVideo: boolean;
- media: boolean;
- };
- BountyClaimantPublicDto: {
- /** @description Display handle (username, falling back to name). */
- username: string;
- /** @description Claimant wallet address. */
- address: string;
- avatarUrl?: string | null;
- };
- BountyPublicDto: {
- id: string;
- title: string;
- description: string;
- /** @description Pillar lifecycle state (lowercase). */
- status: string;
- type: string;
- rewardAmount: number;
- rewardCurrency: string;
- /** @enum {string} */
- entryType?: 'OPEN' | 'APPLICATION_LIGHT' | 'APPLICATION_FULL';
- /** @enum {string} */
- claimType?: 'SINGLE_CLAIM' | 'COMPETITION';
- /** @enum {string} */
- submissionVisibility: 'ORGANIZER_ONLY' | 'HIDDEN_UNTIL_DEADLINE';
- /** Format: date-time */
- applicationWindowCloseAt?: string | null;
- maxApplicants?: number | null;
- shortlistSize?: number | null;
- reputationMinimum?: number | null;
- prizeTiers: components['schemas']['BountyPrizeTierPublicDto'][];
- organization: components['schemas']['BountyOrganizationPublicDto'];
- /** @description On-chain event id once published; null while in draft. */
- escrowEventId?: string | null;
- escrowTxHash?: string | null;
- /** @description Bounty discipline (DESIGN, DEVELOPMENT, CONTENT, GROWTH, COMMUNITY). */
- category?: string | null;
- /**
- * Format: date-time
- * @description Work/submission deadline (set at publish); null while in draft.
- */
- submissionDeadline?: string | null;
- /** @description Which submission metadata fields the organizer requires. */
- submissionRequirements: components['schemas']['BountySubmissionRequirementsDto'];
- /** Format: date-time */
- createdAt: string;
- /** @description Active claimant of a single-claim bounty once claimed; null otherwise. */
- claimedBy?: components['schemas']['BountyClaimantPublicDto'] | null;
- };
- BountyPublicListDto: {
- bounties: components['schemas']['BountyPublicDto'][];
- total: number;
- page: number;
- limit: number;
- };
- GrantWinnerDistributionEntryDto: {
- /**
- * @description 1-indexed winner position
- * @example 1
- */
- position: number;
- /**
- * @description Percent of total_budget for this position. All sum to 100.
- * @example 100
- */
- percent: number;
- };
- PublishGrantEscrowDto: {
- /**
- * @description Organizer's Stellar G-address that signs the create_event transaction.
- * @example GDVGP7DWODFVYQ5NHHLLD3WFVLUH5Y3HHELIKSNO4STEFCBETQAWDMKZ
- */
- ownerAddress: string;
- /**
- * @description Whitelisted Stellar Asset Contract address.
- * @example CBIELTK6YBZJU5UP2WWQEUCYKLPU6AUNZ2BQ4WWFEIE3USCIHMXQDAMA
- */
- tokenAddress: string;
- /**
- * @description Total budget in token-native units (NOT stroops).
- * @example 500
- */
- budget: string;
- /**
- * @description Number of milestones (n) for the ReleaseKind::Multi(n) release_kind. Per-recipient amount is total_budget * winner_share% / 100 / n_milestones.
- * @example 2
- */
- nMilestones: number;
- /**
- * @description Optional submission deadline (Unix seconds).
- * @example 1804383600
- */
- submissionDeadline?: number;
- /** @description Override the winner distribution. Defaults to 100% to position 1. */
- winnerDistribution?: components['schemas']['GrantWinnerDistributionEntryDto'][];
- /** @description Override the public content_uri. Defaults to /grants//content. */
- contentUri?: string;
- /**
- * @description Signing path. EXTERNAL (default) or MANAGED.
- * @default EXTERNAL
- * @enum {string}
- */
- fundingMode: 'EXTERNAL' | 'MANAGED';
- };
- GrantEscrowOpResponseDto: {
- id: string;
- opId: string;
- kind: string;
- status: string;
- entityKind: string;
- entityId: string;
- unsignedXdr?: string | null;
- signerHint?: string | null;
- txHash?: string | null;
- errorCode?: string | null;
- /** Format: date-time */
- createdAt: string;
- /** Format: date-time */
- updatedAt: string;
- };
- CancelGrantEscrowDto: {
- /** @description Organizer's Stellar G-address. */
- ownerAddress: string;
- /**
- * @default EXTERNAL
- * @enum {string}
- */
- fundingMode: 'EXTERNAL' | 'MANAGED';
- };
- GrantWinnerSelectionDto: {
- /** @description GrantApplication.id to declare as a winner. The application must already have applicantAddress set (the Stellar G-address receiving the grant). */
- grantApplicationId: string;
- /**
- * @description Winner position, 1-indexed.
- * @example 1
- */
- position: number;
- /** @example 50 */
- reputationBump?: number;
- };
- SelectGrantWinnersDto: {
- ownerAddress: string;
- selections: components['schemas']['GrantWinnerSelectionDto'][];
- /**
- * @default EXTERNAL
- * @enum {string}
- */
- fundingMode: 'EXTERNAL' | 'MANAGED';
- };
- ClaimGrantMilestoneDto: {
- ownerAddress: string;
- /** @description GrantMilestone.id to claim payment for. */
- grantMilestoneId: string;
- /**
- * @default EXTERNAL
- * @enum {string}
- */
- fundingMode: 'EXTERNAL' | 'MANAGED';
- };
- GrantSubmitSignedXdrDto: {
- signedXdr: string;
- };
- ContributeGrantDto: {
- /** @description Contributor's Stellar G-address. Must match caller's wallet. */
- applicantAddress: string;
- /**
- * @description Amount in token-native units. Must be >= 10 USDC.
- * @example 30
- */
- amount: string;
- /**
- * @default EXTERNAL
- * @enum {string}
- */
- fundingMode: 'EXTERNAL' | 'MANAGED';
- };
- GrantPublicListItemDto: {
- /**
- * @description Grant id.
- * @example grant_123
- */
- id: string;
- /**
- * @description Underlying project title used as the card title.
- * @example On-chain governance research
- */
- title: string;
- /**
- * @description Short tagline/summary. Empty string when none is available.
- * @example Funding research into delegated voting models.
- */
- summary: string;
- /**
- * @description Banner or thumbnail image URL.
- * @example https://cdn.boundless.dev/grants/abc.png
- */
- coverImageUrl: string | null;
- /**
- * @description Lowercased grant status.
- * @example open
- */
- status: string;
- /**
- * @description Total program budget in USDC, stringified.
- * @example 50000
- */
- totalBudgetUsdc: string | null;
- /**
- * @description Owning organization id, if any.
- * @example org_123
- */
- organizationId: string | null;
- /**
- * @description Owning organization display name.
- * @example Boundless Labs
- */
- organizationName: string | null;
- /**
- * @description Owning organization logo URL.
- * @example https://cdn.boundless.dev/orgs/boundless.png
- */
- organizationLogoUrl: string | null;
- /**
- * @description Underlying project category, if any.
- * @example governance
- */
- category: string | null;
- /**
- * @description Total submitted applications count.
- * @example 12
- */
- applicationCount: number;
- /**
- * @description When the grant was created.
- * @example 2026-05-01T12:00:00.000Z
- */
- createdAt: string;
- };
- GrantPublicListResponseDto: {
- items: components['schemas']['GrantPublicListItemDto'][];
- /**
- * @description Total count of grants matching the filters.
- * @example 84
- */
- total: number;
- /**
- * @description Current page (1-indexed).
- * @example 1
- */
- page: number;
- /**
- * @description Items per page.
- * @example 20
- */
- limit: number;
- };
- /**
- * @description The pillar this opportunity belongs to.
- * @enum {string}
- */
- OpportunityType: 'BOUNTY' | 'HACKATHON' | 'GRANT' | 'CROWDFUNDING';
- OpportunityListItemDto: {
- /**
- * @description The pillar this opportunity belongs to.
- * @example BOUNTY
- */
- type: components['schemas']['OpportunityType'];
- /**
- * @description Pillar-local primary key. Globally unique within a type.
- * @example ckxyz123
- */
- id: string;
- /**
- * @description Optional URL slug. Hackathons and crowdfunding campaigns expose one; bounties and grants do not.
- * @example open-defi-hack
- */
- slug: string | null;
- /**
- * @description Display title for the card.
- * @example Build a DAO governance dashboard
- */
- title: string;
- /**
- * @description Short blurb shown under the title. Empty string when the underlying pillar has no summary; never null.
- * @example Ship a React dashboard that visualizes on-chain governance votes.
- */
- summary: string;
- /**
- * @description Banner or hero image URL for the card.
- * @example https://cdn.boundless.dev/banners/abc.png
- */
- coverImageUrl: string | null;
- /**
- * @description Owning organization id. Null on crowdfunding or grants that lack an organization.
- * @example org_123
- */
- organizationId: string | null;
- /**
- * @description Owning organization display name.
- * @example Boundless Labs
- */
- organizationName: string | null;
- /**
- * @description Owning organization logo URL.
- * @example https://cdn.boundless.dev/orgs/boundless.png
- */
- organizationLogoUrl: string | null;
- /**
- * @description Lowercased pillar-specific status (e.g. "open", "upcoming", "active").
- * @example open
- */
- status: string;
- /**
- * @description Total advertised reward in USDC, stringified. Null when not applicable to the pillar.
- * @example 5000.00
- */
- totalRewardUsdc: string | null;
- /**
- * @description Funded amount so far in USDC, crowdfunding only. Null elsewhere.
- * @example 1234.56
- */
- fundedAmountUsdc: string | null;
- /**
- * @description When this opportunity went live. Falls back to createdAt when the pillar lacks publishedAt.
- * @example 2026-05-01T12:00:00.000Z
- */
- publishedAt: string;
- /**
- * @description When the opportunity window opens.
- * @example 2026-05-15T00:00:00.000Z
- */
- startsAt: string | null;
- /**
- * @description Application or submission deadline. Null for open-ended pillars (notably grants).
- * @example 2026-06-30T23:59:59.000Z
- */
- endsAt: string | null;
- /**
- * @description Approximate participant count. Null when the pillar has no relation to count from.
- * @example 42
- */
- participantCount: number | null;
- /**
- * @description Pillar-defined tags. Empty array for pillars without a tag field; never null.
- * @example [
- * "stellar",
- * "defi"
- * ]
- */
- tags: string[];
- /**
- * @description Path to the detail page on the frontend.
- * @example /bounties/ckxyz123
- */
- detailUrl: string;
- /**
- * @description True when this opportunity is currently featured. Drives the page-1 boost in the marketplace.
- * @example false
- */
- isFeatured: boolean;
- };
- OpportunityListResponseDto: {
- /** @description Cards in the current page, post-merge. */
- items: components['schemas']['OpportunityListItemDto'][];
- /**
- * @description Opaque cursor for the next page. Null when no more results are available.
- * @example eyJzb3J0IjoibmV3ZXN0IiwicHJpbWFyeSI6IjIwMjYtMDUtMTVUMDA6MDA6MDAuMDAwWiIsImlkIjoiY2t4eXoxMjMifQ
- */
- nextCursor: string | null;
- /**
- * @description Total rows matching the current filter combo (type, status, search, tags), summed across pillar adapters. Cursor-blind, so stable across paginated requests with the same filters.
- * @example 137
- */
- total: number;
- };
- SubscribeDto: {
- /**
- * @description Email address to subscribe
- * @example user@example.com
- */
- email: string;
- /**
- * @description Subscriber name
- * @example John Doe
- */
- name?: string;
- /**
- * @description Subscription source
- * @example website
- */
- source?: string;
- /**
- * @description Topic tags for subscription preferences
- * @example [
- * "updates",
- * "hackathons"
- * ]
- */
- tags?: string[];
- };
- UnsubscribeDto: {
- /**
- * @description Email address to unsubscribe
- * @example user@example.com
- */
- email: string;
- };
- UpdatePreferencesDto: {
- /**
- * @description Subscriber email address
- * @example user@example.com
- */
- email: string;
- /**
- * @description Topic tags to subscribe to. Valid: bounties, hackathons, grants, updates
- * @example [
- * "updates",
- * "hackathons"
- * ]
- */
- tags: string[];
- };
- CreateNewsletterCampaignDto: {
- /**
- * @description Campaign email subject line
- * @example Boundless Weekly: New Hackathon Announced!
- */
- subject: string;
- /**
- * @description Campaign HTML content. Supports {{name}} placeholder.
- * @example Hello {{name}}
Check out our latest hackathon!
- */
- content: string;
- /**
- * @description Preview text shown in email clients
- * @example New hackathon with $10k in prizes
- */
- previewText?: string;
- /**
- * @description Target subscriber tags — only subscribers with matching tags receive the campaign
- * @example [
- * "hackathons",
- * "updates"
- * ]
- */
- tags?: string[];
- };
- User: {
- id?: string;
- name: string;
- email: string;
- /** @default false */
- readonly emailVerified: boolean;
- image?: string;
- /**
- * Format: date-time
- * @default Generated at runtime
- */
- createdAt: string;
- /**
- * Format: date-time
- * @default Generated at runtime
- */
- updatedAt: string;
- username?: string;
- displayUsername?: string;
- /** @default false */
- readonly twoFactorEnabled: boolean;
- readonly lastLoginMethod?: string;
- readonly role?: string;
- /** @default false */
- readonly banned: boolean;
- readonly banReason?: string;
- /** Format: date-time */
- readonly banExpires?: string;
- };
- Session: {
- id?: string;
- /** Format: date-time */
- expiresAt: string;
- token: string;
- /**
- * Format: date-time
- * @default Generated at runtime
- */
- createdAt: string;
- /** Format: date-time */
- updatedAt: string;
- ipAddress?: string;
- userAgent?: string;
- userId: string;
- activeOrganizationId?: string;
- impersonatedBy?: string;
- };
- Account: {
- id?: string;
- accountId: string;
- providerId: string;
- userId: string;
- accessToken?: string;
- refreshToken?: string;
- idToken?: string;
- /** Format: date-time */
- accessTokenExpiresAt?: string;
- /** Format: date-time */
- refreshTokenExpiresAt?: string;
- scope?: string;
- password?: string;
- /**
- * Format: date-time
- * @default Generated at runtime
- */
- createdAt: string;
- /** Format: date-time */
- updatedAt: string;
- };
- Verification: {
- id?: string;
- identifier: string;
- value: string;
- /** Format: date-time */
- expiresAt: string;
- /**
- * Format: date-time
- * @default Generated at runtime
- */
- createdAt: string;
- /**
- * Format: date-time
- * @default Generated at runtime
- */
- updatedAt: string;
- };
- TwoFactor: {
- id?: string;
- secret: string;
- backupCodes: string;
- userId: string;
- };
- Organization: {
- id?: string;
- name: string;
- slug: string;
- logo?: string;
- /** Format: date-time */
- createdAt: string;
- metadata?: string;
- };
- Member: {
- id?: string;
- organizationId: string;
- userId: string;
- /** @default member */
- role: string;
- /** Format: date-time */
- createdAt: string;
- };
- Invitation: {
- id?: string;
- organizationId: string;
- email: string;
- role?: string;
- /** @default pending */
- status: string;
- /** Format: date-time */
- expiresAt: string;
- /**
- * Format: date-time
- * @default Generated at runtime
- */
- createdAt: string;
- inviterId: string;
- };
- Passkey: {
- id?: string;
- name?: string;
- publicKey: string;
- userId: string;
- credentialID: string;
- counter: number;
- deviceType: string;
- backedUp: boolean;
- transports?: string;
- /** Format: date-time */
- createdAt?: string;
- aaguid?: string;
- };
- };
- responses: never;
- parameters: never;
- requestBodies: never;
- headers: never;
- pathItems: never;
-}
-export type $defs = Record;
-export interface operations {
- AppController_getHello: {
- parameters: {
- query?: never;
- header?: never;
- path?: never;
- cookie?: never;
- };
- requestBody?: never;
- responses: {
- 200: {
- headers: {
- [name: string]: unknown;
- };
- content?: never;
- };
- };
- };
- NotificationsController_getNotifications: {
- parameters: {
- query?: never;
- header?: never;
- path?: never;
- cookie?: never;
- };
- requestBody?: never;
- responses: {
- 200: {
- headers: {
- [name: string]: unknown;
- };
- content?: never;
- };
- };
- };
- NotificationsController_getUnreadCount: {
- parameters: {
- query?: never;
- header?: never;
- path?: never;
- cookie?: never;
- };
- requestBody?: never;
- responses: {
- 200: {
- headers: {
- [name: string]: unknown;
- };
- content?: never;
- };
- };
- };
- NotificationsController_markAsRead: {
- parameters: {
- query?: never;
- header?: never;
- path: {
- id: string;
- };
- cookie?: never;
- };
- requestBody?: never;
- responses: {
- 200: {
- headers: {
- [name: string]: unknown;
- };
- content?: never;
- };
- };
- };
- NotificationsController_markAllAsRead: {
- parameters: {
- query?: never;
- header?: never;
- path?: never;
- cookie?: never;
- };
- requestBody?: never;
- responses: {
- 200: {
- headers: {
- [name: string]: unknown;
- };
- content?: never;
- };
- };
- };
- NotificationsController_deleteNotification: {
- parameters: {
- query?: never;
- header?: never;
- path: {
- id: string;
- };
- cookie?: never;
- };
- requestBody?: never;
- responses: {
- 200: {
- headers: {
- [name: string]: unknown;
- };
- content?: never;
- };
- };
- };
- NotificationsController_getPreferences: {
- parameters: {
- query?: never;
- header?: never;
- path?: never;
- cookie?: never;
- };
- requestBody?: never;
- responses: {
- 200: {
- headers: {
- [name: string]: unknown;
- };
- content?: never;
- };
- };
- };
- NotificationsController_updatePreferences: {
- parameters: {
- query?: never;
- header?: never;
- path?: never;
- cookie?: never;
- };
- requestBody: {
- content: {
- 'application/json': components['schemas']['NotificationPreferencesDto'];
- };
- };
- responses: {
- 200: {
- headers: {
- [name: string]: unknown;
- };
- content?: never;
- };
- };
- };
- NotificationsController_sendTestNotification: {
- parameters: {
- query?: never;
- header?: never;
- path?: never;
- cookie?: never;
- };
- requestBody?: never;
- responses: {
- 200: {
- headers: {
- [name: string]: unknown;
- };
- content?: never;
- };
- };
- };
- NotificationsController_triggerMarketingCron: {
- parameters: {
- query?: never;
- header?: never;
- path?: never;
- cookie?: never;
- };
- requestBody?: never;
- responses: {
- 200: {
- headers: {
- [name: string]: unknown;
- };
- content?: never;
- };
- };
- };
- SettingsController_getSettings: {
- parameters: {
- query?: never;
- header?: never;
- path?: never;
- cookie?: never;
- };
- requestBody?: never;
- responses: {
- /** @description Settings retrieved successfully */
- 200: {
- headers: {
- [name: string]: unknown;
- };
- content?: never;
- };
- /** @description Unauthorized */
- 401: {
- headers: {
- [name: string]: unknown;
- };
- content?: never;
- };
- };
- };
- SettingsController_updateNotificationSettings: {
- parameters: {
- query?: never;
- header?: never;
- path?: never;
- cookie?: never;
- };
- /** @description Notification settings object */
- requestBody: {
- content: {
- 'application/json': string;
- };
- };
- responses: {
- /** @description Notification settings updated successfully */
- 200: {
- headers: {
- [name: string]: unknown;
- };
- content?: never;
- };
- /** @description Bad request */
- 400: {
- headers: {
- [name: string]: unknown;
- };
- content?: never;
- };
- /** @description Unauthorized */
- 401: {
- headers: {
- [name: string]: unknown;
- };
- content?: never;
- };
- };
- };
- SettingsController_updatePrivacySettings: {
- parameters: {
- query?: never;
- header?: never;
- path?: never;
- cookie?: never;
- };
- requestBody: {
- content: {
- 'application/json': components['schemas']['UpdatePrivacySettingsDto'];
- };
- };
- responses: {
- /** @description Privacy settings updated successfully */
- 200: {
- headers: {
- [name: string]: unknown;
- };
- content?: never;
- };
- /** @description Bad request */
- 400: {
- headers: {
- [name: string]: unknown;
- };
- content?: never;
- };
- /** @description Unauthorized */
- 401: {
- headers: {
- [name: string]: unknown;
- };
- content?: never;
- };
- };
- };
- SettingsController_updateAppearanceSettings: {
- parameters: {
- query?: never;
- header?: never;
- path?: never;
- cookie?: never;
- };
- requestBody: {
- content: {
- 'application/json': components['schemas']['UpdateAppearanceSettingsDto'];
- };
- };
- responses: {
- /** @description Appearance settings updated successfully */
- 200: {
- headers: {
- [name: string]: unknown;
- };
- content?: never;
- };
- /** @description Bad request */
- 400: {
- headers: {
- [name: string]: unknown;
- };
- content?: never;
- };
- /** @description Unauthorized */
- 401: {
- headers: {
- [name: string]: unknown;
- };
- content?: never;
- };
- };
- };
- EarningsController_getEarningsPublic: {
- parameters: {
- query: {
- /** @description Max activities to return (default 100) */
- limit?: number;
- /** @description Offset for activity pagination */
- offset?: number;
- /** @description Username of the profile to fetch earnings for */
- username: string;
- };
- header?: never;
- path?: never;
- cookie?: never;
- };
- requestBody?: never;
- responses: {
- /** @description Public earnings retrieved successfully */
- 200: {
- headers: {
- [name: string]: unknown;
- };
- content: {
- 'application/json': components['schemas']['PublicEarningsResponseDto'];
- };
- };
- /** @description Missing or invalid username */
- 400: {
- headers: {
- [name: string]: unknown;
- };
- content?: never;
- };
- /** @description User not found */
- 404: {
- headers: {
- [name: string]: unknown;
- };
- content?: never;
- };
- };
- };
- EarningsController_getEarnings: {
- parameters: {
- query?: {
- /** @description Max activities to return (default 100) */
- limit?: number;
- /** @description Offset for activity pagination */
- offset?: number;
- };
- header?: never;
- path?: never;
- cookie?: never;
- };
- requestBody?: never;
- responses: {
- /** @description Earnings data retrieved successfully */
- 200: {
- headers: {
- [name: string]: unknown;
- };
- content: {
- 'application/json': components['schemas']['EarningsResponseDto'];
- };
- };
- /** @description Unauthorized */
- 401: {
- headers: {
- [name: string]: unknown;
- };
- content?: never;
- };
- };
- };
- ProfileController_getProfile: {
- parameters: {
- query?: never;
- header?: never;
- path?: never;
- cookie?: never;
- };
- requestBody?: never;
- responses: {
- /** @description Profile retrieved successfully */
- 200: {
- headers: {
- [name: string]: unknown;
- };
- content: {
- 'application/json': components['schemas']['ProfileResponseDto'];
- };
- };
- /** @description Unauthorized */
- 401: {
- headers: {
- [name: string]: unknown;
- };
- content?: never;
- };
- };
- };
- ProfileController_updateProfile: {
- parameters: {
- query?: never;
- header?: never;
- path?: never;
- cookie?: never;
- };
- requestBody: {
- content: {
- 'application/json': components['schemas']['UpdateProfileDto'];
- };
- };
- responses: {
- /** @description Profile updated successfully */
- 200: {
- headers: {
- [name: string]: unknown;
- };
- content?: never;
- };
- /** @description Bad request */
- 400: {
- headers: {
- [name: string]: unknown;
- };
- content?: never;
- };
- /** @description Unauthorized */
- 401: {
- headers: {
- [name: string]: unknown;
- };
- content?: never;
- };
- };
- };
- ProfileController_getProfileStats: {
- parameters: {
- query?: never;
- header?: never;
- path?: never;
- cookie?: never;
- };
- requestBody?: never;
- responses: {
- /** @description Profile stats retrieved successfully */
- 200: {
- headers: {
- [name: string]: unknown;
- };
- content?: never;
- };
- /** @description Unauthorized */
- 401: {
- headers: {
- [name: string]: unknown;
- };
- content?: never;
- };
- };
- };
- ProfileController_getActivity: {
- parameters: {
- query?: never;
- header?: never;
- path?: never;
- cookie?: never;
- };
- requestBody?: never;
- responses: {
- /** @description Activity retrieved successfully */
- 200: {
- headers: {
- [name: string]: unknown;
- };
- content?: never;
- };
- /** @description Unauthorized */
- 401: {
- headers: {
- [name: string]: unknown;
- };
- content?: never;
- };
- };
- };
- ProfileController_uploadAvatar: {
- parameters: {
- query?: never;
- header?: never;
- path?: never;
- cookie?: never;
- };
- requestBody: {
- content: {
- 'multipart/form-data': {
- /**
- * Format: binary
- * @description Avatar image file
- */
- avatar?: string;
- };
- };
- };
- responses: {
- /** @description Avatar uploaded successfully */
- 200: {
- headers: {
- [name: string]: unknown;
- };
- content?: never;
- };
- /** @description Bad request */
- 400: {
- headers: {
- [name: string]: unknown;
- };
- content?: never;
- };
- /** @description Unauthorized */
- 401: {
- headers: {
- [name: string]: unknown;
- };
- content?: never;
- };
- };
- };
- PreferencesController_getPreferences: {
- parameters: {
- query?: never;
- header?: never;
- path?: never;
- cookie?: never;
- };
- requestBody?: never;
- responses: {
- /** @description Preferences retrieved successfully */
- 200: {
- headers: {
- [name: string]: unknown;
- };
- content?: never;
- };
- /** @description Unauthorized */
- 401: {
- headers: {
- [name: string]: unknown;
- };
- content?: never;
- };
- };
- };
- PreferencesController_updateLanguage: {
- parameters: {
- query?: never;
- header?: never;
- path?: never;
- cookie?: never;
- };
- requestBody: {
- content: {
- 'application/json': {
- /** @example en */
- language?: string;
- };
- };
- };
- responses: {
- /** @description Language preference updated successfully */
- 200: {
- headers: {
- [name: string]: unknown;
- };
- content?: never;
- };
- /** @description Bad request */
- 400: {
- headers: {
- [name: string]: unknown;
- };
- content?: never;
- };
- /** @description Unauthorized */
- 401: {
- headers: {
- [name: string]: unknown;
- };
- content?: never;
- };
- };
- };
- PreferencesController_updateTimezone: {
- parameters: {
- query?: never;
- header?: never;
- path?: never;
- cookie?: never;
- };
- requestBody: {
- content: {
- 'application/json': {
- /** @example America/New_York */
- timezone?: string;
- };
- };
- };
- responses: {
- /** @description Timezone preference updated successfully */
- 200: {
- headers: {
- [name: string]: unknown;
- };
- content?: never;
- };
- /** @description Bad request */
- 400: {
- headers: {
- [name: string]: unknown;
- };
- content?: never;
- };
- /** @description Unauthorized */
- 401: {
- headers: {
- [name: string]: unknown;
- };
- content?: never;
- };
- };
- };
- PreferencesController_updateCategoryPreferences: {
- parameters: {
- query?: never;
- header?: never;
- path?: never;
- cookie?: never;
- };
- requestBody: {
- content: {
- 'application/json': {
- /**
- * @example [
- * "tech",
- * "design"
- * ]
- */
- categories?: string[];
- };
- };
- };
- responses: {
- /** @description Category preferences updated successfully */
- 200: {
- headers: {
- [name: string]: unknown;
- };
- content?: never;
- };
- /** @description Bad request */
- 400: {
- headers: {
- [name: string]: unknown;
- };
- content?: never;
- };
- /** @description Unauthorized */
- 401: {
- headers: {
- [name: string]: unknown;
- };
- content?: never;
- };
- };
- };
- PreferencesController_updateSkillPreferences: {
- parameters: {
- query?: never;
- header?: never;
- path?: never;
- cookie?: never;
- };
- requestBody: {
- content: {
- 'application/json': {
- /**
- * @example [
- * "javascript",
- * "react"
- * ]
- */
- skills?: string[];
- };
- };
- };
- responses: {
- /** @description Skill preferences updated successfully */
- 200: {
- headers: {
- [name: string]: unknown;
- };
- content?: never;
- };
- /** @description Bad request */
- 400: {
- headers: {
- [name: string]: unknown;
- };
- content?: never;
- };
- /** @description Unauthorized */
- 401: {
- headers: {
- [name: string]: unknown;
- };
- content?: never;
- };
- };
- };
- UserController_getMe: {
- parameters: {
- query?: never;
- header?: never;
- path?: never;
- cookie?: never;
- };
- requestBody?: never;
- responses: {
- /** @description Current user retrieved successfully */
- 200: {
- headers: {
- [name: string]: unknown;
- };
- content: {
- 'application/json': components['schemas']['CurrentUserDto'];
- };
- };
- /** @description Unauthorized */
- 401: {
- headers: {
- [name: string]: unknown;
- };
- content?: never;
- };
- };
- };
- UserController_getDashboard: {
- parameters: {
- query?: never;
- header?: never;
- path?: never;
- cookie?: never;
- };
- requestBody?: never;
- responses: {
- /** @description Dashboard with profile, stats, chart data, activities graph, and recent activities retrieved successfully */
- 200: {
- headers: {
- [name: string]: unknown;
- };
- content: {
- 'application/json': components['schemas']['DashboardDto'];
- };
- };
- /** @description Unauthorized */
- 401: {
- headers: {
- [name: string]: unknown;
- };
- content?: never;
- };
- };
- };
- UserController_completeOnboarding: {
- parameters: {
- query?: never;
- header?: never;
- path?: never;
- cookie?: never;
- };
- requestBody: {
- content: {
- 'application/json': components['schemas']['CompleteOnboardingDto'];
- };
- };
- responses: {
- /** @description Onboarding completed */
- 200: {
- headers: {
- [name: string]: unknown;
- };
- content?: never;
- };
- /** @description Bad request */
- 400: {
- headers: {
- [name: string]: unknown;
- };
- content?: never;
- };
- /** @description Unauthorized */
- 401: {
- headers: {
- [name: string]: unknown;
- };
- content?: never;
- };
- };
- };
- UserController_getPublic: {
- parameters: {
- query?: never;
- header?: never;
- path?: never;
- cookie?: never;
- };
- requestBody?: never;
- responses: {
- /** @description Public route accessed successfully */
- 200: {
- headers: {
- [name: string]: unknown;
- };
- content?: never;
- };
- };
- };
- UserController_getOptional: {
- parameters: {
- query?: never;
- header?: never;
- path?: never;
- cookie?: never;
- };
- requestBody?: never;
- responses: {
- /** @description Optional auth route accessed successfully */
- 200: {
- headers: {
- [name: string]: unknown;
- };
- content?: never;
- };
- };
- };
- UserController_getUserByUsername: {
- parameters: {
- query?: never;
- header?: never;
- path: {
- /** @description Username of the user to retrieve */
- username: string;
- };
- cookie?: never;
- };
- requestBody?: never;
- responses: {
- /** @description User profile retrieved successfully */
- 200: {
- headers: {
- [name: string]: unknown;
- };
- content?: never;
- };
- /** @description User not found */
- 404: {
- headers: {
- [name: string]: unknown;
- };
- content?: never;
- };
- };
- };
- UserController_getUserFollowers: {
- parameters: {
- query?: {
- /** @description Pagination offset */
- offset?: number;
- /** @description Number of followers to return */
- limit?: number;
- };
- header?: never;
- path: {
- /** @description Username of the user */
- username: string;
- };
- cookie?: never;
- };
- requestBody?: never;
- responses: {
- /** @description Followers retrieved successfully */
- 200: {
- headers: {
- [name: string]: unknown;
- };
- content?: never;
- };
- /** @description User not found */
- 404: {
- headers: {
- [name: string]: unknown;
- };
- content?: never;
- };
- };
- };
- UserController_getUserFollowing: {
- parameters: {
- query?: {
- /** @description Filter by entity type */
- entityType?:
- | 'USER'
- | 'PROJECT'
- | 'ORGANIZATION'
- | 'CROWDFUNDING_CAMPAIGN'
- | 'BOUNTY'
- | 'GRANT'
- | 'HACKATHON';
- /** @description Pagination offset */
- offset?: number;
- /** @description Number of following to return */
- limit?: number;
- };
- header?: never;
- path: {
- /** @description Username of the user */
- username: string;
- };
- cookie?: never;
- };
- requestBody?: never;
- responses: {
- /** @description Following list retrieved successfully */
- 200: {
- headers: {
- [name: string]: unknown;
- };
- content?: never;
- };
- /** @description User not found */
- 404: {
- headers: {
- [name: string]: unknown;
- };
- content?: never;
- };
- };
- };
- UsersController_getUsers: {
- parameters: {
- query?: never;
- header?: never;
- path?: never;
- cookie?: never;
- };
- requestBody?: never;
- responses: {
- /** @description Users retrieved successfully */
- 200: {
- headers: {
- [name: string]: unknown;
- };
- content?: never;
- };
- /** @description Unauthorized */
- 401: {
- headers: {
- [name: string]: unknown;
- };
- content?: never;
- };
- /** @description Forbidden - Admin access required */
- 403: {
- headers: {
- [name: string]: unknown;
- };
- content?: never;
- };
- };
- };
- UsersController_getUser: {
- parameters: {
- query?: never;
- header?: never;
- path: {
- /** @description User ID */
- id: string;
- };
- cookie?: never;
- };
- requestBody?: never;
- responses: {
- /** @description User retrieved successfully */
- 200: {
- headers: {
- [name: string]: unknown;
- };
- content?: never;
- };
- /** @description Invalid user ID */
- 400: {
- headers: {
- [name: string]: unknown;
- };
- content?: never;
- };
- /** @description Unauthorized */
- 401: {
- headers: {
- [name: string]: unknown;
- };
- content?: never;
- };
- /** @description User not found */
- 404: {
- headers: {
- [name: string]: unknown;
- };
- content?: never;
- };
- };
- };
- UsersController_updateUser: {
- parameters: {
- query?: never;
- header?: never;
- path: {
- /** @description User ID */
- id: string;
- };
- cookie?: never;
- };
- requestBody: {
- content: {
- 'application/json': components['schemas']['UpdateUserDto'];
- };
- };
- responses: {
- /** @description User updated successfully */
- 200: {
- headers: {
- [name: string]: unknown;
- };
- content?: never;
- };
- /** @description Unauthorized */
- 401: {
- headers: {
- [name: string]: unknown;
- };
- content?: never;
- };
- /** @description User not found */
- 404: {
- headers: {
- [name: string]: unknown;
- };
- content?: never;
- };
- };
- };
- UsersController_deleteUser: {
- parameters: {
- query?: never;
- header?: never;
- path: {
- /** @description User ID */
- id: string;
- };
- cookie?: never;
- };
- requestBody?: never;
- responses: {
- /** @description User deleted successfully */
- 200: {
- headers: {
- [name: string]: unknown;
- };
- content?: never;
- };
- /** @description Unauthorized */
- 401: {
- headers: {
- [name: string]: unknown;
- };
- content?: never;
- };
- /** @description Forbidden - Admin access required */
- 403: {
- headers: {
- [name: string]: unknown;
- };
- content?: never;
- };
- /** @description User not found */
- 404: {
- headers: {
- [name: string]: unknown;
- };
- content?: never;
- };
- };
- };
- UsersController_getUserProfile: {
- parameters: {
- query?: never;
- header?: never;
- path: {
- /** @description User ID */
- id: string;
- };
- cookie?: never;
- };
- requestBody?: never;
- responses: {
- /** @description User profile retrieved successfully */
- 200: {
- headers: {
- [name: string]: unknown;
- };
- content?: never;
- };
- /** @description User not found */
- 404: {
- headers: {
- [name: string]: unknown;
- };
- content?: never;
- };
- };
- };
- UploadController_uploadSingle: {
- parameters: {
- query?: never;
- header?: never;
- path?: never;
- cookie?: never;
- };
- /** @description File upload data */
- requestBody: {
- content: {
- 'multipart/form-data': {
- /**
- * Format: binary
- * @description File to upload
- */
- file?: string;
- /**
- * @description Folder to upload to
- * @example boundless/projects/project123
- */
- folder?: string;
- /**
- * @description Tags for the file
- * @example [
- * "project",
- * "logo"
- * ]
- */
- tags?: string[];
- /** @description Image transformation options */
- transformation?: {
- /** @example 400 */
- width?: number;
- /** @example 400 */
- height?: number;
- /** @example fit */
- crop?: string;
- /** @example auto */
- quality?: string;
- /** @example auto */
- format?: string;
- };
- };
- };
- };
- responses: {
- /** @description File uploaded successfully */
- 201: {
- headers: {
- [name: string]: unknown;
- };
- content: {
- 'application/json': components['schemas']['UploadResponseDto'];
- };
- };
- /** @description Invalid file or upload failed */
- 400: {
- headers: {
- [name: string]: unknown;
- };
- content?: never;
- };
- };
- };
- UploadController_uploadMultiple: {
- parameters: {
- query?: never;
- header?: never;
- path?: never;
- cookie?: never;
- };
- /** @description Multiple files upload data */
- requestBody: {
- content: {
- 'multipart/form-data': {
- /** @description Files to upload */
- files?: string[];
- /**
- * @description Folder to upload to
- * @example boundless/projects/project123/gallery
- */
- folder?: string;
- /**
- * @description Tags for the files
- * @example [
- * "project",
- * "gallery"
- * ]
- */
- tags?: string[];
- };
- };
- };
- responses: {
- /** @description Files uploaded successfully */
- 201: {
- headers: {
- [name: string]: unknown;
- };
- content: {
- 'application/json': components['schemas']['MultipleUploadResponseDto'];
- };
- };
- /** @description Invalid files or upload failed */
- 400: {
- headers: {
- [name: string]: unknown;
- };
- content?: never;
- };
- };
- };
- UploadController_deleteFile: {
- parameters: {
- query?: never;
- header?: never;
- path: {
- /** @description Public ID of the file to delete */
- publicId: string;
- /** @description Type of resource */
- resourceType: 'image' | 'video' | 'raw';
- };
- cookie?: never;
- };
- requestBody?: never;
- responses: {
- /** @description File deleted successfully */
- 200: {
- headers: {
- [name: string]: unknown;
- };
- content: {
- 'application/json': {
- /** @example true */
- success?: boolean;
- /** @example File deleted successfully */
- message?: string;
- };
- };
- };
- /** @description File not found */
- 404: {
- headers: {
- [name: string]: unknown;
- };
- content?: never;
- };
- };
- };
- UploadController_getFileInfo: {
- parameters: {
- query?: never;
- header?: never;
- path: {
- /** @description Public ID of the file */
- publicId: string;
- /** @description Type of resource */
- resourceType: 'image' | 'video' | 'raw';
- };
- cookie?: never;
- };
- requestBody?: never;
- responses: {
- /** @description File information retrieved successfully */
- 200: {
- headers: {
- [name: string]: unknown;
- };
- content: {
- 'application/json': components['schemas']['FileInfoResponseDto'];
- };
- };
- /** @description File not found */
- 404: {
- headers: {
- [name: string]: unknown;
- };
- content?: never;
- };
- };
- };
- UploadController_searchFiles: {
- parameters: {
- query?: {
- /** @description Maximum number of results */
- maxResults?: number;
- /** @description Resource type to filter by */
- resourceType?: 'image' | 'video' | 'raw';
- /** @description Folder to search in */
- folder?: unknown;
- /** @description Tags to filter by */
- tags?: string[];
- };
- header?: never;
- path?: never;
- cookie?: never;
- };
- requestBody?: never;
- responses: {
- /** @description Files found successfully */
- 200: {
- headers: {
- [name: string]: unknown;
- };
- content: {
- 'application/json': components['schemas']['SearchFilesResponseDto'];
- };
- };
- /** @description Search failed */
- 400: {
- headers: {
- [name: string]: unknown;
- };
- content?: never;
- };
- };
- };
- UploadController_generateOptimizedUrl: {
- parameters: {
- query?: {
- /** @description Output format */
- format?: unknown;
- /** @description Quality setting */
- quality?: unknown;
- /** @description Crop mode */
- crop?: unknown;
- /** @description Desired height */
- height?: number;
- /** @description Desired width */
- width?: number;
- };
- header?: never;
- path: {
- /** @description Public ID of the file */
- publicId: string;
- };
- cookie?: never;
- };
- requestBody?: never;
- responses: {
- /** @description Optimized URL generated successfully */
- 200: {
- headers: {
- [name: string]: unknown;
- };
- content: {
- 'application/json': components['schemas']['OptimizedUrlResponseDto'];
- };
- };
- /** @description Failed to generate URL */
- 400: {
- headers: {
- [name: string]: unknown;
- };
- content?: never;
- };
- };
- };
- UploadController_generateResponsiveUrls: {
- parameters: {
- query?: {
- /** @description Output format */
- format?: unknown;
- /** @description Quality setting */
- quality?: unknown;
- /** @description Crop mode */
- crop?: unknown;
- /** @description Base height for responsive breakpoints */
- height?: number;
- /** @description Base width for responsive breakpoints */
- width?: number;
- };
- header?: never;
- path: {
- /** @description Public ID of the file */
- publicId: string;
- };
- cookie?: never;
- };
- requestBody?: never;
- responses: {
- /** @description Responsive URLs generated successfully */
- 200: {
- headers: {
- [name: string]: unknown;
- };
- content: {
- 'application/json': components['schemas']['ResponsiveUrlsResponseDto'];
- };
- };
- /** @description Failed to generate responsive URLs */
- 400: {
- headers: {
- [name: string]: unknown;
- };
- content?: never;
- };
- };
- };
- UploadController_generateAvatarUrl: {
- parameters: {
- query?: {
- /** @description Avatar size (square) */
- size?: number;
- };
- header?: never;
- path: {
- /** @description Public ID of the image file */
- publicId: string;
- };
- cookie?: never;
- };
- requestBody?: never;
- responses: {
- /** @description Avatar URL generated successfully */
- 200: {
- headers: {
- [name: string]: unknown;
- };
- content: {
- 'application/json': components['schemas']['OptimizedUrlResponseDto'];
- };
- };
- /** @description Failed to generate avatar URL */
- 400: {
- headers: {
- [name: string]: unknown;
- };
- content?: never;
- };
- };
- };
- UploadController_generateLogoUrl: {
- parameters: {
- query?: {
- /** @description Logo height */
- height?: number;
- /** @description Logo width */
- width?: number;
- };
- header?: never;
- path: {
- /** @description Public ID of the image file */
- publicId: string;
- };
- cookie?: never;
- };
- requestBody?: never;
- responses: {
- /** @description Logo URL generated successfully */
- 200: {
- headers: {
- [name: string]: unknown;
- };
- content: {
- 'application/json': components['schemas']['OptimizedUrlResponseDto'];
- };
- };
- /** @description Failed to generate logo URL */
- 400: {
- headers: {
- [name: string]: unknown;
- };
- content?: never;
- };
- };
- };
- UploadController_generateBannerUrl: {
- parameters: {
- query?: {
- /** @description Banner height */
- height?: number;
- /** @description Banner width */
- width?: number;
- };
- header?: never;
- path: {
- /** @description Public ID of the image file */
- publicId: string;
- };
- cookie?: never;
- };
- requestBody?: never;
- responses: {
- /** @description Banner URL generated successfully */
- 200: {
- headers: {
- [name: string]: unknown;
- };
- content: {
- 'application/json': components['schemas']['OptimizedUrlResponseDto'];
- };
- };
- /** @description Failed to generate banner URL */
- 400: {
- headers: {
- [name: string]: unknown;
- };
- content?: never;
- };
- };
- };
- UploadController_getUsageStats: {
- parameters: {
- query?: never;
- header?: never;
- path?: never;
- cookie?: never;
- };
- requestBody?: never;
- responses: {
- /** @description Usage statistics retrieved successfully */
- 200: {
- headers: {
- [name: string]: unknown;
- };
- content: {
- 'application/json': components['schemas']['UsageStatsResponseDto'];
- };
- };
- /** @description Failed to get usage stats */
- 400: {
- headers: {
- [name: string]: unknown;
- };
- content?: never;
- };
- };
- };
- AuthController_register: {
- parameters: {
- query?: never;
- header?: never;
- path?: never;
- cookie?: never;
- };
- requestBody: {
- content: {
- 'application/json': components['schemas']['RegisterDto'];
- };
- };
- responses: {
- 201: {
- headers: {
- [name: string]: unknown;
- };
- content?: never;
- };
- };
- };
- AuthController_login: {
- parameters: {
- query?: never;
- header?: never;
- path?: never;
- cookie?: never;
- };
- requestBody: {
- content: {
- 'application/json': components['schemas']['LoginDto'];
- };
- };
- responses: {
- 200: {
- headers: {
- [name: string]: unknown;
- };
- content?: never;
- };
- };
- };
- AuthController_refreshToken: {
- parameters: {
- query?: never;
- header?: never;
- path?: never;
- cookie?: never;
- };
- requestBody: {
- content: {
- 'application/json': components['schemas']['RefreshTokenDto'];
- };
- };
- responses: {
- 200: {
- headers: {
- [name: string]: unknown;
- };
- content?: never;
- };
- };
- };
- AuthController_logout: {
- parameters: {
- query?: never;
- header?: never;
- path?: never;
- cookie?: never;
- };
- requestBody?: never;
- responses: {
- 200: {
- headers: {
- [name: string]: unknown;
- };
- content?: never;
- };
- };
- };
- AuthController_getProfile: {
- parameters: {
- query?: never;
- header?: never;
- path?: never;
- cookie?: never;
- };
- requestBody?: never;
- responses: {
- 200: {
- headers: {
- [name: string]: unknown;
- };
- content?: never;
- };
- };
- };
- AuthController_verifyStellarSignature: {
- parameters: {
- query?: never;
- header?: never;
- path?: never;
- cookie?: never;
- };
- requestBody: {
- content: {
- 'application/json': components['schemas']['VerifySignatureDto'];
- };
- };
- responses: {
- 201: {
- headers: {
- [name: string]: unknown;
- };
- content?: never;
- };
- };
- };
- OAuthController_googleAuth: {
- parameters: {
- query?: never;
- header?: never;
- path?: never;
- cookie?: never;
- };
- requestBody?: never;
- responses: {
- 200: {
- headers: {
- [name: string]: unknown;
- };
- content?: never;
- };
- };
- };
- OAuthController_googleAuthCallback: {
- parameters: {
- query?: never;
- header?: never;
- path?: never;
- cookie?: never;
- };
- requestBody?: never;
- responses: {
- 200: {
- headers: {
- [name: string]: unknown;
- };
- content?: never;
- };
- };
- };
- OAuthController_githubAuth: {
- parameters: {
- query?: never;
- header?: never;
- path?: never;
- cookie?: never;
- };
- requestBody?: never;
- responses: {
- 200: {
- headers: {
- [name: string]: unknown;
- };
- content?: never;
- };
- };
- };
- OAuthController_githubAuthCallback: {
- parameters: {
- query?: never;
- header?: never;
- path?: never;
- cookie?: never;
- };
- requestBody?: never;
- responses: {
- 200: {
- headers: {
- [name: string]: unknown;
- };
- content?: never;
- };
- };
- };
- OAuthController_twitterAuth: {
- parameters: {
- query?: never;
- header?: never;
- path?: never;
- cookie?: never;
- };
- requestBody?: never;
- responses: {
- 200: {
- headers: {
- [name: string]: unknown;
- };
- content?: never;
- };
- };
- };
- OAuthController_twitterAuthCallback: {
- parameters: {
- query?: never;
- header?: never;
- path?: never;
- cookie?: never;
- };
- requestBody?: never;
- responses: {
- 200: {
- headers: {
- [name: string]: unknown;
- };
- content?: never;
- };
- };
- };
- FollowsController_followEntity: {
- parameters: {
- query?: never;
- header?: never;
- path: {
- entityType: string;
- entityId: string;
- };
- cookie?: never;
- };
- requestBody?: never;
- responses: {
- 201: {
- headers: {
- [name: string]: unknown;
- };
- content?: never;
- };
- };
- };
- FollowsController_unfollowEntity: {
- parameters: {
- query?: never;
- header?: never;
- path: {
- entityType: string;
- entityId: string;
- };
- cookie?: never;
- };
- requestBody?: never;
- responses: {
- 200: {
- headers: {
- [name: string]: unknown;
- };
- content?: never;
- };
- };
- };
- FollowsController_getUserFollowing: {
- parameters: {
- query: {
- entityType: string;
- };
- header?: never;
- path: {
- userId: string;
- };
- cookie?: never;
- };
- requestBody?: never;
- responses: {
- 200: {
- headers: {
- [name: string]: unknown;
- };
- content?: never;
- };
- };
- };
- FollowsController_getEntityFollowers: {
- parameters: {
- query?: never;
- header?: never;
- path: {
- entityType: string;
- entityId: string;
- };
- cookie?: never;
- };
- requestBody?: never;
- responses: {
- 200: {
- headers: {
- [name: string]: unknown;
- };
- content?: never;
- };
- };
- };
- FollowsController_getFollowStats: {
- parameters: {
- query?: never;
- header?: never;
- path: {
- userId: string;
- };
- cookie?: never;
- };
- requestBody?: never;
- responses: {
- 200: {
- headers: {
- [name: string]: unknown;
- };
- content?: never;
- };
- };
- };
- FollowsController_isFollowing: {
- parameters: {
- query?: never;
- header?: never;
- path: {
- entityType: string;
- entityId: string;
- };
- cookie?: never;
- };
- requestBody?: never;
- responses: {
- 200: {
- headers: {
- [name: string]: unknown;
- };
- content?: never;
- };
- };
- };
- ChatController_getMessages: {
- parameters: {
- query: {
- roomId: string;
- roomType: string;
- cursor?: string;
- limit?: number;
- };
- header?: never;
- path?: never;
- cookie?: never;
- };
- requestBody?: never;
- responses: {
- /** @description Returns list of messages. */
- 200: {
- headers: {
- [name: string]: unknown;
- };
- content?: never;
- };
- };
- };
- MessagesController_listConversations: {
- parameters: {
- query?: {
- limit?: number;
- offset?: number;
- };
- header?: never;
- path?: never;
- cookie?: never;
- };
- requestBody?: never;
- responses: {
- /** @description Paginated list of conversations */
- 200: {
- headers: {
- [name: string]: unknown;
- };
- content?: never;
- };
- };
- };
- MessagesController_startOrGetConversation: {
- parameters: {
- query?: never;
- header?: never;
- path?: never;
- cookie?: never;
- };
- requestBody: {
- content: {
- 'application/json': components['schemas']['CreateConversationDto'];
- };
- };
- responses: {
- /** @description Conversation (created or existing) */
- 200: {
- headers: {
- [name: string]: unknown;
- };
- content?: never;
- };
- };
- };
- MessagesController_getConversation: {
- parameters: {
- query?: never;
- header?: never;
- path: {
- /** @description Conversation ID */
- id: string;
- };
- cookie?: never;
- };
- requestBody?: never;
- responses: {
- /** @description Conversation details */
- 200: {
- headers: {
- [name: string]: unknown;
- };
- content?: never;
- };
- };
- };
- MessagesController_listMessages: {
- parameters: {
- query?: {
- limit?: number;
- /** @description Cursor for older messages */
- before?: string;
- };
- header?: never;
- path: {
- /** @description Conversation ID */
- id: string;
- };
- cookie?: never;
- };
- requestBody?: never;
- responses: {
- /** @description Paginated messages */
- 200: {
- headers: {
- [name: string]: unknown;
- };
- content?: never;
- };
- };
- };
- MessagesController_sendMessage: {
- parameters: {
- query?: never;
- header?: never;
- path: {
- /** @description Conversation ID */
- id: string;
- };
- cookie?: never;
- };
- requestBody: {
- content: {
- 'application/json': components['schemas']['CreateMessageDto'];
- };
- };
- responses: {
- /** @description Message created */
- 201: {
- headers: {
- [name: string]: unknown;
- };
- content?: never;
- };
- };
- };
- MessagesController_markConversationRead: {
- parameters: {
- query?: never;
- header?: never;
- path: {
- /** @description Conversation ID */
- id: string;
- };
- cookie?: never;
- };
- requestBody?: never;
- responses: {
- /** @description Marked as read */
- 200: {
- headers: {
- [name: string]: unknown;
- };
- content?: never;
- };
- };
- };
- CreditsController_getMine: {
- parameters: {
- query?: never;
- header?: never;
- path?: never;
- cookie?: never;
- };
- requestBody?: never;
- responses: {
- 200: {
- headers: {
- [name: string]: unknown;
- };
- content: {
- 'application/json': components['schemas']['CreditSummaryDto'];
- };
- };
- };
- };
- CreditsController_getHistory: {
- parameters: {
- query?: {
- page?: number;
- limit?: number;
- };
- header?: never;
- path?: never;
- cookie?: never;
- };
- requestBody?: never;
- responses: {
- 200: {
- headers: {
- [name: string]: unknown;
- };
- content: {
- 'application/json': components['schemas']['CreditHistoryDto'];
- };
- };
- };
- };
- CampaignsController_validateCampaign: {
- parameters: {
- query?: never;
- header?: never;
- path?: never;
- cookie?: never;
- };
- requestBody: {
- content: {
- 'application/json': components['schemas']['CreateCampaignDto'];
- };
- };
- responses: {
- /** @description Campaign data is valid */
- 200: {
- headers: {
- [name: string]: unknown;
- };
- content?: never;
- };
- /** @description Invalid campaign data */
- 400: {
- headers: {
- [name: string]: unknown;
- };
- content?: never;
- };
- };
- };
- CampaignsController_createDraft: {
- parameters: {
- query?: never;
- header?: never;
- path?: never;
- cookie?: never;
- };
- requestBody: {
- content: {
- 'application/json': components['schemas']['CreateDraftDto'];
- };
- };
- responses: {
- /** @description Draft campaign created */
- 201: {
- headers: {
- [name: string]: unknown;
- };
- content?: never;
- };
- };
- };
- CampaignsController_getCampaigns: {
- parameters: {
- query: {
- /** @description Category of the campaign */
- category?: string;
- /** @description Status of the campaign */
- status?: 'active' | 'funded' | 'completed';
- minFundingGoal?: number;
- /** @description Minimum funding goal of the campaign */
- maxFundingGoal?: number;
- /** @description Maximum funding goal of the campaign */
- page?: number;
- /** @description Limit of the campaign */
- limit?: number;
- /** @description Sort by of the campaign */
- sortBy: string;
- /** @description Sort order of the campaign */
- sortOrder: string;
- /** @description Search of the campaign */
- search?: string;
- };
- header?: never;
- path?: never;
- cookie?: never;
- };
- requestBody?: never;
- responses: {
- /** @description Campaigns retrieved successfully */
- 200: {
- headers: {
- [name: string]: unknown;
- };
- content?: never;
- };
- };
- };
- CampaignsController_createCampaign: {
- parameters: {
- query?: never;
- header?: never;
- path?: never;
- cookie?: never;
- };
- requestBody: {
- content: {
- 'application/json': components['schemas']['CreateCampaignDto'];
- };
- };
- responses: {
- /** @description Campaign and project created successfully */
- 201: {
- headers: {
- [name: string]: unknown;
- };
- content?: never;
- };
- /** @description Invalid campaign data */
- 400: {
- headers: {
- [name: string]: unknown;
- };
- content?: never;
- };
- };
- };
- CampaignsController_triggerCron: {
- parameters: {
- query?: never;
- header?: never;
- path?: never;
- cookie?: never;
- };
- requestBody?: never;
- responses: {
- /** @description Cron job triggered successfully */
- 200: {
- headers: {
- [name: string]: unknown;
- };
- content?: never;
- };
- };
- };
- CampaignsController_getMyCampaigns: {
- parameters: {
- query: {
- /** @description Category of the campaign */
- category: string;
- /** @description Status of the campaign */
- status: string;
- minFundingGoal: number;
- /** @description Minimum funding goal of the campaign */
- maxFundingGoal: number;
- /** @description Maximum funding goal of the campaign */
- page?: number;
- /** @description Limit of the campaign */
- limit?: number;
- /** @description Sort by of the campaign */
- sortBy?: string;
- /** @description Sort order of the campaign */
- sortOrder?: string;
- /** @description Search of the campaign */
- search: string;
- };
- header?: never;
- path?: never;
- cookie?: never;
- };
- requestBody?: never;
- responses: {
- /** @description User campaigns retrieved successfully */
- 200: {
- headers: {
- [name: string]: unknown;
- };
- content?: never;
- };
- };
- };
- CampaignsController_getCampaignBySlug: {
- parameters: {
- query?: never;
- header?: never;
- path: {
- /** @description Campaign URL slug */
- slug: string;
- };
- cookie?: never;
- };
- requestBody?: never;
- responses: {
- /** @description Campaign details retrieved successfully */
- 200: {
- headers: {
- [name: string]: unknown;
- };
- content?: never;
- };
- /** @description Campaign not found */
- 404: {
- headers: {
- [name: string]: unknown;
- };
- content?: never;
- };
- };
- };
- CampaignsController_getCampaign: {
- parameters: {
- query?: never;
- header?: never;
- path: {
- /** @description Campaign ID or slug */
- id: string;
- };
- cookie?: never;
- };
- requestBody?: never;
- responses: {
- /** @description Campaign details retrieved successfully */
- 200: {
- headers: {
- [name: string]: unknown;
- };
- content?: never;
- };
- /** @description Campaign not found */
- 404: {
- headers: {
- [name: string]: unknown;
- };
- content?: never;
- };
- };
- };
- CampaignsController_updateCampaign: {
- parameters: {
- query?: never;
- header?: never;
- path: {
- /** @description Campaign ID or slug */
- id: string;
- };
- cookie?: never;
- };
- requestBody: {
- content: {
- 'application/json': components['schemas']['UpdateCampaignDto'];
- };
- };
- responses: {
- /** @description Campaign updated successfully */
- 200: {
- headers: {
- [name: string]: unknown;
- };
- content?: never;
- };
- /** @description User does not own the campaign */
- 403: {
- headers: {
- [name: string]: unknown;
- };
- content?: never;
- };
- };
- };
- CampaignsController_deleteCampaign: {
- parameters: {
- query?: never;
- header?: never;
- path: {
- /** @description Campaign ID or slug */
- id: string;
- };
- cookie?: never;
- };
- requestBody?: never;
- responses: {
- /** @description Campaign deleted successfully */
- 200: {
- headers: {
- [name: string]: unknown;
- };
- content?: never;
- };
- /** @description Cannot delete campaign with contributions, campaigns in funding phase, funded campaigns, completed campaigns, or user does not own the campaign */
- 403: {
- headers: {
- [name: string]: unknown;
- };
- content?: never;
- };
- };
- };
- CampaignsController_getCampaignStatistics: {
- parameters: {
- query?: never;
- header?: never;
- path: {
- /** @description Campaign ID or slug */
- id: string;
- };
- cookie?: never;
- };
- requestBody?: never;
- responses: {
- /** @description Campaign statistics retrieved successfully */
- 200: {
- headers: {
- [name: string]: unknown;
- };
- content?: never;
- };
- };
- };
- CampaignsController_getInvitations: {
- parameters: {
- query?: never;
- header?: never;
- path: {
- id: string;
- };
- cookie?: never;
- };
- requestBody?: never;
- responses: {
- 200: {
- headers: {
- [name: string]: unknown;
- };
- content?: never;
- };
- };
- };
- CampaignsController_inviteTeamMember: {
- parameters: {
- query?: never;
- header?: never;
- path: {
- id: string;
- };
- cookie?: never;
- };
- requestBody: {
- content: {
- 'application/json': components['schemas']['InviteTeamMemberDto'];
- };
- };
- responses: {
- 201: {
- headers: {
- [name: string]: unknown;
- };
- content?: never;
- };
- };
- };
- CampaignsController_acceptInvitation: {
- parameters: {
- query: {
- token: string;
- };
- header?: never;
- path?: never;
- cookie?: never;
- };
- requestBody?: never;
- responses: {
- 200: {
- headers: {
- [name: string]: unknown;
- };
- content?: never;
- };
- };
- };
- ContributionsController_getCampaignContributions: {
- parameters: {
- query?: {
- page?: number;
- limit?: number;
- };
- header?: never;
- path: {
- /** @description Campaign ID or slug */
- id: string;
- };
- cookie?: never;
- };
- requestBody?: never;
- responses: {
- /** @description Contributions retrieved successfully */
- 200: {
- headers: {
- [name: string]: unknown;
- };
- content?: never;
- };
- };
- };
- ContributionsController_getContributionStats: {
- parameters: {
- query?: never;
- header?: never;
- path: {
- /** @description Campaign ID or slug */
- id: string;
- };
- cookie?: never;
- };
- requestBody?: never;
- responses: {
- /** @description Contribution statistics retrieved successfully */
- 200: {
- headers: {
- [name: string]: unknown;
- };
- content?: never;
- };
- };
- };
- MilestonesController_getCampaignMilestones: {
- parameters: {
- query?: never;
- header?: never;
- path: {
- /** @description Campaign ID or slug */
- id: string;
- };
- cookie?: never;
- };
- requestBody?: never;
- responses: {
- /** @description Milestones retrieved successfully */
- 200: {
- headers: {
- [name: string]: unknown;
- };
- content?: never;
- };
- };
- };
- MilestonesController_getMilestone: {
- parameters: {
- query?: never;
- header?: never;
- path: {
- /** @description Campaign ID or slug */
- id: string;
- /** @description Milestone ID */
- milestoneId: string;
- };
- cookie?: never;
- };
- requestBody?: never;
- responses: {
- /** @description Milestone details retrieved successfully */
- 200: {
- headers: {
- [name: string]: unknown;
- };
- content?: never;
- };
- /** @description Milestone not found */
- 404: {
- headers: {
- [name: string]: unknown;
- };
- content?: never;
- };
- };
- };
- MilestonesController_updateMilestone: {
- parameters: {
- query?: never;
- header?: never;
- path: {
- /** @description Campaign ID or slug */
- id: string;
- /** @description Milestone ID */
- milestoneId: string;
- };
- cookie?: never;
- };
- requestBody: {
- content: {
- 'application/json': components['schemas']['UpdateMilestoneDto'];
- };
- };
- responses: {
- /** @description Milestone submitted successfully */
- 200: {
- headers: {
- [name: string]: unknown;
- };
- content?: never;
- };
- /** @description Validation failed - invalid proof of work data */
- 400: {
- headers: {
- [name: string]: unknown;
- };
- content?: never;
- };
- /** @description User does not own the campaign */
- 403: {
- headers: {
- [name: string]: unknown;
- };
- content?: never;
- };
- };
- };
- MilestonesController_validateMilestoneSubmission: {
- parameters: {
- query?: never;
- header?: never;
- path: {
- /** @description Campaign ID or slug */
- id: string;
- /** @description Milestone ID */
- milestoneId: string;
- };
- cookie?: never;
- };
- requestBody: {
- content: {
- 'application/json': components['schemas']['ValidateMilestoneSubmissionDto'];
- };
- };
- responses: {
- /** @description Validation successful */
- 200: {
- headers: {
- [name: string]: unknown;
- };
- content: {
- 'application/json': {
- /** @example true */
- validated?: boolean;
- data?: {
- /** @example submitted */
- status?: string;
- /** @example Milestone completed - all deliverables ready for review. */
- evidence?: string;
- /**
- * @example [
- * "https://example.com/report.pdf"
- * ]
- */
- documents?: string[];
- };
- };
- };
- };
- /** @description Validation failed */
- 400: {
- headers: {
- [name: string]: unknown;
- };
- content: {
- 'application/json': {
- /** @example false */
- validated?: boolean;
- /** @example Evidence must be at least 10 characters of meaningful content */
- error?: string;
- };
- };
- };
- };
- };
- MilestonesController_getMilestoneStats: {
- parameters: {
- query?: never;
- header?: never;
- path: {
- /** @description Campaign ID or slug */
- id: string;
- };
- cookie?: never;
- };
- requestBody?: never;
- responses: {
- /** @description Milestone statistics retrieved successfully */
- 200: {
- headers: {
- [name: string]: unknown;
- };
- content?: never;
- };
- };
- };
- BuilderCrowdfundingV2Controller_submitForReview: {
- parameters: {
- query?: never;
- header?: never;
- path: {
- id: string;
- };
- cookie?: never;
- };
- requestBody?: never;
- responses: {
- 200: {
- headers: {
- [name: string]: unknown;
- };
- content?: never;
- };
- };
- };
- BuilderCrowdfundingV2Controller_withdrawSubmission: {
- parameters: {
- query?: never;
- header?: never;
- path: {
- id: string;
- };
- cookie?: never;
- };
- requestBody?: never;
- responses: {
- 200: {
- headers: {
- [name: string]: unknown;
- };
- content?: never;
- };
- };
- };
- BuilderCrowdfundingV2Controller_reviseAndResubmit: {
- parameters: {
- query?: never;
- header?: never;
- path: {
- id: string;
- };
- cookie?: never;
- };
- requestBody?: never;
- responses: {
- 200: {
- headers: {
- [name: string]: unknown;
- };
- content?: never;
- };
- };
- };
- BuilderCrowdfundingV2Controller_publish: {
- parameters: {
- query?: never;
- header?: never;
- path: {
- id: string;
- };
- cookie?: never;
- };
- requestBody: {
- content: {
- 'application/json': components['schemas']['PublishCrowdfundingEscrowDto'];
- };
- };
- responses: {
- 200: {
- headers: {
- [name: string]: unknown;
- };
- content?: never;
- };
- };
- };
- BuilderCrowdfundingV2Controller_cancel: {
- parameters: {
- query?: never;
- header?: never;
- path: {
- id: string;
- };
- cookie?: never;
- };
- requestBody: {
- content: {
- 'application/json': components['schemas']['CancelCrowdfundingEscrowDto'];
- };
- };
- responses: {
- 200: {
- headers: {
- [name: string]: unknown;
- };
- content?: never;
- };
- };
- };
- BackerCrowdfundingV2Controller_contribute: {
- parameters: {
- query?: never;
- header?: never;
- path: {
- id: string;
- };
- cookie?: never;
- };
- requestBody: {
- content: {
- 'application/json': components['schemas']['ContributeCrowdfundingDto'];
- };
- };
- responses: {
- 200: {
- headers: {
- [name: string]: unknown;
- };
- content?: never;
- };
- };
- };
- BackerCrowdfundingV2Controller_submitSigned: {
- parameters: {
- query?: never;
- header?: never;
- path: {
- id: string;
- opRowId: string;
- };
- cookie?: never;
- };
- requestBody: {
- content: {
- 'application/json': components['schemas']['CrowdfundingSubmitSignedXdrDto'];
- };
- };
- responses: {
- 200: {
- headers: {
- [name: string]: unknown;
- };
- content?: never;
- };
- };
- };
- BackerCrowdfundingV2Controller_getOp: {
- parameters: {
- query?: never;
- header?: never;
- path: {
- id: string;
- opRowId: string;
- };
- cookie?: never;
- };
- requestBody?: never;
- responses: {
- 200: {
- headers: {
- [name: string]: unknown;
- };
- content?: never;
- };
- };
- };
- CommunityCrowdfundingV2Controller_getTally: {
- parameters: {
- query?: never;
- header?: never;
- path: {
- id: string;
- };
- cookie?: never;
- };
- requestBody?: never;
- responses: {
- 200: {
- headers: {
- [name: string]: unknown;
- };
- content?: never;
- };
- };
- };
- CommunityCrowdfundingV2Controller_castVote: {
- parameters: {
- query?: never;
- header?: never;
- path: {
- id: string;
- };
- cookie?: never;
- };
- requestBody: {
- content: {
- 'application/json': components['schemas']['CastCrowdfundingVoteDto'];
- };
- };
- responses: {
- 200: {
- headers: {
- [name: string]: unknown;
- };
- content?: never;
- };
- };
- };
- CommunityCrowdfundingV2Controller_getMyVote: {
- parameters: {
- query?: never;
- header?: never;
- path: {
- id: string;
- };
- cookie?: never;
- };
- requestBody?: never;
- responses: {
- 200: {
- headers: {
- [name: string]: unknown;
- };
- content?: never;
- };
- };
- };
- AdminCrowdfundingV2Controller_approve: {
- parameters: {
- query?: never;
- header?: never;
- path: {
- id: string;
- };
- cookie?: never;
- };
- requestBody: {
- content: {
- 'application/json': components['schemas']['ApproveCrowdfundingCampaignDto'];
- };
- };
- responses: {
- 200: {
- headers: {
- [name: string]: unknown;
- };
- content?: never;
- };
- };
- };
- AdminCrowdfundingV2Controller_reject: {
- parameters: {
- query?: never;
- header?: never;
- path: {
- id: string;
- };
- cookie?: never;
- };
- requestBody: {
- content: {
- 'application/json': components['schemas']['RejectCrowdfundingCampaignDto'];
- };
- };
- responses: {
- 200: {
- headers: {
- [name: string]: unknown;
- };
- content?: never;
- };
- };
- };
- AdminCrowdfundingV2Controller_extendFunding: {
- parameters: {
- query?: never;
- header?: never;
- path: {
- id: string;
- };
- cookie?: never;
- };
- requestBody: {
- content: {
- 'application/json': components['schemas']['ExtendCrowdfundingFundingDto'];
- };
- };
- responses: {
- 200: {
- headers: {
- [name: string]: unknown;
- };
- content?: never;
- };
- };
- };
- AdminCrowdfundingV2Controller_pause: {
- parameters: {
- query?: never;
- header?: never;
- path: {
- id: string;
- };
- cookie?: never;
- };
- requestBody: {
- content: {
- 'application/json': components['schemas']['PauseCrowdfundingCampaignDto'];
- };
- };
- responses: {
- 200: {
- headers: {
- [name: string]: unknown;
- };
- content?: never;
- };
- };
- };
- AdminCrowdfundingV2Controller_unpause: {
- parameters: {
- query?: never;
- header?: never;
- path: {
- id: string;
- };
- cookie?: never;
- };
- requestBody?: never;
- responses: {
- 200: {
- headers: {
- [name: string]: unknown;
- };
- content?: never;
- };
- };
- };
- AdminCrowdfundingV2Controller_approveMilestone: {
- parameters: {
- query?: never;
- header?: never;
- path: {
- id: string;
- milestoneId: string;
- };
- cookie?: never;
- };
- requestBody: {
- content: {
- 'application/json': components['schemas']['ApproveCrowdfundingMilestoneDto'];
- };
- };
- responses: {
- 200: {
- headers: {
- [name: string]: unknown;
- };
- content?: never;
- };
- };
- };
- AdminCrowdfundingV2Controller_rejectMilestone: {
- parameters: {
- query?: never;
- header?: never;
- path: {
- id: string;
- milestoneId: string;
- };
- cookie?: never;
- };
- requestBody: {
- content: {
- 'application/json': components['schemas']['RejectCrowdfundingMilestoneDto'];
- };
- };
- responses: {
- 200: {
- headers: {
- [name: string]: unknown;
- };
- content?: never;
- };
- };
- };
- CrowdfundingDisputesController_file: {
- parameters: {
- query?: never;
- header?: never;
- path: {
- id: string;
- };
- cookie?: never;
- };
- requestBody: {
- content: {
- 'application/json': components['schemas']['FileDisputeDto'];
- };
- };
- responses: {
- 200: {
- headers: {
- [name: string]: unknown;
- };
- content: {
- 'application/json': components['schemas']['DisputeResponseDto'];
- };
- };
- };
- };
- CrowdfundingDisputesController_mine: {
- parameters: {
- query?: never;
- header?: never;
- path: {
- id: string;
- };
- cookie?: never;
- };
- requestBody?: never;
- responses: {
- 200: {
- headers: {
- [name: string]: unknown;
- };
- content: {
- 'application/json': components['schemas']['DisputeResponseDto'][];
- };
- };
- };
- };
- WalletController_getWallet: {
- parameters: {
- query?: never;
- header?: never;
- path?: never;
- cookie?: never;
- };
- requestBody?: never;
- responses: {
- 200: {
- headers: {
- [name: string]: unknown;
- };
- content?: never;
- };
- };
- };
- WalletController_getWalletDetails: {
- parameters: {
- query?: never;
- header?: never;
- path?: never;
- cookie?: never;
- };
- requestBody?: never;
- responses: {
- 200: {
- headers: {
- [name: string]: unknown;
- };
- content?: never;
- };
- };
- };
- WalletController_getWalletSummary: {
- parameters: {
- query?: never;
- header?: never;
- path?: never;
- cookie?: never;
- };
- requestBody?: never;
- responses: {
- 200: {
- headers: {
- [name: string]: unknown;
- };
- content: {
- 'application/json': components['schemas']['WalletSummaryDto'];
- };
- };
- };
- };
- WalletController_getAddressBalance: {
- parameters: {
- query?: never;
- header?: never;
- path: {
- address: string;
- };
- cookie?: never;
- };
- requestBody?: never;
- responses: {
- 200: {
- headers: {
- [name: string]: unknown;
- };
- content?: never;
- };
- };
- };
- WalletController_syncWallet: {
- parameters: {
- query?: never;
- header?: never;
- path?: never;
- cookie?: never;
- };
- requestBody?: never;
- responses: {
- 201: {
- headers: {
- [name: string]: unknown;
- };
- content?: never;
- };
- };
- };
- WalletController_createWallet: {
- parameters: {
- query?: never;
- header?: never;
- path?: never;
- cookie?: never;
- };
- requestBody?: never;
- responses: {
- 201: {
- headers: {
- [name: string]: unknown;
- };
- content?: never;
- };
- };
- };
- WalletController_activate: {
- parameters: {
- query?: never;
- header?: never;
- path?: never;
- cookie?: never;
- };
- requestBody?: never;
- responses: {
- /** @description Wallet activated. Returns tx hash and added trustlines. */
- 201: {
- headers: {
- [name: string]: unknown;
- };
- content?: never;
- };
- /** @description Sponsorship not configured, or unexpected submit error. */
- 500: {
- headers: {
- [name: string]: unknown;
- };
- content?: never;
- };
- /** @description Sponsor account is out of available XLM. Operators have been alerted; retry later. */
- 503: {
- headers: {
- [name: string]: unknown;
- };
- content?: never;
- };
- };
- };
- WalletController_reclaimDormant: {
- parameters: {
- query?: never;
- header?: never;
- path?: never;
- cookie?: never;
- };
- requestBody: {
- content: {
- 'application/json': components['schemas']['ReclaimDormantDto'];
- };
- };
- responses: {
- /** @description Reclaim summary: scanned, eligible, revoked, freedXlm, walletIds, errors */
- 201: {
- headers: {
- [name: string]: unknown;
- };
- content?: never;
- };
- /** @description Admin role required. */
- 403: {
- headers: {
- [name: string]: unknown;
- };
- content?: never;
- };
- };
- };
- WalletController_getSupportedTrustlines: {
- parameters: {
- query?: never;
- header?: never;
- path?: never;
- cookie?: never;
- };
- requestBody?: never;
- responses: {
- /** @description List of supported trustline assets */
- 200: {
- headers: {
- [name: string]: unknown;
- };
- content?: never;
- };
- };
- };
- WalletController_addTrustline: {
- parameters: {
- query?: never;
- header?: never;
- path?: never;
- cookie?: never;
- };
- requestBody: {
- content: {
- 'application/json': components['schemas']['AddTrustlineDto'];
- };
- };
- responses: {
- /** @description Trustline added or already exists */
- 201: {
- headers: {
- [name: string]: unknown;
- };
- content?: never;
- };
- /** @description Wallet not activated, insufficient XLM for fees, or unsupported asset */
- 400: {
- headers: {
- [name: string]: unknown;
- };
- content?: never;
- };
- };
- };
- WalletController_validateSendDestination: {
- parameters: {
- query: {
- /** @description Stellar public key (G...) */
- destinationPublicKey: string;
- /** @description Asset code (e.g. USDC, XLM) */
- currency: string;
- };
- header?: never;
- path?: never;
- cookie?: never;
- };
- requestBody?: never;
- responses: {
- /** @description Validation result (valid, isActivated, hasTrustlineForAsset, memoRequired) */
- 200: {
- headers: {
- [name: string]: unknown;
- };
- content: {
- 'application/json': {
- valid?: boolean;
- isValidPublicKey?: boolean;
- isActivated?: boolean;
- hasTrustlineForAsset?: boolean;
- /** @description True if this destination requires a memo (e.g. exchange shared address) */
- memoRequired?: boolean;
- message?: string | null;
- };
- };
- };
- };
- };
- WalletController_send: {
- parameters: {
- query?: never;
- header?: never;
- path?: never;
- cookie?: never;
- };
- requestBody: {
- content: {
- 'application/json': components['schemas']['UserSendDto'];
- };
- };
- responses: {
- /** @description Send submitted successfully */
- 201: {
- headers: {
- [name: string]: unknown;
- };
- content?: never;
- };
- /** @description Validation or business rule error (e.g. destination not activated, no trustline, memo required, insufficient balance) */
- 400: {
- headers: {
- [name: string]: unknown;
- };
- content?: never;
- };
- /** @description Identity verification required. Complete KYC to send funds. */
- 403: {
- headers: {
- [name: string]: unknown;
- };
- content?: never;
- };
- };
- };
- CommentsController_listComments: {
- parameters: {
- query?: {
- /** @description Entity type to filter comments */
- entityType?:
- | 'PROJECT'
- | 'BOUNTY'
- | 'CROWDFUNDING_CAMPAIGN'
- | 'GRANT'
- | 'GRANT_APPLICATION'
- | 'HACKATHON'
- | 'HACKATHON_SUBMISSION'
- | 'BLOG_POST';
- /** @description Entity ID to filter comments */
- entityId?: string;
- /** @description Author ID to filter comments */
- authorId?: string;
- /** @description Parent comment ID to filter replies */
- parentId?: string;
- /** @description Comment status to filter */
- status?: 'ACTIVE' | 'HIDDEN' | 'DELETED' | 'PENDING_MODERATION';
- /** @description Include reaction data in response */
- includeReactions?: boolean;
- /** @description Include report data in response (moderators only) */
- includeReports?: boolean;
- /** @description Page number */
- page?: number;
- /** @description Number of items per page */
- limit?: number;
- /** @description Field to sort by */
- sortBy?: string;
- /** @description Sort order */
- sortOrder?: 'asc' | 'desc';
- };
- header?: never;
- path?: never;
- cookie?: never;
- };
- requestBody?: never;
- responses: {
- /** @description Comments retrieved successfully */
- 200: {
- headers: {
- [name: string]: unknown;
- };
- content?: never;
- };
- };
- };
- CommentsController_createComment: {
- parameters: {
- query?: never;
- header?: never;
- path?: never;
- cookie?: never;
- };
- requestBody: {
- content: {
- 'application/json': components['schemas']['CreateCommentDto'];
- };
- };
- responses: {
- /** @description Comment created successfully */
- 201: {
- headers: {
- [name: string]: unknown;
- };
- content?: never;
- };
- /** @description Invalid input */
- 400: {
- headers: {
- [name: string]: unknown;
- };
- content?: never;
- };
- /** @description Rate limit exceeded */
- 429: {
- headers: {
- [name: string]: unknown;
- };
- content?: never;
- };
- };
- };
- CommentsController_getComment: {
- parameters: {
- query?: never;
- header?: never;
- path: {
- /** @description Comment ID */
- id: string;
- };
- cookie?: never;
- };
- requestBody?: never;
- responses: {
- /** @description Comment retrieved successfully */
- 200: {
- headers: {
- [name: string]: unknown;
- };
- content?: never;
- };
- /** @description Comment not found */
- 404: {
- headers: {
- [name: string]: unknown;
- };
- content?: never;
- };
- };
- };
- CommentsController_updateComment: {
- parameters: {
- query?: never;
- header?: never;
- path: {
- /** @description Comment ID */
- id: string;
- };
- cookie?: never;
- };
- requestBody: {
- content: {
- 'application/json': components['schemas']['UpdateCommentDto'];
- };
- };
- responses: {
- /** @description Comment updated successfully */
- 200: {
- headers: {
- [name: string]: unknown;
- };
- content?: never;
- };
- /** @description Forbidden */
- 403: {
- headers: {
- [name: string]: unknown;
- };
- content?: never;
- };
- /** @description Comment not found */
- 404: {
- headers: {
- [name: string]: unknown;
- };
- content?: never;
- };
- };
- };
- CommentsController_deleteComment: {
- parameters: {
- query?: never;
- header?: never;
- path: {
- /** @description Comment ID */
- id: string;
- };
- cookie?: never;
- };
- requestBody?: never;
- responses: {
- /** @description Comment deleted successfully */
- 204: {
- headers: {
- [name: string]: unknown;
- };
- content?: never;
- };
- /** @description Forbidden */
- 403: {
- headers: {
- [name: string]: unknown;
- };
- content?: never;
- };
- /** @description Comment not found */
- 404: {
- headers: {
- [name: string]: unknown;
- };
- content?: never;
- };
- };
- };
- CommentsController_getCommentsByEntity: {
- parameters: {
- query: {
- includeNested: string;
- };
- header?: never;
- path: {
- /** @description Entity type */
- entityType: string;
- /** @description Entity ID */
- entityId: string;
- };
- cookie?: never;
- };
- requestBody?: never;
- responses: {
- /** @description Comments retrieved successfully */
- 200: {
- headers: {
- [name: string]: unknown;
- };
- content?: never;
- };
- };
- };
- CommentsController_getReactions: {
- parameters: {
- query?: never;
- header?: never;
- path: {
- /** @description Comment ID */
- id: string;
- };
- cookie?: never;
- };
- requestBody?: never;
- responses: {
- /** @description Reactions retrieved successfully */
- 200: {
- headers: {
- [name: string]: unknown;
- };
- content?: never;
- };
- };
- };
- CommentsController_addReaction: {
- parameters: {
- query?: never;
- header?: never;
- path: {
- /** @description Comment ID */
- id: string;
- };
- cookie?: never;
- };
- requestBody: {
- content: {
- 'application/json': components['schemas']['AddReactionDto'];
- };
- };
- responses: {
- /** @description Reaction added successfully */
- 201: {
- headers: {
- [name: string]: unknown;
- };
- content?: never;
- };
- /** @description Rate limit exceeded */
- 429: {
- headers: {
- [name: string]: unknown;
- };
- content?: never;
- };
- };
- };
- CommentsController_removeReaction: {
- parameters: {
- query?: never;
- header?: never;
- path: {
- /** @description Comment ID */
- id: string;
- /** @description Reaction type */
- reactionType: string;
- };
- cookie?: never;
- };
- requestBody?: never;
- responses: {
- /** @description Reaction removed successfully */
- 204: {
- headers: {
- [name: string]: unknown;
- };
- content?: never;
- };
- };
- };
- CommentsController_reportComment: {
- parameters: {
- query?: never;
- header?: never;
- path: {
- /** @description Comment ID */
- id: string;
- };
- cookie?: never;
- };
- requestBody: {
- content: {
- 'application/json': components['schemas']['ReportCommentDto'];
- };
- };
- responses: {
- /** @description Comment reported successfully */
- 201: {
- headers: {
- [name: string]: unknown;
- };
- content?: never;
- };
- /** @description Rate limit exceeded */
- 429: {
- headers: {
- [name: string]: unknown;
- };
- content?: never;
- };
- };
- };
- CommentModerationController_getModerationQueue: {
- parameters: {
- query?: {
- page?: number;
- limit?: number;
- };
- header?: never;
- path?: never;
- cookie?: never;
- };
- requestBody?: never;
- responses: {
- /** @description Moderation queue retrieved successfully */
- 200: {
- headers: {
- [name: string]: unknown;
- };
- content?: never;
- };
- /** @description Forbidden */
- 403: {
- headers: {
- [name: string]: unknown;
- };
- content?: never;
- };
- };
- };
- CommentModerationController_getReports: {
- parameters: {
- query?: {
- status?: 'PENDING' | 'REVIEWED' | 'RESOLVED' | 'DISMISSED';
- page?: number;
- limit?: number;
- };
- header?: never;
- path?: never;
- cookie?: never;
- };
- requestBody?: never;
- responses: {
- /** @description Reports retrieved successfully */
- 200: {
- headers: {
- [name: string]: unknown;
- };
- content?: never;
- };
- /** @description Forbidden */
- 403: {
- headers: {
- [name: string]: unknown;
- };
- content?: never;
- };
- };
- };
- CommentModerationController_resolveReport: {
- parameters: {
- query?: never;
- header?: never;
- path: {
- /** @description Report ID */
- id: string;
- };
- cookie?: never;
- };
- requestBody: {
- content: {
- 'application/json': components['schemas']['ResolveReportDto'];
- };
- };
- responses: {
- /** @description Report resolved successfully */
- 200: {
- headers: {
- [name: string]: unknown;
- };
- content?: never;
- };
- /** @description Forbidden */
- 403: {
- headers: {
- [name: string]: unknown;
- };
- content?: never;
- };
- /** @description Report not found */
- 404: {
- headers: {
- [name: string]: unknown;
- };
- content?: never;
- };
- };
- };
- CommentModerationController_approveComment: {
- parameters: {
- query?: never;
- header?: never;
- path: {
- /** @description Comment ID */
- id: string;
- };
- cookie?: never;
- };
- requestBody?: never;
- responses: {
- /** @description Comment approved successfully */
- 200: {
- headers: {
- [name: string]: unknown;
- };
- content?: never;
- };
- /** @description Forbidden */
- 403: {
- headers: {
- [name: string]: unknown;
- };
- content?: never;
- };
- /** @description Comment not found */
- 404: {
- headers: {
- [name: string]: unknown;
- };
- content?: never;
- };
- };
- };
- CommentModerationController_rejectComment: {
- parameters: {
- query?: never;
- header?: never;
- path: {
- /** @description Comment ID */
- id: string;
- };
- cookie?: never;
- };
- requestBody?: never;
- responses: {
- /** @description Comment rejected successfully */
- 200: {
- headers: {
- [name: string]: unknown;
- };
- content?: never;
- };
- /** @description Forbidden */
- 403: {
- headers: {
- [name: string]: unknown;
- };
- content?: never;
- };
- /** @description Comment not found */
- 404: {
- headers: {
- [name: string]: unknown;
- };
- content?: never;
- };
- };
- };
- CommentModerationController_hideComment: {
- parameters: {
- query?: never;
- header?: never;
- path: {
- /** @description Comment ID */
- id: string;
- };
- cookie?: never;
- };
- requestBody?: never;
- responses: {
- /** @description Comment hidden successfully */
- 200: {
- headers: {
- [name: string]: unknown;
- };
- content?: never;
- };
- /** @description Forbidden */
- 403: {
- headers: {
- [name: string]: unknown;
- };
- content?: never;
- };
- /** @description Comment not found */
- 404: {
- headers: {
- [name: string]: unknown;
- };
- content?: never;
- };
- };
- };
- CommentModerationController_restoreComment: {
- parameters: {
- query?: never;
- header?: never;
- path: {
- /** @description Comment ID */
- id: string;
- };
- cookie?: never;
- };
- requestBody?: never;
- responses: {
- /** @description Comment restored successfully */
- 200: {
- headers: {
- [name: string]: unknown;
- };
- content?: never;
- };
- /** @description Forbidden */
- 403: {
- headers: {
- [name: string]: unknown;
- };
- content?: never;
- };
- /** @description Comment not found */
- 404: {
- headers: {
- [name: string]: unknown;
- };
- content?: never;
- };
- };
- };
- CommentModerationController_getModerationStats: {
- parameters: {
- query?: never;
- header?: never;
- path?: never;
- cookie?: never;
- };
- requestBody?: never;
- responses: {
- /** @description Moderation stats retrieved successfully */
- 200: {
- headers: {
- [name: string]: unknown;
- };
- content?: never;
- };
- /** @description Forbidden */
- 403: {
- headers: {
- [name: string]: unknown;
- };
- content?: never;
- };
- };
- };
- HackathonsController_getHackathons: {
- parameters: {
- query?: never;
- header?: never;
- path?: never;
- cookie?: never;
- };
- requestBody?: never;
- responses: {
- /** @description Hackathons retrieved successfully */
- 200: {
- headers: {
- [name: string]: unknown;
- };
- content: {
- 'application/json': components['schemas']['HackathonsListResponseDto'];
- };
- };
- };
- };
- HackathonsController_getFeeEstimate: {
- parameters: {
- query: {
- totalPool: string;
- };
- header?: never;
- path?: never;
- cookie?: never;
- };
- requestBody?: never;
- responses: {
- /** @description Fee estimate */
- 200: {
- headers: {
- [name: string]: unknown;
- };
- content: {
- 'application/json': components['schemas']['FeeEstimateResponseDto'];
- };
- };
- /** @description totalPool is missing, invalid, or below minimum (5 USDC) */
- 400: {
- headers: {
- [name: string]: unknown;
- };
- content?: never;
- };
- };
- };
- HackathonsController_getWinners: {
- parameters: {
- query?: never;
- header?: never;
- path: {
- /** @description Hackathon ID or slug */
- idOrSlug: string;
- };
- cookie?: never;
- };
- requestBody?: never;
- responses: {
- /** @description Winners retrieved successfully */
- 200: {
- headers: {
- [name: string]: unknown;
- };
- content: {
- 'application/json': components['schemas']['HackathonWinnersResponseDto'];
- };
- };
- /** @description Invalid request */
- 400: {
- headers: {
- [name: string]: unknown;
- };
- content?: never;
- };
- /** @description Resource not found */
- 404: {
- headers: {
- [name: string]: unknown;
- };
- content?: never;
- };
- };
- };
- HackathonsController_getPublicResults: {
- parameters: {
- query?: never;
- header?: never;
- path: {
- /** @description Hackathon ID or slug */
- idOrSlug: string;
- };
- cookie?: never;
- };
- requestBody?: never;
- responses: {
- /** @description Results retrieved successfully */
- 200: {
- headers: {
- [name: string]: unknown;
- };
- content: {
- 'application/json': components['schemas']['PublicJudgingResultsResponseDto'];
- };
- };
- /** @description Invalid request */
- 400: {
- headers: {
- [name: string]: unknown;
- };
- content?: never;
- };
- /** @description Resource not found */
- 404: {
- headers: {
- [name: string]: unknown;
- };
- content?: never;
- };
- };
- };
- HackathonsController_getHackathon: {
- parameters: {
- query: {
- accessToken: string;
- };
- header?: never;
- path: {
- /** @description Hackathon ID or slug */
- idOrSlug: string;
- };
- cookie?: never;
- };
- requestBody?: never;
- responses: {
- /** @description Hackathon retrieved successfully */
- 200: {
- headers: {
- [name: string]: unknown;
- };
- content: {
- 'application/json': components['schemas']['HackathonResponseDto'];
- };
- };
- /** @description Invalid request */
- 400: {
- headers: {
- [name: string]: unknown;
- };
- content?: never;
- };
- /** @description Resource not found */
- 404: {
- headers: {
- [name: string]: unknown;
- };
- content?: never;
- };
- };
- };
- HackathonsController_verifyHackathonAccess: {
- parameters: {
- query?: never;
- header?: never;
- path: {
- idOrSlug: string;
- };
- cookie?: never;
- };
- requestBody: {
- content: {
- 'application/json': components['schemas']['VerifyHackathonAccessDto'];
- };
- };
- responses: {
- 200: {
- headers: {
- [name: string]: unknown;
- };
- content: {
- 'application/json': components['schemas']['HackathonAccessTokenResponseDto'];
- };
- };
- };
- };
- HackathonsController_getPublicContributors: {
- parameters: {
- query?: never;
- header?: never;
- path: {
- slug: string;
- };
- cookie?: never;
- };
- requestBody?: never;
- responses: {
- /** @description Contributors retrieved successfully */
- 200: {
- headers: {
- [name: string]: unknown;
- };
- content?: never;
- };
- };
- };
- HackathonsController_followHackathon: {
- parameters: {
- query?: never;
- header?: never;
- path: {
- /** @description Hackathon ID or slug */
- idOrSlug: string;
- };
- cookie?: never;
- };
- requestBody?: never;
- responses: {
- /** @description Follow status updated */
- 200: {
- headers: {
- [name: string]: unknown;
- };
- content: {
- 'application/json': {
- /** @example true */
- following?: boolean;
- };
- };
- };
- /** @description Invalid request */
- 400: {
- headers: {
- [name: string]: unknown;
- };
- content?: never;
- };
- /** @description Resource not found */
- 404: {
- headers: {
- [name: string]: unknown;
- };
- content?: never;
- };
- };
- };
- HackathonsController_joinHackathon: {
- parameters: {
- query?: never;
- header?: never;
- path: {
- /** @description Hackathon ID or slug */
- idOrSlug: string;
- };
- cookie?: never;
- };
- requestBody: {
- content: {
- 'application/json': components['schemas']['JoinHackathonDto'];
- };
- };
- responses: {
- /** @description Successfully joined hackathon */
- 200: {
- headers: {
- [name: string]: unknown;
- };
- content: {
- 'application/json': components['schemas']['ParticipationResponseDto'];
- };
- };
- /** @description Registration closed or already participating */
- 400: {
- headers: {
- [name: string]: unknown;
- };
- content?: never;
- };
- /** @description Resource not found */
- 404: {
- headers: {
- [name: string]: unknown;
- };
- content?: never;
- };
- };
- };
- HackathonsController_leaveHackathon: {
- parameters: {
- query?: never;
- header?: never;
- path: {
- /** @description Hackathon ID or slug */
- idOrSlug: string;
- };
- cookie?: never;
- };
- requestBody?: never;
- responses: {
- /** @description Successfully left hackathon */
- 200: {
- headers: {
- [name: string]: unknown;
- };
- content: {
- 'application/json': components['schemas']['ParticipationResponseDto'];
- };
- };
- /** @description Not a participant or submission deadline passed */
- 400: {
- headers: {
- [name: string]: unknown;
- };
- content?: never;
- };
- /** @description Resource not found */
- 404: {
- headers: {
- [name: string]: unknown;
- };
- content?: never;
- };
- };
- };
- HackathonsController_getHackathonParticipants: {
- parameters: {
- query: {
- /** @description Page number (1-based) */
- page?: number;
- /** @description Items per page */
- limit?: number;
- status: string;
- skill: string;
- type: string;
- search: string;
- };
- header?: never;
- path: {
- /** @description Hackathon ID or slug */
- idOrSlug: string;
- };
- cookie?: never;
- };
- requestBody?: never;
- responses: {
- /** @description Participants retrieved successfully */
- 200: {
- headers: {
- [name: string]: unknown;
- };
- content: {
- 'application/json': components['schemas']['HackathonParticipantsResponseDto'];
- };
- };
- /** @description Invalid request */
- 400: {
- headers: {
- [name: string]: unknown;
- };
- content?: never;
- };
- /** @description Resource not found */
- 404: {
- headers: {
- [name: string]: unknown;
- };
- content?: never;
- };
- };
- };
- HackathonsSubmissionsController_getHackathonSubmissions: {
- parameters: {
- query: {
- /** @description Filter by submission status */
- status?: 'SUBMITTED' | 'SHORTLISTED' | 'DISQUALIFIED';
- /** @description Page number (1-based) */
- page?: number;
- /** @description Items per page */
- limit?: number;
- search: string;
- type: string;
- };
- header?: never;
- path: {
- /** @description Hackathon ID or slug */
- idOrSlug: string;
- };
- cookie?: never;
- };
- requestBody?: never;
- responses: {
- /** @description Submissions retrieved successfully */
- 200: {
- headers: {
- [name: string]: unknown;
- };
- content: {
- 'application/json': components['schemas']['SubmissionResponseDto'][];
- };
- };
- /** @description Invalid request */
- 400: {
- headers: {
- [name: string]: unknown;
- };
- content?: never;
- };
- /** @description Resource not found */
- 404: {
- headers: {
- [name: string]: unknown;
- };
- content?: never;
- };
- };
- };
- HackathonsSubmissionsController_createSubmission: {
- parameters: {
- query?: never;
- header?: never;
- path: {
- /** @description Hackathon ID or slug */
- idOrSlug: string;
- };
- cookie?: never;
- };
- requestBody: {
- content: {
- 'application/json': components['schemas']['CreateSubmissionDto'];
- };
- };
- responses: {
- /** @description Submission created successfully */
- 201: {
- headers: {
- [name: string]: unknown;
- };
- content: {
- 'application/json': components['schemas']['SubmissionResponseDto'];
- };
- };
- /** @description Invalid request */
- 400: {
- headers: {
- [name: string]: unknown;
- };
- content?: never;
- };
- /** @description Resource not found */
- 404: {
- headers: {
- [name: string]: unknown;
- };
- content?: never;
- };
- };
- };
- HackathonsSubmissionsController_exploreHackathonSubmissions: {
- parameters: {
- query: {
- /** @description Page number (1-based) */
- page?: number;
- /** @description Items per page */
- limit?: number;
- search: string;
- type: string;
- };
- header?: never;
- path: {
- /** @description Hackathon ID or slug */
- idOrSlug: string;
- };
- cookie?: never;
- };
- requestBody?: never;
- responses: {
- /** @description Submissions retrieved successfully */
- 200: {
- headers: {
- [name: string]: unknown;
- };
- content: {
- 'application/json': components['schemas']['SubmissionResponseDto'][];
- };
- };
- /** @description Hackathon not found */
- 404: {
- headers: {
- [name: string]: unknown;
- };
- content?: never;
- };
- };
- };
- HackathonsSubmissionsController_getMySubmission: {
- parameters: {
- query?: never;
- header?: never;
- path: {
- /** @description Hackathon ID or slug */
- idOrSlug: string;
- };
- cookie?: never;
- };
- requestBody?: never;
- responses: {
- /** @description Submission retrieved successfully */
- 200: {
- headers: {
- [name: string]: unknown;
- };
- content: {
- 'application/json': components['schemas']['SubmissionResponseDto'];
- };
- };
- /** @description Invalid request */
- 400: {
- headers: {
- [name: string]: unknown;
- };
- content?: never;
- };
- /** @description Resource not found */
- 404: {
- headers: {
- [name: string]: unknown;
- };
- content?: never;
- };
- };
- };
- HackathonsSubmissionsController_getSubmissionById: {
- parameters: {
- query?: never;
- header?: never;
- path: {
- /** @description Submission ID */
- submissionId: string;
- };
- cookie?: never;
- };
- requestBody?: never;
- responses: {
- /** @description Submission retrieved successfully */
- 200: {
- headers: {
- [name: string]: unknown;
- };
- content: {
- 'application/json': components['schemas']['SubmissionResponseDto'];
- };
- };
- /** @description Invalid request */
- 400: {
- headers: {
- [name: string]: unknown;
- };
- content?: never;
- };
- /** @description Resource not found */
- 404: {
- headers: {
- [name: string]: unknown;
- };
- content?: never;
- };
- };
- };
- HackathonsSubmissionsController_deleteSubmission: {
- parameters: {
- query?: never;
- header?: never;
- path: {
- /** @description Submission ID */
- submissionId: string;
- };
- cookie?: never;
- };
- requestBody?: never;
- responses: {
- /** @description Submission withdrawn successfully */
- 200: {
- headers: {
- [name: string]: unknown;
- };
- content: {
- 'application/json': {
- /** @example Submission withdrawn successfully */
- message?: string;
- };
- };
- };
- /** @description Invalid request */
- 400: {
- headers: {
- [name: string]: unknown;
- };
- content?: never;
- };
- /** @description Resource not found */
- 404: {
- headers: {
- [name: string]: unknown;
- };
- content?: never;
- };
- };
- };
- HackathonsSubmissionsController_updateSubmission: {
- parameters: {
- query?: never;
- header?: never;
- path: {
- /** @description Submission ID */
- submissionId: string;
- };
- cookie?: never;
- };
- requestBody: {
- content: {
- 'application/json': components['schemas']['UpdateSubmissionDto'];
- };
- };
- responses: {
- /** @description Submission updated successfully */
- 200: {
- headers: {
- [name: string]: unknown;
- };
- content: {
- 'application/json': components['schemas']['SubmissionResponseDto'];
- };
- };
- /** @description Invalid request */
- 400: {
- headers: {
- [name: string]: unknown;
- };
- content?: never;
- };
- /** @description Resource not found */
- 404: {
- headers: {
- [name: string]: unknown;
- };
- content?: never;
- };
- };
- };
- HackathonsDiscussionsController_getHackathonDiscussions: {
- parameters: {
- query?: {
- /** @description Page number (1-based) */
- page?: number;
- /** @description Items per page */
- limit?: number;
- /** @description Sort by field */
- sortBy?: 'createdAt' | 'updatedAt';
- /** @description Sort order */
- sortOrder?: 'asc' | 'desc';
- };
- header?: never;
- path: {
- id: string;
- /** @description Hackathon ID or slug */
- idOrSlug: unknown;
- };
- cookie?: never;
- };
- requestBody?: never;
- responses: {
- /** @description Discussions retrieved successfully */
- 200: {
- headers: {
- [name: string]: unknown;
- };
- content?: never;
- };
- /** @description Invalid request */
- 400: {
- headers: {
- [name: string]: unknown;
- };
- content?: never;
- };
- /** @description Resource not found */
- 404: {
- headers: {
- [name: string]: unknown;
- };
- content?: never;
- };
- };
- };
- HackathonsDiscussionsController_createHackathonComment: {
- parameters: {
- query?: never;
- header?: never;
- path: {
- id: string;
- /** @description Hackathon ID or slug */
- idOrSlug: unknown;
- };
- cookie?: never;
- };
- requestBody: {
- content: {
- 'application/json': {
- /**
- * @description Comment content
- * @example This hackathon looks amazing! When does registration open?
- */
- content: string;
- /**
- * @description Parent comment ID for replies
- * @example comment_1234567890
- */
- parentId?: string;
- };
- };
- };
- responses: {
- /** @description Comment posted successfully */
- 201: {
- headers: {
- [name: string]: unknown;
- };
- content?: never;
- };
- /** @description Invalid request */
- 400: {
- headers: {
- [name: string]: unknown;
- };
- content?: never;
- };
- /** @description Resource not found */
- 404: {
- headers: {
- [name: string]: unknown;
- };
- content?: never;
- };
- };
- };
- HackathonsDiscussionsController_deleteHackathonComment: {
- parameters: {
- query?: never;
- header?: never;
- path: {
- /** @description Comment ID */
- commentId: string;
- };
- cookie?: never;
- };
- requestBody?: never;
- responses: {
- /** @description Comment deleted successfully */
- 200: {
- headers: {
- [name: string]: unknown;
- };
- content: {
- 'application/json': {
- /** @example Comment deleted successfully */
- message?: string;
- };
- };
- };
- /** @description Invalid request */
- 400: {
- headers: {
- [name: string]: unknown;
- };
- content?: never;
- };
- /** @description Resource not found */
- 404: {
- headers: {
- [name: string]: unknown;
- };
- content?: never;
- };
- };
- };
- HackathonsDiscussionsController_updateHackathonComment: {
- parameters: {
- query?: never;
- header?: never;
- path: {
- /** @description Comment ID */
- commentId: string;
- };
- cookie?: never;
- };
- requestBody: {
- content: {
- 'application/json': {
- /**
- * @description Updated comment content
- * @example Updated: This hackathon looks amazing!
- */
- content: string;
- };
- };
- };
- responses: {
- /** @description Comment updated successfully */
- 200: {
- headers: {
- [name: string]: unknown;
- };
- content?: never;
- };
- /** @description Invalid request */
- 400: {
- headers: {
- [name: string]: unknown;
- };
- content?: never;
- };
- /** @description Resource not found */
- 404: {
- headers: {
- [name: string]: unknown;
- };
- content?: never;
- };
- };
- };
- HackathonsDiscussionsController_reactToComment: {
- parameters: {
- query?: never;
- header?: never;
- path: {
- /** @description Comment ID */
- commentId: string;
- };
- cookie?: never;
- };
- requestBody: {
- content: {
- 'application/json': {
- /**
- * @description Type of reaction
- * @example LIKE
- * @enum {string}
- */
- reactionType: 'LIKE' | 'LOVE' | 'CELEBRATE' | 'INSIGHTFUL';
- };
- };
- };
- responses: {
- /** @description Reaction updated */
- 200: {
- headers: {
- [name: string]: unknown;
- };
- content?: never;
- };
- /** @description Invalid request */
- 400: {
- headers: {
- [name: string]: unknown;
- };
- content?: never;
- };
- /** @description Resource not found */
- 404: {
- headers: {
- [name: string]: unknown;
- };
- content?: never;
- };
- };
- };
- HackathonsDiscussionsController_getCommentReplies: {
- parameters: {
- query?: {
- /** @description Page number (1-based) */
- page?: number;
- /** @description Items per page */
- limit?: number;
- };
- header?: never;
- path: {
- /** @description Comment ID */
- commentId: string;
- };
- cookie?: never;
- };
- requestBody?: never;
- responses: {
- /** @description Replies retrieved successfully */
- 200: {
- headers: {
- [name: string]: unknown;
- };
- content?: never;
- };
- /** @description Invalid request */
- 400: {
- headers: {
- [name: string]: unknown;
- };
- content?: never;
- };
- /** @description Resource not found */
- 404: {
- headers: {
- [name: string]: unknown;
- };
- content?: never;
- };
- };
- };
- HackathonsTeamsController_getHackathonTeams: {
- parameters: {
- query?: {
- /** @description Search query */
- search?: string;
- /** @description Filter by open teams only */
- openOnly?: boolean;
- /** @description Page number */
- page?: number;
- /** @description Items per page */
- limit?: number;
- };
- header?: never;
- path: {
- id: string;
- /** @description Hackathon ID or slug */
- idOrSlug: unknown;
- };
- cookie?: never;
- };
- requestBody?: never;
- responses: {
- /** @description Teams retrieved successfully */
- 200: {
- headers: {
- [name: string]: unknown;
- };
- content: {
- 'application/json': components['schemas']['TeamListResponseDto'];
- };
- };
- /** @description Invalid request */
- 400: {
- headers: {
- [name: string]: unknown;
- };
- content?: never;
- };
- /** @description Resource not found */
- 404: {
- headers: {
- [name: string]: unknown;
- };
- content?: never;
- };
- };
- };
- HackathonsTeamsController_createTeam: {
- parameters: {
- query?: never;
- header?: never;
- path: {
- id: string;
- /** @description Hackathon ID or slug */
- idOrSlug: unknown;
- };
- cookie?: never;
- };
- requestBody: {
- content: {
- 'application/json': components['schemas']['CreateTeamDto'];
- };
- };
- responses: {
- /** @description Team created successfully */
- 201: {
- headers: {
- [name: string]: unknown;
- };
- content: {
- 'application/json': components['schemas']['TeamResponseDto'];
- };
- };
- /** @description Not a participant, already in a team, or hackathon does not allow teams */
- 400: {
- headers: {
- [name: string]: unknown;
- };
- content?: never;
- };
- /** @description Resource not found */
- 404: {
- headers: {
- [name: string]: unknown;
- };
- content?: never;
- };
- };
- };
- HackathonsTeamsController_getTeam: {
- parameters: {
- query?: never;
- header?: never;
- path: {
- id: string;
- /** @description Team ID */
- teamId: string;
- /** @description Hackathon ID or slug */
- idOrSlug: unknown;
- };
- cookie?: never;
- };
- requestBody?: never;
- responses: {
- /** @description Team found */
- 200: {
- headers: {
- [name: string]: unknown;
- };
- content: {
- 'application/json': components['schemas']['TeamResponseDto'];
- };
- };
- /** @description Invalid request */
- 400: {
- headers: {
- [name: string]: unknown;
- };
- content?: never;
- };
- /** @description Resource not found */
- 404: {
- headers: {
- [name: string]: unknown;
- };
- content?: never;
- };
- };
- };
- HackathonsTeamsController_disbandTeam: {
- parameters: {
- query?: never;
- header?: never;
- path: {
- id: string;
- /** @description Team ID */
- teamId: string;
- /** @description Hackathon ID or slug */
- idOrSlug: unknown;
- };
- cookie?: never;
- };
- requestBody?: never;
- responses: {
- /** @description Team disbanded */
- 200: {
- headers: {
- [name: string]: unknown;
- };
- content?: never;
- };
- /** @description Team has an existing submission and cannot be disbanded */
- 400: {
- headers: {
- [name: string]: unknown;
- };
- content?: never;
- };
- /** @description Only the team leader can disband the team */
- 403: {
- headers: {
- [name: string]: unknown;
- };
- content?: never;
- };
- /** @description Resource not found */
- 404: {
- headers: {
- [name: string]: unknown;
- };
- content?: never;
- };
- };
- };
- HackathonsTeamsController_updateTeam: {
- parameters: {
- query?: never;
- header?: never;
- path: {
- id: string;
- /** @description Team ID */
- teamId: string;
- /** @description Hackathon ID or slug */
- idOrSlug: unknown;
- };
- cookie?: never;
- };
- requestBody: {
- content: {
- 'application/json': components['schemas']['UpdateTeamDto'];
- };
- };
- responses: {
- /** @description Team updated */
- 200: {
- headers: {
- [name: string]: unknown;
- };
- content?: never;
- };
- /** @description Not team leader or invalid update */
- 400: {
- headers: {
- [name: string]: unknown;
- };
- content?: never;
- };
- /** @description Resource not found */
- 404: {
- headers: {
- [name: string]: unknown;
- };
- content?: never;
- };
- };
- };
- HackathonsTeamsController_joinTeam: {
- parameters: {
- query?: never;
- header?: never;
- path: {
- id: string;
- /** @description Team ID */
- teamId: string;
- /** @description Hackathon ID or slug */
- idOrSlug: unknown;
- };
- cookie?: never;
- };
- requestBody: {
- content: {
- 'application/json': {
- /**
- * @description Optional message to team leader
- * @example I have 5 years of Rust development experience
- */
- message?: string;
- };
- };
- };
- responses: {
- /** @description Successfully joined team */
- 200: {
- headers: {
- [name: string]: unknown;
- };
- content?: never;
- };
- /** @description Team is closed, full, or user already in a team */
- 400: {
- headers: {
- [name: string]: unknown;
- };
- content?: never;
- };
- /** @description Resource not found */
- 404: {
- headers: {
- [name: string]: unknown;
- };
- content?: never;
- };
- };
- };
- HackathonsTeamsController_removeTeamMember: {
- parameters: {
- query?: never;
- header?: never;
- path: {
- id: string;
- /** @description Team ID */
- teamId: string;
- userId: string;
- /** @description Hackathon ID or slug */
- idOrSlug: unknown;
- };
- cookie?: never;
- };
- requestBody?: never;
- responses: {
- /** @description Member removed from team */
- 200: {
- headers: {
- [name: string]: unknown;
- };
- content?: never;
- };
- /** @description Target user is not a member, or leader tried to remove themselves */
- 400: {
- headers: {
- [name: string]: unknown;
- };
- content?: never;
- };
- /** @description Only the team leader can remove members */
- 403: {
- headers: {
- [name: string]: unknown;
- };
- content?: never;
- };
- /** @description Resource not found */
- 404: {
- headers: {
- [name: string]: unknown;
- };
- content?: never;
- };
- };
- };
- HackathonsTeamsController_leaveTeam: {
- parameters: {
- query?: never;
- header?: never;
- path: {
- id: string;
- /** @description Team ID */
- teamId: string;
- /** @description Hackathon ID or slug */
- idOrSlug: unknown;
- };
- cookie?: never;
- };
- requestBody?: never;
- responses: {
- /** @description Successfully left team */
- 200: {
- headers: {
- [name: string]: unknown;
- };
- content?: never;
- };
- /** @description Not a member or leader cannot leave with members */
- 400: {
- headers: {
- [name: string]: unknown;
- };
- content?: never;
- };
- /** @description Resource not found */
- 404: {
- headers: {
- [name: string]: unknown;
- };
- content?: never;
- };
- };
- };
- HackathonsTeamsController_getMyTeam: {
- parameters: {
- query?: never;
- header?: never;
- path: {
- id: string;
- /** @description Hackathon ID or slug */
- idOrSlug: unknown;
- };
- cookie?: never;
- };
- requestBody?: never;
- responses: {
- /** @description Team found or null if not in a team */
- 200: {
- headers: {
- [name: string]: unknown;
- };
- content: {
- 'application/json': components['schemas']['TeamResponseDto'];
- };
- };
- /** @description Invalid request */
- 400: {
- headers: {
- [name: string]: unknown;
- };
- content?: never;
- };
- /** @description Resource not found */
- 404: {
- headers: {
- [name: string]: unknown;
- };
- content?: never;
- };
- };
- };
- HackathonsTeamsController_inviteToTeam: {
- parameters: {
- query?: never;
- header?: never;
- path: {
- id: string;
- /** @description Team ID */
- teamId: string;
- /** @description Hackathon ID or slug */
- idOrSlug: unknown;
- };
- cookie?: never;
- };
- requestBody: {
- content: {
- 'application/json': components['schemas']['InviteToTeamDto'];
- };
- };
- responses: {
- /** @description Invitation sent successfully */
- 201: {
- headers: {
- [name: string]: unknown;
- };
- content: {
- 'application/json': components['schemas']['TeamInvitationResponseDto'];
- };
- };
- /** @description User already in team, team full, or pending invitation exists */
- 400: {
- headers: {
- [name: string]: unknown;
- };
- content?: never;
- };
- /** @description Resource not found */
- 404: {
- headers: {
- [name: string]: unknown;
- };
- content?: never;
- };
- };
- };
- HackathonsTeamsController_getMyInvitations: {
- parameters: {
- query?: {
- /** @description Filter by invitation status */
- status?: 'pending' | 'accepted' | 'rejected' | 'expired';
- };
- header?: never;
- path: {
- id: string;
- /** @description Hackathon ID or slug */
- idOrSlug: unknown;
- };
- cookie?: never;
- };
- requestBody?: never;
- responses: {
- /** @description List of invitations */
- 200: {
- headers: {
- [name: string]: unknown;
- };
- content: {
- 'application/json': components['schemas']['TeamInvitationListResponseDto'];
- };
- };
- };
- };
- HackathonsTeamsController_acceptInvitation: {
- parameters: {
- query?: never;
- header?: never;
- path: {
- id: string;
- /** @description Invitation ID */
- inviteId: string;
- /** @description Hackathon ID or slug */
- idOrSlug: unknown;
- };
- cookie?: never;
- };
- requestBody?: never;
- responses: {
- /** @description Successfully accepted invitation and joined team */
- 200: {
- headers: {
- [name: string]: unknown;
- };
- content: {
- 'application/json': components['schemas']['InvitationActionResponseDto'];
- };
- };
- /** @description Invitation expired, already processed, or team full */
- 400: {
- headers: {
- [name: string]: unknown;
- };
- content?: never;
- };
- /** @description Resource not found */
- 404: {
- headers: {
- [name: string]: unknown;
- };
- content?: never;
- };
- };
- };
- HackathonsTeamsController_rejectInvitation: {
- parameters: {
- query?: never;
- header?: never;
- path: {
- id: string;
- /** @description Invitation ID */
- inviteId: string;
- /** @description Hackathon ID or slug */
- idOrSlug: unknown;
- };
- cookie?: never;
- };
- requestBody?: never;
- responses: {
- /** @description Successfully rejected invitation */
- 200: {
- headers: {
- [name: string]: unknown;
- };
- content: {
- 'application/json': components['schemas']['InvitationActionResponseDto'];
- };
- };
- /** @description Invitation already processed */
- 400: {
- headers: {
- [name: string]: unknown;
- };
- content?: never;
- };
- /** @description Resource not found */
- 404: {
- headers: {
- [name: string]: unknown;
- };
- content?: never;
- };
- };
- };
- HackathonsTeamsController_cancelInvitation: {
- parameters: {
- query?: never;
- header?: never;
- path: {
- id: string;
- /** @description Invitation ID */
- inviteId: string;
- /** @description Hackathon ID or slug */
- idOrSlug: unknown;
- };
- cookie?: never;
- };
- requestBody?: never;
- responses: {
- /** @description Successfully cancelled invitation */
- 200: {
- headers: {
- [name: string]: unknown;
- };
- content?: never;
- };
- /** @description Not team leader or invitation already processed */
- 400: {
- headers: {
- [name: string]: unknown;
- };
- content?: never;
- };
- /** @description Resource not found */
- 404: {
- headers: {
- [name: string]: unknown;
- };
- content?: never;
- };
- };
- };
- HackathonsTeamsController_getTeamInvitations: {
- parameters: {
- query?: {
- /** @description Filter by invitation status */
- status?: 'pending' | 'accepted' | 'rejected' | 'expired';
- };
- header?: never;
- path: {
- id: string;
- /** @description Team ID */
- teamId: string;
- /** @description Hackathon ID or slug */
- idOrSlug: unknown;
- };
- cookie?: never;
- };
- requestBody?: never;
- responses: {
- /** @description List of team invitations */
- 200: {
- headers: {
- [name: string]: unknown;
- };
- content: {
- 'application/json': components['schemas']['TeamInvitationListResponseDto'];
- };
- };
- /** @description Only team leader can view */
- 400: {
- headers: {
- [name: string]: unknown;
- };
- content?: never;
- };
- /** @description Resource not found */
- 404: {
- headers: {
- [name: string]: unknown;
- };
- content?: never;
- };
- };
- };
- HackathonsTeamsController_toggleRoleHiredStatus: {
- parameters: {
- query?: never;
- header?: never;
- path: {
- id: string;
- /** @description Team ID */
- teamId: string;
- /** @description Hackathon ID or slug */
- idOrSlug: unknown;
- };
- cookie?: never;
- };
- requestBody: {
- content: {
- 'application/json': components['schemas']['ToggleRoleHiredDto'];
- };
- };
- responses: {
- /** @description Role status toggled successfully */
- 200: {
- headers: {
- [name: string]: unknown;
- };
- content?: never;
- };
- /** @description Not team leader or invalid role */
- 400: {
- headers: {
- [name: string]: unknown;
- };
- content?: never;
- };
- /** @description Resource not found */
- 404: {
- headers: {
- [name: string]: unknown;
- };
- content?: never;
- };
- };
- };
- HackathonsTeamsController_transferLeadership: {
- parameters: {
- query?: never;
- header?: never;
- path: {
- id: string;
- /** @description Team ID */
- teamId: string;
- /** @description Hackathon ID or slug */
- idOrSlug: unknown;
- };
- cookie?: never;
- };
- requestBody: {
- content: {
- 'application/json': components['schemas']['TransferLeadershipDto'];
- };
- };
- responses: {
- /** @description Leadership successfully transferred */
- 200: {
- headers: {
- [name: string]: unknown;
- };
- content: {
- 'application/json': components['schemas']['LeadershipTransferResponseDto'];
- };
- };
- /** @description Not current leader, new leader not a member, or invalid request */
- 400: {
- headers: {
- [name: string]: unknown;
- };
- content?: never;
- };
- /** @description Only current team leader can transfer leadership */
- 403: {
- headers: {
- [name: string]: unknown;
- };
- content?: never;
- };
- /** @description Resource not found */
- 404: {
- headers: {
- [name: string]: unknown;
- };
- content?: never;
- };
- };
- };
- OrganizationHackathonsDraftsController_getDraft: {
- parameters: {
- query?: never;
- header?: never;
- path: {
- /** @description Organization ID */
- organizationId: string;
- /** @description Hackathon draft ID */
- id: string;
- };
- cookie?: never;
- };
- requestBody?: never;
- responses: {
- /** @description Draft retrieved successfully */
- 200: {
- headers: {
- [name: string]: unknown;
- };
- content: {
- 'application/json': components['schemas']['HackathonDraftResponseDto'];
- };
- };
- /** @description Invalid request */
- 400: {
- headers: {
- [name: string]: unknown;
- };
- content?: never;
- };
- /** @description Resource not found */
- 404: {
- headers: {
- [name: string]: unknown;
- };
- content?: never;
- };
- };
- };
- OrganizationHackathonsDraftsController_deleteDraft: {
- parameters: {
- query?: never;
- header?: never;
- path: {
- /** @description Organization ID */
- organizationId: string;
- /** @description Hackathon draft ID to delete */
- id: string;
- };
- cookie?: never;
- };
- requestBody?: never;
- responses: {
- /** @description Draft deleted successfully */
- 204: {
- headers: {
- [name: string]: unknown;
- };
- content?: never;
- };
- /** @description Draft not found or user not authorized */
- 400: {
- headers: {
- [name: string]: unknown;
- };
- content?: never;
- };
- /** @description Resource not found */
- 404: {
- headers: {
- [name: string]: unknown;
- };
- content?: never;
- };
- };
- };
- OrganizationHackathonsDraftsController_updateDraft: {
- parameters: {
- query?: never;
- header?: never;
- path: {
- /** @description Organization ID */
- organizationId: string;
- /** @description Hackathon draft ID */
- id: string;
- };
- cookie?: never;
- };
- requestBody: {
- content: {
- 'application/json': components['schemas']['UpdateHackathonDraftDto'];
- };
- };
- responses: {
- /** @description Draft updated successfully */
- 200: {
- headers: {
- [name: string]: unknown;
- };
- content: {
- 'application/json': components['schemas']['HackathonDraftResponseDto'];
- };
- };
- /** @description Validation failed for one or more sections */
- 400: {
- headers: {
- [name: string]: unknown;
- };
- content?: never;
- };
- /** @description Resource not found */
- 404: {
- headers: {
- [name: string]: unknown;
- };
- content?: never;
- };
- };
- };
- OrganizationHackathonsDraftsController_getOrganizationHackathons: {
- parameters: {
- query: {
- page: number;
- limit: number;
- /** @description Filter by hackathon status */
- status?: 'upcoming' | 'active' | 'ended';
- };
- header?: never;
- path: {
- /** @description Organization ID */
- organizationId: string;
- };
- cookie?: never;
- };
- requestBody?: never;
- responses: {
- /** @description Hackathons retrieved successfully */
- 200: {
- headers: {
- [name: string]: unknown;
- };
- content: {
- 'application/json': components['schemas']['HackathonsListResponseDto'];
- };
- };
- };
- };
- OrganizationHackathonsDraftsController_createDraft: {
- parameters: {
- query?: never;
- header?: never;
- path: {
- /** @description Organization ID */
- organizationId: string;
- };
- cookie?: never;
- };
- requestBody?: never;
- responses: {
- /** @description Draft created successfully */
- 201: {
- headers: {
- [name: string]: unknown;
- };
- content: {
- 'application/json': components['schemas']['HackathonDraftResponseDto'];
- };
- };
- /** @description User is not a member of the organization */
- 400: {
- headers: {
- [name: string]: unknown;
- };
- content?: never;
- };
- /** @description Resource not found */
- 404: {
- headers: {
- [name: string]: unknown;
- };
- content?: never;
- };
- };
- };
- OrganizationHackathonsDraftsController_getOrganizationDrafts: {
- parameters: {
- query?: never;
- header?: never;
- path: {
- /** @description Organization ID */
- organizationId: string;
- };
- cookie?: never;
- };
- requestBody?: never;
- responses: {
- /** @description Drafts retrieved successfully */
- 200: {
- headers: {
- [name: string]: unknown;
- };
- content: {
- 'application/json': components['schemas']['HackathonDraftResponseDto'][];
- };
- };
- };
- };
- OrganizationHackathonsDraftsController_previewAnnouncementAudience: {
- parameters: {
- query?: never;
- header?: never;
- path: {
- /** @description Hackathon (or draft) ID */
- id: string;
- };
- cookie?: never;
- };
- requestBody?: never;
- responses: {
- /** @description Audience size preview */
- 200: {
- headers: {
- [name: string]: unknown;
- };
- content?: never;
- };
- };
- };
- OrganizationHackathonsAiController_clarify: {
- parameters: {
- query?: never;
- header?: never;
- path: {
- /** @description Organization ID */
- organizationId: string;
- };
- cookie?: never;
- };
- requestBody: {
- content: {
- 'application/json': components['schemas']['ClarifyHackathonBriefDto'];
- };
- };
- responses: {
- 200: {
- headers: {
- [name: string]: unknown;
- };
- content: {
- 'application/json': components['schemas']['ClarifyHackathonDraftResponseDto'];
- };
- };
- /** @description Invalid request */
- 400: {
- headers: {
- [name: string]: unknown;
- };
- content?: never;
- };
- /** @description Resource not found */
- 404: {
- headers: {
- [name: string]: unknown;
- };
- content?: never;
- };
- };
- };
- OrganizationHackathonsAiController_generateFromBrief: {
- parameters: {
- query?: never;
- header?: never;
- path: {
- /** @description Organization ID */
- organizationId: string;
- };
- cookie?: never;
- };
- requestBody: {
- content: {
- 'application/json': components['schemas']['GenerateDraftFromBriefDto'];
- };
- };
- responses: {
- /** @description Draft generated and pre-filled. */
- 201: {
- headers: {
- [name: string]: unknown;
- };
- content: {
- 'application/json': components['schemas']['GenerateDraftFromBriefResponseDto'];
- };
- };
- /** @description Invalid request */
- 400: {
- headers: {
- [name: string]: unknown;
- };
- content?: never;
- };
- /** @description Resource not found */
- 404: {
- headers: {
- [name: string]: unknown;
- };
- content?: never;
- };
- };
- };
- OrganizationHackathonsAiController_generateFromBriefStream: {
- parameters: {
- query?: never;
- header?: never;
- path: {
- /** @description Organization ID */
- organizationId: string;
- };
- cookie?: never;
- };
- requestBody: {
- content: {
- 'application/json': components['schemas']['GenerateDraftFromBriefDto'];
- };
- };
- responses: {
- 201: {
- headers: {
- [name: string]: unknown;
- };
- content?: never;
- };
- };
- };
- OrganizationHackathonsAiController_regenerateSection: {
- parameters: {
- query?: never;
- header?: never;
- path: {
- /** @description Organization ID */
- organizationId: string;
- /** @description Hackathon draft ID */
- id: string;
- };
- cookie?: never;
- };
- requestBody: {
- content: {
- 'application/json': components['schemas']['RegenerateDraftSectionDto'];
- };
- };
- responses: {
- /** @description Regenerated section returned. */
- 201: {
- headers: {
- [name: string]: unknown;
- };
- content: {
- 'application/json': components['schemas']['RegenerateDraftSectionResponseDto'];
- };
- };
- /** @description Invalid request */
- 400: {
- headers: {
- [name: string]: unknown;
- };
- content?: never;
- };
- /** @description Resource not found */
- 404: {
- headers: {
- [name: string]: unknown;
- };
- content?: never;
- };
- };
- };
- OrganizationHackathonsSubmissionsController_updateVisibilitySettings: {
- parameters: {
- query?: never;
- header?: never;
- path: {
- /** @description Organization ID */
- organizationId: string;
- /** @description Hackathon ID or slug */
- id: string;
- };
- cookie?: never;
- };
- requestBody: {
- content: {
- 'application/json': components['schemas']['UpdateVisibilitySettingsDto'];
- };
- };
- responses: {
- /** @description Visibility settings updated successfully */
- 200: {
- headers: {
- [name: string]: unknown;
- };
- content: {
- 'application/json': components['schemas']['HackathonDraftResponseDto'];
- };
- };
- };
- };
- OrganizationHackathonsSubmissionsController_reviewSubmission: {
- parameters: {
- query?: never;
- header?: never;
- path: {
- /** @description Organization ID */
- organizationId: string;
- hackathonId: string;
- /** @description Submission ID */
- submissionId: string;
- /** @description Hackathon ID or slug */
- idOrSlug: unknown;
- };
- cookie?: never;
- };
- requestBody: {
- content: {
- 'application/json': components['schemas']['ReviewSubmissionDto'];
- };
- };
- responses: {
- /** @description Submission reviewed successfully */
- 200: {
- headers: {
- [name: string]: unknown;
- };
- content: {
- 'application/json': {
- /** @example Submission reviewed successfully */
- message?: string;
- submission?: Record;
- };
- };
- };
- /** @description Invalid status or submission does not belong to hackathon */
- 400: {
- headers: {
- [name: string]: unknown;
- };
- content?: never;
- };
- /** @description Resource not found */
- 404: {
- headers: {
- [name: string]: unknown;
- };
- content?: never;
- };
- };
- };
- OrganizationHackathonsSubmissionsController_getOrganizationHackathonParticipants: {
- parameters: {
- query: {
- /** @description Page number (1-based) */
- page?: number;
- /** @description Items per page */
- limit?: number;
- search: string;
- status: string;
- type: string;
- };
- header?: never;
- path: {
- /** @description Organization ID */
- organizationId: string;
- /** @description Hackathon ID or slug */
- idOrSlug: string;
- };
- cookie?: never;
- };
- requestBody?: never;
- responses: {
- /** @description Participants retrieved successfully */
- 200: {
- headers: {
- [name: string]: unknown;
- };
- content: {
- 'application/json': components['schemas']['OrganizationHackathonParticipantsResponseDto'];
- };
- };
- /** @description Invalid request */
- 400: {
- headers: {
- [name: string]: unknown;
- };
- content?: never;
- };
- /** @description Resource not found */
- 404: {
- headers: {
- [name: string]: unknown;
- };
- content?: never;
- };
- };
- };
- OrganizationHackathonsSubmissionsController_scoreSubmissionOverride: {
- parameters: {
- query?: never;
- header?: never;
- path: {
- /** @description Organization ID */
- organizationId: string;
- hackathonId: string;
- /** @description Submission ID */
- submissionId: string;
- /** @description Hackathon ID or slug */
- idOrSlug: unknown;
- };
- cookie?: never;
- };
- requestBody: {
- content: {
- 'application/json': {
- /**
- * @description Judge ID to credit with these scores (optional, defaults to organizer)
- * @example user_1234567890
- */
- judgeId?: string;
- /** @description Scores for each criterion */
- criteriaScores: unknown[];
- };
- };
- };
- responses: {
- /** @description Submission score override applied successfully */
- 200: {
- headers: {
- [name: string]: unknown;
- };
- content: {
- 'application/json': {
- /** @example Submission scored successfully (organizer override) */
- message?: string;
- judgingScore?: Record;
- complianceChecks?: {
- rubricValid?: boolean;
- isOrganizerOverride?: boolean;
- };
- };
- };
- };
- /** @description Invalid criteria scores or rubric validation failed */
- 400: {
- headers: {
- [name: string]: unknown;
- };
- content?: never;
- };
- /** @description Resource not found */
- 404: {
- headers: {
- [name: string]: unknown;
- };
- content?: never;
- };
- };
- };
- OrganizationHackathonsSubmissionsController_disqualifySubmission: {
- parameters: {
- query?: never;
- header?: never;
- path: {
- /** @description Organization ID */
- organizationId: string;
- hackathonId: string;
- /** @description Submission ID */
- submissionId: string;
- /** @description Hackathon ID or slug */
- idOrSlug: unknown;
- };
- cookie?: never;
- };
- requestBody: {
- content: {
- 'application/json': components['schemas']['DisqualifySubmissionDto'];
- };
- };
- responses: {
- /** @description Submission disqualified successfully */
- 200: {
- headers: {
- [name: string]: unknown;
- };
- content: {
- 'application/json': {
- /** @example Submission disqualified successfully */
- message?: string;
- submission?: Record;
- };
- };
- };
- /** @description Submission does not belong to hackathon */
- 400: {
- headers: {
- [name: string]: unknown;
- };
- content?: never;
- };
- /** @description Resource not found */
- 404: {
- headers: {
- [name: string]: unknown;
- };
- content?: never;
- };
- };
- };
- OrganizationHackathonsSubmissionsController_bulkSubmissionAction: {
- parameters: {
- query?: never;
- header?: never;
- path: {
- /** @description Organization ID */
- organizationId: string;
- hackathonId: string;
- /** @description Hackathon ID or slug */
- idOrSlug: unknown;
- };
- cookie?: never;
- };
- requestBody: {
- content: {
- 'application/json': components['schemas']['BulkSubmissionActionDto'];
- };
- };
- responses: {
- /** @description Bulk action completed successfully */
- 200: {
- headers: {
- [name: string]: unknown;
- };
- content: {
- 'application/json': {
- /** @example Successfully updated 5 submission(s) */
- message?: string;
- /** @example 5 */
- count?: number;
- /** @example SHORTLISTED */
- action?: string;
- };
- };
- };
- /** @description Invalid action or missing required fields */
- 400: {
- headers: {
- [name: string]: unknown;
- };
- content?: never;
- };
- };
- };
- OrganizationHackathonsSubmissionsController_setSubmissionRank: {
- parameters: {
- query?: never;
- header?: never;
- path: {
- /** @description Organization ID */
- organizationId: string;
- hackathonId: string;
- /** @description Submission ID */
- submissionId: string;
- /** @description Hackathon ID or slug */
- idOrSlug: unknown;
- };
- cookie?: never;
- };
- requestBody: {
- content: {
- 'application/json': {
- /** @example 1 */
- rank: number;
- };
- };
- };
- responses: {
- /** @description Submission rank updated successfully */
- 200: {
- headers: {
- [name: string]: unknown;
- };
- content: {
- 'application/json': {
- /** @example Submission rank updated successfully */
- message?: string;
- submission?: Record;
- };
- };
- };
- /** @description Invalid rank or submission does not belong to hackathon */
- 400: {
- headers: {
- [name: string]: unknown;
- };
- content?: never;
- };
- /** @description Resource not found */
- 404: {
- headers: {
- [name: string]: unknown;
- };
- content?: never;
- };
- };
- };
- OrganizationHackathonsSubmissionsController_getAnalytics: {
- parameters: {
- query?: never;
- header?: never;
- path: {
- /** @description Organization ID */
- organizationId: string;
- hackathonId: string;
- /** @description Hackathon ID or slug */
- idOrSlug: unknown;
- };
- cookie?: never;
- };
- requestBody?: never;
- responses: {
- /** @description Analytics retrieved successfully */
- 200: {
- headers: {
- [name: string]: unknown;
- };
- content: {
- 'application/json': components['schemas']['HackathonAnalyticsResponseDto'];
- };
- };
- /** @description Invalid request */
- 400: {
- headers: {
- [name: string]: unknown;
- };
- content?: never;
- };
- /** @description Forbidden - only organizers can access */
- 403: {
- headers: {
- [name: string]: unknown;
- };
- content?: never;
- };
- /** @description Resource not found */
- 404: {
- headers: {
- [name: string]: unknown;
- };
- content?: never;
- };
- };
- };
- HackathonsAnnouncementsController_getAnnouncements: {
- parameters: {
- query?: {
- /** @description Page number (1-based) */
- page?: number;
- /** @description Items per page */
- limit?: number;
- };
- header?: never;
- path: {
- /** @description Hackathon ID or slug */
- idOrSlug: string;
- };
- cookie?: never;
- };
- requestBody?: never;
- responses: {
- /** @description Announcements retrieved successfully */
- 200: {
- headers: {
- [name: string]: unknown;
- };
- content: {
- 'application/json': components['schemas']['AnnouncementResponseDto'][];
- };
- };
- };
- };
- HackathonsAnnouncementsController_getAnnouncement: {
- parameters: {
- query?: never;
- header?: never;
- path: {
- /** @description Announcement ID */
- announcementId: string;
- };
- cookie?: never;
- };
- requestBody?: never;
- responses: {
- /** @description Announcement retrieved successfully */
- 200: {
- headers: {
- [name: string]: unknown;
- };
- content: {
- 'application/json': components['schemas']['AnnouncementResponseDto'];
- };
- };
- /** @description Invalid request */
- 400: {
- headers: {
- [name: string]: unknown;
- };
- content?: never;
- };
- /** @description Resource not found */
- 404: {
- headers: {
- [name: string]: unknown;
- };
- content?: never;
- };
- };
- };
- OrganizationHackathonsAnnouncementsController_createAnnouncement: {
- parameters: {
- query?: never;
- header?: never;
- path: {
- /** @description Organization ID */
- organizationId: string;
- /** @description Hackathon ID or slug */
- idOrSlug: string;
- };
- cookie?: never;
- };
- requestBody: {
- content: {
- 'application/json': components['schemas']['CreateAnnouncementDto'];
- };
- };
- responses: {
- /** @description Announcement created successfully */
- 201: {
- headers: {
- [name: string]: unknown;
- };
- content: {
- 'application/json': components['schemas']['AnnouncementResponseDto'];
- };
- };
- /** @description Invalid request */
- 400: {
- headers: {
- [name: string]: unknown;
- };
- content?: never;
- };
- /** @description Resource not found */
- 404: {
- headers: {
- [name: string]: unknown;
- };
- content?: never;
- };
- };
- };
- OrganizationHackathonsAnnouncementsController_deleteAnnouncement: {
- parameters: {
- query?: never;
- header?: never;
- path: {
- /** @description Organization ID */
- organizationId: string;
- /** @description Hackathon ID or slug */
- idOrSlug: string;
- /** @description Announcement ID */
- announcementId: string;
- };
- cookie?: never;
- };
- requestBody?: never;
- responses: {
- /** @description Announcement deleted successfully */
- 200: {
- headers: {
- [name: string]: unknown;
- };
- content?: never;
- };
- /** @description Invalid request */
- 400: {
- headers: {
- [name: string]: unknown;
- };
- content?: never;
- };
- /** @description Resource not found */
- 404: {
- headers: {
- [name: string]: unknown;
- };
- content?: never;
- };
- };
- };
- OrganizationHackathonsAnnouncementsController_updateAnnouncement: {
- parameters: {
- query?: never;
- header?: never;
- path: {
- /** @description Organization ID */
- organizationId: string;
- /** @description Hackathon ID or slug */
- idOrSlug: string;
- /** @description Announcement ID */
- announcementId: string;
- };
- cookie?: never;
- };
- requestBody: {
- content: {
- 'application/json': components['schemas']['UpdateAnnouncementDto'];
- };
- };
- responses: {
- /** @description Announcement updated successfully */
- 200: {
- headers: {
- [name: string]: unknown;
- };
- content: {
- 'application/json': components['schemas']['AnnouncementResponseDto'];
- };
- };
- /** @description Invalid request */
- 400: {
- headers: {
- [name: string]: unknown;
- };
- content?: never;
- };
- /** @description Resource not found */
- 404: {
- headers: {
- [name: string]: unknown;
- };
- content?: never;
- };
- };
- };
- OrganizationHackathonsAnnouncementsController_publishAnnouncement: {
- parameters: {
- query?: never;
- header?: never;
- path: {
- /** @description Organization ID */
- organizationId: string;
- /** @description Hackathon ID or slug */
- idOrSlug: string;
- /** @description Announcement ID */
- announcementId: string;
- };
- cookie?: never;
- };
- requestBody?: never;
- responses: {
- /** @description Announcement published successfully */
- 200: {
- headers: {
- [name: string]: unknown;
- };
- content: {
- 'application/json': components['schemas']['AnnouncementResponseDto'];
- };
- };
- /** @description Invalid request */
- 400: {
- headers: {
- [name: string]: unknown;
- };
- content?: never;
- };
- /** @description Resource not found */
- 404: {
- headers: {
- [name: string]: unknown;
- };
- content?: never;
- };
- };
- };
- HackathonsJudgingController_getCriteria: {
- parameters: {
- query?: never;
- header?: never;
- path: {
- /** @description Hackathon ID or Slug */
- idOrSlug: string;
- };
- cookie?: never;
- };
- requestBody?: never;
- responses: {
- /** @description Criteria retrieved successfully */
- 200: {
- headers: {
- [name: string]: unknown;
- };
- content: {
- 'application/json': components['schemas']['CriterionDto'][];
- };
- };
- /** @description Invalid request */
- 400: {
- headers: {
- [name: string]: unknown;
- };
- content?: never;
- };
- /** @description Resource not found */
- 404: {
- headers: {
- [name: string]: unknown;
- };
- content?: never;
- };
- };
- };
- HackathonsJudgingController_submitScore: {
- parameters: {
- query?: never;
- header?: never;
- path?: never;
- cookie?: never;
- };
- requestBody: {
- content: {
- 'application/json': components['schemas']['ScoreSubmissionDto'];
- };
- };
- responses: {
- /** @description Score submitted successfully with compliance verification */
- 201: {
- headers: {
- [name: string]: unknown;
- };
- content: {
- 'application/json': {
- message?: string;
- judgingScore?: {
- id?: string;
- totalScore?: number;
- criteriaScores?: unknown[];
- };
- complianceChecks?: {
- judgeAssigned?: boolean;
- noConflictOfInterest?: boolean;
- rubricValid?: boolean;
- };
- };
- };
- };
- /** @description Judge not assigned, conflict of interest detected, or invalid scores */
- 400: {
- headers: {
- [name: string]: unknown;
- };
- content?: never;
- };
- /** @description Resource not found */
- 404: {
- headers: {
- [name: string]: unknown;
- };
- content?: never;
- };
- };
- };
- HackathonsJudgingController_getJudgingSubmissions: {
- parameters: {
- query?: {
- /** @description Page number (1-indexed) */
- page?: number;
- /** @description Number of items per page */
- limit?: number;
- /** @description Search term for project name, description, participant name or username */
- search?: string;
- /** @description Sort field */
- sortBy?: 'date' | 'name' | 'score' | 'rank';
- /** @description Sort order */
- order?: 'asc' | 'desc';
- };
- header?: never;
- path: {
- /** @description Hackathon ID or Slug */
- idOrSlug: string;
- };
- cookie?: never;
- };
- requestBody?: never;
- responses: {
- 200: {
- headers: {
- [name: string]: unknown;
- };
- content: {
- 'application/json': components['schemas']['JudgingSubmissionsResponseDto'];
- };
- };
- /** @description Invalid request */
- 400: {
- headers: {
- [name: string]: unknown;
- };
- content?: never;
- };
- /** @description Resource not found */
- 404: {
- headers: {
- [name: string]: unknown;
- };
- content?: never;
- };
- };
- };
- OrganizationHackathonsJudgingController_getJudges: {
- parameters: {
- query?: never;
- header?: never;
- path: {
- /** @description Organization ID */
- organizationId: string;
- /** @description Hackathon ID or slug */
- idOrSlug: string;
- };
- cookie?: never;
- };
- requestBody?: never;
- responses: {
- /** @description Judges retrieved successfully */
- 200: {
- headers: {
- [name: string]: unknown;
- };
- content: {
- 'application/json': components['schemas']['JudgeResponseDto'][];
- };
- };
- /** @description Invalid request */
- 400: {
- headers: {
- [name: string]: unknown;
- };
- content?: never;
- };
- /** @description Resource not found */
- 404: {
- headers: {
- [name: string]: unknown;
- };
- content?: never;
- };
- };
- };
- OrganizationHackathonsJudgingController_addJudge: {
- parameters: {
- query?: never;
- header?: never;
- path: {
- /** @description Organization ID */
- organizationId: string;
- /** @description Hackathon ID or slug */
- idOrSlug: string;
- };
- cookie?: never;
- };
- requestBody: {
- content: {
- 'application/json': components['schemas']['AddJudgeDto'];
- };
- };
- responses: {
- /** @description Judge added successfully */
- 201: {
- headers: {
- [name: string]: unknown;
- };
- content: {
- 'application/json': components['schemas']['JudgeResponseDto'];
- };
- };
- /** @description Invalid request */
- 400: {
- headers: {
- [name: string]: unknown;
- };
- content?: never;
- };
- /** @description Resource not found */
- 404: {
- headers: {
- [name: string]: unknown;
- };
- content?: never;
- };
- };
- };
- OrganizationHackathonsJudgingController_removeJudge: {
- parameters: {
- query?: never;
- header?: never;
- path: {
- /** @description Organization ID */
- organizationId: string;
- /** @description Hackathon ID or slug */
- idOrSlug: string;
- /** @description User ID of the judge */
- userId: string;
- };
- cookie?: never;
- };
- requestBody?: never;
- responses: {
- /** @description Judge removed successfully */
- 200: {
- headers: {
- [name: string]: unknown;
- };
- content?: never;
- };
- /** @description Invalid request */
- 400: {
- headers: {
- [name: string]: unknown;
- };
- content?: never;
- };
- /** @description Resource not found */
- 404: {
- headers: {
- [name: string]: unknown;
- };
- content?: never;
- };
- };
- };
- OrganizationHackathonsJudgingController_getResults: {
- parameters: {
- query?: {
- /** @description Page number (1-indexed) */
- page?: number;
- /** @description Number of items per page */
- limit?: number;
- /** @description Search term for project name, participant name or username */
- search?: string;
- /** @description Sort field */
- sortBy?: 'score' | 'name' | 'rank' | 'date';
- /** @description Sort order */
- order?: 'asc' | 'desc';
- /** @description If true, only returns submissions that have been assigned a rank */
- onlyWinners?: boolean;
- };
- header?: never;
- path: {
- /** @description Organization ID */
- organizationId: string;
- /** @description Hackathon ID or slug */
- idOrSlug: string;
- };
- cookie?: never;
- };
- requestBody?: never;
- responses: {
- /** @description Results retrieved successfully */
- 200: {
- headers: {
- [name: string]: unknown;
- };
- content: {
- 'application/json': components['schemas']['JudgingResultsResponseDto'];
- };
- };
- /** @description Invalid request */
- 400: {
- headers: {
- [name: string]: unknown;
- };
- content?: never;
- };
- /** @description Resource not found */
- 404: {
- headers: {
- [name: string]: unknown;
- };
- content?: never;
- };
- };
- };
- OrganizationHackathonsJudgingController_getIndividualScores: {
- parameters: {
- query?: never;
- header?: never;
- path: {
- /** @description Organization ID */
- organizationId: string;
- /** @description Hackathon ID or slug */
- idOrSlug: string;
- /** @description ID of the submission */
- submissionId: string;
- };
- cookie?: never;
- };
- requestBody?: never;
- responses: {
- 200: {
- headers: {
- [name: string]: unknown;
- };
- content: {
- 'application/json': components['schemas']['IndividualJudgingResultDto'][];
- };
- };
- /** @description Invalid request */
- 400: {
- headers: {
- [name: string]: unknown;
- };
- content?: never;
- };
- /** @description Resource not found */
- 404: {
- headers: {
- [name: string]: unknown;
- };
- content?: never;
- };
- };
- };
- OrganizationHackathonsJudgingController_getWinnerRanking: {
- parameters: {
- query?: {
- /** @description Page number (1-indexed) */
- page?: number;
- /** @description Number of items per page */
- limit?: number;
- /** @description Search term for project name, participant name or username */
- search?: string;
- /** @description Sort field */
- sortBy?: 'score' | 'name' | 'rank' | 'date';
- /** @description Sort order */
- order?: 'asc' | 'desc';
- /** @description If true, only returns submissions that have been assigned a rank */
- onlyWinners?: boolean;
- };
- header?: never;
- path: {
- /** @description Organization ID */
- organizationId: string;
- /** @description Hackathon ID or slug */
- idOrSlug: string;
- };
- cookie?: never;
- };
- requestBody?: never;
- responses: {
- 200: {
- headers: {
- [name: string]: unknown;
- };
- content: {
- 'application/json': components['schemas']['AggregatedJudgingResultDto'][];
- };
- };
- /** @description Invalid request */
- 400: {
- headers: {
- [name: string]: unknown;
- };
- content?: never;
- };
- /** @description Resource not found */
- 404: {
- headers: {
- [name: string]: unknown;
- };
- content?: never;
- };
- };
- };
- OrganizationHackathonsJudgingController_judgingCoverage: {
- parameters: {
- query?: never;
- header?: never;
- path: {
- /** @description Organization ID */
- organizationId: string;
- /** @description Hackathon ID or slug */
- idOrSlug: string;
- };
- cookie?: never;
- };
- requestBody?: never;
- responses: {
- /** @description Invalid request */
- 400: {
- headers: {
- [name: string]: unknown;
- };
- content?: never;
- };
- /** @description Resource not found */
- 404: {
- headers: {
- [name: string]: unknown;
- };
- content?: never;
- };
- };
- };
- OrganizationHackathonsJudgingController_previewAllocation: {
- parameters: {
- query?: never;
- header?: never;
- path: {
- /** @description Organization ID */
- organizationId: string;
- /** @description Hackathon ID or slug */
- idOrSlug: string;
- };
- cookie?: never;
- };
- requestBody?: never;
- responses: {
- /** @description Invalid request */
- 400: {
- headers: {
- [name: string]: unknown;
- };
- content?: never;
- };
- /** @description Resource not found */
- 404: {
- headers: {
- [name: string]: unknown;
- };
- content?: never;
- };
- };
- };
- OrganizationHackathonsJudgingController_allocationParity: {
- parameters: {
- query?: never;
- header?: never;
- path: {
- /** @description Organization ID */
- organizationId: string;
- /** @description Hackathon ID or slug */
- idOrSlug: string;
- };
- cookie?: never;
- };
- requestBody?: never;
- responses: {
- /** @description Invalid request */
- 400: {
- headers: {
- [name: string]: unknown;
- };
- content?: never;
- };
- /** @description Resource not found */
- 404: {
- headers: {
- [name: string]: unknown;
- };
- content?: never;
- };
- };
- };
- OrganizationHackathonsJudgingController_judgingCompleteness: {
- parameters: {
- query?: never;
- header?: never;
- path: {
- /** @description Organization ID */
- organizationId: string;
- /** @description Hackathon ID or slug */
- idOrSlug: string;
- };
- cookie?: never;
- };
- requestBody?: never;
- responses: {
- /** @description Invalid request */
- 400: {
- headers: {
- [name: string]: unknown;
- };
- content?: never;
- };
- /** @description Resource not found */
- 404: {
- headers: {
- [name: string]: unknown;
- };
- content?: never;
- };
- };
- };
- OrganizationHackathonsJudgingController_publishResults: {
- parameters: {
- query?: never;
- header?: never;
- path: {
- /** @description Organization ID */
- organizationId: string;
- /** @description Hackathon ID or slug */
- idOrSlug: string;
- };
- cookie?: never;
- };
- requestBody?: never;
- responses: {
- /** @description Results published successfully */
- 200: {
- headers: {
- [name: string]: unknown;
- };
- content?: never;
- };
- /** @description Invalid request */
- 400: {
- headers: {
- [name: string]: unknown;
- };
- content?: never;
- };
- /** @description Resource not found */
- 404: {
- headers: {
- [name: string]: unknown;
- };
- content?: never;
- };
- };
- };
- OrganizationHackathonsJudgingController_winnersBoard: {
- parameters: {
- query?: never;
- header?: never;
- path: {
- /** @description Organization ID */
- organizationId: string;
- /** @description Hackathon ID or slug */
- idOrSlug: string;
- };
- cookie?: never;
- };
- requestBody?: never;
- responses: {
- /** @description Invalid request */
- 400: {
- headers: {
- [name: string]: unknown;
- };
- content?: never;
- };
- /** @description Resource not found */
- 404: {
- headers: {
- [name: string]: unknown;
- };
- content?: never;
- };
- };
- };
- OrganizationHackathonsJudgingController_setPlacementWinner: {
- parameters: {
- query?: never;
- header?: never;
- path: {
- /** @description Organization ID */
- organizationId: string;
- /** @description Hackathon ID or slug */
- idOrSlug: string;
- /** @description Prize placement id */
- placementId: string;
- };
- cookie?: never;
- };
- requestBody: {
- content: {
- 'application/json': components['schemas']['SetPlacementWinnerDto'];
- };
- };
- responses: {
- /** @description Invalid request */
- 400: {
- headers: {
- [name: string]: unknown;
- };
- content?: never;
- };
- /** @description Resource not found */
- 404: {
- headers: {
- [name: string]: unknown;
- };
- content?: never;
- };
- };
- };
- OrganizationHackathonsJudgingController_clearPlacementWinner: {
- parameters: {
- query?: never;
- header?: never;
- path: {
- /** @description Organization ID */
- organizationId: string;
- /** @description Hackathon ID or slug */
- idOrSlug: string;
- /** @description Prize placement id */
- placementId: string;
- };
- cookie?: never;
- };
- requestBody?: never;
- responses: {
- /** @description Invalid request */
- 400: {
- headers: {
- [name: string]: unknown;
- };
- content?: never;
- };
- /** @description Resource not found */
- 404: {
- headers: {
- [name: string]: unknown;
- };
- content?: never;
- };
- };
- };
- OrganizationHackathonsJudgingController_withholdPlacement: {
- parameters: {
- query?: never;
- header?: never;
- path: {
- /** @description Organization ID */
- organizationId: string;
- /** @description Hackathon ID or slug */
- idOrSlug: string;
- /** @description Prize placement id */
- placementId: string;
- };
- cookie?: never;
- };
- requestBody?: never;
- responses: {
- /** @description Invalid request */
- 400: {
- headers: {
- [name: string]: unknown;
- };
- content?: never;
- };
- /** @description Resource not found */
- 404: {
- headers: {
- [name: string]: unknown;
- };
- content?: never;
- };
- };
- };
- OrganizationHackathonsJudgingController_listInvitations: {
- parameters: {
- query?: never;
- header?: never;
- path: {
- /** @description Organization ID */
- organizationId: string;
- /** @description Hackathon ID or slug */
- idOrSlug: string;
- };
- cookie?: never;
- };
- requestBody?: never;
- responses: {
- /** @description Invalid request */
- 400: {
- headers: {
- [name: string]: unknown;
- };
- content?: never;
- };
- /** @description Resource not found */
- 404: {
- headers: {
- [name: string]: unknown;
- };
- content?: never;
- };
- };
- };
- OrganizationHackathonsJudgingController_inviteJudge: {
- parameters: {
- query?: never;
- header?: never;
- path: {
- /** @description Organization ID */
- organizationId: string;
- /** @description Hackathon ID or slug */
- idOrSlug: string;
- };
- cookie?: never;
- };
- requestBody: {
- content: {
- 'application/json': components['schemas']['InviteJudgeDto'];
- };
- };
- responses: {
- /** @description Invalid request */
- 400: {
- headers: {
- [name: string]: unknown;
- };
- content?: never;
- };
- /** @description Resource not found */
- 404: {
- headers: {
- [name: string]: unknown;
- };
- content?: never;
- };
- };
- };
- OrganizationHackathonsJudgingController_bulkInviteJudges: {
- parameters: {
- query?: never;
- header?: never;
- path: {
- /** @description Organization ID */
- organizationId: string;
- /** @description Hackathon ID or slug */
- idOrSlug: string;
- };
- cookie?: never;
- };
- requestBody: {
- content: {
- 'application/json': components['schemas']['BulkInviteJudgesDto'];
- };
- };
- responses: {
- 201: {
- headers: {
- [name: string]: unknown;
- };
- content: {
- 'application/json': components['schemas']['BulkInviteResultDto'];
- };
- };
- /** @description Invalid request */
- 400: {
- headers: {
- [name: string]: unknown;
- };
- content?: never;
- };
- /** @description Resource not found */
- 404: {
- headers: {
- [name: string]: unknown;
- };
- content?: never;
- };
- };
- };
- OrganizationHackathonsJudgingController_cancelInvitation: {
- parameters: {
- query?: never;
- header?: never;
- path: {
- /** @description Organization ID */
- organizationId: string;
- /** @description Hackathon ID or slug */
- idOrSlug: string;
- /** @description Invitation ID */
- invitationId: string;
- };
- cookie?: never;
- };
- requestBody?: never;
- responses: {
- /** @description Invalid request */
- 400: {
- headers: {
- [name: string]: unknown;
- };
- content?: never;
- };
- /** @description Resource not found */
- 404: {
- headers: {
- [name: string]: unknown;
- };
- content?: never;
- };
- };
- };
- OrganizationHackathonsJudgingController_resendInvitation: {
- parameters: {
- query?: never;
- header?: never;
- path: {
- /** @description Organization ID */
- organizationId: string;
- /** @description Hackathon ID or slug */
- idOrSlug: string;
- /** @description Invitation ID */
- invitationId: string;
- };
- cookie?: never;
- };
- requestBody?: never;
- responses: {
- /** @description Invalid request */
- 400: {
- headers: {
- [name: string]: unknown;
- };
- content?: never;
- };
- /** @description Resource not found */
- 404: {
- headers: {
- [name: string]: unknown;
- };
- content?: never;
- };
- };
- };
- OrganizationHackathonsJudgingController_listRecommendationThresholds: {
- parameters: {
- query?: never;
- header?: never;
- path: {
- /** @description Hackathon ID or slug */
- idOrSlug: string;
- /** @description Organization ID */
- organizationId: unknown;
- };
- cookie?: never;
- };
- requestBody?: never;
- responses: {
- 200: {
- headers: {
- [name: string]: unknown;
- };
- content: {
- 'application/json': components['schemas']['RecommendationThresholdDto'][];
- };
- };
- /** @description Invalid request */
- 400: {
- headers: {
- [name: string]: unknown;
- };
- content?: never;
- };
- /** @description Resource not found */
- 404: {
- headers: {
- [name: string]: unknown;
- };
- content?: never;
- };
- };
- };
- OrganizationHackathonsJudgingController_setRecommendationThreshold: {
- parameters: {
- query?: never;
- header?: never;
- path: {
- /** @description Hackathon ID or slug */
- idOrSlug: string;
- /** @description Organization ID */
- organizationId: unknown;
- };
- cookie?: never;
- };
- requestBody: {
- content: {
- 'application/json': components['schemas']['SetRecommendationThresholdDto'];
- };
- };
- responses: {
- 200: {
- headers: {
- [name: string]: unknown;
- };
- content: {
- 'application/json': components['schemas']['RecommendationThresholdDto'];
- };
- };
- /** @description Invalid request */
- 400: {
- headers: {
- [name: string]: unknown;
- };
- content?: never;
- };
- /** @description Resource not found */
- 404: {
- headers: {
- [name: string]: unknown;
- };
- content?: never;
- };
- };
- };
- OrganizationHackathonsJudgingController_deleteRecommendationThreshold: {
- parameters: {
- query?: never;
- header?: never;
- path: {
- /** @description Hackathon ID or slug */
- idOrSlug: string;
- /** @description Threshold ID */
- thresholdId: string;
- /** @description Organization ID */
- organizationId: unknown;
- };
- cookie?: never;
- };
- requestBody?: never;
- responses: {
- /** @description Invalid request */
- 400: {
- headers: {
- [name: string]: unknown;
- };
- content?: never;
- };
- /** @description Resource not found */
- 404: {
- headers: {
- [name: string]: unknown;
- };
- content?: never;
- };
- };
- };
- OrganizationHackathonsJudgingController_computeRecommendations: {
- parameters: {
- query?: never;
- header?: never;
- path: {
- /** @description Hackathon ID or slug */
- idOrSlug: string;
- /** @description Organization ID */
- organizationId: unknown;
- };
- cookie?: never;
- };
- requestBody?: never;
- responses: {
- 200: {
- headers: {
- [name: string]: unknown;
- };
- content: {
- 'application/json': components['schemas']['RecommendationComputeResultDto'];
- };
- };
- /** @description Invalid request */
- 400: {
- headers: {
- [name: string]: unknown;
- };
- content?: never;
- };
- /** @description Resource not found */
- 404: {
- headers: {
- [name: string]: unknown;
- };
- content?: never;
- };
- };
- };
- OrganizationHackathonsJudgingController_aiScoreSubmission: {
- parameters: {
- query?: {
- prizeId?: unknown;
- };
- header?: never;
- path: {
- /** @description Hackathon ID or slug */
- idOrSlug: string;
- /** @description Submission ID */
- submissionId: string;
- /** @description Organization ID */
- organizationId: unknown;
- };
- cookie?: never;
- };
- requestBody?: never;
- responses: {
- /** @description Invalid request */
- 400: {
- headers: {
- [name: string]: unknown;
- };
- content?: never;
- };
- /** @description Resource not found */
- 404: {
- headers: {
- [name: string]: unknown;
- };
- content?: never;
- };
- };
- };
- OrganizationHackathonsJudgingController_aiScorecards: {
- parameters: {
- query?: never;
- header?: never;
- path: {
- /** @description Hackathon ID or slug */
- idOrSlug: string;
- /** @description Organization ID */
- organizationId: unknown;
- };
- cookie?: never;
- };
- requestBody?: never;
- responses: {
- /** @description Invalid request */
- 400: {
- headers: {
- [name: string]: unknown;
- };
- content?: never;
- };
- /** @description Resource not found */
- 404: {
- headers: {
- [name: string]: unknown;
- };
- content?: never;
- };
- };
- };
- OrganizationHackathonsJudgingController_promoteAiScore: {
- parameters: {
- query?: never;
- header?: never;
- path: {
- /** @description Hackathon ID or slug */
- idOrSlug: string;
- /** @description Submission ID */
- submissionId: string;
- /** @description Organization ID */
- organizationId: unknown;
- };
- cookie?: never;
- };
- requestBody?: never;
- responses: {
- /** @description Invalid request */
- 400: {
- headers: {
- [name: string]: unknown;
- };
- content?: never;
- };
- /** @description Resource not found */
- 404: {
- headers: {
- [name: string]: unknown;
- };
- content?: never;
- };
- };
- };
- OrganizationHackathonsJudgingController_unpromoteAiScore: {
- parameters: {
- query?: never;
- header?: never;
- path: {
- /** @description Hackathon ID or slug */
- idOrSlug: string;
- /** @description Submission ID */
- submissionId: string;
- /** @description Organization ID */
- organizationId: unknown;
- };
- cookie?: never;
- };
- requestBody?: never;
- responses: {
- /** @description Invalid request */
- 400: {
- headers: {
- [name: string]: unknown;
- };
- content?: never;
- };
- /** @description Resource not found */
- 404: {
- headers: {
- [name: string]: unknown;
- };
- content?: never;
- };
- };
- };
- JudgeController_myInvitations: {
- parameters: {
- query?: never;
- header?: never;
- path?: never;
- cookie?: never;
- };
- requestBody?: never;
- responses: {
- /** @description Invalid request */
- 400: {
- headers: {
- [name: string]: unknown;
- };
- content?: never;
- };
- /** @description Resource not found */
- 404: {
- headers: {
- [name: string]: unknown;
- };
- content?: never;
- };
- };
- };
- JudgeController_previewInvitation: {
- parameters: {
- query?: never;
- header?: never;
- path: {
- /** @description Opaque invitation token */
- token: string;
- };
- cookie?: never;
- };
- requestBody?: never;
- responses: {
- /** @description Invalid request */
- 400: {
- headers: {
- [name: string]: unknown;
- };
- content?: never;
- };
- /** @description Resource not found */
- 404: {
- headers: {
- [name: string]: unknown;
- };
- content?: never;
- };
- };
- };
- JudgeController_acceptInvitation: {
- parameters: {
- query?: never;
- header?: never;
- path: {
- /** @description Opaque invitation token */
- token: string;
- };
- cookie?: never;
- };
- requestBody: {
- content: {
- 'application/json': components['schemas']['AcceptJudgeInvitationDto'];
- };
- };
- responses: {
- /** @description Invalid request */
- 400: {
- headers: {
- [name: string]: unknown;
- };
- content?: never;
- };
- /** @description Resource not found */
- 404: {
- headers: {
- [name: string]: unknown;
- };
- content?: never;
- };
- };
- };
- JudgeController_declineInvitation: {
- parameters: {
- query?: never;
- header?: never;
- path: {
- /** @description Opaque invitation token */
- token: string;
- };
- cookie?: never;
- };
- requestBody?: never;
- responses: {
- /** @description Invalid request */
- 400: {
- headers: {
- [name: string]: unknown;
- };
- content?: never;
- };
- /** @description Resource not found */
- 404: {
- headers: {
- [name: string]: unknown;
- };
- content?: never;
- };
- };
- };
- JudgeController_myHackathons: {
- parameters: {
- query?: never;
- header?: never;
- path?: never;
- cookie?: never;
- };
- requestBody?: never;
- responses: {
- /** @description Assigned hackathons */
- 200: {
- headers: {
- [name: string]: unknown;
- };
- content?: never;
- };
- /** @description Invalid request */
- 400: {
- headers: {
- [name: string]: unknown;
- };
- content?: never;
- };
- /** @description Resource not found */
- 404: {
- headers: {
- [name: string]: unknown;
- };
- content?: never;
- };
- };
- };
- JudgeController_overview: {
- parameters: {
- query?: never;
- header?: never;
- path: {
- /** @description Hackathon ID or slug */
- hackathonId: unknown;
- };
- cookie?: never;
- };
- requestBody?: never;
- responses: {
- /** @description Hackathon overview */
- 200: {
- headers: {
- [name: string]: unknown;
- };
- content?: never;
- };
- /** @description Invalid request */
- 400: {
- headers: {
- [name: string]: unknown;
- };
- content?: never;
- };
- /** @description Resource not found */
- 404: {
- headers: {
- [name: string]: unknown;
- };
- content?: never;
- };
- };
- };
- JudgeController_submissions: {
- parameters: {
- query?: {
- /** @description Page number (1-indexed) */
- page?: number;
- /** @description Number of items per page */
- limit?: number;
- /** @description Search term for project name, description, participant name or username */
- search?: string;
- /** @description Sort field */
- sortBy?: 'date' | 'name' | 'score' | 'rank';
- /** @description Sort order */
- order?: 'asc' | 'desc';
- };
- header?: never;
- path: {
- /** @description Hackathon ID or slug */
- hackathonId: unknown;
- };
- cookie?: never;
- };
- requestBody?: never;
- responses: {
- 200: {
- headers: {
- [name: string]: unknown;
- };
- content: {
- 'application/json': components['schemas']['JudgingSubmissionsResponseDto'];
- };
- };
- /** @description Invalid request */
- 400: {
- headers: {
- [name: string]: unknown;
- };
- content?: never;
- };
- /** @description Resource not found */
- 404: {
- headers: {
- [name: string]: unknown;
- };
- content?: never;
- };
- };
- };
- JudgeController_submission: {
- parameters: {
- query?: never;
- header?: never;
- path: {
- /** @description Submission ID */
- submissionId: string;
- /** @description Hackathon ID or slug */
- hackathonId: unknown;
- };
- cookie?: never;
- };
- requestBody?: never;
- responses: {
- /** @description Invalid request */
- 400: {
- headers: {
- [name: string]: unknown;
- };
- content?: never;
- };
- /** @description Resource not found */
- 404: {
- headers: {
- [name: string]: unknown;
- };
- content?: never;
- };
- };
- };
- JudgeController_neighbors: {
- parameters: {
- query?: never;
- header?: never;
- path: {
- /** @description Submission ID */
- submissionId: string;
- /** @description Hackathon ID or slug */
- hackathonId: unknown;
- };
- cookie?: never;
- };
- requestBody?: never;
- responses: {
- /** @description Invalid request */
- 400: {
- headers: {
- [name: string]: unknown;
- };
- content?: never;
- };
- /** @description Resource not found */
- 404: {
- headers: {
- [name: string]: unknown;
- };
- content?: never;
- };
- };
- };
- JudgeController_criteria: {
- parameters: {
- query?: never;
- header?: never;
- path: {
- /** @description Hackathon ID or slug */
- hackathonId: unknown;
- };
- cookie?: never;
- };
- requestBody?: never;
- responses: {
- /** @description Invalid request */
- 400: {
- headers: {
- [name: string]: unknown;
- };
- content?: never;
- };
- /** @description Resource not found */
- 404: {
- headers: {
- [name: string]: unknown;
- };
- content?: never;
- };
- };
- };
- JudgeController_results: {
- parameters: {
- query?: never;
- header?: never;
- path: {
- /** @description Hackathon ID or slug */
- hackathonId: unknown;
- };
- cookie?: never;
- };
- requestBody?: never;
- responses: {
- /** @description Invalid request */
- 400: {
- headers: {
- [name: string]: unknown;
- };
- content?: never;
- };
- /** @description Resource not found */
- 404: {
- headers: {
- [name: string]: unknown;
- };
- content?: never;
- };
- };
- };
- JudgeController_score: {
- parameters: {
- query?: never;
- header?: never;
- path: {
- /** @description Submission ID */
- submissionId: string;
- /** @description Hackathon ID or slug */
- hackathonId: unknown;
- };
- cookie?: never;
- };
- requestBody?: never;
- responses: {
- /** @description Invalid request */
- 400: {
- headers: {
- [name: string]: unknown;
- };
- content?: never;
- };
- /** @description Resource not found */
- 404: {
- headers: {
- [name: string]: unknown;
- };
- content?: never;
- };
- };
- };
- JudgeController_aiScorecard: {
- parameters: {
- query?: never;
- header?: never;
- path: {
- /** @description Hackathon ID or slug */
- hackathonId: string;
- /** @description Submission ID */
- submissionId: string;
- };
- cookie?: never;
- };
- requestBody?: never;
- responses: {
- /** @description Invalid request */
- 400: {
- headers: {
- [name: string]: unknown;
- };
- content?: never;
- };
- /** @description Resource not found */
- 404: {
- headers: {
- [name: string]: unknown;
- };
- content?: never;
- };
- };
- };
- JudgeController_runAiScore: {
- parameters: {
- query?: never;
- header?: never;
- path: {
- /** @description Hackathon ID or slug */
- hackathonId: string;
- /** @description Submission ID */
- submissionId: string;
- };
- cookie?: never;
- };
- requestBody?: never;
- responses: {
- /** @description Invalid request */
- 400: {
- headers: {
- [name: string]: unknown;
- };
- content?: never;
- };
- /** @description Resource not found */
- 404: {
- headers: {
- [name: string]: unknown;
- };
- content?: never;
- };
- };
- };
- OrganizationHackathonsUpdatesController_getHackathonStatistics: {
- parameters: {
- query?: never;
- header?: never;
- path: {
- /** @description Organization ID */
- organizationId: string;
- id: string;
- /** @description Hackathon ID or slug */
- idOrSlug: unknown;
- };
- cookie?: never;
- };
- requestBody?: never;
- responses: {
- /** @description Statistics retrieved successfully */
- 200: {
- headers: {
- [name: string]: unknown;
- };
- content: {
- 'application/json': {
- /** @example 45 */
- totalSubmissions?: number;
- /** @example 120 */
- activeParticipants?: number;
- /** @example 340 */
- totalFollowers?: number;
- /** @example 50000 */
- prizePool?: number;
- categories?: string[];
- /** @example active */
- status?: string;
- };
- };
- };
- /** @description Invalid request */
- 400: {
- headers: {
- [name: string]: unknown;
- };
- content?: never;
- };
- /** @description Resource not found */
- 404: {
- headers: {
- [name: string]: unknown;
- };
- content?: never;
- };
- };
- };
- OrganizationHackathonsUpdatesController_updatePublishedContent: {
- parameters: {
- query?: never;
- header?: never;
- path: {
- /** @description Organization ID */
- organizationId: string;
- id: string;
- /** @description Hackathon ID or slug */
- idOrSlug: unknown;
- };
- cookie?: never;
- };
- requestBody: {
- content: {
- 'application/json': components['schemas']['UpdatePublishedHackathonContentDto'];
- };
- };
- responses: {
- /** @description Published hackathon content updated successfully */
- 200: {
- headers: {
- [name: string]: unknown;
- };
- content: {
- 'application/json': components['schemas']['HackathonResponseDto'];
- };
- };
- /** @description Invalid payload or hackathon state */
- 400: {
- headers: {
- [name: string]: unknown;
- };
- content?: never;
- };
- /** @description Resource not found */
- 404: {
- headers: {
- [name: string]: unknown;
- };
- content?: never;
- };
- };
- };
- OrganizationHackathonsUpdatesController_updatePublishedSchedule: {
- parameters: {
- query?: never;
- header?: never;
- path: {
- /** @description Organization ID */
- organizationId: string;
- id: string;
- /** @description Hackathon ID or slug */
- idOrSlug: unknown;
- };
- cookie?: never;
- };
- requestBody: {
- content: {
- 'application/json': components['schemas']['UpdatePublishedHackathonScheduleDto'];
- };
- };
- responses: {
- /** @description Published hackathon schedule updated successfully */
- 200: {
- headers: {
- [name: string]: unknown;
- };
- content: {
- 'application/json': components['schemas']['HackathonResponseDto'];
- };
- };
- /** @description Invalid payload or schedule changes are no longer allowed */
- 400: {
- headers: {
- [name: string]: unknown;
- };
- content?: never;
- };
- /** @description Resource not found */
- 404: {
- headers: {
- [name: string]: unknown;
- };
- content?: never;
- };
- };
- };
- OrganizationHackathonsUpdatesController_updatePublishedFinancial: {
- parameters: {
- query?: never;
- header?: never;
- path: {
- /** @description Organization ID */
- organizationId: string;
- id: string;
- /** @description Hackathon ID or slug */
- idOrSlug: unknown;
- };
- cookie?: never;
- };
- requestBody: {
- content: {
- 'application/json': components['schemas']['UpdatePublishedHackathonFinancialDto'];
- };
- };
- responses: {
- /** @description Published hackathon financial settings updated successfully */
- 200: {
- headers: {
- [name: string]: unknown;
- };
- content: {
- 'application/json': components['schemas']['HackathonResponseDto'];
- };
- };
- /** @description Invalid payload or escrow-restricted financial change */
- 400: {
- headers: {
- [name: string]: unknown;
- };
- content?: never;
- };
- /** @description Resource not found */
- 404: {
- headers: {
- [name: string]: unknown;
- };
- content?: never;
- };
- };
- };
- OrganizationHackathonsUpdatesController_previewPublishedFinancial: {
- parameters: {
- query?: never;
- header?: never;
- path: {
- /** @description Organization ID */
- organizationId: string;
- id: string;
- /** @description Hackathon ID or slug */
- idOrSlug: unknown;
- };
- cookie?: never;
- };
- requestBody: {
- content: {
- 'application/json': components['schemas']['UpdatePublishedHackathonFinancialDto'];
- };
- };
- responses: {
- /** @description Cost preview computed successfully (no changes made) */
- 200: {
- headers: {
- [name: string]: unknown;
- };
- content: {
- 'application/json': {
- /** @example 180 */
- currentPrizePool?: number;
- /** @example 250 */
- newPrizePool?: number;
- /** @example 8.5 */
- currentPlatformFee?: number;
- /** @example 11.8 */
- newPlatformFee?: number;
- /** @example 188.5 */
- currentTotalRequired?: number;
- /** @example 261.8 */
- newTotalRequired?: number;
- /** @example 73.3 */
- additionalFundingRequired?: number;
- /** @example 78.8 */
- walletBalance?: number | null;
- /** @example true */
- sufficient?: boolean;
- /** @example 0 */
- shortfall?: number;
- breakdown?: {
- /** @example 1st Place */
- place?: string;
- /** @example 50 */
- amount?: number;
- /** @example 2.25 */
- fee?: number;
- /** @example 52.25 */
- total?: number;
- }[];
- };
- };
- };
- /** @description Invalid payload or hackathon state */
- 400: {
- headers: {
- [name: string]: unknown;
- };
- content?: never;
- };
- /** @description Resource not found */
- 404: {
- headers: {
- [name: string]: unknown;
- };
- content?: never;
- };
- };
- };
- OrganizationHackathonsUpdatesController_updatePublishedAdvancedSettings: {
- parameters: {
- query?: never;
- header?: never;
- path: {
- /** @description Organization ID */
- organizationId: string;
- id: string;
- /** @description Hackathon ID or slug */
- idOrSlug: unknown;
- };
- cookie?: never;
- };
- requestBody: {
- content: {
- 'application/json': components['schemas']['UpdatePublishedHackathonAdvancedSettingsDto'];
- };
- };
- responses: {
- /** @description Published hackathon advanced settings updated successfully */
- 200: {
- headers: {
- [name: string]: unknown;
- };
- content: {
- 'application/json': components['schemas']['HackathonResponseDto'];
- };
- };
- /** @description Invalid payload or unsupported hackathon state */
- 400: {
- headers: {
- [name: string]: unknown;
- };
- content?: never;
- };
- /** @description Resource not found */
- 404: {
- headers: {
- [name: string]: unknown;
- };
- content?: never;
- };
- };
- };
- OrganizationHackathonsUpdatesController_setHackathonAccess: {
- parameters: {
- query?: never;
- header?: never;
- path: {
- /** @description Organization ID */
- organizationId: string;
- id: string;
- /** @description Hackathon ID or slug */
- idOrSlug: unknown;
- };
- cookie?: never;
- };
- requestBody: {
- content: {
- 'application/json': components['schemas']['SetHackathonAccessDto'];
- };
- };
- responses: {
- 200: {
- headers: {
- [name: string]: unknown;
- };
- content: {
- 'application/json': components['schemas']['HackathonResponseDto'];
- };
- };
- /** @description Missing password for private access */
- 400: {
- headers: {
- [name: string]: unknown;
- };
- content?: never;
- };
- /** @description Resource not found */
- 404: {
- headers: {
- [name: string]: unknown;
- };
- content?: never;
- };
- };
- };
- OrganizationHackathonsExportController_exportHackathon: {
- parameters: {
- query: {
- /** @description Output format */
- format: 'csv' | 'pdf';
- /** @description Dataset scope. Defaults to "full" (all sections). */
- dataset?:
- | 'overview'
- | 'participants'
- | 'submissions'
- | 'prize_tiers'
- | 'winners'
- | 'judging'
- | 'full';
- };
- header?: never;
- path: {
- /** @description ID of the organization that owns the hackathon */
- organizationId: string;
- /** @description ID or slug of the hackathon */
- id: string;
- };
- cookie?: never;
- };
- requestBody?: never;
- responses: {
- /** @description Binary file stream (CSV or PDF) */
- 200: {
- headers: {
- [name: string]: unknown;
- };
- content: {
- 'text/csv': string;
- 'application/pdf': string;
- };
- };
- /** @description Unsupported format or dataset */
- 400: {
- headers: {
- [name: string]: unknown;
- };
- content?: never;
- };
- /** @description Not an organizer of this hackathon */
- 403: {
- headers: {
- [name: string]: unknown;
- };
- content?: never;
- };
- /** @description Hackathon not found */
- 404: {
- headers: {
- [name: string]: unknown;
- };
- content?: never;
- };
- };
- };
- OrganizationHackathonsPartnersController_invite: {
- parameters: {
- query?: never;
- header?: never;
- path: {
- /** @description Organization ID */
- organizationId: string;
- /** @description Hackathon ID */
- hackathonId: string;
- };
- cookie?: never;
- };
- requestBody: {
- content: {
- 'application/json': components['schemas']['InvitePartnerDto'];
- };
- };
- responses: {
- /** @description Invitation created and email sent */
- 201: {
- headers: {
- [name: string]: unknown;
- };
- content?: never;
- };
- };
- };
- OrganizationHackathonsPartnersController_list: {
- parameters: {
- query?: {
- status?: 'PENDING' | 'CONFIRMED' | 'FAILED' | 'REFUNDED' | 'CANCELLED';
- page?: number;
- limit?: number;
- };
- header?: never;
- path: {
- /** @description Organization ID */
- organizationId: string;
- /** @description Hackathon ID */
- hackathonId: string;
- };
- cookie?: never;
- };
- requestBody?: never;
- responses: {
- /** @description Contributions retrieved */
- 200: {
- headers: {
- [name: string]: unknown;
- };
- content?: never;
- };
- };
- };
- OrganizationHackathonsPartnersController_cancel: {
- parameters: {
- query?: never;
- header?: never;
- path: {
- /** @description Organization ID */
- organizationId: string;
- /** @description Hackathon ID */
- hackathonId: string;
- /** @description Contribution ID */
- contributionId: string;
- };
- cookie?: never;
- };
- requestBody?: never;
- responses: {
- /** @description Invitation cancelled */
- 200: {
- headers: {
- [name: string]: unknown;
- };
- content?: never;
- };
- };
- };
- OrganizationHackathonsPartnersController_getAllocations: {
- parameters: {
- query?: never;
- header?: never;
- path: {
- organizationId: string;
- hackathonId: string;
- contributionId: string;
- };
- cookie?: never;
- };
- requestBody?: never;
- responses: {
- /** @description Allocation summary */
- 200: {
- headers: {
- [name: string]: unknown;
- };
- content?: never;
- };
- };
- };
- OrganizationHackathonsPartnersController_allocate: {
- parameters: {
- query?: never;
- header?: never;
- path: {
- organizationId: string;
- hackathonId: string;
- contributionId: string;
- };
- cookie?: never;
- };
- requestBody: {
- content: {
- 'application/json': components['schemas']['AllocateContributionDto'];
- };
- };
- responses: {
- /** @description Contribution allocated */
- 200: {
- headers: {
- [name: string]: unknown;
- };
- content?: never;
- };
- };
- };
- OrganizationHackathonsPartnersController_prizes: {
- parameters: {
- query?: never;
- header?: never;
- path: {
- organizationId: string;
- hackathonId: string;
- };
- cookie?: never;
- };
- requestBody?: never;
- responses: {
- /** @description Prizes with placements */
- 200: {
- headers: {
- [name: string]: unknown;
- };
- content?: never;
- };
- };
- };
- OrganizationHackathonsPartnersController_undoAllocation: {
- parameters: {
- query?: never;
- header?: never;
- path: {
- organizationId: string;
- hackathonId: string;
- allocationId: string;
- };
- cookie?: never;
- };
- requestBody?: never;
- responses: {
- /** @description Allocation undone */
- 200: {
- headers: {
- [name: string]: unknown;
- };
- content?: never;
- };
- };
- };
- PartnersContributeController_getByToken: {
- parameters: {
- query?: never;
- header?: never;
- path: {
- /** @description Hex-encoded invite token */
- token: string;
- };
- cookie?: never;
- };
- requestBody?: never;
- responses: {
- /** @description Invitation details */
- 200: {
- headers: {
- [name: string]: unknown;
- };
- content?: never;
- };
- };
- };
- PartnersContributeController_prepareFundTx: {
- parameters: {
- query?: never;
- header?: never;
- path: {
- /** @description Hex-encoded invite token */
- token: string;
- };
- cookie?: never;
- };
- requestBody: {
- content: {
- 'application/json': components['schemas']['PrepareFundTransactionDto'];
- };
- };
- responses: {
- /** @description Unsigned transaction prepared */
- 200: {
- headers: {
- [name: string]: unknown;
- };
- content?: never;
- };
- };
- };
- PartnersContributeController_submitTx: {
- parameters: {
- query?: never;
- header?: never;
- path: {
- /** @description Hex-encoded invite token */
- token: string;
- };
- cookie?: never;
- };
- requestBody: {
- content: {
- 'application/json': components['schemas']['SubmitSignedTransactionDto'];
- };
- };
- responses: {
- /** @description Contribution confirmed */
- 200: {
- headers: {
- [name: string]: unknown;
- };
- content?: never;
- };
- };
- };
- HackathonsTracksController_listTracks: {
- parameters: {
- query?: {
- /** @description Set true to include archived tracks. */
- includeArchived?: boolean;
- };
- header?: never;
- path: {
- /** @description Hackathon ID or slug */
- idOrSlug: string;
- };
- cookie?: never;
- };
- requestBody?: never;
- responses: {
- 200: {
- headers: {
- [name: string]: unknown;
- };
- content: {
- 'application/json': components['schemas']['TrackResponseDto'][];
- };
- };
- /** @description Invalid request */
- 400: {
- headers: {
- [name: string]: unknown;
- };
- content?: never;
- };
- /** @description Resource not found */
- 404: {
- headers: {
- [name: string]: unknown;
- };
- content?: never;
- };
- };
- };
- HackathonsCustomQuestionsController_list: {
- parameters: {
- query?: {
- scope?: 'REGISTRATION' | 'SUBMISSION';
- };
- header?: never;
- path: {
- /** @description Hackathon ID or slug */
- idOrSlug: string;
- };
- cookie?: never;
- };
- requestBody?: never;
- responses: {
- 200: {
- headers: {
- [name: string]: unknown;
- };
- content: {
- 'application/json': components['schemas']['CustomQuestionResponseDto'][];
- };
- };
- /** @description Invalid request */
- 400: {
- headers: {
- [name: string]: unknown;
- };
- content?: never;
- };
- /** @description Resource not found */
- 404: {
- headers: {
- [name: string]: unknown;
- };
- content?: never;
- };
- };
- };
- OrganizationHackathonsTracksController_list: {
- parameters: {
- query?: {
- includeArchived?: boolean;
- };
- header?: never;
- path: {
- /** @description Hackathon ID or slug */
- id: string;
- organizationId: unknown;
- };
- cookie?: never;
- };
- requestBody?: never;
- responses: {
- 200: {
- headers: {
- [name: string]: unknown;
- };
- content: {
- 'application/json': components['schemas']['TrackResponseDto'][];
- };
- };
- };
- };
- OrganizationHackathonsTracksController_create: {
- parameters: {
- query?: never;
- header?: never;
- path: {
- id: string;
- };
- cookie?: never;
- };
- requestBody: {
- content: {
- 'application/json': components['schemas']['CreateTrackDto'];
- };
- };
- responses: {
- 201: {
- headers: {
- [name: string]: unknown;
- };
- content: {
- 'application/json': components['schemas']['TrackResponseDto'];
- };
- };
- };
- };
- OrganizationHackathonsTracksController_updateConfig: {
- parameters: {
- query?: never;
- header?: never;
- path: {
- id: string;
- };
- cookie?: never;
- };
- requestBody: {
- content: {
- 'application/json': components['schemas']['UpdateTracksConfigDto'];
- };
- };
- responses: {
- 200: {
- headers: {
- [name: string]: unknown;
- };
- content?: never;
- };
- };
- };
- OrganizationHackathonsTracksController_remove: {
- parameters: {
- query?: never;
- header?: never;
- path: {
- trackId: string;
- };
- cookie?: never;
- };
- requestBody?: never;
- responses: {
- /** @description Deleted or archived */
- 204: {
- headers: {
- [name: string]: unknown;
- };
- content?: never;
- };
- };
- };
- OrganizationHackathonsTracksController_update: {
- parameters: {
- query?: never;
- header?: never;
- path: {
- trackId: string;
- };
- cookie?: never;
- };
- requestBody: {
- content: {
- 'application/json': components['schemas']['UpdateTrackDto'];
- };
- };
- responses: {
- 200: {
- headers: {
- [name: string]: unknown;
- };
- content: {
- 'application/json': components['schemas']['TrackResponseDto'];
- };
- };
- };
- };
- OrganizationHackathonsTracksController_bulkOptIn: {
- parameters: {
- query?: never;
- header?: never;
- path: {
- trackId: string;
- };
- cookie?: never;
- };
- requestBody?: never;
- responses: {
- /** @description Bulk opt-in complete; returns counts. */
- 200: {
- headers: {
- [name: string]: unknown;
- };
- content: {
- 'application/json': {
- trackName?: string;
- added?: number;
- alreadyOptedIn?: number;
- skippedDisqualified?: number;
- totalSubmissions?: number;
- newCap?: number | null;
- };
- };
- };
- };
- };
- OrganizationHackathonsCustomQuestionsController_list: {
- parameters: {
- query?: {
- scope?: 'REGISTRATION' | 'SUBMISSION';
- };
- header?: never;
- path: {
- /** @description Hackathon ID or slug */
- id: string;
- organizationId: unknown;
- };
- cookie?: never;
- };
- requestBody?: never;
- responses: {
- 200: {
- headers: {
- [name: string]: unknown;
- };
- content: {
- 'application/json': components['schemas']['CustomQuestionResponseDto'][];
- };
- };
- };
- };
- OrganizationHackathonsCustomQuestionsController_replace: {
- parameters: {
- query?: never;
- header?: never;
- path: {
- id: string;
- };
- cookie?: never;
- };
- requestBody: {
- content: {
- 'application/json': components['schemas']['UpsertCustomQuestionsDto'];
- };
- };
- responses: {
- 200: {
- headers: {
- [name: string]: unknown;
- };
- content: {
- 'application/json': components['schemas']['CustomQuestionResponseDto'][];
- };
- };
- };
- };
- OrganizationHackathonsEscrowController_requestFundingOtp: {
- parameters: {
- query?: never;
- header?: never;
- path: {
- organizationId: string;
- /** @description Hackathon id */
- id: string;
- };
- cookie?: never;
- };
- requestBody?: never;
- responses: {
- 200: {
- headers: {
- [name: string]: unknown;
- };
- content: {
- 'application/json': components['schemas']['RequestFundingOtpResponseDto'];
- };
- };
- };
- };
- OrganizationHackathonsEscrowController_verifyFundingOtp: {
- parameters: {
- query?: never;
- header?: never;
- path: {
- organizationId: string;
- /** @description Hackathon id */
- id: string;
- };
- cookie?: never;
- };
- requestBody: {
- content: {
- 'application/json': components['schemas']['VerifyFundingOtpDto'];
- };
- };
- responses: {
- 200: {
- headers: {
- [name: string]: unknown;
- };
- content: {
- 'application/json': components['schemas']['VerifyFundingOtpResponseDto'];
- };
- };
- };
- };
- OrganizationHackathonsEscrowController_publish: {
- parameters: {
- query?: never;
- header?: never;
- path: {
- organizationId: string;
- /** @description Hackathon draft id */
- id: string;
- };
- cookie?: never;
- };
- requestBody: {
- content: {
- 'application/json': components['schemas']['PublishHackathonEscrowDto'];
- };
- };
- responses: {
- /** @description Escrow op created; unsigned XDR ready for wallet signing. Hackathon transitioned to DRAFT_AWAITING_FUNDING. */
- 200: {
- headers: {
- [name: string]: unknown;
- };
- content: {
- 'application/json': components['schemas']['HackathonEscrowOpResponseDto'];
- };
- };
- /** @description Validation error or hackathon not in DRAFT status */
- 400: {
- headers: {
- [name: string]: unknown;
- };
- content?: never;
- };
- };
- };
- OrganizationHackathonsEscrowController_cancel: {
- parameters: {
- query?: never;
- header?: never;
- path: {
- organizationId: string;
- /** @description Hackathon id */
- id: string;
- };
- cookie?: never;
- };
- requestBody: {
- content: {
- 'application/json': components['schemas']['CancelHackathonEscrowDto'];
- };
- };
- responses: {
- 200: {
- headers: {
- [name: string]: unknown;
- };
- content: {
- 'application/json': components['schemas']['HackathonEscrowOpResponseDto'];
- };
- };
- };
- };
- OrganizationHackathonsEscrowController_selectWinners: {
- parameters: {
- query?: never;
- header?: never;
- path: {
- organizationId: string;
- /** @description Hackathon id */
- id: string;
- };
- cookie?: never;
- };
- requestBody: {
- content: {
- 'application/json': components['schemas']['SelectHackathonWinnersDto'];
- };
- };
- responses: {
- 200: {
- headers: {
- [name: string]: unknown;
- };
- content: {
- 'application/json': components['schemas']['HackathonEscrowOpResponseDto'];
- };
- };
- };
- };
- OrganizationHackathonsEscrowController_submitSigned: {
- parameters: {
- query?: never;
- header?: never;
- path: {
- organizationId: string;
- /** @description Hackathon id */
- id: string;
- /** @description EscrowOp uuid returned by the publish call */
- opRowId: string;
- };
- cookie?: never;
- };
- requestBody: {
- content: {
- 'application/json': components['schemas']['HackathonSubmitSignedXdrDto'];
- };
- };
- responses: {
- /** @description Signed XDR submitted; op is now PENDING_CONFIRM. */
- 200: {
- headers: {
- [name: string]: unknown;
- };
- content: {
- 'application/json': components['schemas']['HackathonEscrowOpResponseDto'];
- };
- };
- };
- };
- OrganizationHackathonsEscrowController_getOp: {
- parameters: {
- query?: never;
- header?: never;
- path: {
- organizationId: string;
- /** @description Hackathon id */
- id: string;
- /** @description EscrowOp uuid */
- opRowId: string;
- };
- cookie?: never;
- };
- requestBody?: never;
- responses: {
- 200: {
- headers: {
- [name: string]: unknown;
- };
- content: {
- 'application/json': components['schemas']['HackathonEscrowOpResponseDto'];
- };
- };
- };
- };
- OrganizationHackathonsEscrowController_resetToDraft: {
- parameters: {
- query?: never;
- header?: never;
- path: {
- organizationId: string;
- /** @description Hackathon id */
- id: string;
- };
- cookie?: never;
- };
- requestBody?: never;
- responses: {
- /** @description Hackathon reset to DRAFT. */
- 200: {
- headers: {
- [name: string]: unknown;
- };
- content?: never;
- };
- };
- };
- HackathonParticipantEscrowController_submit: {
- parameters: {
- query?: never;
- header?: never;
- path: {
- /** @description Hackathon id */
- id: string;
- /** @description HackathonSubmission uuid */
- submissionId: string;
- };
- cookie?: never;
- };
- requestBody: {
- content: {
- 'application/json': components['schemas']['SubmitHackathonDto'];
- };
- };
- responses: {
- 200: {
- headers: {
- [name: string]: unknown;
- };
- content: {
- 'application/json': components['schemas']['HackathonEscrowOpResponseDto'];
- };
- };
- };
- };
- HackathonParticipantEscrowController_withdrawSubmission: {
- parameters: {
- query?: never;
- header?: never;
- path: {
- /** @description Hackathon id */
- id: string;
- /** @description HackathonSubmission uuid */
- submissionId: string;
- };
- cookie?: never;
- };
- requestBody: {
- content: {
- 'application/json': components['schemas']['WithdrawHackathonSubmissionDto'];
- };
- };
- responses: {
- 200: {
- headers: {
- [name: string]: unknown;
- };
- content: {
- 'application/json': components['schemas']['HackathonEscrowOpResponseDto'];
- };
- };
- };
- };
- HackathonParticipantEscrowController_contribute: {
- parameters: {
- query?: never;
- header?: never;
- path: {
- /** @description Hackathon id */
- id: string;
- };
- cookie?: never;
- };
- requestBody: {
- content: {
- 'application/json': components['schemas']['ContributeHackathonDto'];
- };
- };
- responses: {
- 200: {
- headers: {
- [name: string]: unknown;
- };
- content: {
- 'application/json': components['schemas']['HackathonEscrowOpResponseDto'];
- };
- };
- };
- };
- HackathonParticipantEscrowController_submitSigned: {
- parameters: {
- query?: never;
- header?: never;
- path: {
- /** @description Hackathon id */
- id: string;
- /** @description EscrowOp uuid */
- opRowId: string;
- };
- cookie?: never;
- };
- requestBody: {
- content: {
- 'application/json': components['schemas']['HackathonSubmitSignedXdrDto'];
- };
- };
- responses: {
- 200: {
- headers: {
- [name: string]: unknown;
- };
- content: {
- 'application/json': components['schemas']['HackathonEscrowOpResponseDto'];
- };
- };
- };
- };
- HackathonParticipantEscrowController_getOp: {
- parameters: {
- query?: never;
- header?: never;
- path: {
- /** @description Hackathon id */
- id: string;
- /** @description EscrowOp uuid */
- opRowId: string;
- };
- cookie?: never;
- };
- requestBody?: never;
- responses: {
- 200: {
- headers: {
- [name: string]: unknown;
- };
- content: {
- 'application/json': components['schemas']['HackathonEscrowOpResponseDto'];
- };
- };
- };
- };
- OrganizationsController_getOrganizations: {
- parameters: {
- query?: never;
- header?: never;
- path?: never;
- cookie?: never;
- };
- requestBody?: never;
- responses: {
- 200: {
- headers: {
- [name: string]: unknown;
- };
- content?: never;
- };
- };
- };
- OrganizationsController_createOrganization: {
- parameters: {
- query?: never;
- header?: never;
- path?: never;
- cookie?: never;
- };
- requestBody: {
- content: {
- 'application/json': components['schemas']['CreateOrganizationDto'];
- };
- };
- responses: {
- 201: {
- headers: {
- [name: string]: unknown;
- };
- content?: never;
- };
- };
- };
- OrganizationsController_getMyOrganizations: {
- parameters: {
- query?: never;
- header?: never;
- path?: never;
- cookie?: never;
- };
- requestBody?: never;
- responses: {
- 200: {
- headers: {
- [name: string]: unknown;
- };
- content?: never;
- };
- };
- };
- OrganizationsController_getOrganizationProfile: {
- parameters: {
- query?: never;
- header?: never;
- path: {
- /** @description Organization ID or slug */
- idOrSlug: string;
- };
- cookie?: never;
- };
- requestBody?: never;
- responses: {
- /** @description Organization profile retrieved successfully */
- 200: {
- headers: {
- [name: string]: unknown;
- };
- content: {
- 'application/json': components['schemas']['OrganizationProfileDto'];
- };
- };
- /** @description Organization not found */
- 404: {
- headers: {
- [name: string]: unknown;
- };
- content?: never;
- };
- };
- };
- OrganizationsController_searchOrganizations: {
- parameters: {
- query?: {
- /** @description Search term (name, slug, tagline) */
- q?: string;
- isProfileComplete?: 'true' | 'false';
- hasHackathons?: 'true' | 'false';
- hasGrants?: 'true' | 'false';
- /** @description Max results (default 10) */
- limit?: number;
- };
- header?: never;
- path?: never;
- cookie?: never;
- };
- requestBody?: never;
- responses: {
- /** @description Paginated organizations */
- 200: {
- headers: {
- [name: string]: unknown;
- };
- content?: never;
- };
- };
- };
- OrganizationsController_getOrganization: {
- parameters: {
- query?: never;
- header?: never;
- path: {
- /** @description Organization ID */
- id: string;
- };
- cookie?: never;
- };
- requestBody?: never;
- responses: {
- /** @description Organization retrieved successfully */
- 200: {
- headers: {
- [name: string]: unknown;
- };
- content: {
- 'application/json': {
- /** @example org_1234567890 */
- id?: string;
- /** @example Tech Innovators */
- name?: string;
- /** @example https://example.com/logo.png */
- logo?: string;
- /** @example Building the future of technology */
- tagline?: string;
- /** @example We are a community of developers... */
- about?: string;
- links?: {
- /** @example https://techinnovators.com */
- website?: string;
- /** @example https://twitter.com/techinnovators */
- x?: string;
- /** @example https://github.com/techinnovators */
- github?: string;
- /** @example https://linkedin.com/company/techinnovators */
- others?: string;
};
- /**
- * @example [
- * "user_123",
- * "user_456"
- * ]
- */
- members?: string[];
- /**
- * @example [
- * "user_123"
- * ]
- */
- admins?: string[];
- /** @example user_123 */
- owner?: string;
- /** @example [] */
- hackathons?: string[];
- /** @example [] */
- grants?: string[];
- /** @example true */
- isProfileComplete?: boolean;
- /**
- * @example [
- * "invite_123"
- * ]
- */
- pendingInvites?: string[];
- /** @example better_auth_org_123 */
- betterAuthOrgId?: string;
- /** @example false */
- isArchived?: boolean;
- /** @example null */
- archivedBy?: string;
- /** @example null */
- archivedAt?: string;
- /** @example 2024-01-15T10:30:00.000Z */
- createdAt?: string;
- /** @example 2024-01-15T10:30:00.000Z */
- updatedAt?: string;
- analytics?: {
- trends?: {
- members?: {
- /** @example 25 */
- current?: number;
- /** @example 22 */
- previous?: number;
- /** @example 3 */
- change?: number;
- /** @example 13.64 */
- changePercentage?: number;
- /** @example true */
- isPositive?: boolean;
- };
- hackathons?: {
- /** @example 5 */
- current?: number;
- /** @example 4 */
- previous?: number;
- /** @example 1 */
- change?: number;
- /** @example 25 */
- changePercentage?: number;
- /** @example true */
- isPositive?: boolean;
- };
- grants?: {
- /** @example 0 */
- current?: number;
- /** @example 0 */
- previous?: number;
- /** @example 0 */
- change?: number;
- /** @example 0 */
- changePercentage?: number;
- /** @example true */
- isPositive?: boolean;
- };
- };
- timeSeries?: {
- hackathons?: {
- /** @example January */
- month?: string;
- /** @example 2024 */
- year?: number;
- /** @example 2 */
- count?: number;
- /** @example 2024-01-01T00:00:00.000Z */
- timestamp?: string;
- }[];
- };
- };
- };
- };
- };
- /** @description Organization not found */
- 404: {
- headers: {
- [name: string]: unknown;
- };
- content?: never;
- };
- };
- };
- OrganizationsController_updateOrganization: {
- parameters: {
- query?: never;
- header?: never;
- path: {
- id: string;
- };
- cookie?: never;
- };
- requestBody: {
- content: {
- 'application/json': components['schemas']['UpdateOrganizationDto'];
- };
- };
- responses: {
- 200: {
- headers: {
- [name: string]: unknown;
- };
- content?: never;
- };
- };
- };
- OrganizationsController_deleteOrganization: {
- parameters: {
- query?: never;
- header?: never;
- path: {
- id: string;
- };
- cookie?: never;
- };
- requestBody?: never;
- responses: {
- 200: {
- headers: {
- [name: string]: unknown;
- };
- content?: never;
- };
- };
- };
- OrganizationsController_getOrganizationMembers: {
- parameters: {
- query?: never;
- header?: never;
- path: {
- id: string;
- };
- cookie?: never;
- };
- requestBody?: never;
- responses: {
- 200: {
- headers: {
- [name: string]: unknown;
- };
- content?: never;
- };
- };
- };
- OrganizationsController_getOrganizationPermissions: {
- parameters: {
- query?: never;
- header?: never;
- path: {
- id: string;
- };
- cookie?: never;
- };
- requestBody?: never;
- responses: {
- 200: {
- headers: {
- [name: string]: unknown;
- };
- content?: never;
- };
- };
- };
- OrganizationsController_updateOrganizationPermissions: {
- parameters: {
- query?: never;
- header?: never;
- path: {
- id: string;
- };
- cookie?: never;
- };
- requestBody?: never;
- responses: {
- 200: {
- headers: {
- [name: string]: unknown;
- };
- content?: never;
- };
- };
- };
- OrganizationsController_resetOrganizationPermissions: {
- parameters: {
- query?: never;
- header?: never;
- path: {
- id: string;
- };
- cookie?: never;
- };
- requestBody?: never;
- responses: {
- 200: {
- headers: {
- [name: string]: unknown;
- };
- content?: never;
- };
- };
- };
- OrganizationsController_getOrganizationStats: {
- parameters: {
- query?: never;
- header?: never;
- path: {
- id: string;
- };
- cookie?: never;
- };
- requestBody?: never;
- responses: {
- 200: {
- headers: {
- [name: string]: unknown;
- };
- content?: never;
- };
- };
- };
- MembersController_getMembers: {
- parameters: {
- query?: never;
- header?: never;
- path: {
- organizationId: string;
- };
- cookie?: never;
- };
- requestBody?: never;
- responses: {
- 200: {
- headers: {
- [name: string]: unknown;
- };
- content?: never;
- };
- };
- };
- MembersController_addMember: {
- parameters: {
- query?: never;
- header?: never;
- path: {
- organizationId: string;
- userId: string;
- };
- cookie?: never;
- };
- requestBody?: never;
- responses: {
- 200: {
- headers: {
- [name: string]: unknown;
- };
- content?: never;
- };
- };
- };
- MembersController_removeMember: {
- parameters: {
- query?: never;
- header?: never;
- path: {
- organizationId: string;
- userId: string;
- };
- cookie?: never;
- };
- requestBody?: never;
- responses: {
- 200: {
- headers: {
- [name: string]: unknown;
- };
- content?: never;
- };
- };
- };
- MembersController_updateMemberRole: {
- parameters: {
- query?: never;
- header?: never;
- path: {
- organizationId: string;
- userId: string;
- };
- cookie?: never;
- };
- requestBody: {
- content: {
- 'application/json': components['schemas']['UpdateMemberRoleDto'];
- };
- };
- responses: {
- 200: {
- headers: {
- [name: string]: unknown;
- };
- content?: never;
- };
- };
- };
- MembersController_getMyMembership: {
- parameters: {
- query?: never;
- header?: never;
- path: {
- organizationId: string;
- };
- cookie?: never;
- };
- requestBody?: never;
- responses: {
- 200: {
- headers: {
- [name: string]: unknown;
- };
- content?: never;
- };
- };
- };
- InvitationsController_getInvitations: {
- parameters: {
- query?: never;
- header?: never;
- path: {
- organizationId: string;
- };
- cookie?: never;
- };
- requestBody?: never;
- responses: {
- 200: {
- headers: {
- [name: string]: unknown;
- };
- content?: never;
- };
- };
- };
- InvitationsController_inviteMember: {
- parameters: {
- query?: never;
- header?: never;
- path: {
- organizationId: string;
- };
- cookie?: never;
- };
- requestBody: {
- content: {
- 'application/json': components['schemas']['InviteMemberDto'];
- };
- };
- responses: {
- 201: {
- headers: {
- [name: string]: unknown;
- };
- content?: never;
- };
- };
- };
- InvitationsController_acceptInvitation: {
- parameters: {
- query?: never;
- header?: never;
- path: {
- invitationId: string;
- };
- cookie?: never;
- };
- requestBody?: never;
- responses: {
- 200: {
- headers: {
- [name: string]: unknown;
- };
- content?: never;
- };
- };
- };
- InvitationsController_rejectInvitation: {
- parameters: {
- query?: never;
- header?: never;
- path: {
- invitationId: string;
- };
- cookie?: never;
- };
- requestBody?: never;
- responses: {
- 200: {
- headers: {
- [name: string]: unknown;
- };
- content?: never;
- };
- };
- };
- InvitationsController_cancelInvitation: {
- parameters: {
- query?: never;
- header?: never;
- path: {
- invitationId: string;
- organizationId: string;
- };
- cookie?: never;
- };
- requestBody?: never;
- responses: {
- 200: {
- headers: {
- [name: string]: unknown;
- };
- content?: never;
- };
- };
- };
- InvitationsController_getMyInvitations: {
- parameters: {
- query?: never;
- header?: never;
- path?: never;
- cookie?: never;
- };
- requestBody?: never;
- responses: {
- 200: {
- headers: {
- [name: string]: unknown;
- };
- content?: never;
- };
- };
- };
- OrganizationTreasuryController_listWallets: {
- parameters: {
- query?: never;
- header?: never;
- path: {
- organizationId: string;
- };
- cookie?: never;
- };
- requestBody?: never;
- responses: {
- 200: {
- headers: {
- [name: string]: unknown;
- };
- content: {
- 'application/json': components['schemas']['TreasuryWalletResponseDto'][];
- };
- };
- };
- };
- OrganizationTreasuryController_listArchivedWallets: {
- parameters: {
- query?: never;
- header?: never;
- path: {
- organizationId: string;
- };
- cookie?: never;
- };
- requestBody?: never;
- responses: {
- 200: {
- headers: {
- [name: string]: unknown;
- };
- content: {
- 'application/json': components['schemas']['TreasuryWalletResponseDto'][];
- };
- };
- };
- };
- OrganizationTreasuryController_getDefaultWallet: {
- parameters: {
- query?: never;
- header?: never;
- path: {
- organizationId: string;
- };
- cookie?: never;
- };
- requestBody?: never;
- responses: {
- 200: {
- headers: {
- [name: string]: unknown;
- };
- content: {
- 'application/json': components['schemas']['TreasuryWalletResponseDto'];
- };
- };
- };
- };
- OrganizationTreasuryController_createManagedWallet: {
- parameters: {
- query?: never;
- header?: never;
- path: {
- organizationId: string;
- };
- cookie?: never;
- };
- requestBody: {
- content: {
- 'application/json': components['schemas']['CreateManagedWalletDto'];
- };
- };
- responses: {
- 201: {
- headers: {
- [name: string]: unknown;
- };
- content: {
- 'application/json': components['schemas']['TreasuryWalletResponseDto'];
- };
- };
- };
- };
- OrganizationTreasuryController_registerConnectedWallet: {
- parameters: {
- query?: never;
- header?: never;
- path: {
- organizationId: string;
- };
- cookie?: never;
- };
- requestBody: {
- content: {
- 'application/json': components['schemas']['RegisterConnectedWalletDto'];
- };
- };
- responses: {
- 201: {
- headers: {
- [name: string]: unknown;
- };
- content: {
- 'application/json': components['schemas']['TreasuryWalletResponseDto'];
- };
- };
- };
- };
- OrganizationTreasuryController_refreshSigners: {
- parameters: {
- query?: never;
- header?: never;
- path: {
- organizationId: string;
- walletId: string;
- };
- cookie?: never;
- };
- requestBody?: never;
- responses: {
- 200: {
- headers: {
- [name: string]: unknown;
- };
- content: {
- 'application/json': components['schemas']['TreasuryWalletResponseDto'];
- };
- };
- };
- };
- OrganizationTreasuryController_updateWallet: {
- parameters: {
- query?: never;
- header?: never;
- path: {
- organizationId: string;
- walletId: string;
- };
- cookie?: never;
- };
- requestBody: {
- content: {
- 'application/json': components['schemas']['UpdateTreasuryWalletDto'];
- };
- };
- responses: {
- 200: {
- headers: {
- [name: string]: unknown;
- };
- content: {
- 'application/json': components['schemas']['TreasuryWalletResponseDto'];
- };
- };
- };
- };
- OrganizationTreasuryController_archiveWallet: {
- parameters: {
- query?: never;
- header?: never;
- path: {
- organizationId: string;
- walletId: string;
- };
- cookie?: never;
- };
- requestBody?: never;
- responses: {
- 200: {
- headers: {
- [name: string]: unknown;
- };
- content: {
- 'application/json': components['schemas']['TreasuryWalletResponseDto'];
- };
- };
- };
- };
- OrganizationTreasuryController_restoreWallet: {
- parameters: {
- query?: never;
- header?: never;
- path: {
- organizationId: string;
- walletId: string;
- };
- cookie?: never;
- };
- requestBody?: never;
- responses: {
- 200: {
- headers: {
- [name: string]: unknown;
- };
- content: {
- 'application/json': components['schemas']['TreasuryWalletResponseDto'];
- };
- };
- };
- };
- OrganizationTreasuryController_walletBalance: {
- parameters: {
- query?: never;
- header?: never;
- path: {
- organizationId: string;
- walletId: string;
- };
- cookie?: never;
- };
- requestBody?: never;
- responses: {
- 200: {
- headers: {
- [name: string]: unknown;
- };
- content: {
- 'application/json': components['schemas']['WalletBalanceResponseDto'];
- };
- };
- };
- };
- OrganizationTreasuryController_getPolicy: {
- parameters: {
- query?: never;
- header?: never;
- path: {
- organizationId: string;
- };
- cookie?: never;
- };
- requestBody?: never;
- responses: {
- 200: {
- headers: {
- [name: string]: unknown;
- };
- content: {
- 'application/json': components['schemas']['TreasuryPolicyResponseDto'];
- };
- };
- };
- };
- OrganizationTreasuryController_updatePolicy: {
- parameters: {
- query?: never;
- header?: never;
- path: {
- organizationId: string;
- };
- cookie?: never;
- };
- requestBody: {
- content: {
- 'application/json': components['schemas']['UpdateTreasuryPolicyDto'];
- };
- };
- responses: {
- 200: {
- headers: {
- [name: string]: unknown;
- };
- content: {
- 'application/json': components['schemas']['TreasuryPolicyResponseDto'];
- };
- };
- };
- };
- OrganizationTreasuryController_listSpend: {
- parameters: {
- query?: {
- status?: string;
- };
- header?: never;
- path: {
- organizationId: string;
- };
- cookie?: never;
- };
- requestBody?: never;
- responses: {
- 200: {
- headers: {
- [name: string]: unknown;
- };
- content: {
- 'application/json': components['schemas']['SpendRequestResponseDto'][];
- };
- };
- };
- };
- OrganizationTreasuryController_initiateSpend: {
- parameters: {
- query?: never;
- header?: never;
- path: {
- organizationId: string;
- };
- cookie?: never;
- };
- requestBody: {
- content: {
- 'application/json': components['schemas']['InitiateSpendDto'];
- };
- };
- responses: {
- 201: {
- headers: {
- [name: string]: unknown;
- };
- content: {
- 'application/json': components['schemas']['SpendRequestResponseDto'];
- };
- };
- };
- };
- OrganizationTreasuryController_requestSendOtp: {
- parameters: {
- query?: never;
- header?: never;
- path: {
- organizationId: string;
- };
- cookie?: never;
- };
- requestBody?: never;
- responses: {
- 200: {
- headers: {
- [name: string]: unknown;
- };
- content: {
- 'application/json': components['schemas']['RequestFundingOtpResponseDto'];
- };
- };
- };
- };
- OrganizationTreasuryController_verifySendOtp: {
- parameters: {
- query?: never;
- header?: never;
- path: {
- organizationId: string;
- };
- cookie?: never;
- };
- requestBody: {
- content: {
- 'application/json': components['schemas']['VerifyFundingOtpDto'];
- };
- };
- responses: {
- 200: {
- headers: {
- [name: string]: unknown;
- };
- content: {
- 'application/json': components['schemas']['VerifyFundingOtpResponseDto'];
- };
- };
- };
- };
- OrganizationTreasuryController_sendFunds: {
- parameters: {
- query?: never;
- header?: never;
- path: {
- organizationId: string;
- };
- cookie?: never;
- };
- requestBody: {
- content: {
- 'application/json': components['schemas']['SendTreasuryFundsDto'];
- };
- };
- responses: {
- 200: {
- headers: {
- [name: string]: unknown;
- };
- content: {
- 'application/json': components['schemas']['SpendRequestResponseDto'];
- };
- };
- };
- };
- OrganizationTreasuryController_checkSendDestination: {
- parameters: {
- query: {
- address: string;
- };
- header?: never;
- path: {
- organizationId: string;
- };
- cookie?: never;
- };
- requestBody?: never;
- responses: {
- 200: {
- headers: {
- [name: string]: unknown;
- };
- content: {
- 'application/json': components['schemas']['SendDestinationReadinessDto'];
- };
- };
- };
- };
- OrganizationTreasuryController_getSpend: {
- parameters: {
- query?: never;
- header?: never;
- path: {
- organizationId: string;
- requestId: string;
- };
- cookie?: never;
- };
- requestBody?: never;
- responses: {
- 200: {
- headers: {
- [name: string]: unknown;
- };
- content: {
- 'application/json': components['schemas']['SpendRequestResponseDto'];
- };
- };
- };
- };
- OrganizationTreasuryController_approveSpend: {
- parameters: {
- query?: never;
- header?: never;
- path: {
- organizationId: string;
- requestId: string;
- };
- cookie?: never;
- };
- requestBody?: {
- content: {
- 'application/json': components['schemas']['SpendDecisionDto'];
- };
- };
- responses: {
- 200: {
- headers: {
- [name: string]: unknown;
- };
- content: {
- 'application/json': components['schemas']['SpendRequestResponseDto'];
- };
- };
- };
- };
- OrganizationTreasuryController_rejectSpend: {
- parameters: {
- query?: never;
- header?: never;
- path: {
- organizationId: string;
- requestId: string;
- };
- cookie?: never;
- };
- requestBody?: {
- content: {
- 'application/json': components['schemas']['SpendDecisionDto'];
- };
- };
- responses: {
- 200: {
- headers: {
- [name: string]: unknown;
- };
- content: {
- 'application/json': components['schemas']['SpendRequestResponseDto'];
- };
- };
- };
- };
- OrganizationTreasuryController_cancelSpend: {
- parameters: {
- query?: never;
- header?: never;
- path: {
- organizationId: string;
- requestId: string;
- };
- cookie?: never;
- };
- requestBody?: never;
- responses: {
- 200: {
- headers: {
- [name: string]: unknown;
- };
- content: {
- 'application/json': components['schemas']['SpendRequestResponseDto'];
- };
- };
- };
- };
- OrganizationTreasuryController_executeSpend: {
- parameters: {
- query?: never;
- header?: never;
- path: {
- organizationId: string;
- requestId: string;
- };
- cookie?: never;
- };
- requestBody?: never;
- responses: {
- 200: {
- headers: {
- [name: string]: unknown;
- };
- content: {
- 'application/json': components['schemas']['SpendRequestResponseDto'];
- };
- };
- };
- };
- OrganizationTreasuryController_buildSpendXdr: {
- parameters: {
- query?: never;
- header?: never;
- path: {
- organizationId: string;
- requestId: string;
- };
- cookie?: never;
- };
- requestBody?: never;
- responses: {
- 200: {
- headers: {
- [name: string]: unknown;
- };
- content: {
- 'application/json': components['schemas']['BuildSpendXdrResponseDto'];
- };
- };
- };
- };
- OrganizationTreasuryController_submitSpendSignedXdr: {
- parameters: {
- query?: never;
- header?: never;
- path: {
- organizationId: string;
- requestId: string;
- };
- cookie?: never;
- };
- requestBody: {
- content: {
- 'application/json': components['schemas']['SubmitSpendSignedXdrDto'];
- };
- };
- responses: {
- 200: {
- headers: {
- [name: string]: unknown;
- };
- content: {
- 'application/json': components['schemas']['SpendRequestResponseDto'];
- };
- };
- };
- };
- OrganizationTreasuryController_auditLog: {
- parameters: {
- query?: {
- page?: string;
- limit?: string;
- };
- header?: never;
- path: {
- organizationId: string;
- };
- cookie?: never;
- };
- requestBody?: never;
- responses: {
- 200: {
- headers: {
- [name: string]: unknown;
- };
- content: {
- 'application/json': components['schemas']['TreasuryAuditLogResponseDto'];
- };
- };
- };
- };
- OrganizationReceiptsController_list: {
- parameters: {
- query?: {
- page?: string;
- limit?: string;
- type?: string;
- referenceType?: string;
- referenceId?: string;
- };
- header?: never;
- path: {
- organizationId: string;
- };
- cookie?: never;
- };
- requestBody?: never;
- responses: {
- 200: {
- headers: {
- [name: string]: unknown;
- };
- content: {
- 'application/json': components['schemas']['ReceiptListResponseDto'];
- };
- };
- };
- };
- OrganizationReceiptsController_getOne: {
- parameters: {
- query?: never;
- header?: never;
- path: {
- organizationId: string;
- receiptId: string;
- };
- cookie?: never;
- };
- requestBody?: never;
- responses: {
- 200: {
- headers: {
- [name: string]: unknown;
- };
- content: {
- 'application/json': components['schemas']['ReceiptResponseDto'];
- };
- };
- };
- };
- OrganizationReceiptsController_send: {
- parameters: {
- query?: never;
- header?: never;
- path: {
- organizationId: string;
- receiptId: string;
- };
- cookie?: never;
- };
- requestBody?: {
- content: {
- 'application/json': components['schemas']['SendReceiptDto'];
- };
- };
- responses: {
- 200: {
- headers: {
- [name: string]: unknown;
- };
- content?: never;
- };
- };
- };
- OrganizationReceiptsController_void: {
- parameters: {
- query?: never;
- header?: never;
- path: {
- organizationId: string;
- receiptId: string;
- };
- cookie?: never;
- };
- requestBody?: {
- content: {
- 'application/json': components['schemas']['VoidReceiptDto'];
- };
- };
- responses: {
- 200: {
- headers: {
- [name: string]: unknown;
- };
- content: {
- 'application/json': components['schemas']['ReceiptResponseDto'];
- };
- };
- };
- };
- VotesController_getVotes: {
- parameters: {
- query: {
- /** @description Project ID */
- projectId?: string;
- /** @description Entity Type */
- entityType?: string;
- /** @description Vote Type */
- voteType: string;
- /** @description User ID */
- userId: string;
- /** @description Limit */
- limit: number;
- /** @description Offset */
- offset: number;
- };
- header?: never;
- path?: never;
- cookie?: never;
- };
- requestBody?: never;
- responses: {
- 200: {
- headers: {
- [name: string]: unknown;
- };
- content?: never;
- };
- };
- };
- VotesController_createVote: {
- parameters: {
- query?: never;
- header?: never;
- path?: never;
- cookie?: never;
- };
- requestBody: {
- content: {
- 'application/json': components['schemas']['CreateVoteDto'];
- };
- };
- responses: {
- 201: {
- headers: {
- [name: string]: unknown;
- };
- content?: never;
- };
- };
- };
- VotesController_removeVote: {
- parameters: {
- query?: never;
- header?: never;
- path: {
- projectId: string;
- entityType: string;
- };
- cookie?: never;
- };
- requestBody?: never;
- responses: {
- 200: {
- headers: {
- [name: string]: unknown;
- };
- content?: never;
- };
- };
- };
- VotesController_getVoteCounts: {
- parameters: {
- query?: never;
- header?: never;
- path: {
- projectId: string;
- entityType: string;
- };
- cookie?: never;
- };
- requestBody?: never;
- responses: {
- 200: {
- headers: {
- [name: string]: unknown;
- };
- content?: never;
- };
- };
- };
- VotesController_getUserVote: {
- parameters: {
- query?: never;
- header?: never;
- path: {
- projectId: string;
- entityType: string;
- };
- cookie?: never;
- };
- requestBody?: never;
- responses: {
- 200: {
- headers: {
- [name: string]: unknown;
- };
- content?: never;
- };
- };
- };
- VotesController_getProjectVotes: {
- parameters: {
- query?: {
- entityType?:
- | 'PROJECT'
- | 'CROWDFUNDING_CAMPAIGN'
- | 'HACKATHON_SUBMISSION'
- | 'GRANT';
- voteType?: 'UPVOTE' | 'DOWNVOTE';
- limit?: number;
- offset?: number;
- /** @description Include voter list and vote counts in response */
- includeVoters?: boolean;
- };
- header?: never;
- path: {
- projectId: string;
- };
- cookie?: never;
- };
- requestBody?: never;
- responses: {
- 200: {
- headers: {
- [name: string]: unknown;
- };
- content?: never;
- };
- };
- };
- LeaderboardController_getLeaderboard: {
- parameters: {
- query?: {
- /** @description Filter by reputation tier */
- tier?: 'NEWCOMER' | 'CONTRIBUTOR' | 'ESTABLISHED' | 'EXPERT' | 'LEGEND';
- /** @description Time window for score aggregation */
- timeframe?: 'ALL_TIME' | 'THIS_MONTH' | 'THIS_WEEK' | 'THIS_DAY';
- /** @description Items per page, max 50 (default: 20) */
- limit?: number;
- /** @description Page number (default: 1) */
- page?: number;
- };
- header?: never;
- path?: never;
- cookie?: never;
- };
- requestBody?: never;
- responses: {
- /** @description Leaderboard retrieved successfully */
- 200: {
- headers: {
- [name: string]: unknown;
- };
- content?: never;
- };
- };
- };
- BlogPostsController_listBlogPosts: {
- parameters: {
- query?: {
- /** @description Author ID to filter posts */
- authorId?: string;
- /** @description Post status to filter */
- status?: 'DRAFT' | 'PUBLISHED' | 'ARCHIVED' | 'SCHEDULED';
- /** @description Search query for post title/content */
- search?: string;
- /** @description Filter by tags (comma-separated) */
- tags?: string;
- /** @description Filter by categories (comma-separated) */
- categories?: string;
- /** @description Include only featured posts */
- isFeatured?: boolean;
- /** @description Include pinned posts first */
- includePinned?: boolean;
- /** @description Page number */
- page?: number;
- /** @description Number of items per page */
- limit?: number;
- /** @description Sort field */
- sortBy?:
- | 'createdAt'
- | 'updatedAt'
- | 'publishedAt'
- | 'viewCount'
- | 'title';
- /** @description Sort order */
- sortOrder?: 'asc' | 'desc';
- };
- header?: never;
- path?: never;
- cookie?: never;
- };
- requestBody?: never;
- responses: {
- /** @description Blog posts retrieved successfully */
- 200: {
- headers: {
- [name: string]: unknown;
- };
- content?: never;
- };
- };
- };
- BlogPostsController_createBlogPost: {
- parameters: {
- query?: never;
- header?: never;
- path?: never;
- cookie?: never;
- };
- requestBody: {
- content: {
- 'application/json': components['schemas']['CreateBlogPostDto'];
- };
- };
- responses: {
- /** @description Blog post created successfully */
- 201: {
- headers: {
- [name: string]: unknown;
- };
- content?: never;
- };
- /** @description Invalid input */
- 400: {
- headers: {
- [name: string]: unknown;
- };
- content?: never;
- };
- /** @description Forbidden */
- 403: {
- headers: {
- [name: string]: unknown;
- };
- content?: never;
- };
- /** @description Rate limit exceeded */
- 429: {
- headers: {
- [name: string]: unknown;
- };
- content?: never;
- };
- };
- };
- BlogPostsController_getBlogPostById: {
- parameters: {
- query?: never;
- header?: never;
- path: {
- /** @description Blog post ID */
- id: string;
- };
- cookie?: never;
- };
- requestBody?: never;
- responses: {
- /** @description Blog post retrieved successfully */
- 200: {
- headers: {
- [name: string]: unknown;
- };
- content?: never;
- };
- /** @description Post is not published */
- 403: {
- headers: {
- [name: string]: unknown;
- };
- content?: never;
- };
- /** @description Blog post not found */
- 404: {
- headers: {
- [name: string]: unknown;
- };
- content?: never;
- };
- };
- };
- BlogPostsController_getBlogPostBySlug: {
- parameters: {
- query?: never;
- header?: never;
- path: {
- /** @description Blog post slug */
- slug: string;
- };
- cookie?: never;
- };
- requestBody?: never;
- responses: {
- /** @description Blog post retrieved successfully */
- 200: {
- headers: {
- [name: string]: unknown;
- };
- content?: never;
- };
- /** @description Post is not published */
- 403: {
- headers: {
- [name: string]: unknown;
- };
- content?: never;
- };
- /** @description Blog post not found */
- 404: {
- headers: {
- [name: string]: unknown;
- };
- content?: never;
- };
- };
- };
- BlogPostsController_getRelatedPosts: {
- parameters: {
- query: {
- limit: string;
- };
- header?: never;
- path: {
- /** @description Blog post ID */
- id: string;
- };
- cookie?: never;
- };
- requestBody?: never;
- responses: {
- /** @description Related posts retrieved successfully */
- 200: {
- headers: {
- [name: string]: unknown;
- };
- content?: never;
- };
- /** @description Blog post not found */
- 404: {
- headers: {
- [name: string]: unknown;
- };
- content?: never;
- };
- };
- };
- BlogPostsController_updateBlogPost: {
- parameters: {
- query?: never;
- header?: never;
- path: {
- /** @description Blog post ID */
- id: string;
- };
- cookie?: never;
- };
- requestBody: {
- content: {
- 'application/json': components['schemas']['UpdateBlogPostDto'];
- };
- };
- responses: {
- /** @description Blog post updated successfully */
- 200: {
- headers: {
- [name: string]: unknown;
- };
- content?: never;
- };
- /** @description Forbidden */
- 403: {
- headers: {
- [name: string]: unknown;
- };
- content?: never;
- };
- /** @description Blog post not found */
- 404: {
- headers: {
- [name: string]: unknown;
- };
- content?: never;
- };
- };
- };
- BlogPostsController_deleteBlogPost: {
- parameters: {
- query?: never;
- header?: never;
- path: {
- /** @description Blog post ID */
- id: string;
- };
- cookie?: never;
- };
- requestBody?: never;
- responses: {
- /** @description Blog post deleted successfully */
- 204: {
- headers: {
- [name: string]: unknown;
- };
- content?: never;
- };
- /** @description Forbidden */
- 403: {
- headers: {
- [name: string]: unknown;
- };
- content?: never;
- };
- /** @description Blog post not found */
- 404: {
- headers: {
- [name: string]: unknown;
- };
- content?: never;
- };
- };
- };
- AiController_generateExcerpt: {
- parameters: {
- query?: never;
- header?: never;
- path?: never;
- cookie?: never;
- };
- requestBody: {
- content: {
- 'application/json': {
- content: string;
- };
- };
- };
- responses: {
- /** @description Excerpt generated successfully */
- 200: {
- headers: {
- [name: string]: unknown;
- };
- content?: never;
- };
- };
- };
- AiController_generateReadingTime: {
- parameters: {
- query?: never;
- header?: never;
- path?: never;
- cookie?: never;
- };
- requestBody: {
- content: {
- 'application/json': {
- content: string;
- };
- };
- };
- responses: {
- /** @description Reading time generated successfully */
- 200: {
- headers: {
- [name: string]: unknown;
- };
- content?: never;
- };
- };
- };
- AiController_generateSEO: {
- parameters: {
- query?: never;
- header?: never;
- path?: never;
- cookie?: never;
- };
- requestBody: {
- content: {
- 'application/json': {
- content: string;
- };
- };
- };
- responses: {
- /** @description SEO settings generated successfully */
- 200: {
- headers: {
- [name: string]: unknown;
- };
- content?: never;
- };
- };
- };
- AiController_generateTags: {
- parameters: {
- query?: never;
- header?: never;
- path?: never;
- cookie?: never;
- };
- requestBody: {
- content: {
- 'application/json': {
- content: string;
- };
- };
- };
- responses: {
- /** @description Tags generated successfully */
- 200: {
- headers: {
- [name: string]: unknown;
- };
- content?: never;
- };
- };
- };
- AiController_generateCategory: {
- parameters: {
- query?: never;
- header?: never;
- path?: never;
- cookie?: never;
- };
- requestBody: {
- content: {
- 'application/json': {
- content: string;
- };
- };
- };
- responses: {
- /** @description Category generated successfully */
- 200: {
- headers: {
- [name: string]: unknown;
- };
- content?: never;
- };
- };
- };
- AdminController_getOverview: {
- parameters: {
- query?: {
- /** @description Time range for the overview data */
- timeRange?: '7d' | '30d' | '90d';
- };
- header?: never;
- path?: never;
- cookie?: never;
- };
- requestBody?: never;
- responses: {
- /** @description Overview data retrieved successfully */
- 200: {
- headers: {
- [name: string]: unknown;
- };
- content: {
- 'application/json': components['schemas']['AdminOverviewResponseDto'];
- };
- };
- /** @description Unauthorized - Authentication required */
- 401: {
- headers: {
- [name: string]: unknown;
- };
- content?: never;
- };
- /** @description Forbidden - Admin access required */
- 403: {
- headers: {
- [name: string]: unknown;
- };
- content?: never;
- };
- /** @description Internal server error */
- 500: {
- headers: {
- [name: string]: unknown;
- };
- content?: never;
- };
- };
- };
- AdminController_getUsers: {
- parameters: {
- query?: {
- /** @description Page number */
- page?: number;
- /** @description Items per page */
- limit?: number;
- /** @description Search by name, email, or username */
- search?: string;
- /** @description Filter by user role */
- role?: string;
- /** @description Filter by active status (not banned) */
- isActive?: boolean;
- };
- header?: never;
- path?: never;
- cookie?: never;
- };
- requestBody?: never;
- responses: {
- /** @description Users retrieved successfully */
- 200: {
- headers: {
- [name: string]: unknown;
- };
- content?: never;
- };
- /** @description Unauthorized - Authentication required */
- 401: {
- headers: {
- [name: string]: unknown;
- };
- content?: never;
- };
- /** @description Forbidden - Admin access required */
- 403: {
- headers: {
- [name: string]: unknown;
- };
- content?: never;
- };
- };
- };
- AdminController_exportUsers: {
- parameters: {
- query?: never;
- header?: never;
- path?: never;
- cookie?: never;
- };
- requestBody?: never;
- responses: {
- /** @description CSV file download */
- 200: {
- headers: {
- [name: string]: unknown;
- };
- content?: never;
- };
- /** @description Unauthorized - Authentication required */
- 401: {
- headers: {
- [name: string]: unknown;
- };
- content?: never;
- };
- /** @description Forbidden - Admin access required */
- 403: {
- headers: {
- [name: string]: unknown;
- };
- content?: never;
- };
- };
- };
- AdminController_getUserDetails: {
- parameters: {
- query?: never;
- header?: never;
- path: {
- /** @description User username or ID */
- usernameOrId: string;
- };
- cookie?: never;
- };
- requestBody?: never;
- responses: {
- /** @description User details retrieved successfully */
- 200: {
- headers: {
- [name: string]: unknown;
- };
- content?: never;
- };
- /** @description Unauthorized - Authentication required */
- 401: {
- headers: {
- [name: string]: unknown;
- };
- content?: never;
- };
- /** @description Forbidden - Admin access required */
- 403: {
- headers: {
- [name: string]: unknown;
- };
- content?: never;
- };
- /** @description User not found */
- 404: {
- headers: {
- [name: string]: unknown;
- };
- content?: never;
- };
- };
- };
- AdminController_getUserStats: {
- parameters: {
- query?: never;
- header?: never;
- path: {
- /** @description User username or ID */
- usernameOrId: string;
- };
- cookie?: never;
- };
- requestBody?: never;
- responses: {
- /** @description User statistics retrieved successfully */
- 200: {
- headers: {
- [name: string]: unknown;
- };
- content?: never;
- };
- /** @description Unauthorized - Authentication required */
- 401: {
- headers: {
- [name: string]: unknown;
- };
- content?: never;
- };
- /** @description Forbidden - Admin access required */
- 403: {
- headers: {
- [name: string]: unknown;
- };
- content?: never;
- };
- /** @description User not found */
- 404: {
- headers: {
- [name: string]: unknown;
- };
- content?: never;
- };
- };
- };
- AdminController_getUserActivity: {
- parameters: {
- query?: {
- /** @description Page number */
- page?: number;
- /** @description Items per page */
- limit?: number;
- };
- header?: never;
- path: {
- /** @description User username or ID */
- usernameOrId: string;
- };
- cookie?: never;
- };
- requestBody?: never;
- responses: {
- /** @description User activity retrieved successfully */
- 200: {
- headers: {
- [name: string]: unknown;
- };
- content?: never;
- };
- /** @description Unauthorized - Authentication required */
- 401: {
- headers: {
- [name: string]: unknown;
- };
- content?: never;
- };
- /** @description Forbidden - Admin access required */
- 403: {
- headers: {
- [name: string]: unknown;
- };
- content?: never;
- };
- /** @description User not found */
- 404: {
- headers: {
- [name: string]: unknown;
- };
- content?: never;
- };
- };
- };
- AdminController_getUserProjects: {
- parameters: {
- query?: {
- /** @description Page number */
- page?: number;
- /** @description Items per page */
- limit?: number;
- /** @description Filter by project status */
- status?: string;
- /** @description Filter by project category */
- category?: string;
- };
- header?: never;
- path: {
- /** @description User username or ID */
- usernameOrId: string;
- };
- cookie?: never;
- };
- requestBody?: never;
- responses: {
- /** @description User projects retrieved successfully */
- 200: {
- headers: {
- [name: string]: unknown;
- };
- content?: never;
- };
- /** @description Unauthorized - Authentication required */
- 401: {
- headers: {
- [name: string]: unknown;
- };
- content?: never;
- };
- /** @description Forbidden - Admin access required */
- 403: {
- headers: {
- [name: string]: unknown;
- };
- content?: never;
- };
- /** @description User not found */
- 404: {
- headers: {
- [name: string]: unknown;
- };
- content?: never;
- };
- };
- };
- AdminController_getOrganizations: {
- parameters: {
- query?: {
- /** @description Page number */
- page?: number;
- /** @description Items per page */
- limit?: number;
- /** @description Search by organization name or slug */
- search?: string;
- };
- header?: never;
- path?: never;
- cookie?: never;
- };
- requestBody?: never;
- responses: {
- /** @description Organizations retrieved successfully */
- 200: {
- headers: {
- [name: string]: unknown;
- };
- content?: never;
- };
- /** @description Unauthorized - Authentication required */
- 401: {
- headers: {
- [name: string]: unknown;
- };
- content?: never;
- };
- /** @description Forbidden - Admin access required */
- 403: {
- headers: {
- [name: string]: unknown;
- };
- content?: never;
- };
- };
- };
- AdminController_getOrganizationDetails: {
- parameters: {
- query?: never;
- header?: never;
- path: {
- /** @description Organization ID */
- orgId: string;
- };
- cookie?: never;
- };
- requestBody?: never;
- responses: {
- /** @description Organization details retrieved successfully */
- 200: {
- headers: {
- [name: string]: unknown;
- };
- content?: never;
- };
- /** @description Unauthorized - Authentication required */
- 401: {
- headers: {
- [name: string]: unknown;
- };
- content?: never;
- };
- /** @description Forbidden - Admin access required */
- 403: {
- headers: {
- [name: string]: unknown;
- };
- content?: never;
- };
- /** @description Organization not found */
- 404: {
- headers: {
- [name: string]: unknown;
- };
- content?: never;
- };
- };
- };
- AdminController_getUserOrganizations: {
- parameters: {
- query?: never;
- header?: never;
- path: {
- /** @description User username or ID */
- usernameOrId: string;
- };
- cookie?: never;
- };
- requestBody?: never;
- responses: {
- /** @description User organizations retrieved successfully */
- 200: {
- headers: {
- [name: string]: unknown;
- };
- content?: never;
- };
- /** @description Unauthorized - Authentication required */
- 401: {
- headers: {
- [name: string]: unknown;
- };
- content?: never;
- };
- /** @description Forbidden - Admin access required */
- 403: {
- headers: {
- [name: string]: unknown;
- };
- content?: never;
- };
- /** @description User not found */
- 404: {
- headers: {
- [name: string]: unknown;
- };
- content?: never;
- };
- };
- };
- AdminBlogsController_listAllBlogPosts: {
- parameters: {
- query?: {
- /** @description Author ID to filter posts */
- authorId?: string;
- /** @description Post status to filter */
- status?: 'DRAFT' | 'PUBLISHED' | 'ARCHIVED' | 'SCHEDULED';
- /** @description Search query for post title/content */
- search?: string;
- /** @description Filter by tags (comma-separated) */
- tags?: string;
- /** @description Filter by categories (comma-separated) */
- categories?: string;
- /** @description Include only featured posts */
- isFeatured?: boolean;
- /** @description Include pinned posts first */
- includePinned?: boolean;
- /** @description Page number */
- page?: number;
- /** @description Number of items per page */
- limit?: number;
- /** @description Sort field */
- sortBy?:
- | 'createdAt'
- | 'updatedAt'
- | 'publishedAt'
- | 'viewCount'
- | 'title';
- /** @description Sort order */
- sortOrder?: 'asc' | 'desc';
- };
- header?: never;
- path?: never;
- cookie?: never;
- };
- requestBody?: never;
- responses: {
- /** @description Blog posts retrieved successfully */
- 200: {
- headers: {
- [name: string]: unknown;
- };
- content?: never;
- };
- };
- };
- AdminBlogsController_createBlogPost: {
- parameters: {
- query?: never;
- header?: never;
- path?: never;
- cookie?: never;
- };
- requestBody: {
- content: {
- 'application/json': components['schemas']['CreateBlogPostDto'];
- };
- };
- responses: {
- /** @description Blog post created successfully */
- 201: {
- headers: {
- [name: string]: unknown;
- };
- content?: never;
- };
- /** @description Invalid input */
- 400: {
- headers: {
- [name: string]: unknown;
- };
- content?: never;
- };
- /** @description Forbidden - Admin access required */
- 403: {
- headers: {
- [name: string]: unknown;
- };
- content?: never;
- };
- /** @description Rate limit exceeded */
- 429: {
- headers: {
- [name: string]: unknown;
- };
- content?: never;
- };
- };
- };
- AdminBlogsController_getBlogPostById: {
- parameters: {
- query?: never;
- header?: never;
- path: {
- /** @description Blog post ID */
- id: string;
- };
- cookie?: never;
- };
- requestBody?: never;
- responses: {
- /** @description Blog post retrieved successfully */
- 200: {
- headers: {
- [name: string]: unknown;
- };
- content?: never;
- };
- /** @description Blog post not found */
- 404: {
- headers: {
- [name: string]: unknown;
- };
- content?: never;
- };
- };
- };
- AdminBlogsController_updateBlogPost: {
- parameters: {
- query?: never;
- header?: never;
- path: {
- /** @description Blog post ID */
- id: string;
- };
- cookie?: never;
- };
- requestBody: {
- content: {
- 'application/json': components['schemas']['UpdateBlogPostDto'];
- };
- };
- responses: {
- /** @description Blog post updated successfully */
- 200: {
- headers: {
- [name: string]: unknown;
- };
- content?: never;
- };
- /** @description Forbidden - Admin access required */
- 403: {
- headers: {
- [name: string]: unknown;
- };
- content?: never;
- };
- /** @description Blog post not found */
- 404: {
- headers: {
- [name: string]: unknown;
- };
- content?: never;
- };
- };
- };
- AdminBlogsController_deleteBlogPost: {
- parameters: {
- query?: never;
- header?: never;
- path: {
- /** @description Blog post ID */
- id: string;
- };
- cookie?: never;
- };
- requestBody?: never;
- responses: {
- /** @description Blog post deleted successfully */
- 204: {
- headers: {
- [name: string]: unknown;
- };
- content?: never;
- };
- /** @description Blog post not found */
- 404: {
- headers: {
- [name: string]: unknown;
- };
- content?: never;
- };
- };
- };
- AdminBlogsController_permanentlyDeleteBlogPost: {
- parameters: {
- query?: never;
- header?: never;
- path: {
- /** @description Blog post ID */
- id: string;
- };
- cookie?: never;
- };
- requestBody?: never;
- responses: {
- /** @description Blog post permanently deleted successfully */
- 204: {
- headers: {
- [name: string]: unknown;
- };
- content?: never;
- };
- /** @description Blog post not found */
- 404: {
- headers: {
- [name: string]: unknown;
- };
- content?: never;
- };
- };
- };
- AdminBlogsController_restoreBlogPost: {
- parameters: {
- query?: never;
- header?: never;
- path: {
- /** @description Blog post ID */
- id: string;
- };
- cookie?: never;
- };
- requestBody?: never;
- responses: {
- /** @description Blog post restored successfully */
- 200: {
- headers: {
- [name: string]: unknown;
- };
- content?: never;
- };
- /** @description Blog post not found */
- 404: {
- headers: {
- [name: string]: unknown;
- };
- content?: never;
- };
- };
- };
- AdminBlogsController_getAllTags: {
- parameters: {
- query: {
- limit: string;
- };
- header?: never;
- path?: never;
- cookie?: never;
- };
- requestBody?: never;
- responses: {
- /** @description Tags retrieved successfully */
- 200: {
- headers: {
- [name: string]: unknown;
- };
- content?: never;
- };
- };
- };
- AdminBlogsController_getTagBySlug: {
- parameters: {
- query?: never;
- header?: never;
- path: {
- /** @description Tag slug */
- slug: string;
- };
- cookie?: never;
- };
- requestBody?: never;
- responses: {
- /** @description Tag retrieved successfully */
- 200: {
- headers: {
- [name: string]: unknown;
- };
- content?: never;
- };
- /** @description Tag not found */
- 404: {
- headers: {
- [name: string]: unknown;
- };
- content?: never;
- };
- };
- };
- AdminBlogsController_deleteUnusedTags: {
- parameters: {
- query?: never;
- header?: never;
- path?: never;
- cookie?: never;
- };
- requestBody?: never;
- responses: {
- /** @description Unused tags deleted successfully */
- 200: {
- headers: {
- [name: string]: unknown;
- };
- content?: never;
- };
- };
- };
- AdminBlogsController_publishScheduledPosts: {
- parameters: {
- query?: never;
- header?: never;
- path?: never;
- cookie?: never;
- };
- requestBody?: never;
- responses: {
- /** @description Scheduled posts published successfully */
- 200: {
- headers: {
- [name: string]: unknown;
- };
- content?: never;
- };
- };
- };
- AdminCrowdfundingController_list: {
- parameters: {
- query?: {
- limit?: unknown;
- page?: unknown;
- };
- header?: never;
- path?: never;
- cookie?: never;
- };
- requestBody?: never;
- responses: {
- /** @description List of campaigns */
- 200: {
- headers: {
- [name: string]: unknown;
- };
- content?: never;
- };
- };
- };
- AdminCrowdfundingController_listByUser: {
- parameters: {
- query?: {
- limit?: unknown;
- page?: unknown;
- };
- header?: never;
- path: {
- /** @description Username or User ID */
- usernameOrId: string;
- };
- cookie?: never;
- };
- requestBody?: never;
- responses: {
- /** @description List of campaigns by user */
- 200: {
- headers: {
- [name: string]: unknown;
- };
- content?: never;
- };
- /** @description User not found */
- 404: {
- headers: {
- [name: string]: unknown;
- };
- content?: never;
- };
- };
- };
- AdminCrowdfundingController_getCampaign: {
- parameters: {
- query?: never;
- header?: never;
- path: {
- /** @description Campaign ID */
- campaignId: string;
- };
- cookie?: never;
- };
- requestBody?: never;
- responses: {
- /** @description Campaign details */
- 200: {
- headers: {
- [name: string]: unknown;
- };
- content?: never;
- };
- /** @description Campaign not found */
- 404: {
- headers: {
- [name: string]: unknown;
- };
- content?: never;
- };
- };
- };
- AdminCrowdfundingController_listPending: {
- parameters: {
- query?: {
- limit?: unknown;
- page?: unknown;
- };
- header?: never;
- path?: never;
- cookie?: never;
- };
- requestBody?: never;
- responses: {
- /** @description List of pending campaigns */
- 200: {
- headers: {
- [name: string]: unknown;
- };
- content?: never;
- };
- };
- };
- AdminCrowdfundingController_approve: {
- parameters: {
- query?: never;
- header?: never;
- path: {
- campaignId: string;
- };
- cookie?: never;
- };
- requestBody?: never;
- responses: {
- /** @description Campaign approved */
- 200: {
- headers: {
- [name: string]: unknown;
- };
- content?: never;
- };
- };
- };
- AdminCrowdfundingController_reject: {
- parameters: {
- query?: never;
- header?: never;
- path: {
- campaignId: string;
- };
- cookie?: never;
- };
- requestBody: {
- content: {
- 'application/json': components['schemas']['AdminCrowdfundingRejectDto'];
- };
- };
- responses: {
- /** @description Campaign rejected */
- 200: {
- headers: {
- [name: string]: unknown;
- };
- content?: never;
- };
- };
- };
- AdminCrowdfundingController_requestRevision: {
- parameters: {
- query?: never;
- header?: never;
- path: {
- campaignId: string;
- };
- cookie?: never;
- };
- requestBody: {
- content: {
- 'application/json': components['schemas']['AdminCrowdfundingRequestRevisionDto'];
- };
- };
- responses: {
- /** @description Revision request created */
- 200: {
- headers: {
- [name: string]: unknown;
- };
- content?: never;
- };
- /** @description Campaign not found */
- 404: {
- headers: {
- [name: string]: unknown;
- };
- content?: never;
- };
- };
- };
- AdminCrowdfundingController_addReviewNote: {
- parameters: {
- query?: never;
- header?: never;
- path: {
- campaignId: string;
- };
- cookie?: never;
- };
- requestBody: {
- content: {
- 'application/json': components['schemas']['AdminCrowdfundingNoteDto'];
- };
- };
- responses: {
- /** @description Review note added */
- 200: {
- headers: {
- [name: string]: unknown;
- };
- content?: never;
- };
- /** @description Campaign not found */
- 404: {
- headers: {
- [name: string]: unknown;
- };
- content?: never;
- };
- };
- };
- AdminCrowdfundingController_assignReviewer: {
- parameters: {
- query?: never;
- header?: never;
- path: {
- campaignId: string;
- };
- cookie?: never;
- };
- requestBody: {
- content: {
- 'application/json': components['schemas']['AdminCrowdfundingAssignDto'];
- };
- };
- responses: {
- /** @description Reviewer assigned */
- 200: {
- headers: {
- [name: string]: unknown;
- };
- content?: never;
- };
- /** @description Campaign not found */
- 404: {
- headers: {
- [name: string]: unknown;
- };
- content?: never;
- };
- };
- };
- AdminMilestonesController_listAllMilestonesByCampaign: {
- parameters: {
- query?: {
- /** @description Page number */
- page?: number;
- /** @description Items per page */
- limit?: number;
- /** @description Filter by review status */
- status?:
- | 'PENDING'
- | 'SUBMITTED'
- | 'UNDER_REVIEW'
- | 'APPROVED'
- | 'REJECTED'
- | 'RESUBMISSION_REQUIRED';
- /** @description Sort by field */
- sortBy?:
- | 'submittedAt'
- | 'campaignSize'
- | 'creatorReputation'
- | 'createdAt';
- /** @description Filter by campaign ID */
- campaignId?: string;
- };
- header?: never;
- path?: never;
- cookie?: never;
- };
- requestBody?: never;
- responses: {
- /** @description List of campaigns with their milestones */
- 200: {
- headers: {
- [name: string]: unknown;
- };
- content?: never;
- };
- };
- };
- AdminMilestonesController_listPendingMilestones: {
- parameters: {
- query?: {
- /** @description Page number */
- page?: number;
- /** @description Items per page */
- limit?: number;
- /** @description Filter by review status */
- status?:
- | 'PENDING'
- | 'SUBMITTED'
- | 'UNDER_REVIEW'
- | 'APPROVED'
- | 'REJECTED'
- | 'RESUBMISSION_REQUIRED';
- /** @description Sort by field */
- sortBy?:
- | 'submittedAt'
- | 'campaignSize'
- | 'creatorReputation'
- | 'createdAt';
- /** @description Filter by campaign ID */
- campaignId?: string;
- };
- header?: never;
- path?: never;
- cookie?: never;
- };
- requestBody?: never;
- responses: {
- /** @description List of pending milestones */
- 200: {
- headers: {
- [name: string]: unknown;
- };
- content?: never;
- };
- };
- };
- AdminMilestonesController_getMilestoneForReview: {
- parameters: {
- query?: never;
- header?: never;
- path: {
- milestoneId: string;
- };
- cookie?: never;
- };
- requestBody?: never;
- responses: {
- /** @description Milestone details */
- 200: {
- headers: {
- [name: string]: unknown;
- };
- content?: never;
- };
- /** @description Milestone not found */
- 404: {
- headers: {
- [name: string]: unknown;
- };
- content?: never;
- };
- };
- };
- AdminMilestonesController_approveMilestone: {
- parameters: {
- query?: never;
- header?: never;
- path: {
- milestoneId: string;
- };
- cookie?: never;
- };
- requestBody: {
- content: {
- 'application/json': components['schemas']['ApproveMilestoneDto'];
- };
- };
- responses: {
- /** @description Milestone approved */
- 200: {
- headers: {
- [name: string]: unknown;
- };
- content?: never;
- };
- /** @description Milestone not found */
- 404: {
- headers: {
- [name: string]: unknown;
- };
- content?: never;
- };
- };
- };
- AdminMilestonesController_rejectMilestone: {
- parameters: {
- query?: never;
- header?: never;
- path: {
- milestoneId: string;
- };
- cookie?: never;
- };
- requestBody: {
- content: {
- 'application/json': components['schemas']['RejectMilestoneDto'];
- };
- };
- responses: {
- /** @description Milestone rejected */
- 200: {
- headers: {
- [name: string]: unknown;
- };
- content?: never;
- };
- /** @description Milestone not found */
- 404: {
- headers: {
- [name: string]: unknown;
- };
- content?: never;
- };
- };
- };
- AdminMilestonesController_requestResubmission: {
- parameters: {
- query?: never;
- header?: never;
- path: {
- milestoneId: string;
- };
- cookie?: never;
- };
- requestBody: {
- content: {
- 'application/json': components['schemas']['RequestMilestoneResubmissionDto'];
- };
- };
- responses: {
- /** @description Resubmission requested */
- 200: {
- headers: {
- [name: string]: unknown;
- };
- content?: never;
- };
- /** @description Milestone not found */
- 404: {
- headers: {
- [name: string]: unknown;
- };
- content?: never;
- };
- };
- };
- AdminMilestonesController_addReviewNote: {
- parameters: {
- query?: never;
- header?: never;
- path: {
- milestoneId: string;
- };
- cookie?: never;
- };
- requestBody: {
- content: {
- 'application/json': components['schemas']['AddMilestoneReviewNoteDto'];
- };
- };
- responses: {
- /** @description Review note added */
- 201: {
- headers: {
- [name: string]: unknown;
- };
- content?: never;
- };
- /** @description Milestone not found */
- 404: {
- headers: {
- [name: string]: unknown;
- };
- content?: never;
- };
- };
- };
- AdminEscrowController_getEscrowInfo: {
- parameters: {
- query?: never;
- header?: never;
- path: {
- campaignId: string;
- };
- cookie?: never;
- };
- requestBody?: never;
- responses: {
- /** @description Escrow information */
- 200: {
- headers: {
- [name: string]: unknown;
- };
- content?: never;
- };
- /** @description Campaign not found */
- 404: {
- headers: {
- [name: string]: unknown;
- };
- content?: never;
- };
- };
- };
- AdminEscrowController_executeEscrowAction: {
- parameters: {
- query?: never;
- header?: never;
- path: {
- campaignId: string;
- };
- cookie?: never;
- };
- requestBody: {
- content: {
- 'application/json': components['schemas']['ManualEscrowActionDto'];
- };
- };
- responses: {
- /** @description Escrow action executed */
- 200: {
- headers: {
- [name: string]: unknown;
- };
- content?: never;
- };
- /** @description Campaign not found */
- 404: {
- headers: {
- [name: string]: unknown;
- };
- content?: never;
- };
- };
- };
- AdminDisputesController_listDisputes: {
- parameters: {
- query?: {
- /** @description Page number */
- page?: number;
- /** @description Items per page */
- limit?: number;
- /** @description Filter by dispute status */
- status?:
- | 'OPEN'
- | 'UNDER_REVIEW'
- | 'AWAITING_RESPONSE'
- | 'RESOLVED'
- | 'ESCALATED'
- | 'CLOSED';
- /** @description Filter by campaign ID */
- campaignId?: string;
- };
- header?: never;
- path?: never;
- cookie?: never;
- };
- requestBody?: never;
- responses: {
- /** @description List of disputes */
- 200: {
- headers: {
- [name: string]: unknown;
- };
- content?: never;
- };
- };
- };
- AdminDisputesController_getDisputeDetail: {
- parameters: {
- query?: never;
- header?: never;
- path: {
- disputeId: string;
- };
- cookie?: never;
- };
- requestBody?: never;
- responses: {
- /** @description Dispute details */
- 200: {
- headers: {
- [name: string]: unknown;
- };
- content?: never;
- };
- /** @description Dispute not found */
- 404: {
- headers: {
- [name: string]: unknown;
- };
- content?: never;
- };
- };
- };
- AdminDisputesController_assignDispute: {
- parameters: {
- query?: never;
- header?: never;
- path: {
- disputeId: string;
- };
- cookie?: never;
- };
- requestBody: {
- content: {
- 'application/json': components['schemas']['AssignDisputeDto'];
- };
- };
- responses: {
- /** @description Dispute assigned */
- 200: {
- headers: {
- [name: string]: unknown;
- };
- content?: never;
- };
- /** @description Dispute not found */
- 404: {
- headers: {
- [name: string]: unknown;
- };
- content?: never;
- };
- };
- };
- AdminDisputesController_addDisputeNote: {
- parameters: {
- query?: never;
- header?: never;
- path: {
- disputeId: string;
- };
- cookie?: never;
- };
- requestBody: {
- content: {
- 'application/json': components['schemas']['AddDisputeNoteDto'];
- };
- };
- responses: {
- /** @description Note added */
- 201: {
- headers: {
- [name: string]: unknown;
- };
- content?: never;
- };
- /** @description Dispute not found */
- 404: {
- headers: {
- [name: string]: unknown;
- };
- content?: never;
- };
- };
- };
- AdminDisputesController_resolveDispute: {
- parameters: {
- query?: never;
- header?: never;
- path: {
- disputeId: string;
- };
- cookie?: never;
- };
- requestBody: {
- content: {
- 'application/json': components['schemas']['ResolveDisputeDto'];
- };
- };
- responses: {
- /** @description Dispute resolved */
- 200: {
- headers: {
- [name: string]: unknown;
- };
- content?: never;
- };
- /** @description Dispute not found */
- 404: {
- headers: {
- [name: string]: unknown;
- };
- content?: never;
- };
- };
- };
- AdminDisputesController_escalateDispute: {
- parameters: {
- query?: never;
- header?: never;
- path: {
- disputeId: string;
- };
- cookie?: never;
- };
- requestBody: {
- content: {
- 'application/json': components['schemas']['EscalateDisputeDto'];
- };
- };
- responses: {
- /** @description Dispute escalated */
- 200: {
- headers: {
- [name: string]: unknown;
- };
- content?: never;
- };
- /** @description Dispute not found */
- 404: {
- headers: {
- [name: string]: unknown;
- };
- content?: never;
- };
- };
- };
- AdminManualProjectsController_listPendingManualProjects: {
- parameters: {
- query?: {
- page?: number;
- limit?: number;
- };
- header?: never;
- path?: never;
- cookie?: never;
- };
- requestBody?: never;
- responses: {
- 200: {
- headers: {
- [name: string]: unknown;
- };
- content?: never;
- };
- };
- };
- AdminManualProjectsController_approveManualProject: {
- parameters: {
- query?: never;
- header?: never;
- path: {
- /** @description Project ID */
- projectId: string;
- };
- cookie?: never;
- };
- requestBody?: never;
- responses: {
- 201: {
- headers: {
- [name: string]: unknown;
- };
- content?: never;
- };
- };
- };
- AdminManualProjectsController_rejectManualProject: {
- parameters: {
- query?: never;
- header?: never;
- path: {
- /** @description Project ID */
- projectId: string;
- };
- cookie?: never;
- };
- requestBody: {
- content: {
- 'application/json': components['schemas']['RejectManualProjectDto'];
- };
- };
- responses: {
- 201: {
- headers: {
- [name: string]: unknown;
- };
- content?: never;
- };
- };
- };
- AdminManualProjectsController_requestChanges: {
- parameters: {
- query?: never;
- header?: never;
- path: {
- /** @description Project ID */
- projectId: string;
- };
- cookie?: never;
- };
- requestBody: {
- content: {
- 'application/json': components['schemas']['RequestManualProjectChangesDto'];
- };
- };
- responses: {
- 201: {
- headers: {
- [name: string]: unknown;
- };
- content?: never;
- };
- };
- };
- AdminProjectEditsController_listPendingProjectEdits: {
- parameters: {
- query?: {
- page?: number;
- limit?: number;
- };
- header?: never;
- path?: never;
- cookie?: never;
- };
- requestBody?: never;
- responses: {
- 200: {
- headers: {
- [name: string]: unknown;
- };
- content?: never;
- };
- };
- };
- AdminProjectEditsController_approveProjectEdit: {
- parameters: {
- query?: never;
- header?: never;
- path: {
- /** @description ProjectEdit ID */
- editId: string;
- };
- cookie?: never;
- };
- requestBody?: never;
- responses: {
- 201: {
- headers: {
- [name: string]: unknown;
- };
- content?: never;
- };
- };
- };
- AdminProjectEditsController_rejectProjectEdit: {
- parameters: {
- query?: never;
- header?: never;
- path: {
- /** @description ProjectEdit ID */
- editId: string;
- };
- cookie?: never;
- };
- requestBody: {
- content: {
- 'application/json': components['schemas']['RejectProjectEditDto'];
- };
- };
- responses: {
- 201: {
- headers: {
- [name: string]: unknown;
- };
- content?: never;
- };
- };
- };
- AdminWalletsController_getStats: {
- parameters: {
- query?: {
- timeRange?: '7d' | '30d' | '90d';
- };
- header?: never;
- path?: never;
- cookie?: never;
- };
- requestBody?: never;
- responses: {
- default: {
- headers: {
- [name: string]: unknown;
- };
- content: {
- 'application/json': components['schemas']['AdminWalletStatsDto'];
- };
- };
- };
- };
- AdminWalletsController_listWallets: {
- parameters: {
- query?: {
- search?: string;
- limit?: number;
- page?: number;
- };
- header?: never;
- path?: never;
- cookie?: never;
- };
- requestBody?: never;
- responses: {
- default: {
- headers: {
- [name: string]: unknown;
- };
- content: {
- 'application/json': components['schemas']['AdminWalletListResponseDto'];
- };
- };
- };
- };
- AdminWalletsController_getByUserId: {
- parameters: {
- query?: never;
- header?: never;
- path: {
- userId: string;
- };
- cookie?: never;
- };
- requestBody?: never;
- responses: {
- default: {
- headers: {
- [name: string]: unknown;
- };
- content: {
- 'application/json': components['schemas']['AdminWalletListItemDto'][];
- };
- };
- };
- };
- AdminWalletsController_getDetails: {
- parameters: {
- query?: never;
- header?: never;
- path: {
- id: string;
- };
- cookie?: never;
- };
- requestBody?: never;
- responses: {
- default: {
- headers: {
- [name: string]: unknown;
- };
- content: {
- 'application/json': components['schemas']['AdminWalletDetailsDto'];
- };
- };
- };
- };
- AdminWalletsController_activateWallet: {
- parameters: {
- query?: never;
- header?: never;
- path: {
- id: string;
- };
- cookie?: never;
- };
- requestBody?: never;
- responses: {
- /** @description Wallet activated successfully */
- 200: {
- headers: {
- [name: string]: unknown;
- };
- content?: never;
- };
- };
- };
- AdminWalletsController_sponsorActivateUser: {
- parameters: {
- query?: never;
- header?: never;
- path: {
- userId: string;
- };
- cookie?: never;
- };
- requestBody?: never;
- responses: {
- /** @description Returns activation result for the user (activated, alreadyActivated, addedTrustlines, hash). */
- 201: {
- headers: {
- [name: string]: unknown;
- };
- content?: never;
- };
- };
- };
- AdminWalletsController_sponsorActivateHackathon: {
- parameters: {
- query?: never;
- header?: never;
- path: {
- hackathonId: string;
- };
- cookie?: never;
- };
- requestBody?: never;
- responses: {
- /** @description Job enqueued. Returns { jobId, hackathonId, estimatedParticipants, statusUrl }. */
- 201: {
- headers: {
- [name: string]: unknown;
- };
- content?: never;
- };
- };
- };
- AdminWalletsController_getSponsorActivationJobStatus: {
- parameters: {
- query?: never;
- header?: never;
- path: {
- jobId: string;
- };
- cookie?: never;
- };
- requestBody?: never;
- responses: {
- 200: {
- headers: {
- [name: string]: unknown;
- };
- content?: never;
- };
- };
- };
- HealthController_liveness: {
- parameters: {
- query?: never;
- header?: never;
- path?: never;
- cookie?: never;
- };
- requestBody?: never;
- responses: {
- 200: {
- headers: {
- [name: string]: unknown;
- };
- content?: never;
- };
- };
- };
- HealthController_readiness: {
- parameters: {
- query?: never;
- header?: never;
- path?: never;
- cookie?: never;
- };
- requestBody?: never;
- responses: {
- /** @description The Health Check is successful */
- 200: {
- headers: {
- [name: string]: unknown;
- };
- content: {
- 'application/json': {
- /** @example ok */
- status?: string;
- /**
- * @example {
- * "database": {
- * "status": "up"
- * }
- * }
- */
- info?: {
- [key: string]: {
- status: string;
- } & {
- [key: string]: unknown;
- };
- } | null;
- /** @example {} */
- error?: {
- [key: string]: {
- status: string;
- } & {
- [key: string]: unknown;
- };
- } | null;
- /**
- * @example {
- * "database": {
- * "status": "up"
- * }
- * }
- */
- details?: {
- [key: string]: {
- status: string;
- } & {
- [key: string]: unknown;
- };
+ cookie?: never;
+ };
+ requestBody: {
+ content: {
+ "application/json": components["schemas"]["ExecutePayoutRequestDto"];
};
- };
};
- };
- /** @description The Health Check is not successful */
- 503: {
- headers: {
- [name: string]: unknown;
+ responses: {
+ 200: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content: {
+ "application/json": components["schemas"]["PayoutRequestDto"];
+ };
+ };
};
- content: {
- 'application/json': {
- /** @example error */
- status?: string;
- /**
- * @example {
- * "database": {
- * "status": "up"
- * }
- * }
- */
- info?: {
- [key: string]: {
- status: string;
- } & {
- [key: string]: unknown;
- };
- } | null;
- /**
- * @example {
- * "redis": {
- * "status": "down",
- * "message": "Could not connect"
- * }
- * }
- */
- error?: {
- [key: string]: {
- status: string;
- } & {
- [key: string]: unknown;
- };
- } | null;
- /**
- * @example {
- * "database": {
- * "status": "up"
- * },
- * "redis": {
- * "status": "down",
- * "message": "Could not connect"
- * }
- * }
- */
- details?: {
- [key: string]: {
- status: string;
- } & {
- [key: string]: unknown;
- };
- };
- };
- };
- };
- };
- };
- DiditController_getStatus: {
- parameters: {
- query?: never;
- header?: never;
- path?: never;
- cookie?: never;
- };
- requestBody?: never;
- responses: {
- 200: {
- headers: {
- [name: string]: unknown;
- };
- content: {
- 'application/json': components['schemas']['VerificationStatusDto'];
- };
- };
- };
- };
- DiditController_callback: {
- parameters: {
- query?: never;
- header?: never;
- path?: never;
- cookie?: never;
- };
- requestBody?: never;
- responses: {
- 200: {
- headers: {
- [name: string]: unknown;
- };
- content?: never;
- };
- };
- };
- DiditController_createSession: {
- parameters: {
- query?: never;
- header?: never;
- path?: never;
- cookie?: never;
- };
- requestBody?: never;
- responses: {
- /** @description Session created */
- 200: {
- headers: {
- [name: string]: unknown;
- };
- content: {
- 'application/json': unknown;
- };
- };
- /** @description Missing DIDIT_API_KEY or DIDIT_WORKFLOW_ID */
- 400: {
- headers: {
- [name: string]: unknown;
- };
- content?: never;
- };
- /** @description Unauthorized */
- 401: {
- headers: {
- [name: string]: unknown;
- };
- content?: never;
- };
- };
- };
- DiditController_webhook: {
- parameters: {
- query?: never;
- header?: never;
- path?: never;
- cookie?: never;
- };
- requestBody?: never;
- responses: {
- /** @description Webhook accepted */
- 200: {
- headers: {
- [name: string]: unknown;
- };
- content?: never;
- };
- /** @description Invalid or missing signature */
- 400: {
- headers: {
- [name: string]: unknown;
- };
- content?: never;
- };
- };
- };
- PricingController_preview: {
- parameters: {
- query: {
- pillar: 'Hackathon' | 'Bounty' | 'Grant' | 'Crowdfunding';
- organizationId: string;
- /** @description Budget in stroops (7-decimal). String to preserve precision. */
- budgetStroops: string;
- /** @description Override fee bps from a sales authority. 0 = waiver. */
- salesOverrideBps?: number;
- /** @description Free-text reason for the audit log. */
- salesOverrideReason?: string;
- };
- header?: never;
- path?: never;
- cookie?: never;
- };
- requestBody?: never;
- responses: {
- 200: {
- headers: {
- [name: string]: unknown;
- };
- content: {
- 'application/json': components['schemas']['PricingPreviewResponseDto'];
- };
- };
- };
- };
- AiUsageController_getUsage: {
- parameters: {
- query?: never;
- header?: never;
- path: {
- /** @description Organization ID */
- organizationId: string;
- };
- cookie?: never;
- };
- requestBody?: never;
- responses: {
- 200: {
- headers: {
- [name: string]: unknown;
- };
- content: {
- 'application/json': components['schemas']['AiUsageResponseDto'];
- };
- };
- };
- };
- AdminOpsController_pause: {
- parameters: {
- query?: never;
- header?: never;
- path?: never;
- cookie?: never;
- };
- requestBody?: never;
- responses: {
- 200: {
- headers: {
- [name: string]: unknown;
- };
- content?: never;
- };
- };
- };
- AdminOpsController_unpause: {
- parameters: {
- query?: never;
- header?: never;
- path?: never;
- cookie?: never;
- };
- requestBody?: never;
- responses: {
- 200: {
- headers: {
- [name: string]: unknown;
- };
- content?: never;
- };
- };
- };
- AdminOpsController_setFeeBps: {
- parameters: {
- query?: never;
- header?: never;
- path?: never;
- cookie?: never;
- };
- requestBody?: never;
- responses: {
- 200: {
- headers: {
- [name: string]: unknown;
- };
- content?: never;
- };
- };
- };
- AccessController_me: {
- parameters: {
- query?: never;
- header?: never;
- path?: never;
- cookie?: never;
- };
- requestBody?: never;
- responses: {
- 200: {
- headers: {
- [name: string]: unknown;
- };
- content: {
- 'application/json': components['schemas']['MeResponseDto'];
- };
- };
- };
- };
- AccessController_roles: {
- parameters: {
- query?: never;
- header?: never;
- path?: never;
- cookie?: never;
- };
- requestBody?: never;
- responses: {
- 200: {
- headers: {
- [name: string]: unknown;
- };
- content?: never;
- };
- };
- };
- AnalyticsController_get: {
- parameters: {
- query?: never;
- header?: never;
- path?: never;
- cookie?: never;
- };
- requestBody?: never;
- responses: {
- 200: {
- headers: {
- [name: string]: unknown;
- };
- content: {
- 'application/json': components['schemas']['AnalyticsDto'];
- };
- };
- };
- };
- OverviewController_get: {
- parameters: {
- query?: never;
- header?: never;
- path?: never;
- cookie?: never;
- };
- requestBody?: never;
- responses: {
- 200: {
- headers: {
- [name: string]: unknown;
- };
- content: {
- 'application/json': components['schemas']['OverviewDto'];
- };
- };
- };
- };
- UsersController_list: {
- parameters: {
- query?: {
- /** @description Field to sort by (whitelisted per resource; ignored otherwise) */
- sort?: string;
- dir?: 'asc' | 'desc';
- page?: number;
- limit?: number;
- /** @description Match against name, email, or username */
- search?: string;
- };
- header?: never;
- path?: never;
- cookie?: never;
- };
- requestBody?: never;
- responses: {
- 200: {
- headers: {
- [name: string]: unknown;
- };
- content: {
- 'application/json': components['schemas']['PaginatedUsersDto'];
- };
- };
- };
- };
- UsersController_getById: {
- parameters: {
- query?: never;
- header?: never;
- path: {
- id: string;
- };
- cookie?: never;
- };
- requestBody?: never;
- responses: {
- 200: {
- headers: {
- [name: string]: unknown;
- };
- content: {
- 'application/json': components['schemas']['AdminUserDetailDto'];
- };
- };
- };
- };
- UsersController_getEarnings: {
- parameters: {
- query?: never;
- header?: never;
- path: {
- id: string;
- };
- cookie?: never;
- };
- requestBody?: never;
- responses: {
- 200: {
- headers: {
- [name: string]: unknown;
- };
- content: {
- 'application/json': components['schemas']['EarningsResponseDto'];
- };
- };
- };
- };
- UsersController_getOrganizations: {
- parameters: {
- query?: never;
- header?: never;
- path: {
- id: string;
- };
- cookie?: never;
- };
- requestBody?: never;
- responses: {
- 200: {
- headers: {
- [name: string]: unknown;
- };
- content: {
- 'application/json': components['schemas']['AdminUserOrganizationDto'][];
- };
- };
- };
- };
- UsersController_getWallet: {
- parameters: {
- query?: never;
- header?: never;
- path: {
- id: string;
- };
- cookie?: never;
- };
- requestBody?: never;
- responses: {
- 200: {
- headers: {
- [name: string]: unknown;
- };
- content: {
- 'application/json': components['schemas']['AdminUserWalletDto'];
- };
- };
- };
- };
- UsersController_setBanned: {
- parameters: {
- query?: never;
- header?: never;
- path: {
- id: string;
- };
- cookie?: never;
- };
- requestBody: {
- content: {
- 'application/json': components['schemas']['BanUserDto'];
- };
- };
- responses: {
- 200: {
- headers: {
- [name: string]: unknown;
- };
- content: {
- 'application/json': components['schemas']['BanUserResponseDto'];
- };
- };
- };
- };
- OrganizationsController_list: {
- parameters: {
- query?: {
- /** @description Field to sort by (whitelisted per resource; ignored otherwise) */
- sort?: string;
- dir?: 'asc' | 'desc';
- page?: number;
- limit?: number;
- /** @description Match against name or slug */
- search?: string;
- };
- header?: never;
- path?: never;
- cookie?: never;
- };
- requestBody?: never;
- responses: {
- 200: {
- headers: {
- [name: string]: unknown;
- };
- content: {
- 'application/json': components['schemas']['PaginatedOrganizationsDto'];
- };
- };
- };
- };
- OrganizationsController_getById: {
- parameters: {
- query?: never;
- header?: never;
- path: {
- id: string;
- };
- cookie?: never;
- };
- requestBody?: never;
- responses: {
- 200: {
- headers: {
- [name: string]: unknown;
- };
- content: {
- 'application/json': components['schemas']['AdminOrgDetailDto'];
- };
- };
- };
- };
- OrganizationsController_update: {
- parameters: {
- query?: never;
- header?: never;
- path: {
- id: string;
- };
- cookie?: never;
- };
- requestBody: {
- content: {
- 'application/json': components['schemas']['UpdateOrgDto'];
- };
- };
- responses: {
- 200: {
- headers: {
- [name: string]: unknown;
- };
- content: {
- 'application/json': components['schemas']['OrgActionResponseDto'];
- };
- };
- };
- };
- OrganizationsController_suspend: {
- parameters: {
- query?: never;
- header?: never;
- path: {
- id: string;
- };
- cookie?: never;
- };
- requestBody: {
- content: {
- 'application/json': components['schemas']['SuspendOrgDto'];
- };
- };
- responses: {
- 200: {
- headers: {
- [name: string]: unknown;
- };
- content: {
- 'application/json': components['schemas']['OrgSuspensionResponseDto'];
- };
- };
- };
- };
- OrganizationsController_reinstate: {
- parameters: {
- query?: never;
- header?: never;
- path: {
- id: string;
- };
- cookie?: never;
- };
- requestBody: {
- content: {
- 'application/json': components['schemas']['ReinstateOrgDto'];
- };
- };
- responses: {
- 200: {
- headers: {
- [name: string]: unknown;
- };
- content: {
- 'application/json': components['schemas']['OrgSuspensionResponseDto'];
- };
- };
- };
- };
- ProgramsController_list: {
- parameters: {
- query?: {
- /** @description Field to sort by (whitelisted per resource; ignored otherwise) */
- sort?: string;
- dir?: 'asc' | 'desc';
- /** @description Which pillar to list. Defaults to hackathons. */
- type?: 'hackathon' | 'bounty' | 'grant' | 'crowdfunding';
- page?: number;
- limit?: number;
- /** @description Match against the program title */
- search?: string;
- };
- header?: never;
- path?: never;
- cookie?: never;
- };
- requestBody?: never;
- responses: {
- 200: {
- headers: {
- [name: string]: unknown;
- };
- content: {
- 'application/json': components['schemas']['PaginatedProgramsDto'];
- };
- };
- };
- };
- ProgramsController_getById: {
- parameters: {
- query: {
- /** @description Which pillar the id belongs to */
- type: 'hackathon' | 'bounty' | 'grant' | 'crowdfunding';
- };
- header?: never;
- path: {
- id: string;
- };
- cookie?: never;
- };
- requestBody?: never;
- responses: {
- 200: {
- headers: {
- [name: string]: unknown;
- };
- content: {
- 'application/json': components['schemas']['AdminProgramDetailDto'];
- };
- };
- };
- };
- ProgramsController_setFeatured: {
- parameters: {
- query?: never;
- header?: never;
- path: {
- id: string;
- };
- cookie?: never;
- };
- requestBody: {
- content: {
- 'application/json': components['schemas']['SetFeaturedDto'];
- };
- };
- responses: {
- 200: {
- headers: {
- [name: string]: unknown;
- };
- content: {
- 'application/json': components['schemas']['ProgramActionResponseDto'];
- };
- };
- };
- };
- ProgramsController_setStatus: {
- parameters: {
- query?: never;
- header?: never;
- path: {
- id: string;
- };
- cookie?: never;
- };
- requestBody: {
- content: {
- 'application/json': components['schemas']['SetProgramStatusDto'];
- };
- };
- responses: {
- 200: {
- headers: {
- [name: string]: unknown;
- };
- content: {
- 'application/json': components['schemas']['ProgramActionResponseDto'];
- };
- };
- };
- };
- DisputesController_list: {
- parameters: {
- query?: {
- /** @description Field to sort by (whitelisted per resource; ignored otherwise) */
- sort?: string;
- dir?: 'asc' | 'desc';
- page?: number;
- limit?: number;
- /** @description Match against the dispute description or campaign title */
- search?: string;
- };
- header?: never;
- path?: never;
- cookie?: never;
- };
- requestBody?: never;
- responses: {
- 200: {
- headers: {
- [name: string]: unknown;
- };
- content: {
- 'application/json': components['schemas']['PaginatedDisputesDto'];
- };
- };
- };
- };
- DisputesController_getById: {
- parameters: {
- query?: never;
- header?: never;
- path: {
- id: string;
- };
- cookie?: never;
- };
- requestBody?: never;
- responses: {
- 200: {
- headers: {
- [name: string]: unknown;
- };
- content: {
- 'application/json': components['schemas']['AdminDisputeDetailDto'];
- };
- };
- };
- };
- DisputesController_assign: {
- parameters: {
- query?: never;
- header?: never;
- path: {
- id: string;
- };
- cookie?: never;
- };
- requestBody: {
- content: {
- 'application/json': components['schemas']['AdminV2AssignDisputeDto'];
- };
- };
- responses: {
- 200: {
- headers: {
- [name: string]: unknown;
- };
- content: {
- 'application/json': components['schemas']['DisputeAssignmentResponseDto'];
- };
- };
- };
- };
- DisputesController_note: {
- parameters: {
- query?: never;
- header?: never;
- path: {
- id: string;
- };
- cookie?: never;
- };
- requestBody: {
- content: {
- 'application/json': components['schemas']['NoteDisputeDto'];
- };
- };
- responses: {
- 200: {
- headers: {
- [name: string]: unknown;
- };
- content: {
- 'application/json': components['schemas']['DisputeNoteResponseDto'];
- };
- };
- };
- };
- DisputesController_resolve: {
- parameters: {
- query?: never;
- header?: never;
- path: {
- id: string;
- };
- cookie?: never;
- };
- requestBody: {
- content: {
- 'application/json': components['schemas']['AdminV2ResolveDisputeDto'];
- };
- };
- responses: {
- 200: {
- headers: {
- [name: string]: unknown;
- };
- content: {
- 'application/json': components['schemas']['DisputeActionResponseDto'];
- };
- };
- };
- };
- DisputesController_escalate: {
- parameters: {
- query?: never;
- header?: never;
- path: {
- id: string;
- };
- cookie?: never;
- };
- requestBody: {
- content: {
- 'application/json': components['schemas']['AdminV2EscalateDisputeDto'];
- };
- };
- responses: {
- 200: {
- headers: {
- [name: string]: unknown;
- };
- content: {
- 'application/json': components['schemas']['DisputeActionResponseDto'];
- };
- };
- };
- };
- EscrowController_list: {
- parameters: {
- query?: {
- /** @description Field to sort by (whitelisted per resource; ignored otherwise) */
- sort?: string;
- dir?: 'asc' | 'desc';
- page?: number;
- limit?: number;
- /** @description Match against the on-chain reference (hash or address) */
- search?: string;
- };
- header?: never;
- path?: never;
- cookie?: never;
- };
- requestBody?: never;
- responses: {
- 200: {
- headers: {
- [name: string]: unknown;
- };
- content: {
- 'application/json': components['schemas']['PaginatedMoneyDto'];
- };
- };
- };
- };
- EscrowController_listRequests: {
- parameters: {
- query?: {
- /** @description Filter to a single request status */
- status?: 'PROPOSED' | 'APPROVED' | 'REJECTED' | 'EXECUTED';
- };
- header?: never;
- path?: never;
- cookie?: never;
- };
- requestBody?: never;
- responses: {
- 200: {
- headers: {
- [name: string]: unknown;
- };
- content: {
- 'application/json': components['schemas']['EscrowRequestListResponseDto'];
- };
- };
- };
- };
- EscrowController_propose: {
- parameters: {
- query?: never;
- header?: never;
- path?: never;
- cookie?: never;
- };
- requestBody: {
- content: {
- 'application/json': components['schemas']['ProposeEscrowRequestDto'];
- };
- };
- responses: {
- 200: {
- headers: {
- [name: string]: unknown;
- };
- content: {
- 'application/json': components['schemas']['EscrowRequestDto'];
- };
- };
- };
- };
- EscrowController_decide: {
- parameters: {
- query?: never;
- header?: never;
- path: {
- id: string;
- };
- cookie?: never;
- };
- requestBody: {
- content: {
- 'application/json': components['schemas']['DecideEscrowRequestDto'];
- };
- };
- responses: {
- 200: {
- headers: {
- [name: string]: unknown;
- };
- content: {
- 'application/json': components['schemas']['EscrowRequestDto'];
- };
- };
- };
- };
- EscrowController_execute: {
- parameters: {
- query?: never;
- header?: never;
- path: {
- id: string;
- };
- cookie?: never;
- };
- requestBody: {
- content: {
- 'application/json': components['schemas']['ExecuteEscrowRequestDto'];
- };
- };
- responses: {
- 200: {
- headers: {
- [name: string]: unknown;
- };
- content: {
- 'application/json': components['schemas']['EscrowRequestDto'];
- };
- };
- };
- };
- PayoutsController_list: {
- parameters: {
- query?: {
- /** @description Field to sort by (whitelisted per resource; ignored otherwise) */
- sort?: string;
- dir?: 'asc' | 'desc';
- page?: number;
- limit?: number;
- /** @description Match against the on-chain reference (hash or address) */
- search?: string;
- };
- header?: never;
- path?: never;
- cookie?: never;
- };
- requestBody?: never;
- responses: {
- 200: {
- headers: {
- [name: string]: unknown;
- };
- content: {
- 'application/json': components['schemas']['PaginatedMoneyDto'];
- };
- };
- };
- };
- PayoutsController_listRequests: {
- parameters: {
- query?: {
- /** @description Filter to a single request status */
- status?:
- | 'PROPOSED'
- | 'APPROVED'
- | 'AWAITING_SIGNATURE'
- | 'REJECTED'
- | 'EXECUTED';
- };
- header?: never;
- path?: never;
- cookie?: never;
- };
- requestBody?: never;
- responses: {
- 200: {
- headers: {
- [name: string]: unknown;
- };
- content: {
- 'application/json': components['schemas']['PayoutRequestListResponseDto'];
- };
- };
- };
- };
- PayoutsController_propose: {
- parameters: {
- query?: never;
- header?: never;
- path?: never;
- cookie?: never;
- };
- requestBody: {
- content: {
- 'application/json': components['schemas']['ProposePayoutRequestDto'];
- };
- };
- responses: {
- 200: {
- headers: {
- [name: string]: unknown;
- };
- content: {
- 'application/json': components['schemas']['PayoutRequestDto'];
- };
- };
- };
- };
- PayoutsController_decide: {
- parameters: {
- query?: never;
- header?: never;
- path: {
- id: string;
- };
- cookie?: never;
- };
- requestBody: {
- content: {
- 'application/json': components['schemas']['DecidePayoutRequestDto'];
- };
- };
- responses: {
- 200: {
- headers: {
- [name: string]: unknown;
- };
- content: {
- 'application/json': components['schemas']['PayoutRequestDto'];
- };
- };
- };
- };
- PayoutsController_buildXdr: {
- parameters: {
- query?: never;
- header?: never;
- path: {
- id: string;
- };
- cookie?: never;
- };
- requestBody?: never;
- responses: {
- 200: {
- headers: {
- [name: string]: unknown;
- };
- content: {
- 'application/json': components['schemas']['BuildXdrResponseDto'];
- };
- };
- };
- };
- PayoutsController_submitSigned: {
- parameters: {
- query?: never;
- header?: never;
- path: {
- id: string;
- };
- cookie?: never;
- };
- requestBody: {
- content: {
- 'application/json': components['schemas']['SubmitPayoutSignedXdrDto'];
- };
- };
- responses: {
- 200: {
- headers: {
- [name: string]: unknown;
- };
- content: {
- 'application/json': components['schemas']['PayoutRequestDto'];
- };
- };
- };
- };
- PayoutsController_execute: {
- parameters: {
- query?: never;
- header?: never;
- path: {
- id: string;
- };
- cookie?: never;
- };
- requestBody: {
- content: {
- 'application/json': components['schemas']['ExecutePayoutRequestDto'];
- };
- };
- responses: {
- 200: {
- headers: {
- [name: string]: unknown;
- };
- content: {
- 'application/json': components['schemas']['PayoutRequestDto'];
- };
- };
- };
- };
- ContentController_list: {
- parameters: {
- query?: {
- /** @description Field to sort by (whitelisted per resource; ignored otherwise) */
- sort?: string;
- dir?: 'asc' | 'desc';
- page?: number;
- limit?: number;
- /** @description Match against the post title or slug */
- search?: string;
- /** @description Show archived (soft-deleted) posts instead of active ones. */
- archived?: boolean;
- };
- header?: never;
- path?: never;
- cookie?: never;
- };
- requestBody?: never;
- responses: {
- 200: {
- headers: {
- [name: string]: unknown;
- };
- content: {
- 'application/json': components['schemas']['PaginatedContentDto'];
- };
- };
- };
- };
- ContentController_create: {
- parameters: {
- query?: never;
- header?: never;
- path?: never;
- cookie?: never;
- };
- requestBody: {
- content: {
- 'application/json': components['schemas']['CreateBlogPostDto'];
- };
- };
- responses: {
- 200: {
- headers: {
- [name: string]: unknown;
- };
- content: {
- 'application/json': components['schemas']['ContentMutationResponseDto'];
- };
- };
- };
- };
- ContentController_getById: {
- parameters: {
- query?: never;
- header?: never;
- path: {
- id: string;
- };
- cookie?: never;
- };
- requestBody?: never;
- responses: {
- 200: {
- headers: {
- [name: string]: unknown;
- };
- content: {
- 'application/json': components['schemas']['AdminContentDetailDto'];
- };
- };
- };
- };
- ContentController_update: {
- parameters: {
- query?: never;
- header?: never;
- path: {
- id: string;
- };
- cookie?: never;
- };
- requestBody: {
- content: {
- 'application/json': components['schemas']['UpdateContentDto'];
- };
- };
- responses: {
- 200: {
- headers: {
- [name: string]: unknown;
- };
- content: {
- 'application/json': components['schemas']['ContentMutationResponseDto'];
- };
- };
- };
- };
- ContentController_setPublished: {
- parameters: {
- query?: never;
- header?: never;
- path: {
- id: string;
- };
- cookie?: never;
- };
- requestBody: {
- content: {
- 'application/json': components['schemas']['SetPublishedDto'];
- };
- };
- responses: {
- 200: {
- headers: {
- [name: string]: unknown;
- };
- content: {
- 'application/json': components['schemas']['ContentActionResponseDto'];
- };
- };
- };
- };
- ContentController_archive: {
- parameters: {
- query?: never;
- header?: never;
- path: {
- id: string;
- };
- cookie?: never;
- };
- requestBody: {
- content: {
- 'application/json': components['schemas']['ArchiveContentDto'];
- };
- };
- responses: {
- 200: {
- headers: {
- [name: string]: unknown;
- };
- content: {
- 'application/json': components['schemas']['ContentActionResponseDto'];
- };
- };
- };
- };
- ContentController_restore: {
- parameters: {
- query?: never;
- header?: never;
- path: {
- id: string;
- };
- cookie?: never;
- };
- requestBody?: never;
- responses: {
- 200: {
- headers: {
- [name: string]: unknown;
- };
- content: {
- 'application/json': components['schemas']['ContentActionResponseDto'];
- };
- };
- };
- };
- CrowdfundingChecklistController_list: {
- parameters: {
- query?: never;
- header?: never;
- path?: never;
- cookie?: never;
- };
- requestBody?: never;
- responses: {
- 200: {
- headers: {
- [name: string]: unknown;
- };
- content: {
- 'application/json': components['schemas']['ChecklistItemDto'][];
- };
- };
- };
- };
- CrowdfundingChecklistController_create: {
- parameters: {
- query?: never;
- header?: never;
- path?: never;
- cookie?: never;
- };
- requestBody: {
- content: {
- 'application/json': components['schemas']['CreateChecklistItemDto'];
- };
- };
- responses: {
- 200: {
- headers: {
- [name: string]: unknown;
- };
- content: {
- 'application/json': components['schemas']['ChecklistItemDto'];
- };
- };
- };
- };
- CrowdfundingChecklistController_reorder: {
- parameters: {
- query?: never;
- header?: never;
- path?: never;
- cookie?: never;
- };
- requestBody: {
- content: {
- 'application/json': components['schemas']['ReorderChecklistDto'];
- };
- };
- responses: {
- 200: {
- headers: {
- [name: string]: unknown;
- };
- content: {
- 'application/json': components['schemas']['ChecklistItemDto'][];
- };
- };
- };
- };
- CrowdfundingChecklistController_archive: {
- parameters: {
- query?: never;
- header?: never;
- path: {
- itemId: string;
- };
- cookie?: never;
- };
- requestBody?: never;
- responses: {
- 204: {
- headers: {
- [name: string]: unknown;
- };
- content?: never;
- };
- };
- };
- CrowdfundingChecklistController_update: {
- parameters: {
- query?: never;
- header?: never;
- path: {
- itemId: string;
- };
- cookie?: never;
- };
- requestBody: {
- content: {
- 'application/json': components['schemas']['UpdateChecklistItemDto'];
- };
- };
- responses: {
- 200: {
- headers: {
- [name: string]: unknown;
- };
- content: {
- 'application/json': components['schemas']['ChecklistItemDto'];
- };
- };
- };
- };
- CrowdfundingController_list: {
- parameters: {
- query?: {
- /** @description Field to sort by (whitelisted per resource; ignored otherwise) */
- sort?: string;
- dir?: 'asc' | 'desc';
- page?: number;
- limit?: number;
- /** @description Match against the project title */
- search?: string;
- /** @description v2Status filter. Omit to list the full lifecycle (all statuses). */
- status?:
- | 'DRAFT'
- | 'SUBMITTED_FOR_REVIEW'
- | 'REVIEW_REJECTED'
- | 'REVIEW_APPROVED'
- | 'VOTING'
- | 'VOTE_FAILED'
- | 'VOTE_PASSED'
- | 'PUBLISHING'
- | 'FUNDING'
- | 'COMPLETED'
- | 'CANCELLED'
- | 'PAUSED'
- | 'FAILED';
- };
- header?: never;
- path?: never;
- cookie?: never;
- };
- requestBody?: never;
- responses: {
- 200: {
- headers: {
- [name: string]: unknown;
- };
- content: {
- 'application/json': components['schemas']['PaginatedCrowdfundingDto'];
- };
- };
- };
- };
- CrowdfundingController_getById: {
- parameters: {
- query?: never;
- header?: never;
- path: {
- id: string;
- };
- cookie?: never;
- };
- requestBody?: never;
- responses: {
- 200: {
- headers: {
- [name: string]: unknown;
- };
- content: {
- 'application/json': components['schemas']['AdminCrowdfundingDetailDto'];
- };
- };
- };
- };
- CrowdfundingController_approve: {
- parameters: {
- query?: never;
- header?: never;
- path: {
- id: string;
- };
- cookie?: never;
- };
- requestBody: {
- content: {
- 'application/json': components['schemas']['ApproveCampaignDto'];
- };
- };
- responses: {
- 200: {
- headers: {
- [name: string]: unknown;
- };
- content: {
- 'application/json': components['schemas']['CrowdfundingActionResponseDto'];
- };
- };
- };
- };
- CrowdfundingController_reject: {
- parameters: {
- query?: never;
- header?: never;
- path: {
- id: string;
- };
- cookie?: never;
- };
- requestBody: {
- content: {
- 'application/json': components['schemas']['RejectCampaignDto'];
- };
- };
- responses: {
- 200: {
- headers: {
- [name: string]: unknown;
- };
- content: {
- 'application/json': components['schemas']['CrowdfundingActionResponseDto'];
- };
- };
- };
- };
- CrowdfundingController_requestRevision: {
- parameters: {
- query?: never;
- header?: never;
- path: {
- id: string;
- };
- cookie?: never;
- };
- requestBody: {
- content: {
- 'application/json': components['schemas']['RequestRevisionDto'];
- };
- };
- responses: {
- 200: {
- headers: {
- [name: string]: unknown;
- };
- content: {
- 'application/json': components['schemas']['CrowdfundingActionResponseDto'];
- };
- };
- };
- };
- SecurityController_enroll: {
- parameters: {
- query?: never;
- header?: never;
- path?: never;
- cookie?: never;
- };
- requestBody?: never;
- responses: {
- 200: {
- headers: {
- [name: string]: unknown;
- };
- content: {
- 'application/json': components['schemas']['TotpEnrollResponseDto'];
- };
- };
- };
- };
- SecurityController_activate: {
- parameters: {
- query?: never;
- header?: never;
- path?: never;
- cookie?: never;
- };
- requestBody: {
- content: {
- 'application/json': components['schemas']['TotpCodeDto'];
- };
- };
- responses: {
- 200: {
- headers: {
- [name: string]: unknown;
- };
- content: {
- 'application/json': components['schemas']['OkResponseDto'];
- };
- };
- };
- };
- SecurityController_stepUp: {
- parameters: {
- query?: never;
- header?: never;
- path?: never;
- cookie?: never;
- };
- requestBody: {
- content: {
- 'application/json': components['schemas']['TotpCodeDto'];
- };
- };
- responses: {
- 200: {
- headers: {
- [name: string]: unknown;
- };
- content: {
- 'application/json': components['schemas']['OkResponseDto'];
- };
- };
- };
- };
- AuditController_list: {
- parameters: {
- query?: {
- /** @description Field to sort by (whitelisted per resource; ignored otherwise) */
- sort?: string;
- dir?: 'asc' | 'desc';
- page?: number;
- limit?: number;
- /** @description Match against the actor email, action, or target id */
- search?: string;
- };
- header?: never;
- path?: never;
- cookie?: never;
- };
- requestBody?: never;
- responses: {
- 200: {
- headers: {
- [name: string]: unknown;
- };
- content: {
- 'application/json': components['schemas']['PaginatedAuditDto'];
- };
- };
- };
- };
- AuditController_stream: {
- parameters: {
- query?: never;
- header?: never;
- path?: never;
- cookie?: never;
- };
- requestBody?: never;
- responses: {
- 200: {
- headers: {
- [name: string]: unknown;
- };
- content?: never;
- };
- };
- };
- FeatureFlagsController_list: {
- parameters: {
- query?: never;
- header?: never;
- path?: never;
- cookie?: never;
- };
- requestBody?: never;
- responses: {
- 200: {
- headers: {
- [name: string]: unknown;
- };
- content: {
- 'application/json': components['schemas']['FeatureFlagsResponseDto'];
- };
- };
- };
- };
- FeatureFlagsController_toggle: {
- parameters: {
- query?: never;
- header?: never;
- path: {
- key: string;
- };
- cookie?: never;
- };
- requestBody: {
- content: {
- 'application/json': components['schemas']['ToggleFeatureFlagDto'];
- };
- };
- responses: {
- 200: {
- headers: {
- [name: string]: unknown;
- };
- content: {
- 'application/json': components['schemas']['FeatureFlagDto'];
- };
- };
- };
- };
- StaffController_list: {
- parameters: {
- query?: never;
- header?: never;
- path?: never;
- cookie?: never;
- };
- requestBody?: never;
- responses: {
- 200: {
- headers: {
- [name: string]: unknown;
- };
- content: {
- 'application/json': components['schemas']['StaffListResponseDto'];
- };
- };
- };
- };
- StaffController_setRole: {
- parameters: {
- query?: never;
- header?: never;
- path: {
- id: string;
- };
- cookie?: never;
- };
- requestBody: {
- content: {
- 'application/json': components['schemas']['SetRoleDto'];
- };
- };
- responses: {
- 200: {
- headers: {
- [name: string]: unknown;
- };
- content: {
- 'application/json': components['schemas']['StaffListItemDto'];
- };
- };
- };
- };
- GovernanceController_list: {
- parameters: {
- query?: {
- /** @description Filter to a single proposal status */
- status?: 'PROPOSED' | 'APPROVED' | 'REJECTED' | 'EXECUTED';
- };
- header?: never;
- path?: never;
- cookie?: never;
- };
- requestBody?: never;
- responses: {
- 200: {
- headers: {
- [name: string]: unknown;
- };
- content: {
- 'application/json': components['schemas']['GovernanceListResponseDto'];
- };
- };
- };
- };
- GovernanceController_propose: {
- parameters: {
- query?: never;
- header?: never;
- path?: never;
- cookie?: never;
- };
- requestBody: {
- content: {
- 'application/json': components['schemas']['CreateProposalDto'];
- };
- };
- responses: {
- 200: {
- headers: {
- [name: string]: unknown;
- };
- content: {
- 'application/json': components['schemas']['GovernanceProposalDto'];
- };
- };
- };
- };
- GovernanceController_decide: {
- parameters: {
- query?: never;
- header?: never;
- path: {
- id: string;
- };
- cookie?: never;
- };
- requestBody: {
- content: {
- 'application/json': components['schemas']['DecideProposalDto'];
- };
- };
- responses: {
- 200: {
- headers: {
- [name: string]: unknown;
- };
- content: {
- 'application/json': components['schemas']['GovernanceProposalDto'];
- };
- };
- };
- };
- GovernanceController_execute: {
- parameters: {
- query?: never;
- header?: never;
- path: {
- id: string;
- };
- cookie?: never;
- };
- requestBody: {
- content: {
- 'application/json': components['schemas']['ExecuteProposalDto'];
- };
- };
- responses: {
- 200: {
- headers: {
- [name: string]: unknown;
- };
- content: {
- 'application/json': components['schemas']['GovernanceProposalDto'];
- };
- };
- };
- };
- GovernanceContractController_listTokens: {
- parameters: {
- query?: never;
- header?: never;
- path?: never;
- cookie?: never;
- };
- requestBody?: never;
- responses: {
- 200: {
- headers: {
- [name: string]: unknown;
- };
- content: {
- 'application/json': components['schemas']['SupportedTokenDto'][];
- };
- };
- };
- };
- GovernanceContractController_syncTokens: {
- parameters: {
- query?: never;
- header?: never;
- path?: never;
- cookie?: never;
- };
- requestBody?: never;
- responses: {
- 200: {
- headers: {
- [name: string]: unknown;
- };
- content: {
- 'application/json': components['schemas']['SyncTokensResultDto'];
- };
- };
- };
- };
- GovernanceContractController_importToken: {
- parameters: {
- query?: never;
- header?: never;
- path?: never;
- cookie?: never;
- };
- requestBody: {
- content: {
- 'application/json': components['schemas']['RegisterTokenDto'];
- };
- };
- responses: {
- 200: {
- headers: {
- [name: string]: unknown;
- };
- content: {
- 'application/json': components['schemas']['SupportedTokenDto'];
- };
- };
- };
- };
- GovernanceContractController_pauseState: {
- parameters: {
- query?: never;
- header?: never;
- path?: never;
- cookie?: never;
- };
- requestBody?: never;
- responses: {
- 200: {
- headers: {
- [name: string]: unknown;
- };
- content: {
- 'application/json': components['schemas']['PauseStateDto'];
- };
- };
- };
- };
- GovernanceContractController_buildRegisterToken: {
- parameters: {
- query?: never;
- header?: never;
- path?: never;
- cookie?: never;
- };
- requestBody: {
- content: {
- 'application/json': components['schemas']['RegisterTokenDto'];
- };
- };
- responses: {
- 200: {
- headers: {
- [name: string]: unknown;
- };
- content: {
- 'application/json': components['schemas']['ContractOpXdrDto'];
- };
- };
- };
- };
- GovernanceContractController_buildDeregisterToken: {
- parameters: {
- query?: never;
- header?: never;
- path?: never;
- cookie?: never;
- };
- requestBody: {
- content: {
- 'application/json': components['schemas']['DeregisterTokenDto'];
- };
- };
- responses: {
- 200: {
- headers: {
- [name: string]: unknown;
- };
- content: {
- 'application/json': components['schemas']['ContractOpXdrDto'];
- };
- };
- };
- };
- GovernanceContractController_buildPause: {
- parameters: {
- query?: never;
- header?: never;
- path?: never;
- cookie?: never;
- };
- requestBody?: never;
- responses: {
- 200: {
- headers: {
- [name: string]: unknown;
- };
- content: {
- 'application/json': components['schemas']['ContractOpXdrDto'];
- };
- };
- };
- };
- GovernanceContractController_buildUnpause: {
- parameters: {
- query?: never;
- header?: never;
- path?: never;
- cookie?: never;
- };
- requestBody?: never;
- responses: {
- 200: {
- headers: {
- [name: string]: unknown;
- };
- content: {
- 'application/json': components['schemas']['ContractOpXdrDto'];
- };
- };
- };
- };
- GovernanceContractController_submitSigned: {
- parameters: {
- query?: never;
- header?: never;
- path: {
- id: string;
- };
- cookie?: never;
- };
- requestBody: {
- content: {
- 'application/json': components['schemas']['SubmitSignedContractOpDto'];
- };
- };
- responses: {
- 200: {
- headers: {
- [name: string]: unknown;
- };
- content: {
- 'application/json': components['schemas']['ContractOpResultDto'];
- };
- };
- };
- };
- KycController_list: {
- parameters: {
- query?: {
- /** @description Field to sort by (whitelisted per resource; ignored otherwise) */
- sort?: string;
- dir?: 'asc' | 'desc';
- /** @description Filter to one KYC state. Omit for all KYC-engaged users. */
- status?: 'in_review' | 'approved' | 'declined';
- page?: number;
- limit?: number;
- /** @description Match against the user name or email */
- search?: string;
- };
- header?: never;
- path?: never;
- cookie?: never;
- };
- requestBody?: never;
- responses: {
- 200: {
- headers: {
- [name: string]: unknown;
- };
- content: {
- 'application/json': components['schemas']['PaginatedKycDto'];
- };
- };
- };
- };
- KycController_connection: {
- parameters: {
- query?: never;
- header?: never;
- path?: never;
- cookie?: never;
- };
- requestBody?: never;
- responses: {
- 200: {
- headers: {
- [name: string]: unknown;
- };
- content: {
- 'application/json': components['schemas']['DiditConnectionDto'];
- };
- };
- };
- };
- KycController_sync: {
- parameters: {
- query?: never;
- header?: never;
- path: {
- userId: string;
- };
- cookie?: never;
- };
- requestBody?: never;
- responses: {
- 200: {
- headers: {
- [name: string]: unknown;
- };
- content: {
- 'application/json': components['schemas']['KycSyncResponseDto'];
- };
- };
- };
- };
- KycController_retrigger: {
- parameters: {
- query?: never;
- header?: never;
- path: {
- userId: string;
- };
- cookie?: never;
- };
- requestBody?: never;
- responses: {
- 200: {
- headers: {
- [name: string]: unknown;
- };
- content: {
- 'application/json': components['schemas']['KycRetriggerResponseDto'];
- };
- };
- };
- };
- KycController_override: {
- parameters: {
- query?: never;
- header?: never;
- path: {
- userId: string;
- };
- cookie?: never;
- };
- requestBody: {
- content: {
- 'application/json': components['schemas']['KycOverrideDto'];
- };
- };
- responses: {
- 200: {
- headers: {
- [name: string]: unknown;
- };
- content: {
- 'application/json': components['schemas']['KycOverrideResponseDto'];
- };
- };
- };
- };
- MilestonesController_list: {
- parameters: {
- query?: {
- /** @description Field to sort by (whitelisted per resource; ignored otherwise) */
- sort?: string;
- dir?: 'asc' | 'desc';
- /** @description Which pillar to list. Defaults to crowdfunding. */
- type?: 'crowdfunding' | 'grant';
- page?: number;
- limit?: number;
- /** @description Match against milestone or program title */
- search?: string;
- };
- header?: never;
- path?: never;
- cookie?: never;
- };
- requestBody?: never;
- responses: {
- 200: {
- headers: {
- [name: string]: unknown;
- };
- content: {
- 'application/json': components['schemas']['PaginatedMilestonesDto'];
- };
- };
- };
- };
- MilestonesController_findOne: {
- parameters: {
- query?: never;
- header?: never;
- path: {
- id: string;
- };
- cookie?: never;
- };
- requestBody?: never;
- responses: {
- 200: {
- headers: {
- [name: string]: unknown;
- };
- content: {
- 'application/json': components['schemas']['AdminMilestoneDetailDto'];
- };
- };
- };
- };
- MilestonesController_approve: {
- parameters: {
- query?: never;
- header?: never;
- path: {
- id: string;
- };
- cookie?: never;
- };
- requestBody?: never;
- responses: {
- 200: {
- headers: {
- [name: string]: unknown;
- };
- content: {
- 'application/json': components['schemas']['MilestoneActionResponseDto'];
- };
- };
- };
- };
- MilestonesController_reject: {
- parameters: {
- query?: never;
- header?: never;
- path: {
- id: string;
- };
- cookie?: never;
- };
- requestBody: {
- content: {
- 'application/json': components['schemas']['AdminV2RejectMilestoneDto'];
- };
- };
- responses: {
- 200: {
- headers: {
- [name: string]: unknown;
- };
- content: {
- 'application/json': components['schemas']['MilestoneActionResponseDto'];
- };
- };
- };
- };
- MilestonesController_buildReleaseXdr: {
- parameters: {
- query?: never;
- header?: never;
- path: {
- id: string;
- };
- cookie?: never;
- };
- requestBody?: never;
- responses: {
- 200: {
- headers: {
- [name: string]: unknown;
- };
- content: {
- 'application/json': components['schemas']['MilestoneReleaseXdrDto'];
- };
- };
- };
- };
- MilestonesController_submitReleaseSigned: {
- parameters: {
- query?: never;
- header?: never;
- path: {
- id: string;
- };
- cookie?: never;
- };
- requestBody: {
- content: {
- 'application/json': components['schemas']['SubmitMilestoneReleaseDto'];
- };
- };
- responses: {
- 200: {
- headers: {
- [name: string]: unknown;
- };
- content: {
- 'application/json': components['schemas']['MilestoneReleaseResultDto'];
- };
- };
- };
- };
- WalletsController_list: {
- parameters: {
- query?: {
- /** @description Field to sort by (whitelisted per resource; ignored otherwise) */
- sort?: string;
- dir?: 'asc' | 'desc';
- page?: number;
- limit?: number;
- /** @description Match against the public key (G-address) */
- search?: string;
- };
- header?: never;
- path?: never;
- cookie?: never;
- };
- requestBody?: never;
- responses: {
- 200: {
- headers: {
- [name: string]: unknown;
- };
- content: {
- 'application/json': components['schemas']['PaginatedWalletsDto'];
- };
- };
- };
- };
- HackathonBriefTemplatesController_list: {
- parameters: {
- query?: never;
- header?: never;
- path?: never;
- cookie?: never;
- };
- requestBody?: never;
- responses: {
- 200: {
- headers: {
- [name: string]: unknown;
- };
- content: {
- 'application/json': components['schemas']['HackathonBriefTemplatesResponseDto'];
- };
- };
- };
- };
- HackathonBriefTemplatesController_create: {
- parameters: {
- query?: never;
- header?: never;
- path?: never;
- cookie?: never;
- };
- requestBody: {
- content: {
- 'application/json': components['schemas']['CreateHackathonBriefTemplateDto'];
- };
- };
- responses: {
- 200: {
- headers: {
- [name: string]: unknown;
- };
- content: {
- 'application/json': components['schemas']['HackathonBriefTemplateDto'];
- };
- };
- };
- };
- HackathonBriefTemplatesController_update: {
- parameters: {
- query?: never;
- header?: never;
- path: {
- id: string;
- };
- cookie?: never;
- };
- requestBody: {
- content: {
- 'application/json': components['schemas']['UpdateHackathonBriefTemplateDto'];
- };
- };
- responses: {
- 200: {
- headers: {
- [name: string]: unknown;
- };
- content: {
- 'application/json': components['schemas']['HackathonBriefTemplateDto'];
- };
- };
- };
- };
- HackathonBriefTemplatesController_archive: {
- parameters: {
- query?: never;
- header?: never;
- path: {
- id: string;
- };
- cookie?: never;
- };
- requestBody?: never;
- responses: {
- 204: {
- headers: {
- [name: string]: unknown;
- };
- content?: never;
- };
- };
- };
- HackathonBriefTemplatesPublicController_list: {
- parameters: {
- query?: never;
- header?: never;
- path?: never;
- cookie?: never;
- };
- requestBody?: never;
- responses: {
- 200: {
- headers: {
- [name: string]: unknown;
- };
- content: {
- 'application/json': components['schemas']['HackathonBriefTemplatesResponseDto'];
- };
- };
- };
- };
- MarketingTemplatesController_list: {
- parameters: {
- query?: never;
- header?: never;
- path?: never;
- cookie?: never;
- };
- requestBody?: never;
- responses: {
- 200: {
- headers: {
- [name: string]: unknown;
- };
- content: {
- 'application/json': components['schemas']['MarketingTemplatesResponseDto'];
- };
- };
- };
- };
- MarketingTemplatesController_create: {
- parameters: {
- query?: never;
- header?: never;
- path?: never;
- cookie?: never;
- };
- requestBody: {
- content: {
- 'application/json': components['schemas']['CreateMarketingTemplateDto'];
- };
- };
- responses: {
- 200: {
- headers: {
- [name: string]: unknown;
- };
- content: {
- 'application/json': components['schemas']['MarketingTemplateDto'];
- };
- };
- };
- };
- MarketingTemplatesController_update: {
- parameters: {
- query?: never;
- header?: never;
- path: {
- id: string;
- };
- cookie?: never;
- };
- requestBody: {
- content: {
- 'application/json': components['schemas']['UpdateMarketingTemplateDto'];
- };
- };
- responses: {
- 200: {
- headers: {
- [name: string]: unknown;
- };
- content: {
- 'application/json': components['schemas']['MarketingTemplateDto'];
- };
- };
- };
- };
- MarketingTemplatesController_archive: {
- parameters: {
- query?: never;
- header?: never;
- path: {
- id: string;
- };
- cookie?: never;
- };
- requestBody?: never;
- responses: {
- 204: {
- headers: {
- [name: string]: unknown;
- };
- content?: never;
- };
- };
- };
- MarketingCampaignsController_list: {
- parameters: {
- query?: never;
- header?: never;
- path?: never;
- cookie?: never;
- };
- requestBody?: never;
- responses: {
- 200: {
- headers: {
- [name: string]: unknown;
- };
- content: {
- 'application/json': components['schemas']['MarketingCampaignsResponseDto'];
- };
- };
- };
- };
- MarketingCampaignsController_create: {
- parameters: {
- query?: never;
- header?: never;
- path?: never;
- cookie?: never;
- };
- requestBody: {
- content: {
- 'application/json': components['schemas']['CreateMarketingCampaignDto'];
- };
- };
- responses: {
- 200: {
- headers: {
- [name: string]: unknown;
- };
- content: {
- 'application/json': components['schemas']['MarketingCampaignDto'];
- };
- };
- };
- };
- MarketingCampaignsController_update: {
- parameters: {
- query?: never;
- header?: never;
- path: {
- id: string;
- };
- cookie?: never;
- };
- requestBody: {
- content: {
- 'application/json': components['schemas']['UpdateMarketingCampaignDto'];
- };
- };
- responses: {
- 200: {
- headers: {
- [name: string]: unknown;
- };
- content: {
- 'application/json': components['schemas']['MarketingCampaignDto'];
- };
- };
- };
- };
- MarketingCampaignsController_cancel: {
- parameters: {
- query?: never;
- header?: never;
- path: {
- id: string;
- };
- cookie?: never;
- };
- requestBody?: never;
- responses: {
- 204: {
- headers: {
- [name: string]: unknown;
- };
- content?: never;
- };
- };
- };
- MarketingCampaignsController_audienceSize: {
- parameters: {
- query?: never;
- header?: never;
- path?: never;
- cookie?: never;
- };
- requestBody: {
- content: {
- 'application/json': components['schemas']['PreviewCampaignAudienceDto'];
- };
- };
- responses: {
- 200: {
- headers: {
- [name: string]: unknown;
- };
- content: {
- 'application/json': components['schemas']['CampaignAudienceSizeDto'];
- };
- };
- };
- };
- MarketingCampaignsController_send: {
- parameters: {
- query?: never;
- header?: never;
- path: {
- id: string;
- };
- cookie?: never;
- };
- requestBody?: never;
- responses: {
- 200: {
- headers: {
- [name: string]: unknown;
- };
- content: {
- 'application/json': components['schemas']['MarketingCampaignDto'];
- };
- };
- };
- };
- MarketingAutomationsController_list: {
- parameters: {
- query?: never;
- header?: never;
- path?: never;
- cookie?: never;
- };
- requestBody?: never;
- responses: {
- 200: {
- headers: {
- [name: string]: unknown;
- };
- content: {
- 'application/json': components['schemas']['MarketingAutomationsResponseDto'];
- };
- };
- };
- };
- MarketingAutomationsController_create: {
- parameters: {
- query?: never;
- header?: never;
- path?: never;
- cookie?: never;
- };
- requestBody: {
- content: {
- 'application/json': components['schemas']['CreateMarketingAutomationDto'];
- };
- };
- responses: {
- 200: {
- headers: {
- [name: string]: unknown;
- };
- content: {
- 'application/json': components['schemas']['MarketingAutomationDto'];
- };
- };
- };
- };
- MarketingAutomationsController_update: {
- parameters: {
- query?: never;
- header?: never;
- path: {
- id: string;
- };
- cookie?: never;
- };
- requestBody: {
- content: {
- 'application/json': components['schemas']['UpdateMarketingAutomationDto'];
- };
- };
- responses: {
- 200: {
- headers: {
- [name: string]: unknown;
- };
- content: {
- 'application/json': components['schemas']['MarketingAutomationDto'];
- };
- };
- };
- };
- MarketingAutomationsController_remove: {
- parameters: {
- query?: never;
- header?: never;
- path: {
- id: string;
- };
- cookie?: never;
- };
- requestBody?: never;
- responses: {
- 204: {
- headers: {
- [name: string]: unknown;
- };
- content?: never;
- };
- };
- };
- MarketingAutomationsController_toggle: {
- parameters: {
- query?: never;
- header?: never;
- path: {
- id: string;
- };
- cookie?: never;
- };
- requestBody?: never;
- responses: {
- 200: {
- headers: {
- [name: string]: unknown;
- };
- content: {
- 'application/json': components['schemas']['MarketingAutomationDto'];
- };
- };
- };
- };
- PricesController_getAll: {
- parameters: {
- query?: never;
- header?: never;
- path?: never;
- cookie?: never;
- };
- requestBody?: never;
- responses: {
- /** @description Map of asset symbol → USD price as a decimal string (6 dp). */
- 200: {
- headers: {
- [name: string]: unknown;
- };
- content: {
- 'application/json': unknown;
- };
- };
- };
- };
- PricesController_getDebug: {
- parameters: {
- query?: never;
- header?: never;
- path?: never;
- cookie?: never;
- };
- requestBody?: never;
- responses: {
- /** @description Per-asset debug info. `source` is which provider won the resolution chain. */
- 200: {
- headers: {
- [name: string]: unknown;
- };
- content: {
- 'application/json': unknown;
- };
- };
- };
- };
- PricesController_getOne: {
- parameters: {
- query?: never;
- header?: never;
- path: {
- /** @description Asset ticker (case-insensitive). */
- symbol: 'XLM' | 'USDC' | 'EURC' | 'USDGLO';
- };
- cookie?: never;
- };
- requestBody?: never;
- responses: {
- /** @description USD price as a decimal string (6 dp). */
- 200: {
- headers: {
- [name: string]: unknown;
- };
- content: {
- 'application/json': unknown;
- };
- };
- };
- };
- ProjectsController_createDraft: {
- parameters: {
- query?: never;
- header?: never;
- path?: never;
- cookie?: never;
- };
- /** @description Full payload for the stepped draft creation */
- requestBody: {
- content: {
- 'application/json': Record;
- };
- };
- responses: {
- /** @description Draft created successfully */
- 201: {
- headers: {
- [name: string]: unknown;
- };
- content?: never;
- };
- };
- };
- ProjectsController_saveDraft: {
- parameters: {
- query?: never;
- header?: never;
- path: {
- /** @description Project ID */
- id: string;
- };
- cookie?: never;
- };
- /** @description Full payload for stepped draft autosave */
- requestBody: {
- content: {
- 'application/json': Record;
- };
- };
- responses: {
- 200: {
- headers: {
- [name: string]: unknown;
- };
- content?: never;
- };
- };
- };
- ProjectsController_listPublicProjects: {
- parameters: {
- query?: never;
- header?: never;
- path?: never;
- cookie?: never;
- };
- requestBody?: never;
- responses: {
- 200: {
- headers: {
- [name: string]: unknown;
- };
- content?: never;
- };
- };
- };
- ProjectsController_searchPublicProjects: {
- parameters: {
- query?: {
- search?: string;
- };
- header?: never;
- path?: never;
- cookie?: never;
- };
- requestBody?: never;
- responses: {
- 200: {
- headers: {
- [name: string]: unknown;
- };
- content?: never;
- };
- };
- };
- ProjectsController_listFeaturedProjects: {
- parameters: {
- query?: never;
- header?: never;
- path?: never;
- cookie?: never;
- };
- requestBody?: never;
- responses: {
- 200: {
- headers: {
- [name: string]: unknown;
- };
- content?: never;
- };
- };
- };
- ProjectsController_listProjectEdits: {
- parameters: {
- query?: never;
- header?: never;
- path: {
- id: string;
- };
- cookie?: never;
- };
- requestBody?: never;
- responses: {
- 200: {
- headers: {
- [name: string]: unknown;
- };
- content?: never;
- };
- };
- };
- ProjectsController_submitProjectEdit: {
- parameters: {
- query?: never;
- header?: never;
- path: {
- id: string;
- };
- cookie?: never;
- };
- requestBody: {
- content: {
- 'application/json': components['schemas']['Function'];
- };
- };
- responses: {
- 201: {
- headers: {
- [name: string]: unknown;
- };
- content?: never;
- };
- };
- };
- ProjectsController_publishProject: {
- parameters: {
- query?: never;
- header?: never;
- path: {
- /** @description Project ID */
- id: string;
- };
- cookie?: never;
- };
- /** @description Publish/submit action (Review & Submit) */
- requestBody: {
- content: {
- 'application/json': {
- /** @example true */
- isCampaign?: boolean;
- };
- };
- };
- responses: {
- 201: {
- headers: {
- [name: string]: unknown;
- };
- content?: never;
- };
- };
- };
- ProjectsController_getMyProjects: {
- parameters: {
- query: {
- limit?: number;
- offset?: number;
- status: string;
- };
- header?: never;
- path?: never;
- cookie?: never;
- };
- requestBody?: never;
- responses: {
- 200: {
- headers: {
- [name: string]: unknown;
- };
- content?: never;
- };
- };
- };
- ProjectsController_getPublicProjectBySlug: {
- parameters: {
- query?: never;
- header?: never;
- path: {
- /** @description Project slug */
- slug: string;
- };
- cookie?: never;
- };
- requestBody?: never;
- responses: {
- 200: {
- headers: {
- [name: string]: unknown;
- };
- content?: never;
- };
- };
- };
- ProjectsController_getProject: {
- parameters: {
- query?: never;
- header?: never;
- path: {
- /** @description Project ID */
- id: string;
- };
- cookie?: never;
- };
- requestBody?: never;
- responses: {
- 200: {
- headers: {
- [name: string]: unknown;
- };
- content?: never;
- };
- };
- };
- OrganizationBountiesDraftsController_getDraft: {
- parameters: {
- query?: never;
- header?: never;
- path: {
- organizationId: string;
- /** @description Bounty draft id */
- id: string;
- };
- cookie?: never;
- };
- requestBody?: never;
- responses: {
- /** @description Draft retrieved */
- 200: {
- headers: {
- [name: string]: unknown;
- };
- content: {
- 'application/json': components['schemas']['BountyDraftResponseDto'];
- };
- };
- };
- };
- OrganizationBountiesDraftsController_deleteDraft: {
- parameters: {
- query?: never;
- header?: never;
- path: {
- organizationId: string;
- /** @description Bounty draft id */
- id: string;
- };
- cookie?: never;
- };
- requestBody?: never;
- responses: {
- /** @description Draft deleted */
- 204: {
- headers: {
- [name: string]: unknown;
- };
- content?: never;
- };
- /** @description Draft not found, not authorized, or not an unpublished draft */
- 400: {
- headers: {
- [name: string]: unknown;
- };
- content?: never;
- };
- };
- };
- OrganizationBountiesDraftsController_updateDraft: {
- parameters: {
- query?: never;
- header?: never;
- path: {
- organizationId: string;
- /** @description Bounty draft id */
- id: string;
- };
- cookie?: never;
- };
- requestBody: {
- content: {
- 'application/json': components['schemas']['UpdateBountyDraftDto'];
- };
- };
- responses: {
- /** @description Draft updated */
- 200: {
- headers: {
- [name: string]: unknown;
- };
- content: {
- 'application/json': components['schemas']['BountyDraftResponseDto'];
- };
- };
- /** @description Validation failed for one or more sections */
- 400: {
- headers: {
- [name: string]: unknown;
- };
- content?: never;
- };
- };
- };
- OrganizationBountiesDraftsController_getOrganizationBounties: {
- parameters: {
- query: {
- page: number;
- limit: number;
- };
- header?: never;
- path: {
- organizationId: string;
- };
- cookie?: never;
- };
- requestBody?: never;
- responses: {
- /** @description Bounties retrieved */
- 200: {
- headers: {
- [name: string]: unknown;
- };
- content?: never;
- };
- };
- };
- OrganizationBountiesDraftsController_createDraft: {
- parameters: {
- query?: never;
- header?: never;
- path: {
- organizationId: string;
- };
- cookie?: never;
- };
- requestBody?: never;
- responses: {
- /** @description Draft created */
- 201: {
- headers: {
- [name: string]: unknown;
- };
- content: {
- 'application/json': components['schemas']['BountyDraftResponseDto'];
- };
- };
- /** @description User is not a member of the organization */
- 400: {
- headers: {
- [name: string]: unknown;
- };
- content?: never;
- };
- };
- };
- OrganizationBountiesDraftsController_getOrganizationDrafts: {
- parameters: {
- query?: never;
- header?: never;
- path: {
- organizationId: string;
- };
- cookie?: never;
- };
- requestBody?: never;
- responses: {
- /** @description Drafts retrieved */
- 200: {
- headers: {
- [name: string]: unknown;
- };
- content: {
- 'application/json': components['schemas']['BountyDraftResponseDto'][];
- };
- };
- };
- };
- OrganizationBountiesAiController_clarify: {
- parameters: {
- query?: never;
- header?: never;
- path: {
- /** @description Organization ID */
- organizationId: string;
- };
- cookie?: never;
- };
- requestBody: {
- content: {
- 'application/json': components['schemas']['ClarifyBountyBriefDto'];
- };
- };
- responses: {
- 200: {
- headers: {
- [name: string]: unknown;
- };
- content: {
- 'application/json': components['schemas']['ClarifyBountyDraftResponseDto'];
- };
- };
- };
- };
- OrganizationBountiesAiController_generateFromBrief: {
- parameters: {
- query?: never;
- header?: never;
- path: {
- /** @description Organization ID */
- organizationId: string;
- };
- cookie?: never;
- };
- requestBody: {
- content: {
- 'application/json': components['schemas']['GenerateBountyDraftFromBriefDto'];
- };
- };
- responses: {
- /** @description Draft generated and pre-filled. */
- 201: {
- headers: {
- [name: string]: unknown;
- };
- content: {
- 'application/json': components['schemas']['GenerateBountyDraftFromBriefResponseDto'];
- };
- };
- };
- };
- OrganizationBountiesAiController_generateFromBriefStream: {
- parameters: {
- query?: never;
- header?: never;
- path: {
- /** @description Organization ID */
- organizationId: string;
- };
- cookie?: never;
- };
- requestBody: {
- content: {
- 'application/json': components['schemas']['GenerateBountyDraftFromBriefDto'];
- };
- };
- responses: {
- 201: {
- headers: {
- [name: string]: unknown;
- };
- content?: never;
- };
- };
- };
- OrganizationBountiesAiController_regenerateSection: {
- parameters: {
- query?: never;
- header?: never;
- path: {
- /** @description Organization ID */
- organizationId: string;
- /** @description Bounty draft ID */
- id: string;
- };
- cookie?: never;
- };
- requestBody: {
- content: {
- 'application/json': components['schemas']['RegenerateBountyDraftSectionDto'];
- };
- };
- responses: {
- /** @description Regenerated section returned. */
- 201: {
- headers: {
- [name: string]: unknown;
- };
- content: {
- 'application/json': components['schemas']['RegenerateBountyDraftSectionResponseDto'];
- };
- };
- };
- };
- OrganizationBountiesEscrowController_requestFundingOtp: {
- parameters: {
- query?: never;
- header?: never;
- path: {
- organizationId: string;
- /** @description Bounty draft id */
- id: string;
- };
- cookie?: never;
- };
- requestBody?: never;
- responses: {
- 200: {
- headers: {
- [name: string]: unknown;
- };
- content: {
- 'application/json': components['schemas']['RequestFundingOtpResponseDto'];
- };
- };
- };
- };
- OrganizationBountiesEscrowController_verifyFundingOtp: {
- parameters: {
- query?: never;
- header?: never;
- path: {
- organizationId: string;
- /** @description Bounty draft id */
- id: string;
- };
- cookie?: never;
- };
- requestBody: {
- content: {
- 'application/json': components['schemas']['VerifyFundingOtpDto'];
- };
- };
- responses: {
- 200: {
- headers: {
- [name: string]: unknown;
- };
- content: {
- 'application/json': components['schemas']['VerifyFundingOtpResponseDto'];
- };
- };
- };
- };
- OrganizationBountiesEscrowController_resetToDraft: {
- parameters: {
- query?: never;
- header?: never;
- path: {
- organizationId: string;
- /** @description Bounty draft id */
- id: string;
- };
- cookie?: never;
- };
- requestBody?: never;
- responses: {
- /** @description Bounty reset to draft. */
- 200: {
- headers: {
- [name: string]: unknown;
- };
- content?: never;
- };
- };
- };
- OrganizationBountiesEscrowController_publish: {
- parameters: {
- query?: never;
- header?: never;
- path: {
- organizationId: string;
- /** @description Bounty draft id */
- id: string;
- };
- cookie?: never;
- };
- requestBody: {
- content: {
- 'application/json': components['schemas']['PublishBountyEscrowDto'];
- };
- };
- responses: {
- 200: {
- headers: {
- [name: string]: unknown;
- };
- content: {
- 'application/json': components['schemas']['BountyEscrowOpResponseDto'];
- };
- };
- /** @description Validation failed or bounty not in draft status */
- 400: {
- headers: {
- [name: string]: unknown;
- };
- content?: never;
- };
- };
- };
- OrganizationBountiesEscrowController_cancel: {
- parameters: {
- query?: never;
- header?: never;
- path: {
- organizationId: string;
- /** @description Bounty id */
- id: string;
- };
- cookie?: never;
- };
- requestBody: {
- content: {
- 'application/json': components['schemas']['CancelBountyEscrowDto'];
- };
- };
- responses: {
- 200: {
- headers: {
- [name: string]: unknown;
- };
- content: {
- 'application/json': components['schemas']['BountyEscrowOpResponseDto'];
- };
- };
- };
- };
- OrganizationBountiesEscrowController_selectWinners: {
- parameters: {
- query?: never;
- header?: never;
- path: {
- organizationId: string;
- /** @description Bounty id */
- id: string;
- };
- cookie?: never;
- };
- requestBody: {
- content: {
- 'application/json': components['schemas']['SelectBountyWinnersDto'];
- };
- };
- responses: {
- 200: {
- headers: {
- [name: string]: unknown;
- };
- content: {
- 'application/json': components['schemas']['BountyEscrowOpResponseDto'];
- };
- };
- };
- };
- OrganizationBountiesEscrowController_submitSigned: {
- parameters: {
- query?: never;
- header?: never;
- path: {
- organizationId: string;
- /** @description Bounty id */
- id: string;
- /** @description EscrowOp uuid */
- opRowId: string;
- };
- cookie?: never;
- };
- requestBody: {
- content: {
- 'application/json': components['schemas']['BountySubmitSignedXdrDto'];
- };
- };
- responses: {
- 200: {
- headers: {
- [name: string]: unknown;
- };
- content: {
- 'application/json': components['schemas']['BountyEscrowOpResponseDto'];
- };
- };
- };
- };
- OrganizationBountiesEscrowController_getOp: {
- parameters: {
- query?: never;
- header?: never;
- path: {
- organizationId: string;
- /** @description Bounty id */
- id: string;
- /** @description EscrowOp uuid */
- opRowId: string;
- };
- cookie?: never;
- };
- requestBody?: never;
- responses: {
- 200: {
- headers: {
- [name: string]: unknown;
- };
- content: {
- 'application/json': components['schemas']['BountyEscrowOpResponseDto'];
- };
- };
- };
- };
- BountyParticipantEscrowController_apply: {
- parameters: {
- query?: never;
- header?: never;
- path: {
- /** @description Bounty id */
- id: string;
- };
- cookie?: never;
- };
- requestBody: {
- content: {
- 'application/json': components['schemas']['ApplyBountyDto'];
- };
- };
- responses: {
- 200: {
- headers: {
- [name: string]: unknown;
- };
- content: {
- 'application/json': components['schemas']['BountyEscrowOpResponseDto'];
- };
- };
- };
- };
- BountyParticipantEscrowController_withdrawApplication: {
- parameters: {
- query?: never;
- header?: never;
- path: {
- /** @description Bounty id */
- id: string;
- };
- cookie?: never;
- };
- requestBody: {
- content: {
- 'application/json': components['schemas']['WithdrawApplicationDto'];
- };
- };
- responses: {
- 200: {
- headers: {
- [name: string]: unknown;
- };
- content: {
- 'application/json': components['schemas']['BountyEscrowOpResponseDto'];
- };
- };
- };
- };
- BountyParticipantEscrowController_submit: {
- parameters: {
- query?: never;
- header?: never;
- path: {
- /** @description Bounty id */
- id: string;
- };
- cookie?: never;
- };
- requestBody: {
- content: {
- 'application/json': components['schemas']['SubmitBountyDto'];
- };
- };
- responses: {
- 200: {
- headers: {
- [name: string]: unknown;
- };
- content: {
- 'application/json': components['schemas']['BountyEscrowOpResponseDto'];
- };
- };
- };
- };
- BountyParticipantEscrowController_withdrawSubmission: {
- parameters: {
- query?: never;
- header?: never;
- path: {
- /** @description Bounty id */
- id: string;
- };
- cookie?: never;
- };
- requestBody: {
- content: {
- 'application/json': components['schemas']['WithdrawSubmissionDto'];
- };
- };
- responses: {
- 200: {
- headers: {
- [name: string]: unknown;
- };
- content: {
- 'application/json': components['schemas']['BountyEscrowOpResponseDto'];
- };
- };
- };
- };
- BountyParticipantEscrowController_contribute: {
- parameters: {
- query?: never;
- header?: never;
- path: {
- /** @description Bounty id */
- id: string;
- };
- cookie?: never;
- };
- requestBody: {
- content: {
- 'application/json': components['schemas']['ContributeBountyDto'];
- };
- };
- responses: {
- 200: {
- headers: {
- [name: string]: unknown;
- };
- content: {
- 'application/json': components['schemas']['BountyEscrowOpResponseDto'];
- };
- };
- };
- };
- BountyParticipantEscrowController_submitSigned: {
- parameters: {
- query?: never;
- header?: never;
- path: {
- /** @description Bounty id */
- id: string;
- /** @description EscrowOp uuid */
- opRowId: string;
- };
- cookie?: never;
- };
- requestBody: {
- content: {
- 'application/json': components['schemas']['BountySubmitSignedXdrDto'];
- };
- };
- responses: {
- 200: {
- headers: {
- [name: string]: unknown;
- };
- content: {
- 'application/json': components['schemas']['BountyEscrowOpResponseDto'];
- };
- };
- };
- };
- BountyParticipantEscrowController_getOp: {
- parameters: {
- query?: never;
- header?: never;
- path: {
- /** @description Bounty id */
- id: string;
- /** @description EscrowOp uuid */
- opRowId: string;
- };
- cookie?: never;
- };
- requestBody?: never;
- responses: {
- 200: {
- headers: {
- [name: string]: unknown;
- };
- content: {
- 'application/json': components['schemas']['BountyEscrowOpResponseDto'];
- };
- };
- };
- };
- BountyApplicationController_create: {
- parameters: {
- query?: never;
- header?: never;
- path: {
- bountyId: string;
- };
- cookie?: never;
- };
- requestBody: {
- content: {
- 'application/json': components['schemas']['CreateBountyApplicationDto'];
- };
- };
- responses: {
- 201: {
- headers: {
- [name: string]: unknown;
- };
- content?: never;
- };
- };
- };
- BountyApplicationController_getMine: {
- parameters: {
- query?: never;
- header?: never;
- path: {
- bountyId: string;
- };
- cookie?: never;
- };
- requestBody?: never;
- responses: {
- /** @description The caller's application, or null when they have not applied. */
- 200: {
- headers: {
- [name: string]: unknown;
- };
- content: {
- 'application/json': components['schemas']['BountyApplicationResponseDto'];
- };
- };
- };
- };
- BountyApplicationController_withdraw: {
- parameters: {
- query?: never;
- header?: never;
- path: {
- bountyId: string;
- appId: string;
- };
- cookie?: never;
- };
- requestBody?: never;
- responses: {
- 200: {
- headers: {
- [name: string]: unknown;
- };
- content?: never;
- };
- };
- };
- BountyApplicationController_edit: {
- parameters: {
- query?: never;
- header?: never;
- path: {
- bountyId: string;
- appId: string;
- };
- cookie?: never;
- };
- requestBody: {
- content: {
- 'application/json': components['schemas']['EditBountyApplicationDto'];
- };
- };
- responses: {
- 200: {
- headers: {
- [name: string]: unknown;
- };
- content?: never;
- };
- };
- };
- OrganizationBountyShortlistController_list: {
- parameters: {
- query?: {
- /** @description Filter by application status */
- status?:
- | 'SUBMITTED'
- | 'SHORTLISTED'
- | 'SELECTED'
- | 'DECLINED'
- | 'WITHDRAWN';
- };
- header?: never;
- path: {
- bountyId: string;
- organizationId: unknown;
- };
- cookie?: never;
- };
- requestBody?: never;
- responses: {
- 200: {
- headers: {
- [name: string]: unknown;
- };
- content?: never;
- };
- };
- };
- OrganizationBountyShortlistController_selectForSingleClaim: {
- parameters: {
- query?: never;
- header?: never;
- path: {
- bountyId: string;
- };
- cookie?: never;
- };
- requestBody: {
- content: {
- 'application/json': components['schemas']['SelectForSingleClaimDto'];
- };
- };
- responses: {
- 200: {
- headers: {
- [name: string]: unknown;
- };
- content?: never;
- };
- };
- };
- OrganizationBountyShortlistController_createShortlist: {
- parameters: {
- query?: never;
- header?: never;
- path: {
- bountyId: string;
- };
- cookie?: never;
- };
- requestBody: {
- content: {
- 'application/json': components['schemas']['CreateShortlistDto'];
- };
- };
- responses: {
- 200: {
- headers: {
- [name: string]: unknown;
- };
- content?: never;
- };
- };
- };
- OrganizationBountyShortlistController_decline: {
- parameters: {
- query?: never;
- header?: never;
- path: {
- appId: string;
- };
- cookie?: never;
- };
- requestBody: {
- content: {
- 'application/json': components['schemas']['DeclineApplicationDto'];
- };
- };
- responses: {
- 200: {
- headers: {
- [name: string]: unknown;
- };
- content?: never;
- };
- };
- };
- BountyCompetitionJoinController_join: {
- parameters: {
- query?: never;
- header?: never;
- path: {
- bountyId: string;
- };
- cookie?: never;
- };
- requestBody: {
- content: {
- 'application/json': components['schemas']['JoinCompetitionDto'];
- };
- };
- responses: {
- 200: {
- headers: {
- [name: string]: unknown;
- };
- content?: never;
- };
- };
- };
- BountyCompetitionJoinController_leave: {
- parameters: {
- query?: never;
- header?: never;
- path: {
- bountyId: string;
- };
- cookie?: never;
- };
- requestBody: {
- content: {
- 'application/json': components['schemas']['JoinCompetitionDto'];
- };
- };
- responses: {
- 200: {
- headers: {
- [name: string]: unknown;
- };
- content?: never;
- };
- };
- };
- BountyParticipantDashboardController_myApplications: {
- parameters: {
- query?: {
- page?: number;
- limit?: number;
- status?:
- | 'SUBMITTED'
- | 'SHORTLISTED'
- | 'SELECTED'
- | 'DECLINED'
- | 'WITHDRAWN';
- };
- header?: never;
- path?: never;
- cookie?: never;
- };
- requestBody?: never;
- responses: {
- 200: {
- headers: {
- [name: string]: unknown;
- };
- content: {
- 'application/json': components['schemas']['MyBountyApplicationListDto'];
- };
- };
- };
- };
- BountyParticipantDashboardController_mySubmissions: {
- parameters: {
- query?: {
- page?: number;
- limit?: number;
- status?: unknown;
- };
- header?: never;
- path?: never;
- cookie?: never;
- };
- requestBody?: never;
- responses: {
- 200: {
- headers: {
- [name: string]: unknown;
- };
- content: {
- 'application/json': components['schemas']['MyBountySubmissionListDto'];
- };
- };
- };
- };
- BountyParticipantDashboardController_mySubmissionForBounty: {
- parameters: {
- query?: never;
- header?: never;
- path: {
- bountyId: string;
- };
- cookie?: never;
- };
- requestBody?: never;
- responses: {
- /** @description The caller's submission, or null when they have not submitted. */
- 200: {
- headers: {
- [name: string]: unknown;
- };
- content: {
- 'application/json': components['schemas']['MyBountySubmissionRowDto'];
- };
- };
- };
- };
- BountyResultsController_getResults: {
- parameters: {
- query?: never;
- header?: never;
- path: {
- id: string;
- };
- cookie?: never;
- };
- requestBody?: never;
- responses: {
- 200: {
- headers: {
- [name: string]: unknown;
- };
- content: {
- 'application/json': components['schemas']['BountyResultsDto'];
- };
- };
- };
- };
- BountyResultsController_getSubmissions: {
- parameters: {
- query?: never;
- header?: never;
- path: {
- id: string;
- };
- cookie?: never;
- };
- requestBody?: never;
- responses: {
- 200: {
- headers: {
- [name: string]: unknown;
- };
- content: {
- 'application/json': components['schemas']['BountySubmissionListDto'];
- };
- };
- };
- };
- BountyPublicController_list: {
- parameters: {
- query?: {
- page?: number;
- limit?: number;
- search?: unknown;
- category?: unknown;
- status?: unknown;
- organizationId?: unknown;
- };
- header?: never;
- path?: never;
- cookie?: never;
- };
- requestBody?: never;
- responses: {
- 200: {
- headers: {
- [name: string]: unknown;
- };
- content: {
- 'application/json': components['schemas']['BountyPublicListDto'];
- };
- };
- };
- };
- BountyPublicController_findOne: {
- parameters: {
- query?: never;
- header?: never;
- path: {
- id: string;
- };
- cookie?: never;
- };
- requestBody?: never;
- responses: {
- 200: {
- headers: {
- [name: string]: unknown;
- };
- content: {
- 'application/json': components['schemas']['BountyPublicDto'];
- };
- };
- };
- };
- OrganizationGrantsEscrowController_publish: {
- parameters: {
- query?: never;
- header?: never;
- path: {
- organizationId: string;
- /** @description Grant id */
- id: string;
- };
- cookie?: never;
- };
- requestBody: {
- content: {
- 'application/json': components['schemas']['PublishGrantEscrowDto'];
- };
- };
- responses: {
- 200: {
- headers: {
- [name: string]: unknown;
- };
- content: {
- 'application/json': components['schemas']['GrantEscrowOpResponseDto'];
- };
- };
- /** @description Draft not in DRAFT status */
- 400: {
- headers: {
- [name: string]: unknown;
- };
- content?: never;
- };
- };
- };
- OrganizationGrantsEscrowController_cancel: {
- parameters: {
- query?: never;
- header?: never;
- path: {
- organizationId: string;
- id: string;
- };
- cookie?: never;
- };
- requestBody: {
- content: {
- 'application/json': components['schemas']['CancelGrantEscrowDto'];
- };
- };
- responses: {
- 200: {
- headers: {
- [name: string]: unknown;
- };
- content: {
- 'application/json': components['schemas']['GrantEscrowOpResponseDto'];
- };
- };
- };
- };
- OrganizationGrantsEscrowController_selectWinners: {
- parameters: {
- query?: never;
- header?: never;
- path: {
- organizationId: string;
- id: string;
- };
- cookie?: never;
- };
- requestBody: {
- content: {
- 'application/json': components['schemas']['SelectGrantWinnersDto'];
- };
- };
- responses: {
- 200: {
- headers: {
- [name: string]: unknown;
- };
- content: {
- 'application/json': components['schemas']['GrantEscrowOpResponseDto'];
- };
- };
- };
- };
- OrganizationGrantsEscrowController_claimMilestone: {
- parameters: {
- query?: never;
- header?: never;
- path: {
- organizationId: string;
- id: string;
- };
- cookie?: never;
- };
- requestBody: {
- content: {
- 'application/json': components['schemas']['ClaimGrantMilestoneDto'];
- };
- };
- responses: {
- 200: {
- headers: {
- [name: string]: unknown;
- };
- content: {
- 'application/json': components['schemas']['GrantEscrowOpResponseDto'];
- };
- };
- };
- };
- OrganizationGrantsEscrowController_submitSigned: {
- parameters: {
- query?: never;
- header?: never;
- path: {
- organizationId: string;
- id: string;
- opRowId: string;
- };
- cookie?: never;
- };
- requestBody: {
- content: {
- 'application/json': components['schemas']['GrantSubmitSignedXdrDto'];
- };
- };
- responses: {
- 200: {
- headers: {
- [name: string]: unknown;
- };
- content: {
- 'application/json': components['schemas']['GrantEscrowOpResponseDto'];
- };
- };
- };
- };
- OrganizationGrantsEscrowController_getOp: {
- parameters: {
- query?: never;
- header?: never;
- path: {
- organizationId: string;
- id: string;
- opRowId: string;
- };
- cookie?: never;
- };
- requestBody?: never;
- responses: {
- 200: {
- headers: {
- [name: string]: unknown;
- };
- content: {
- 'application/json': components['schemas']['GrantEscrowOpResponseDto'];
- };
- };
- };
- };
- GrantContributeEscrowController_contribute: {
- parameters: {
- query?: never;
- header?: never;
- path: {
- /** @description Grant id */
- id: string;
- };
- cookie?: never;
- };
- requestBody: {
- content: {
- 'application/json': components['schemas']['ContributeGrantDto'];
- };
- };
- responses: {
- 200: {
- headers: {
- [name: string]: unknown;
- };
- content: {
- 'application/json': components['schemas']['GrantEscrowOpResponseDto'];
- };
- };
- };
- };
- GrantsPublicController_list: {
- parameters: {
- query?: {
- /** @description Pillar-specific status filter (open, closed, in_progress). */
- status?: string;
- /** @description Case-insensitive substring match against project title and summary. */
- search?: string;
- /** @description Filter by the underlying project category. */
- category?: string;
- /** @description Page number (1-indexed). */
- page?: number;
- /** @description Items per page. */
- limit?: number;
- };
- header?: never;
- path?: never;
- cookie?: never;
- };
- requestBody?: never;
- responses: {
- /** @description Grants page */
- 200: {
- headers: {
- [name: string]: unknown;
- };
- content: {
- 'application/json': components['schemas']['GrantPublicListResponseDto'];
- };
- };
- };
- };
- OpportunitiesController_list: {
- parameters: {
- query?: {
- /** @description Which pillar to query. "all" fans out across the four adapters; the others restrict to a single adapter. */
- type?: 'all' | 'bounty' | 'hackathon' | 'grant' | 'crowdfunding';
- /** @description Pillar-specific status filter. Adapters match case-insensitively against their own enum and return [] when no value matches. */
- status?: string;
- /** @description Case-insensitive substring match against title and summary across adapters. */
- search?: string;
- /** @description Comma-separated tag list. Pillar-aware: bounty has no tag field and returns [] for any tags filter. */
- tags?: string;
- /** @description Sort mode. "deadline" sorts ascending by the next deadline (NULLS LAST); "prize_desc" sorts by reward descending. */
- sort?: 'newest' | 'deadline' | 'prize_desc';
- /** @description Opaque pagination cursor returned by the previous response. Omit to start from page 1. */
- cursor?: string;
- /** @description Items per page. Capped at 50. */
- limit?: number;
- };
- header?: never;
- path?: never;
- cookie?: never;
- };
- requestBody?: never;
- responses: {
- /** @description Opportunities page */
- 200: {
- headers: {
- [name: string]: unknown;
- };
- content: {
- 'application/json': components['schemas']['OpportunityListResponseDto'];
- };
- };
- };
- };
- NewsletterController_subscribe: {
- parameters: {
- query?: never;
- header?: never;
- path?: never;
- cookie?: never;
- };
- requestBody: {
- content: {
- 'application/json': components['schemas']['SubscribeDto'];
- };
- };
- responses: {
- /** @description Confirmation email sent successfully */
- 201: {
- headers: {
- [name: string]: unknown;
- };
- content: {
- 'application/json': unknown;
- };
- };
- /** @description Invalid tags provided */
- 400: {
- headers: {
- [name: string]: unknown;
- };
- content?: never;
- };
- /** @description Email is already subscribed */
- 409: {
- headers: {
- [name: string]: unknown;
- };
- content?: never;
- };
- /** @description Too many requests — rate limited */
- 429: {
- headers: {
- [name: string]: unknown;
- };
- content?: never;
- };
- };
- };
- NewsletterController_confirmSubscription: {
- parameters: {
- query?: never;
- header?: never;
- path: {
- /** @description Confirmation token received via email */
- token: string;
- };
- cookie?: never;
- };
- requestBody?: never;
- responses: {
- /** @description Redirects to frontend confirmation page */
- 302: {
- headers: {
- [name: string]: unknown;
- };
- content?: never;
- };
- /** @description Confirmation token has expired */
- 400: {
- headers: {
- [name: string]: unknown;
- };
- content?: never;
- };
- /** @description Invalid or expired confirmation token */
- 404: {
- headers: {
- [name: string]: unknown;
- };
- content?: never;
- };
- };
- };
- NewsletterController_unsubscribeByToken: {
- parameters: {
- query?: never;
- header?: never;
- path: {
- /** @description Unsubscribe token from the email footer */
- token: string;
- };
- cookie?: never;
- };
- requestBody?: never;
- responses: {
- /** @description Redirects to frontend unsubscribe confirmation page */
- 302: {
- headers: {
- [name: string]: unknown;
- };
- content?: never;
- };
- /** @description Invalid unsubscribe link */
- 404: {
- headers: {
- [name: string]: unknown;
- };
- content?: never;
- };
- };
- };
- NewsletterController_unsubscribe: {
- parameters: {
- query?: never;
- header?: never;
- path?: never;
- cookie?: never;
- };
- requestBody: {
- content: {
- 'application/json': components['schemas']['UnsubscribeDto'];
- };
- };
- responses: {
- /** @description Successfully unsubscribed */
- 200: {
- headers: {
- [name: string]: unknown;
- };
- content?: never;
- };
- /** @description Subscriber not found */
- 404: {
- headers: {
- [name: string]: unknown;
- };
- content?: never;
- };
- };
- };
- NewsletterController_updatePreferences: {
- parameters: {
- query?: never;
- header?: never;
- path?: never;
- cookie?: never;
- };
- requestBody: {
- content: {
- 'application/json': components['schemas']['UpdatePreferencesDto'];
- };
- };
- responses: {
- /** @description Preferences updated successfully */
- 200: {
- headers: {
- [name: string]: unknown;
- };
- content?: never;
- };
- /** @description Invalid tags provided */
- 400: {
- headers: {
- [name: string]: unknown;
- };
- content?: never;
- };
- /** @description Subscriber not found */
- 404: {
- headers: {
- [name: string]: unknown;
- };
- content?: never;
- };
- };
- };
- NewsletterController_trackOpen: {
- parameters: {
- query?: never;
- header?: never;
- path: {
- /** @description Campaign ID */
- campaignId: string;
- /** @description Subscriber ID */
- subscriberId: string;
- };
- cookie?: never;
- };
- requestBody?: never;
- responses: {
- /** @description Returns 1x1 transparent GIF */
- 200: {
- headers: {
- [name: string]: unknown;
- };
- content?: never;
- };
- };
- };
- NewsletterController_trackClick: {
- parameters: {
- query: {
- /** @description Target URL to redirect to after tracking */
- url: string;
- };
- header?: never;
- path: {
- /** @description Campaign ID */
- campaignId: string;
- /** @description Subscriber ID */
- subscriberId: string;
- };
- cookie?: never;
- };
- requestBody?: never;
- responses: {
- /** @description Redirects to the target URL */
- 302: {
- headers: {
- [name: string]: unknown;
- };
- content?: never;
- };
- };
- };
- NewsletterController_getSubscribers: {
- parameters: {
- query?: {
- /** @description Filter by status */
- status?: 'active' | 'pending' | 'unsubscribed' | 'bounced';
- /** @description Filter by source */
- source?: string;
- /** @description Filter by tags (comma-separated) */
- tags?: string;
- /** @description Search by email or name */
- search?: string;
- /** @description Page number (default: 1) */
- page?: number;
- /** @description Items per page (default: 50) */
- limit?: number;
- };
- header?: never;
- path?: never;
- cookie?: never;
- };
- requestBody?: never;
- responses: {
- /** @description Subscribers retrieved successfully */
- 200: {
- headers: {
- [name: string]: unknown;
- };
- content: {
- 'application/json': unknown;
- };
- };
- /** @description Unauthorized */
- 401: {
- headers: {
- [name: string]: unknown;
- };
- content?: never;
- };
- };
- };
- NewsletterController_getStats: {
- parameters: {
- query?: never;
- header?: never;
- path?: never;
- cookie?: never;
- };
- requestBody?: never;
- responses: {
- /** @description Statistics retrieved successfully */
- 200: {
- headers: {
- [name: string]: unknown;
- };
- content: {
- 'application/json': unknown;
- };
- };
- /** @description Unauthorized */
- 401: {
- headers: {
- [name: string]: unknown;
- };
- content?: never;
- };
- };
- };
- NewsletterController_exportSubscribers: {
- parameters: {
- query?: {
- /** @description Filter by subscriber status */
- status?: 'active' | 'pending' | 'unsubscribed' | 'bounced';
- /** @description Filter by tags (comma-separated) */
- tags?: string;
- };
- header?: never;
- path?: never;
- cookie?: never;
- };
- requestBody?: never;
- responses: {
- /** @description CSV file downloaded */
- 200: {
- headers: {
- [name: string]: unknown;
- };
- content: {
- 'text/csv': unknown;
- };
- };
- /** @description Unauthorized */
- 401: {
- headers: {
- [name: string]: unknown;
- };
- content?: never;
- };
- };
- };
- NewsletterController_deleteSubscriber: {
- parameters: {
- query?: never;
- header?: never;
- path: {
- /** @description Subscriber ID */
- id: string;
- };
- cookie?: never;
- };
- requestBody?: never;
- responses: {
- /** @description Subscriber deleted successfully */
- 200: {
- headers: {
- [name: string]: unknown;
- };
- content: {
- 'application/json': unknown;
- };
- };
- /** @description Unauthorized */
- 401: {
- headers: {
- [name: string]: unknown;
- };
- content?: never;
- };
- /** @description Subscriber not found */
- 404: {
- headers: {
- [name: string]: unknown;
- };
- content?: never;
- };
- };
- };
- NewsletterController_getCampaigns: {
- parameters: {
- query?: {
- /** @description Page number (default: 1) */
- page?: number;
- /** @description Items per page (default: 20) */
- limit?: number;
- };
- header?: never;
- path?: never;
- cookie?: never;
- };
- requestBody?: never;
- responses: {
- /** @description Campaigns retrieved successfully */
- 200: {
- headers: {
- [name: string]: unknown;
- };
- content: {
- 'application/json': unknown;
- };
- };
- /** @description Unauthorized */
- 401: {
- headers: {
- [name: string]: unknown;
- };
- content?: never;
- };
- };
- };
- NewsletterController_createCampaign: {
- parameters: {
- query?: never;
- header?: never;
- path?: never;
- cookie?: never;
- };
- requestBody: {
- content: {
- 'application/json': components['schemas']['CreateNewsletterCampaignDto'];
- };
- };
- responses: {
- /** @description Campaign created successfully */
- 201: {
- headers: {
- [name: string]: unknown;
- };
- content?: never;
- };
- /** @description Invalid tags provided */
- 400: {
- headers: {
- [name: string]: unknown;
- };
- content?: never;
- };
- /** @description Unauthorized */
- 401: {
- headers: {
- [name: string]: unknown;
- };
- content?: never;
- };
- };
- };
- NewsletterController_getCampaign: {
- parameters: {
- query?: never;
- header?: never;
- path: {
- /** @description Campaign ID */
- id: string;
- };
- cookie?: never;
- };
- requestBody?: never;
- responses: {
- /** @description Campaign details retrieved successfully */
- 200: {
- headers: {
- [name: string]: unknown;
- };
- content?: never;
- };
- /** @description Unauthorized */
- 401: {
- headers: {
- [name: string]: unknown;
- };
- content?: never;
- };
- /** @description Campaign not found */
- 404: {
- headers: {
- [name: string]: unknown;
- };
- content?: never;
- };
- };
- };
- NewsletterController_sendCampaign: {
- parameters: {
- query?: never;
- header?: never;
- path: {
- /** @description Campaign ID to send */
- id: string;
- };
- cookie?: never;
- };
- requestBody?: never;
- responses: {
- /** @description Campaign sent successfully */
- 200: {
- headers: {
- [name: string]: unknown;
- };
- content: {
- 'application/json': unknown;
- };
- };
- /** @description Campaign already sent or currently sending */
- 400: {
- headers: {
- [name: string]: unknown;
- };
- content?: never;
- };
- /** @description Unauthorized */
- 401: {
- headers: {
- [name: string]: unknown;
- };
- content?: never;
- };
- /** @description Campaign not found */
- 404: {
- headers: {
- [name: string]: unknown;
- };
- content?: never;
- };
- };
- };
- DlqAdminController_getDepth: {
- parameters: {
- query?: never;
- header?: never;
- path?: never;
- cookie?: never;
- };
- requestBody?: never;
- responses: {
- /** @description Total parked jobs */
- 200: {
- headers: {
- [name: string]: unknown;
- };
- content?: never;
- };
- };
- };
- DlqAdminController_list: {
- parameters: {
- query?: {
- /** @description Max entries to return (1 to 200, default 50) */
- limit?: string;
- };
- header?: never;
- path?: never;
- cookie?: never;
- };
- requestBody?: never;
- responses: {
- 200: {
- headers: {
- [name: string]: unknown;
- };
- content?: never;
- };
- };
- };
- DlqAdminController_getOne: {
- parameters: {
- query?: never;
- header?: never;
- path: {
- jobId: string;
- };
- cookie?: never;
- };
- requestBody?: never;
- responses: {
- 200: {
- headers: {
- [name: string]: unknown;
- };
- content?: never;
- };
- };
- };
- DlqAdminController_replay: {
- parameters: {
- query?: never;
- header?: never;
- path: {
- jobId: string;
- };
- cookie?: never;
- };
- requestBody?: never;
- responses: {
- 201: {
- headers: {
- [name: string]: unknown;
- };
- content?: never;
- };
- };
- };
- socialSignIn: {
- parameters: {
- query?: never;
- header?: never;
- path?: never;
- cookie?: never;
- };
- requestBody: {
- content: {
- 'application/json': {
- /** @description Callback URL to redirect to after the user has signed in */
- callbackURL?: string | null;
- newUserCallbackURL?: string | null;
- /** @description Callback URL to redirect to if an error happens */
- errorCallbackURL?: string | null;
- provider: string;
- /** @description Disable automatic redirection to the provider. Useful for handling the redirection yourself */
- disableRedirect?: boolean | null;
- idToken?: {
- /** @description ID token from the provider */
- token: string;
- /** @description Nonce used to generate the token */
- nonce?: string | null;
- /** @description Access token from the provider */
- accessToken?: string | null;
- /** @description Refresh token from the provider */
- refreshToken?: string | null;
- /** @description Expiry date of the token */
- expiresAt?: number | null;
- } | null;
- /** @description Array of scopes to request from the provider. This will override the default scopes passed. */
- scopes?: unknown[] | null;
- /** @description Explicitly request sign-up. Useful when disableImplicitSignUp is true for this provider */
- requestSignUp?: boolean | null;
- /** @description The login hint to use for the authorization code request */
- loginHint?: string | null;
- additionalData?: string | null;
- };
- };
- };
- responses: {
- /** @description Success - Returns either session details or redirect URL */
- 200: {
- headers: {
- [name: string]: unknown;
- };
- content: {
- 'application/json': {
- token: string;
- user: components['schemas']['User'];
- url?: string;
- /** @enum {boolean} */
- redirect: false;
- };
- };
- };
- /** @description Bad Request. Usually due to missing parameters, or invalid parameters. */
- 400: {
- headers: {
- [name: string]: unknown;
- };
- content: {
- 'application/json': {
- message: string;
- };
+ };
+ ContentController_list: {
+ parameters: {
+ query?: {
+ /** @description Field to sort by (whitelisted per resource; ignored otherwise) */
+ sort?: string;
+ dir?: "asc" | "desc";
+ page?: number;
+ limit?: number;
+ /** @description Match against the post title or slug */
+ search?: string;
+ /** @description Show archived (soft-deleted) posts instead of active ones. */
+ archived?: boolean;
+ };
+ header?: never;
+ path?: never;
+ cookie?: never;
+ };
+ requestBody?: never;
+ responses: {
+ 200: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content: {
+ "application/json": components["schemas"]["PaginatedContentDto"];
+ };
+ };
+ };
+ };
+ ContentController_create: {
+ parameters: {
+ query?: never;
+ header?: never;
+ path?: never;
+ cookie?: never;
+ };
+ requestBody: {
+ content: {
+ "application/json": components["schemas"]["CreateBlogPostDto"];
+ };
+ };
+ responses: {
+ 200: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content: {
+ "application/json": components["schemas"]["ContentMutationResponseDto"];
+ };
+ };
+ };
+ };
+ ContentController_getById: {
+ parameters: {
+ query?: never;
+ header?: never;
+ path: {
+ id: string;
+ };
+ cookie?: never;
+ };
+ requestBody?: never;
+ responses: {
+ 200: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content: {
+ "application/json": components["schemas"]["AdminContentDetailDto"];
+ };
+ };
+ };
+ };
+ ContentController_update: {
+ parameters: {
+ query?: never;
+ header?: never;
+ path: {
+ id: string;
+ };
+ cookie?: never;
+ };
+ requestBody: {
+ content: {
+ "application/json": components["schemas"]["UpdateContentDto"];
+ };
+ };
+ responses: {
+ 200: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content: {
+ "application/json": components["schemas"]["ContentMutationResponseDto"];
+ };
+ };
+ };
+ };
+ ContentController_setPublished: {
+ parameters: {
+ query?: never;
+ header?: never;
+ path: {
+ id: string;
+ };
+ cookie?: never;
+ };
+ requestBody: {
+ content: {
+ "application/json": components["schemas"]["SetPublishedDto"];
+ };
+ };
+ responses: {
+ 200: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content: {
+ "application/json": components["schemas"]["ContentActionResponseDto"];
+ };
+ };
+ };
+ };
+ ContentController_archive: {
+ parameters: {
+ query?: never;
+ header?: never;
+ path: {
+ id: string;
+ };
+ cookie?: never;
+ };
+ requestBody: {
+ content: {
+ "application/json": components["schemas"]["ArchiveContentDto"];
+ };
+ };
+ responses: {
+ 200: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content: {
+ "application/json": components["schemas"]["ContentActionResponseDto"];
+ };
+ };
+ };
+ };
+ ContentController_restore: {
+ parameters: {
+ query?: never;
+ header?: never;
+ path: {
+ id: string;
+ };
+ cookie?: never;
+ };
+ requestBody?: never;
+ responses: {
+ 200: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content: {
+ "application/json": components["schemas"]["ContentActionResponseDto"];
+ };
+ };
+ };
+ };
+ CrowdfundingChecklistController_list: {
+ parameters: {
+ query?: never;
+ header?: never;
+ path?: never;
+ cookie?: never;
+ };
+ requestBody?: never;
+ responses: {
+ 200: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content: {
+ "application/json": components["schemas"]["ChecklistItemDto"][];
+ };
+ };
+ };
+ };
+ CrowdfundingChecklistController_create: {
+ parameters: {
+ query?: never;
+ header?: never;
+ path?: never;
+ cookie?: never;
+ };
+ requestBody: {
+ content: {
+ "application/json": components["schemas"]["CreateChecklistItemDto"];
+ };
+ };
+ responses: {
+ 200: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content: {
+ "application/json": components["schemas"]["ChecklistItemDto"];
+ };
+ };
+ };
+ };
+ CrowdfundingChecklistController_reorder: {
+ parameters: {
+ query?: never;
+ header?: never;
+ path?: never;
+ cookie?: never;
+ };
+ requestBody: {
+ content: {
+ "application/json": components["schemas"]["ReorderChecklistDto"];
+ };
+ };
+ responses: {
+ 200: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content: {
+ "application/json": components["schemas"]["ChecklistItemDto"][];
+ };
+ };
};
- };
- /** @description Unauthorized. Due to missing or invalid authentication. */
- 401: {
- headers: {
- [name: string]: unknown;
+ };
+ CrowdfundingChecklistController_archive: {
+ parameters: {
+ query?: never;
+ header?: never;
+ path: {
+ itemId: string;
+ };
+ cookie?: never;
};
- content: {
- 'application/json': {
- message: string;
- };
+ requestBody?: never;
+ responses: {
+ 204: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content?: never;
+ };
};
- };
- /** @description Forbidden. You do not have permission to access this resource or to perform this action. */
- 403: {
- headers: {
- [name: string]: unknown;
+ };
+ CrowdfundingChecklistController_update: {
+ parameters: {
+ query?: never;
+ header?: never;
+ path: {
+ itemId: string;
+ };
+ cookie?: never;
};
- content: {
- 'application/json': {
- message?: string;
- };
+ requestBody: {
+ content: {
+ "application/json": components["schemas"]["UpdateChecklistItemDto"];
+ };
};
- };
- /** @description Not Found. The requested resource was not found. */
- 404: {
- headers: {
- [name: string]: unknown;
+ responses: {
+ 200: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content: {
+ "application/json": components["schemas"]["ChecklistItemDto"];
+ };
+ };
};
- content: {
- 'application/json': {
- message?: string;
- };
+ };
+ CrowdfundingController_list: {
+ parameters: {
+ query?: {
+ /** @description Field to sort by (whitelisted per resource; ignored otherwise) */
+ sort?: string;
+ dir?: "asc" | "desc";
+ page?: number;
+ limit?: number;
+ /** @description Match against the project title */
+ search?: string;
+ /** @description v2Status filter. Omit to list the full lifecycle (all statuses). */
+ status?: "DRAFT" | "SUBMITTED_FOR_REVIEW" | "REVIEW_REJECTED" | "REVIEW_APPROVED" | "VOTING" | "VOTE_FAILED" | "VOTE_PASSED" | "PUBLISHING" | "FUNDING" | "COMPLETED" | "CANCELLED" | "PAUSED" | "FAILED";
+ };
+ header?: never;
+ path?: never;
+ cookie?: never;
+ };
+ requestBody?: never;
+ responses: {
+ 200: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content: {
+ "application/json": components["schemas"]["PaginatedCrowdfundingDto"];
+ };
+ };
};
- };
- /** @description Too Many Requests. You have exceeded the rate limit. Try again later. */
- 429: {
- headers: {
- [name: string]: unknown;
+ };
+ CrowdfundingController_getById: {
+ parameters: {
+ query?: never;
+ header?: never;
+ path: {
+ id: string;
+ };
+ cookie?: never;
};
- content: {
- 'application/json': {
- message?: string;
- };
+ requestBody?: never;
+ responses: {
+ 200: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content: {
+ "application/json": components["schemas"]["AdminCrowdfundingDetailDto"];
+ };
+ };
};
- };
- /** @description Internal Server Error. This is a problem with the server that you cannot fix. */
- 500: {
- headers: {
- [name: string]: unknown;
+ };
+ CrowdfundingController_approve: {
+ parameters: {
+ query?: never;
+ header?: never;
+ path: {
+ id: string;
+ };
+ cookie?: never;
};
- content: {
- 'application/json': {
- message?: string;
- };
- };
- };
- };
- };
- getSession: {
- parameters: {
- query?: never;
- header?: never;
- path?: never;
- cookie?: never;
- };
- requestBody?: never;
- responses: {
- /** @description Success */
- 200: {
- headers: {
- [name: string]: unknown;
- };
- content: {
- 'application/json': {
- session: components['schemas']['Session'];
- user: components['schemas']['User'];
- } | null;
- };
- };
- /** @description Bad Request. Usually due to missing parameters, or invalid parameters. */
- 400: {
- headers: {
- [name: string]: unknown;
- };
- content: {
- 'application/json': {
- message: string;
- };
+ requestBody: {
+ content: {
+ "application/json": components["schemas"]["ApproveCampaignDto"];
+ };
};
- };
- /** @description Unauthorized. Due to missing or invalid authentication. */
- 401: {
- headers: {
- [name: string]: unknown;
+ responses: {
+ 200: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content: {
+ "application/json": components["schemas"]["CrowdfundingActionResponseDto"];
+ };
+ };
};
- content: {
- 'application/json': {
- message: string;
- };
+ };
+ CrowdfundingController_reject: {
+ parameters: {
+ query?: never;
+ header?: never;
+ path: {
+ id: string;
+ };
+ cookie?: never;
};
- };
- /** @description Forbidden. You do not have permission to access this resource or to perform this action. */
- 403: {
- headers: {
- [name: string]: unknown;
+ requestBody: {
+ content: {
+ "application/json": components["schemas"]["RejectCampaignDto"];
+ };
};
- content: {
- 'application/json': {
- message?: string;
- };
+ responses: {
+ 200: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content: {
+ "application/json": components["schemas"]["CrowdfundingActionResponseDto"];
+ };
+ };
};
- };
- /** @description Not Found. The requested resource was not found. */
- 404: {
- headers: {
- [name: string]: unknown;
+ };
+ CrowdfundingController_requestRevision: {
+ parameters: {
+ query?: never;
+ header?: never;
+ path: {
+ id: string;
+ };
+ cookie?: never;
};
- content: {
- 'application/json': {
- message?: string;
- };
+ requestBody: {
+ content: {
+ "application/json": components["schemas"]["RequestRevisionDto"];
+ };
};
- };
- /** @description Too Many Requests. You have exceeded the rate limit. Try again later. */
- 429: {
- headers: {
- [name: string]: unknown;
+ responses: {
+ 200: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content: {
+ "application/json": components["schemas"]["CrowdfundingActionResponseDto"];
+ };
+ };
};
- content: {
- 'application/json': {
- message?: string;
- };
+ };
+ SecurityController_enroll: {
+ parameters: {
+ query?: never;
+ header?: never;
+ path?: never;
+ cookie?: never;
};
- };
- /** @description Internal Server Error. This is a problem with the server that you cannot fix. */
- 500: {
- headers: {
- [name: string]: unknown;
+ requestBody?: never;
+ responses: {
+ 200: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content: {
+ "application/json": components["schemas"]["TotpEnrollResponseDto"];
+ };
+ };
};
- content: {
- 'application/json': {
- message?: string;
- };
- };
- };
- };
- };
- signOut: {
- parameters: {
- query?: never;
- header?: never;
- path?: never;
- cookie?: never;
- };
- requestBody?: {
- content: {
- 'application/json': Record;
- };
- };
- responses: {
- /** @description Success */
- 200: {
- headers: {
- [name: string]: unknown;
- };
- content: {
- 'application/json': {
- success?: boolean;
- };
- };
- };
- /** @description Bad Request. Usually due to missing parameters, or invalid parameters. */
- 400: {
- headers: {
- [name: string]: unknown;
- };
- content: {
- 'application/json': {
- message: string;
- };
+ };
+ SecurityController_activate: {
+ parameters: {
+ query?: never;
+ header?: never;
+ path?: never;
+ cookie?: never;
};
- };
- /** @description Unauthorized. Due to missing or invalid authentication. */
- 401: {
- headers: {
- [name: string]: unknown;
+ requestBody: {
+ content: {
+ "application/json": components["schemas"]["TotpCodeDto"];
+ };
};
- content: {
- 'application/json': {
- message: string;
- };
+ responses: {
+ 200: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content: {
+ "application/json": components["schemas"]["OkResponseDto"];
+ };
+ };
};
- };
- /** @description Forbidden. You do not have permission to access this resource or to perform this action. */
- 403: {
- headers: {
- [name: string]: unknown;
+ };
+ SecurityController_stepUp: {
+ parameters: {
+ query?: never;
+ header?: never;
+ path?: never;
+ cookie?: never;
};
- content: {
- 'application/json': {
- message?: string;
- };
+ requestBody: {
+ content: {
+ "application/json": components["schemas"]["TotpCodeDto"];
+ };
};
- };
- /** @description Not Found. The requested resource was not found. */
- 404: {
- headers: {
- [name: string]: unknown;
+ responses: {
+ 200: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content: {
+ "application/json": components["schemas"]["OkResponseDto"];
+ };
+ };
};
- content: {
- 'application/json': {
- message?: string;
- };
+ };
+ AuditController_list: {
+ parameters: {
+ query?: {
+ /** @description Field to sort by (whitelisted per resource; ignored otherwise) */
+ sort?: string;
+ dir?: "asc" | "desc";
+ page?: number;
+ limit?: number;
+ /** @description Match against the actor email, action, or target id */
+ search?: string;
+ };
+ header?: never;
+ path?: never;
+ cookie?: never;
};
- };
- /** @description Too Many Requests. You have exceeded the rate limit. Try again later. */
- 429: {
- headers: {
- [name: string]: unknown;
+ requestBody?: never;
+ responses: {
+ 200: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content: {
+ "application/json": components["schemas"]["PaginatedAuditDto"];
+ };
+ };
};
- content: {
- 'application/json': {
- message?: string;
- };
+ };
+ AuditController_stream: {
+ parameters: {
+ query?: never;
+ header?: never;
+ path?: never;
+ cookie?: never;
};
- };
- /** @description Internal Server Error. This is a problem with the server that you cannot fix. */
- 500: {
- headers: {
- [name: string]: unknown;
+ requestBody?: never;
+ responses: {
+ 200: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content?: never;
+ };
};
- content: {
- 'application/json': {
- message?: string;
- };
- };
- };
- };
- };
- signUpWithEmailAndPassword: {
- parameters: {
- query?: never;
- header?: never;
- path?: never;
- cookie?: never;
- };
- requestBody?: {
- content: {
- 'application/json': {
- /** @description The name of the user */
- name: string;
- /** @description The email of the user */
- email: string;
- /** @description The password of the user */
- password: string;
- /** @description The profile image URL of the user */
- image?: string;
- /** @description The URL to use for email verification callback */
- callbackURL?: string;
- /** @description If this is false, the session will not be remembered. Default is `true`. */
- rememberMe?: boolean;
- };
- };
- };
- responses: {
- /** @description Successfully created user */
- 200: {
- headers: {
- [name: string]: unknown;
- };
- content: {
- 'application/json': {
- /** @description Authentication token for the session */
- token?: string | null;
- user: {
- /** @description The unique identifier of the user */
- id: string;
- /**
- * Format: email
- * @description The email address of the user
- */
- email: string;
- /** @description The name of the user */
- name: string;
- /**
- * Format: uri
- * @description The profile image URL of the user
- */
- image?: string | null;
- /** @description Whether the email has been verified */
- emailVerified: boolean;
- /**
- * Format: date-time
- * @description When the user was created
- */
- createdAt: string;
- /**
- * Format: date-time
- * @description When the user was last updated
- */
- updatedAt: string;
- };
- };
- };
- };
- /** @description Bad Request. Usually due to missing parameters, or invalid parameters. */
- 400: {
- headers: {
- [name: string]: unknown;
- };
- content: {
- 'application/json': {
- message: string;
- };
+ };
+ FeatureFlagsController_list: {
+ parameters: {
+ query?: never;
+ header?: never;
+ path?: never;
+ cookie?: never;
};
- };
- /** @description Unauthorized. Due to missing or invalid authentication. */
- 401: {
- headers: {
- [name: string]: unknown;
+ requestBody?: never;
+ responses: {
+ 200: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content: {
+ "application/json": components["schemas"]["FeatureFlagsResponseDto"];
+ };
+ };
};
- content: {
- 'application/json': {
- message: string;
- };
+ };
+ FeatureFlagsController_toggle: {
+ parameters: {
+ query?: never;
+ header?: never;
+ path: {
+ key: string;
+ };
+ cookie?: never;
};
- };
- /** @description Forbidden. You do not have permission to access this resource or to perform this action. */
- 403: {
- headers: {
- [name: string]: unknown;
+ requestBody: {
+ content: {
+ "application/json": components["schemas"]["ToggleFeatureFlagDto"];
+ };
};
- content: {
- 'application/json': {
- message?: string;
- };
+ responses: {
+ 200: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content: {
+ "application/json": components["schemas"]["FeatureFlagDto"];
+ };
+ };
};
- };
- /** @description Not Found. The requested resource was not found. */
- 404: {
- headers: {
- [name: string]: unknown;
+ };
+ StaffController_list: {
+ parameters: {
+ query?: never;
+ header?: never;
+ path?: never;
+ cookie?: never;
};
- content: {
- 'application/json': {
- message?: string;
- };
+ requestBody?: never;
+ responses: {
+ 200: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content: {
+ "application/json": components["schemas"]["StaffListResponseDto"];
+ };
+ };
};
- };
- /** @description Unprocessable Entity. User already exists or failed to create user. */
- 422: {
- headers: {
- [name: string]: unknown;
+ };
+ StaffController_setRole: {
+ parameters: {
+ query?: never;
+ header?: never;
+ path: {
+ id: string;
+ };
+ cookie?: never;
};
- content: {
- 'application/json': {
- message?: string;
- };
+ requestBody: {
+ content: {
+ "application/json": components["schemas"]["SetRoleDto"];
+ };
};
- };
- /** @description Too Many Requests. You have exceeded the rate limit. Try again later. */
- 429: {
- headers: {
- [name: string]: unknown;
+ responses: {
+ 200: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content: {
+ "application/json": components["schemas"]["StaffListItemDto"];
+ };
+ };
};
- content: {
- 'application/json': {
- message?: string;
- };
+ };
+ GovernanceController_list: {
+ parameters: {
+ query?: {
+ /** @description Filter to a single proposal status */
+ status?: "PROPOSED" | "APPROVED" | "REJECTED" | "EXECUTED";
+ };
+ header?: never;
+ path?: never;
+ cookie?: never;
+ };
+ requestBody?: never;
+ responses: {
+ 200: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content: {
+ "application/json": components["schemas"]["GovernanceListResponseDto"];
+ };
+ };
};
- };
- /** @description Internal Server Error. This is a problem with the server that you cannot fix. */
- 500: {
- headers: {
- [name: string]: unknown;
+ };
+ GovernanceController_propose: {
+ parameters: {
+ query?: never;
+ header?: never;
+ path?: never;
+ cookie?: never;
};
- content: {
- 'application/json': {
- message?: string;
- };
- };
- };
- };
- };
- signInEmail: {
- parameters: {
- query?: never;
- header?: never;
- path?: never;
- cookie?: never;
- };
- requestBody: {
- content: {
- 'application/json': {
- /** @description Email of the user */
- email: string;
- /** @description Password of the user */
- password: string;
- /** @description Callback URL to use as a redirect for email verification */
- callbackURL?: string | null;
- /**
- * @description If this is false, the session will not be remembered. Default is `true`.
- * @default true
- */
- rememberMe?: boolean | null;
- };
- };
- };
- responses: {
- /** @description Success - Returns either session details or redirect URL */
- 200: {
- headers: {
- [name: string]: unknown;
- };
- content: {
- 'application/json': {
- /** @enum {boolean} */
- redirect: false;
- /** @description Session token */
- token: string;
- url?: string | null;
- user: components['schemas']['User'];
- };
- };
- };
- /** @description Bad Request. Usually due to missing parameters, or invalid parameters. */
- 400: {
- headers: {
- [name: string]: unknown;
- };
- content: {
- 'application/json': {
- message: string;
- };
+ requestBody: {
+ content: {
+ "application/json": components["schemas"]["CreateProposalDto"];
+ };
};
- };
- /** @description Unauthorized. Due to missing or invalid authentication. */
- 401: {
- headers: {
- [name: string]: unknown;
+ responses: {
+ 200: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content: {
+ "application/json": components["schemas"]["GovernanceProposalDto"];
+ };
+ };
};
- content: {
- 'application/json': {
- message: string;
- };
+ };
+ GovernanceController_decide: {
+ parameters: {
+ query?: never;
+ header?: never;
+ path: {
+ id: string;
+ };
+ cookie?: never;
};
- };
- /** @description Forbidden. You do not have permission to access this resource or to perform this action. */
- 403: {
- headers: {
- [name: string]: unknown;
+ requestBody: {
+ content: {
+ "application/json": components["schemas"]["DecideProposalDto"];
+ };
};
- content: {
- 'application/json': {
- message?: string;
- };
+ responses: {
+ 200: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content: {
+ "application/json": components["schemas"]["GovernanceProposalDto"];
+ };
+ };
};
- };
- /** @description Not Found. The requested resource was not found. */
- 404: {
- headers: {
- [name: string]: unknown;
+ };
+ GovernanceController_execute: {
+ parameters: {
+ query?: never;
+ header?: never;
+ path: {
+ id: string;
+ };
+ cookie?: never;
};
- content: {
- 'application/json': {
- message?: string;
- };
+ requestBody: {
+ content: {
+ "application/json": components["schemas"]["ExecuteProposalDto"];
+ };
};
- };
- /** @description Too Many Requests. You have exceeded the rate limit. Try again later. */
- 429: {
- headers: {
- [name: string]: unknown;
+ responses: {
+ 200: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content: {
+ "application/json": components["schemas"]["GovernanceProposalDto"];
+ };
+ };
};
- content: {
- 'application/json': {
- message?: string;
- };
+ };
+ GovernanceContractController_listTokens: {
+ parameters: {
+ query?: never;
+ header?: never;
+ path?: never;
+ cookie?: never;
};
- };
- /** @description Internal Server Error. This is a problem with the server that you cannot fix. */
- 500: {
- headers: {
- [name: string]: unknown;
+ requestBody?: never;
+ responses: {
+ 200: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content: {
+ "application/json": components["schemas"]["SupportedTokenDto"][];
+ };
+ };
};
- content: {
- 'application/json': {
- message?: string;
- };
- };
- };
- };
- };
- resetPassword: {
- parameters: {
- query?: never;
- header?: never;
- path?: never;
- cookie?: never;
- };
- requestBody: {
- content: {
- 'application/json': {
- /** @description The new password to set */
- newPassword: string;
- /** @description The token to reset the password */
- token?: string | null;
- };
- };
- };
- responses: {
- /** @description Success */
- 200: {
- headers: {
- [name: string]: unknown;
- };
- content: {
- 'application/json': {
- status?: boolean;
- };
- };
- };
- /** @description Bad Request. Usually due to missing parameters, or invalid parameters. */
- 400: {
- headers: {
- [name: string]: unknown;
- };
- content: {
- 'application/json': {
- message: string;
- };
+ };
+ GovernanceContractController_syncTokens: {
+ parameters: {
+ query?: never;
+ header?: never;
+ path?: never;
+ cookie?: never;
};
- };
- /** @description Unauthorized. Due to missing or invalid authentication. */
- 401: {
- headers: {
- [name: string]: unknown;
+ requestBody?: never;
+ responses: {
+ 200: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content: {
+ "application/json": components["schemas"]["SyncTokensResultDto"];
+ };
+ };
};
- content: {
- 'application/json': {
- message: string;
- };
+ };
+ GovernanceContractController_importToken: {
+ parameters: {
+ query?: never;
+ header?: never;
+ path?: never;
+ cookie?: never;
};
- };
- /** @description Forbidden. You do not have permission to access this resource or to perform this action. */
- 403: {
- headers: {
- [name: string]: unknown;
+ requestBody: {
+ content: {
+ "application/json": components["schemas"]["RegisterTokenDto"];
+ };
};
- content: {
- 'application/json': {
- message?: string;
- };
+ responses: {
+ 200: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content: {
+ "application/json": components["schemas"]["SupportedTokenDto"];
+ };
+ };
};
- };
- /** @description Not Found. The requested resource was not found. */
- 404: {
- headers: {
- [name: string]: unknown;
+ };
+ GovernanceContractController_pauseState: {
+ parameters: {
+ query?: never;
+ header?: never;
+ path?: never;
+ cookie?: never;
};
- content: {
- 'application/json': {
- message?: string;
- };
+ requestBody?: never;
+ responses: {
+ 200: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content: {
+ "application/json": components["schemas"]["PauseStateDto"];
+ };
+ };
};
- };
- /** @description Too Many Requests. You have exceeded the rate limit. Try again later. */
- 429: {
- headers: {
- [name: string]: unknown;
+ };
+ GovernanceContractController_buildRegisterToken: {
+ parameters: {
+ query?: never;
+ header?: never;
+ path?: never;
+ cookie?: never;
};
- content: {
- 'application/json': {
- message?: string;
- };
+ requestBody: {
+ content: {
+ "application/json": components["schemas"]["RegisterTokenDto"];
+ };
};
- };
- /** @description Internal Server Error. This is a problem with the server that you cannot fix. */
- 500: {
- headers: {
- [name: string]: unknown;
+ responses: {
+ 200: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content: {
+ "application/json": components["schemas"]["ContractOpXdrDto"];
+ };
+ };
};
- content: {
- 'application/json': {
- message?: string;
- };
- };
- };
- };
- };
- verifyPassword: {
- parameters: {
- query?: never;
- header?: never;
- path?: never;
- cookie?: never;
- };
- requestBody: {
- content: {
- 'application/json': {
- /** @description The password to verify */
- password: string;
- };
- };
- };
- responses: {
- /** @description Success */
- 200: {
- headers: {
- [name: string]: unknown;
- };
- content: {
- 'application/json': {
- status?: boolean;
- };
- };
- };
- /** @description Bad Request. Usually due to missing parameters, or invalid parameters. */
- 400: {
- headers: {
- [name: string]: unknown;
- };
- content: {
- 'application/json': {
- message: string;
- };
+ };
+ GovernanceContractController_buildDeregisterToken: {
+ parameters: {
+ query?: never;
+ header?: never;
+ path?: never;
+ cookie?: never;
};
- };
- /** @description Unauthorized. Due to missing or invalid authentication. */
- 401: {
- headers: {
- [name: string]: unknown;
+ requestBody: {
+ content: {
+ "application/json": components["schemas"]["DeregisterTokenDto"];
+ };
};
- content: {
- 'application/json': {
- message: string;
- };
+ responses: {
+ 200: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content: {
+ "application/json": components["schemas"]["ContractOpXdrDto"];
+ };
+ };
};
- };
- /** @description Forbidden. You do not have permission to access this resource or to perform this action. */
- 403: {
- headers: {
- [name: string]: unknown;
+ };
+ GovernanceContractController_buildPause: {
+ parameters: {
+ query?: never;
+ header?: never;
+ path?: never;
+ cookie?: never;
};
- content: {
- 'application/json': {
- message?: string;
- };
+ requestBody?: never;
+ responses: {
+ 200: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content: {
+ "application/json": components["schemas"]["ContractOpXdrDto"];
+ };
+ };
};
- };
- /** @description Not Found. The requested resource was not found. */
- 404: {
- headers: {
- [name: string]: unknown;
+ };
+ GovernanceContractController_buildUnpause: {
+ parameters: {
+ query?: never;
+ header?: never;
+ path?: never;
+ cookie?: never;
};
- content: {
- 'application/json': {
- message?: string;
- };
+ requestBody?: never;
+ responses: {
+ 200: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content: {
+ "application/json": components["schemas"]["ContractOpXdrDto"];
+ };
+ };
+ };
+ };
+ GovernanceContractController_submitSigned: {
+ parameters: {
+ query?: never;
+ header?: never;
+ path: {
+ id: string;
+ };
+ cookie?: never;
};
- };
- /** @description Too Many Requests. You have exceeded the rate limit. Try again later. */
- 429: {
- headers: {
- [name: string]: unknown;
+ requestBody: {
+ content: {
+ "application/json": components["schemas"]["SubmitSignedContractOpDto"];
+ };
};
- content: {
- 'application/json': {
- message?: string;
- };
+ responses: {
+ 200: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content: {
+ "application/json": components["schemas"]["ContractOpResultDto"];
+ };
+ };
};
- };
- /** @description Internal Server Error. This is a problem with the server that you cannot fix. */
- 500: {
- headers: {
- [name: string]: unknown;
+ };
+ KycController_list: {
+ parameters: {
+ query?: {
+ /** @description Field to sort by (whitelisted per resource; ignored otherwise) */
+ sort?: string;
+ dir?: "asc" | "desc";
+ /** @description Filter to one KYC state. Omit for all KYC-engaged users. */
+ status?: "in_review" | "approved" | "declined";
+ page?: number;
+ limit?: number;
+ /** @description Match against the user name or email */
+ search?: string;
+ };
+ header?: never;
+ path?: never;
+ cookie?: never;
+ };
+ requestBody?: never;
+ responses: {
+ 200: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content: {
+ "application/json": components["schemas"]["PaginatedKycDto"];
+ };
+ };
};
- content: {
- 'application/json': {
- message?: string;
- };
- };
- };
- };
- };
- sendVerificationEmail: {
- parameters: {
- query?: never;
- header?: never;
- path?: never;
- cookie?: never;
- };
- requestBody?: {
- content: {
- 'application/json': {
- /**
- * @description The email to send the verification email to
- * @example user@example.com
- */
- email: string;
- /**
- * @description The URL to use for email verification callback
- * @example https://example.com/callback
- */
- callbackURL?: string | null;
- };
- };
- };
- responses: {
- /** @description Success */
- 200: {
- headers: {
- [name: string]: unknown;
- };
- content: {
- 'application/json': {
- /**
- * @description Indicates if the email was sent successfully
- * @example true
- */
- status?: boolean;
- };
+ };
+ KycController_connection: {
+ parameters: {
+ query?: never;
+ header?: never;
+ path?: never;
+ cookie?: never;
};
- };
- /** @description Bad Request */
- 400: {
- headers: {
- [name: string]: unknown;
+ requestBody?: never;
+ responses: {
+ 200: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content: {
+ "application/json": components["schemas"]["DiditConnectionDto"];
+ };
+ };
};
- content: {
- 'application/json': {
- /**
- * @description Error message
- * @example Verification email isn't enabled
- */
- message?: string;
- };
+ };
+ KycController_sync: {
+ parameters: {
+ query?: never;
+ header?: never;
+ path: {
+ userId: string;
+ };
+ cookie?: never;
};
- };
- /** @description Unauthorized. Due to missing or invalid authentication. */
- 401: {
- headers: {
- [name: string]: unknown;
+ requestBody?: never;
+ responses: {
+ 200: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content: {
+ "application/json": components["schemas"]["KycSyncResponseDto"];
+ };
+ };
};
- content: {
- 'application/json': {
- message: string;
- };
+ };
+ KycController_retrigger: {
+ parameters: {
+ query?: never;
+ header?: never;
+ path: {
+ userId: string;
+ };
+ cookie?: never;
};
- };
- /** @description Forbidden. You do not have permission to access this resource or to perform this action. */
- 403: {
- headers: {
- [name: string]: unknown;
+ requestBody?: never;
+ responses: {
+ 200: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content: {
+ "application/json": components["schemas"]["KycRetriggerResponseDto"];
+ };
+ };
};
- content: {
- 'application/json': {
- message?: string;
- };
+ };
+ KycController_override: {
+ parameters: {
+ query?: never;
+ header?: never;
+ path: {
+ userId: string;
+ };
+ cookie?: never;
};
- };
- /** @description Not Found. The requested resource was not found. */
- 404: {
- headers: {
- [name: string]: unknown;
+ requestBody: {
+ content: {
+ "application/json": components["schemas"]["KycOverrideDto"];
+ };
};
- content: {
- 'application/json': {
- message?: string;
- };
+ responses: {
+ 200: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content: {
+ "application/json": components["schemas"]["KycOverrideResponseDto"];
+ };
+ };
+ };
+ };
+ MilestonesController_list: {
+ parameters: {
+ query?: {
+ /** @description Field to sort by (whitelisted per resource; ignored otherwise) */
+ sort?: string;
+ dir?: "asc" | "desc";
+ /** @description Which pillar to list. Defaults to crowdfunding. */
+ type?: "crowdfunding" | "grant";
+ page?: number;
+ limit?: number;
+ /** @description Match against milestone or program title */
+ search?: string;
+ };
+ header?: never;
+ path?: never;
+ cookie?: never;
+ };
+ requestBody?: never;
+ responses: {
+ 200: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content: {
+ "application/json": components["schemas"]["PaginatedMilestonesDto"];
+ };
+ };
};
- };
- /** @description Too Many Requests. You have exceeded the rate limit. Try again later. */
- 429: {
- headers: {
- [name: string]: unknown;
+ };
+ MilestonesController_findOne: {
+ parameters: {
+ query?: never;
+ header?: never;
+ path: {
+ id: string;
+ };
+ cookie?: never;
};
- content: {
- 'application/json': {
- message?: string;
- };
+ requestBody?: never;
+ responses: {
+ 200: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content: {
+ "application/json": components["schemas"]["AdminMilestoneDetailDto"];
+ };
+ };
+ };
+ };
+ MilestonesController_approve: {
+ parameters: {
+ query?: never;
+ header?: never;
+ path: {
+ id: string;
+ };
+ cookie?: never;
+ };
+ requestBody?: never;
+ responses: {
+ 200: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content: {
+ "application/json": components["schemas"]["MilestoneActionResponseDto"];
+ };
+ };
+ };
+ };
+ MilestonesController_reject: {
+ parameters: {
+ query?: never;
+ header?: never;
+ path: {
+ id: string;
+ };
+ cookie?: never;
};
- };
- /** @description Internal Server Error. This is a problem with the server that you cannot fix. */
- 500: {
- headers: {
- [name: string]: unknown;
+ requestBody: {
+ content: {
+ "application/json": components["schemas"]["AdminV2RejectMilestoneDto"];
+ };
};
- content: {
- 'application/json': {
- message?: string;
- };
- };
- };
- };
- };
- changeEmail: {
- parameters: {
- query?: never;
- header?: never;
- path?: never;
- cookie?: never;
- };
- requestBody: {
- content: {
- 'application/json': {
- /** @description The new email address to set must be a valid email address */
- newEmail: string;
- /** @description The URL to redirect to after email verification */
- callbackURL?: string | null;
- };
- };
- };
- responses: {
- /** @description Email change request processed successfully */
- 200: {
- headers: {
- [name: string]: unknown;
- };
- content: {
- 'application/json': {
- user?: components['schemas']['User'];
- /** @description Indicates if the request was successful */
- status: boolean;
- /**
- * @description Status message of the email change process
- * @enum {string|null}
- */
- message?: 'Email updated' | 'Verification email sent' | null;
- };
+ responses: {
+ 200: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content: {
+ "application/json": components["schemas"]["MilestoneActionResponseDto"];
+ };
+ };
};
- };
- /** @description Bad Request. Usually due to missing parameters, or invalid parameters. */
- 400: {
- headers: {
- [name: string]: unknown;
+ };
+ MilestonesController_buildReleaseXdr: {
+ parameters: {
+ query?: never;
+ header?: never;
+ path: {
+ id: string;
+ };
+ cookie?: never;
};
- content: {
- 'application/json': {
- message: string;
- };
+ requestBody?: never;
+ responses: {
+ 200: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content: {
+ "application/json": components["schemas"]["MilestoneReleaseXdrDto"];
+ };
+ };
};
- };
- /** @description Unauthorized. Due to missing or invalid authentication. */
- 401: {
- headers: {
- [name: string]: unknown;
+ };
+ MilestonesController_submitReleaseSigned: {
+ parameters: {
+ query?: never;
+ header?: never;
+ path: {
+ id: string;
+ };
+ cookie?: never;
};
- content: {
- 'application/json': {
- message: string;
- };
+ requestBody: {
+ content: {
+ "application/json": components["schemas"]["SubmitMilestoneReleaseDto"];
+ };
};
- };
- /** @description Forbidden. You do not have permission to access this resource or to perform this action. */
- 403: {
- headers: {
- [name: string]: unknown;
+ responses: {
+ 200: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content: {
+ "application/json": components["schemas"]["MilestoneReleaseResultDto"];
+ };
+ };
};
- content: {
- 'application/json': {
- message?: string;
- };
+ };
+ WalletsController_list: {
+ parameters: {
+ query?: {
+ /** @description Field to sort by (whitelisted per resource; ignored otherwise) */
+ sort?: string;
+ dir?: "asc" | "desc";
+ page?: number;
+ limit?: number;
+ /** @description Match against the public key (G-address) */
+ search?: string;
+ };
+ header?: never;
+ path?: never;
+ cookie?: never;
};
- };
- /** @description Not Found. The requested resource was not found. */
- 404: {
- headers: {
- [name: string]: unknown;
+ requestBody?: never;
+ responses: {
+ 200: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content: {
+ "application/json": components["schemas"]["PaginatedWalletsDto"];
+ };
+ };
};
- content: {
- 'application/json': {
- message?: string;
- };
+ };
+ HackathonBriefTemplatesController_list: {
+ parameters: {
+ query?: never;
+ header?: never;
+ path?: never;
+ cookie?: never;
};
- };
- /** @description Unprocessable Entity. Email already exists */
- 422: {
- headers: {
- [name: string]: unknown;
+ requestBody?: never;
+ responses: {
+ 200: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content: {
+ "application/json": components["schemas"]["HackathonBriefTemplatesResponseDto"];
+ };
+ };
};
- content: {
- 'application/json': {
- message?: string;
- };
+ };
+ HackathonBriefTemplatesController_create: {
+ parameters: {
+ query?: never;
+ header?: never;
+ path?: never;
+ cookie?: never;
};
- };
- /** @description Too Many Requests. You have exceeded the rate limit. Try again later. */
- 429: {
- headers: {
- [name: string]: unknown;
+ requestBody: {
+ content: {
+ "application/json": components["schemas"]["CreateHackathonBriefTemplateDto"];
+ };
};
- content: {
- 'application/json': {
- message?: string;
- };
+ responses: {
+ 200: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content: {
+ "application/json": components["schemas"]["HackathonBriefTemplateDto"];
+ };
+ };
};
- };
- /** @description Internal Server Error. This is a problem with the server that you cannot fix. */
- 500: {
- headers: {
- [name: string]: unknown;
+ };
+ HackathonBriefTemplatesController_update: {
+ parameters: {
+ query?: never;
+ header?: never;
+ path: {
+ id: string;
+ };
+ cookie?: never;
};
- content: {
- 'application/json': {
- message?: string;
- };
- };
- };
- };
- };
- changePassword: {
- parameters: {
- query?: never;
- header?: never;
- path?: never;
- cookie?: never;
- };
- requestBody: {
- content: {
- 'application/json': {
- /** @description The new password to set */
- newPassword: string;
- /** @description The current password is required */
- currentPassword: string;
- /** @description Must be a boolean value */
- revokeOtherSessions?: boolean | null;
- };
- };
- };
- responses: {
- /** @description Password successfully changed */
- 200: {
- headers: {
- [name: string]: unknown;
- };
- content: {
- 'application/json': {
- /** @description New session token if other sessions were revoked */
- token?: string | null;
- user: {
- /** @description The unique identifier of the user */
- id: string;
- /**
- * Format: email
- * @description The email address of the user
- */
- email: string;
- /** @description The name of the user */
- name: string;
- /**
- * Format: uri
- * @description The profile image URL of the user
- */
- image?: string | null;
- /** @description Whether the email has been verified */
- emailVerified: boolean;
- /**
- * Format: date-time
- * @description When the user was created
- */
- createdAt: string;
- /**
- * Format: date-time
- * @description When the user was last updated
- */
- updatedAt: string;
- };
- };
- };
- };
- /** @description Bad Request. Usually due to missing parameters, or invalid parameters. */
- 400: {
- headers: {
- [name: string]: unknown;
- };
- content: {
- 'application/json': {
- message: string;
- };
+ requestBody: {
+ content: {
+ "application/json": components["schemas"]["UpdateHackathonBriefTemplateDto"];
+ };
};
- };
- /** @description Unauthorized. Due to missing or invalid authentication. */
- 401: {
- headers: {
- [name: string]: unknown;
+ responses: {
+ 200: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content: {
+ "application/json": components["schemas"]["HackathonBriefTemplateDto"];
+ };
+ };
};
- content: {
- 'application/json': {
- message: string;
- };
+ };
+ HackathonBriefTemplatesController_archive: {
+ parameters: {
+ query?: never;
+ header?: never;
+ path: {
+ id: string;
+ };
+ cookie?: never;
};
- };
- /** @description Forbidden. You do not have permission to access this resource or to perform this action. */
- 403: {
- headers: {
- [name: string]: unknown;
+ requestBody?: never;
+ responses: {
+ 204: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content?: never;
+ };
};
- content: {
- 'application/json': {
- message?: string;
- };
+ };
+ HackathonBriefTemplatesPublicController_list: {
+ parameters: {
+ query?: never;
+ header?: never;
+ path?: never;
+ cookie?: never;
};
- };
- /** @description Not Found. The requested resource was not found. */
- 404: {
- headers: {
- [name: string]: unknown;
+ requestBody?: never;
+ responses: {
+ 200: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content: {
+ "application/json": components["schemas"]["HackathonBriefTemplatesResponseDto"];
+ };
+ };
};
- content: {
- 'application/json': {
- message?: string;
- };
+ };
+ MarketingTemplatesController_list: {
+ parameters: {
+ query?: never;
+ header?: never;
+ path?: never;
+ cookie?: never;
};
- };
- /** @description Too Many Requests. You have exceeded the rate limit. Try again later. */
- 429: {
- headers: {
- [name: string]: unknown;
+ requestBody?: never;
+ responses: {
+ 200: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content: {
+ "application/json": components["schemas"]["MarketingTemplatesResponseDto"];
+ };
+ };
};
- content: {
- 'application/json': {
- message?: string;
- };
+ };
+ MarketingTemplatesController_create: {
+ parameters: {
+ query?: never;
+ header?: never;
+ path?: never;
+ cookie?: never;
};
- };
- /** @description Internal Server Error. This is a problem with the server that you cannot fix. */
- 500: {
- headers: {
- [name: string]: unknown;
+ requestBody: {
+ content: {
+ "application/json": components["schemas"]["CreateMarketingTemplateDto"];
+ };
};
- content: {
- 'application/json': {
- message?: string;
- };
- };
- };
- };
- };
- updateUser: {
- parameters: {
- query?: never;
- header?: never;
- path?: never;
- cookie?: never;
- };
- requestBody?: {
- content: {
- 'application/json': {
- /** @description The name of the user */
- name?: string;
- /** @description The image of the user */
- image?: string | null;
- };
- };
- };
- responses: {
- /** @description Success */
- 200: {
- headers: {
- [name: string]: unknown;
- };
- content: {
- 'application/json': {
- user?: components['schemas']['User'];
- };
- };
- };
- /** @description Bad Request. Usually due to missing parameters, or invalid parameters. */
- 400: {
- headers: {
- [name: string]: unknown;
- };
- content: {
- 'application/json': {
- message: string;
- };
+ responses: {
+ 200: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content: {
+ "application/json": components["schemas"]["MarketingTemplateDto"];
+ };
+ };
};
- };
- /** @description Unauthorized. Due to missing or invalid authentication. */
- 401: {
- headers: {
- [name: string]: unknown;
+ };
+ MarketingTemplatesController_update: {
+ parameters: {
+ query?: never;
+ header?: never;
+ path: {
+ id: string;
+ };
+ cookie?: never;
};
- content: {
- 'application/json': {
- message: string;
- };
+ requestBody: {
+ content: {
+ "application/json": components["schemas"]["UpdateMarketingTemplateDto"];
+ };
};
- };
- /** @description Forbidden. You do not have permission to access this resource or to perform this action. */
- 403: {
- headers: {
- [name: string]: unknown;
+ responses: {
+ 200: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content: {
+ "application/json": components["schemas"]["MarketingTemplateDto"];
+ };
+ };
};
- content: {
- 'application/json': {
- message?: string;
- };
+ };
+ MarketingTemplatesController_archive: {
+ parameters: {
+ query?: never;
+ header?: never;
+ path: {
+ id: string;
+ };
+ cookie?: never;
};
- };
- /** @description Not Found. The requested resource was not found. */
- 404: {
- headers: {
- [name: string]: unknown;
+ requestBody?: never;
+ responses: {
+ 204: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content?: never;
+ };
};
- content: {
- 'application/json': {
- message?: string;
- };
+ };
+ MarketingCampaignsController_list: {
+ parameters: {
+ query?: never;
+ header?: never;
+ path?: never;
+ cookie?: never;
};
- };
- /** @description Too Many Requests. You have exceeded the rate limit. Try again later. */
- 429: {
- headers: {
- [name: string]: unknown;
+ requestBody?: never;
+ responses: {
+ 200: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content: {
+ "application/json": components["schemas"]["MarketingCampaignsResponseDto"];
+ };
+ };
};
- content: {
- 'application/json': {
- message?: string;
- };
+ };
+ MarketingCampaignsController_create: {
+ parameters: {
+ query?: never;
+ header?: never;
+ path?: never;
+ cookie?: never;
};
- };
- /** @description Internal Server Error. This is a problem with the server that you cannot fix. */
- 500: {
- headers: {
- [name: string]: unknown;
+ requestBody: {
+ content: {
+ "application/json": components["schemas"]["CreateMarketingCampaignDto"];
+ };
};
- content: {
- 'application/json': {
- message?: string;
- };
- };
- };
- };
- };
- deleteUser: {
- parameters: {
- query?: never;
- header?: never;
- path?: never;
- cookie?: never;
- };
- requestBody?: {
- content: {
- 'application/json': {
- /** @description The callback URL to redirect to after the user is deleted */
- callbackURL?: string;
- /** @description The user's password. Required if session is not fresh */
- password?: string;
- /** @description The deletion verification token */
- token?: string;
- };
- };
- };
- responses: {
- /** @description User deletion processed successfully */
- 200: {
- headers: {
- [name: string]: unknown;
- };
- content: {
- 'application/json': {
- /** @description Indicates if the operation was successful */
- success: boolean;
- /**
- * @description Status message of the deletion process
- * @enum {string}
- */
- message: 'User deleted' | 'Verification email sent';
- };
+ responses: {
+ 200: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content: {
+ "application/json": components["schemas"]["MarketingCampaignDto"];
+ };
+ };
};
- };
- /** @description Bad Request. Usually due to missing parameters, or invalid parameters. */
- 400: {
- headers: {
- [name: string]: unknown;
+ };
+ MarketingCampaignsController_update: {
+ parameters: {
+ query?: never;
+ header?: never;
+ path: {
+ id: string;
+ };
+ cookie?: never;
};
- content: {
- 'application/json': {
- message: string;
- };
+ requestBody: {
+ content: {
+ "application/json": components["schemas"]["UpdateMarketingCampaignDto"];
+ };
};
- };
- /** @description Unauthorized. Due to missing or invalid authentication. */
- 401: {
- headers: {
- [name: string]: unknown;
+ responses: {
+ 200: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content: {
+ "application/json": components["schemas"]["MarketingCampaignDto"];
+ };
+ };
};
- content: {
- 'application/json': {
- message: string;
- };
+ };
+ MarketingCampaignsController_cancel: {
+ parameters: {
+ query?: never;
+ header?: never;
+ path: {
+ id: string;
+ };
+ cookie?: never;
};
- };
- /** @description Forbidden. You do not have permission to access this resource or to perform this action. */
- 403: {
- headers: {
- [name: string]: unknown;
+ requestBody?: never;
+ responses: {
+ 204: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content?: never;
+ };
};
- content: {
- 'application/json': {
- message?: string;
- };
+ };
+ MarketingCampaignsController_audienceSize: {
+ parameters: {
+ query?: never;
+ header?: never;
+ path?: never;
+ cookie?: never;
};
- };
- /** @description Not Found. The requested resource was not found. */
- 404: {
- headers: {
- [name: string]: unknown;
+ requestBody: {
+ content: {
+ "application/json": components["schemas"]["PreviewCampaignAudienceDto"];
+ };
};
- content: {
- 'application/json': {
- message?: string;
- };
+ responses: {
+ 200: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content: {
+ "application/json": components["schemas"]["CampaignAudienceSizeDto"];
+ };
+ };
};
- };
- /** @description Too Many Requests. You have exceeded the rate limit. Try again later. */
- 429: {
- headers: {
- [name: string]: unknown;
+ };
+ MarketingCampaignsController_send: {
+ parameters: {
+ query?: never;
+ header?: never;
+ path: {
+ id: string;
+ };
+ cookie?: never;
};
- content: {
- 'application/json': {
- message?: string;
- };
+ requestBody?: never;
+ responses: {
+ 200: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content: {
+ "application/json": components["schemas"]["MarketingCampaignDto"];
+ };
+ };
};
- };
- /** @description Internal Server Error. This is a problem with the server that you cannot fix. */
- 500: {
- headers: {
- [name: string]: unknown;
+ };
+ MarketingAutomationsController_list: {
+ parameters: {
+ query?: never;
+ header?: never;
+ path?: never;
+ cookie?: never;
};
- content: {
- 'application/json': {
- message?: string;
- };
- };
- };
- };
- };
- requestPasswordReset: {
- parameters: {
- query?: never;
- header?: never;
- path?: never;
- cookie?: never;
- };
- requestBody: {
- content: {
- 'application/json': {
- /** @description The email address of the user to send a password reset email to */
- email: string;
- /** @description The URL to redirect the user to reset their password. If the token isn't valid or expired, it'll be redirected with a query parameter `?error=INVALID_TOKEN`. If the token is valid, it'll be redirected with a query parameter `?token=VALID_TOKEN */
- redirectTo?: string | null;
- };
- };
- };
- responses: {
- /** @description Success */
- 200: {
- headers: {
- [name: string]: unknown;
- };
- content: {
- 'application/json': {
- status?: boolean;
- message?: string;
- };
+ requestBody?: never;
+ responses: {
+ 200: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content: {
+ "application/json": components["schemas"]["MarketingAutomationsResponseDto"];
+ };
+ };
};
- };
- /** @description Bad Request. Usually due to missing parameters, or invalid parameters. */
- 400: {
- headers: {
- [name: string]: unknown;
+ };
+ MarketingAutomationsController_create: {
+ parameters: {
+ query?: never;
+ header?: never;
+ path?: never;
+ cookie?: never;
};
- content: {
- 'application/json': {
- message: string;
- };
+ requestBody: {
+ content: {
+ "application/json": components["schemas"]["CreateMarketingAutomationDto"];
+ };
};
- };
- /** @description Unauthorized. Due to missing or invalid authentication. */
- 401: {
- headers: {
- [name: string]: unknown;
+ responses: {
+ 200: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content: {
+ "application/json": components["schemas"]["MarketingAutomationDto"];
+ };
+ };
};
- content: {
- 'application/json': {
- message: string;
- };
+ };
+ MarketingAutomationsController_update: {
+ parameters: {
+ query?: never;
+ header?: never;
+ path: {
+ id: string;
+ };
+ cookie?: never;
};
- };
- /** @description Forbidden. You do not have permission to access this resource or to perform this action. */
- 403: {
- headers: {
- [name: string]: unknown;
+ requestBody: {
+ content: {
+ "application/json": components["schemas"]["UpdateMarketingAutomationDto"];
+ };
};
- content: {
- 'application/json': {
- message?: string;
- };
+ responses: {
+ 200: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content: {
+ "application/json": components["schemas"]["MarketingAutomationDto"];
+ };
+ };
};
- };
- /** @description Not Found. The requested resource was not found. */
- 404: {
- headers: {
- [name: string]: unknown;
+ };
+ MarketingAutomationsController_remove: {
+ parameters: {
+ query?: never;
+ header?: never;
+ path: {
+ id: string;
+ };
+ cookie?: never;
};
- content: {
- 'application/json': {
- message?: string;
- };
+ requestBody?: never;
+ responses: {
+ 204: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content?: never;
+ };
};
- };
- /** @description Too Many Requests. You have exceeded the rate limit. Try again later. */
- 429: {
- headers: {
- [name: string]: unknown;
+ };
+ MarketingAutomationsController_toggle: {
+ parameters: {
+ query?: never;
+ header?: never;
+ path: {
+ id: string;
+ };
+ cookie?: never;
};
- content: {
- 'application/json': {
- message?: string;
- };
+ requestBody?: never;
+ responses: {
+ 200: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content: {
+ "application/json": components["schemas"]["MarketingAutomationDto"];
+ };
+ };
};
- };
- /** @description Internal Server Error. This is a problem with the server that you cannot fix. */
- 500: {
- headers: {
- [name: string]: unknown;
+ };
+ PricesController_getAll: {
+ parameters: {
+ query?: never;
+ header?: never;
+ path?: never;
+ cookie?: never;
};
- content: {
- 'application/json': {
- message?: string;
- };
- };
- };
- };
- };
- resetPasswordCallback: {
- parameters: {
- query: {
- /** @description The URL to redirect the user to reset their password */
- callbackURL: string;
- };
- header?: never;
- path: {
- /** @description The token to reset the password */
- token: string;
- };
- cookie?: never;
- };
- requestBody?: never;
- responses: {
- /** @description Success */
- 200: {
- headers: {
- [name: string]: unknown;
- };
- content: {
- 'application/json': {
- token?: string;
- };
- };
- };
- /** @description Bad Request. Usually due to missing parameters, or invalid parameters. */
- 400: {
- headers: {
- [name: string]: unknown;
- };
- content: {
- 'application/json': {
- message: string;
- };
+ requestBody?: never;
+ responses: {
+ /** @description Map of asset symbol → USD price as a decimal string (6 dp). */
+ 200: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content: {
+ "application/json": unknown;
+ };
+ };
};
- };
- /** @description Unauthorized. Due to missing or invalid authentication. */
- 401: {
- headers: {
- [name: string]: unknown;
+ };
+ PricesController_getDebug: {
+ parameters: {
+ query?: never;
+ header?: never;
+ path?: never;
+ cookie?: never;
};
- content: {
- 'application/json': {
- message: string;
- };
+ requestBody?: never;
+ responses: {
+ /** @description Per-asset debug info. `source` is which provider won the resolution chain. */
+ 200: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content: {
+ "application/json": unknown;
+ };
+ };
};
- };
- /** @description Forbidden. You do not have permission to access this resource or to perform this action. */
- 403: {
- headers: {
- [name: string]: unknown;
+ };
+ PricesController_getOne: {
+ parameters: {
+ query?: never;
+ header?: never;
+ path: {
+ /** @description Asset ticker (case-insensitive). */
+ symbol: "XLM" | "USDC" | "EURC" | "USDGLO";
+ };
+ cookie?: never;
};
- content: {
- 'application/json': {
- message?: string;
- };
+ requestBody?: never;
+ responses: {
+ /** @description USD price as a decimal string (6 dp). */
+ 200: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content: {
+ "application/json": unknown;
+ };
+ };
};
- };
- /** @description Not Found. The requested resource was not found. */
- 404: {
- headers: {
- [name: string]: unknown;
+ };
+ ProjectsController_createDraft: {
+ parameters: {
+ query?: never;
+ header?: never;
+ path?: never;
+ cookie?: never;
};
- content: {
- 'application/json': {
- message?: string;
- };
+ /** @description Full payload for the stepped draft creation */
+ requestBody: {
+ content: {
+ "application/json": Record;
+ };
};
- };
- /** @description Too Many Requests. You have exceeded the rate limit. Try again later. */
- 429: {
- headers: {
- [name: string]: unknown;
+ responses: {
+ /** @description Draft created successfully */
+ 201: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content?: never;
+ };
};
- content: {
- 'application/json': {
- message?: string;
- };
+ };
+ ProjectsController_saveDraft: {
+ parameters: {
+ query?: never;
+ header?: never;
+ path: {
+ /** @description Project ID */
+ id: string;
+ };
+ cookie?: never;
};
- };
- /** @description Internal Server Error. This is a problem with the server that you cannot fix. */
- 500: {
- headers: {
- [name: string]: unknown;
+ /** @description Full payload for stepped draft autosave */
+ requestBody: {
+ content: {
+ "application/json": Record;
+ };
};
- content: {
- 'application/json': {
- message?: string;
- };
- };
- };
- };
- };
- listUserSessions: {
- parameters: {
- query?: never;
- header?: never;
- path?: never;
- cookie?: never;
- };
- requestBody?: never;
- responses: {
- /** @description Success */
- 200: {
- headers: {
- [name: string]: unknown;
- };
- content: {
- 'application/json': components['schemas']['Session'][];
- };
- };
- /** @description Bad Request. Usually due to missing parameters, or invalid parameters. */
- 400: {
- headers: {
- [name: string]: unknown;
- };
- content: {
- 'application/json': {
- message: string;
- };
+ responses: {
+ 200: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content?: never;
+ };
};
- };
- /** @description Unauthorized. Due to missing or invalid authentication. */
- 401: {
- headers: {
- [name: string]: unknown;
+ };
+ ProjectsController_listPublicProjects: {
+ parameters: {
+ query?: never;
+ header?: never;
+ path?: never;
+ cookie?: never;
};
- content: {
- 'application/json': {
- message: string;
- };
+ requestBody?: never;
+ responses: {
+ 200: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content?: never;
+ };
};
- };
- /** @description Forbidden. You do not have permission to access this resource or to perform this action. */
- 403: {
- headers: {
- [name: string]: unknown;
+ };
+ ProjectsController_searchPublicProjects: {
+ parameters: {
+ query?: {
+ search?: string;
+ };
+ header?: never;
+ path?: never;
+ cookie?: never;
};
- content: {
- 'application/json': {
- message?: string;
- };
+ requestBody?: never;
+ responses: {
+ 200: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content?: never;
+ };
};
- };
- /** @description Not Found. The requested resource was not found. */
- 404: {
- headers: {
- [name: string]: unknown;
+ };
+ ProjectsController_listFeaturedProjects: {
+ parameters: {
+ query?: never;
+ header?: never;
+ path?: never;
+ cookie?: never;
};
- content: {
- 'application/json': {
- message?: string;
- };
+ requestBody?: never;
+ responses: {
+ 200: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content?: never;
+ };
};
- };
- /** @description Too Many Requests. You have exceeded the rate limit. Try again later. */
- 429: {
- headers: {
- [name: string]: unknown;
+ };
+ ProjectsController_listProjectEdits: {
+ parameters: {
+ query?: never;
+ header?: never;
+ path: {
+ id: string;
+ };
+ cookie?: never;
};
- content: {
- 'application/json': {
- message?: string;
- };
+ requestBody?: never;
+ responses: {
+ 200: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content?: never;
+ };
};
- };
- /** @description Internal Server Error. This is a problem with the server that you cannot fix. */
- 500: {
- headers: {
- [name: string]: unknown;
+ };
+ ProjectsController_submitProjectEdit: {
+ parameters: {
+ query?: never;
+ header?: never;
+ path: {
+ id: string;
+ };
+ cookie?: never;
};
- content: {
- 'application/json': {
- message?: string;
- };
- };
- };
- };
- };
- linkSocialAccount: {
- parameters: {
- query?: never;
- header?: never;
- path?: never;
- cookie?: never;
- };
- requestBody: {
- content: {
- 'application/json': {
- /** @description The URL to redirect to after the user has signed in */
- callbackURL?: string | null;
- provider: string;
- idToken?: {
- token: string;
- nonce?: string | null;
- accessToken?: string | null;
- refreshToken?: string | null;
- scopes?: unknown[] | null;
- } | null;
- requestSignUp?: boolean | null;
- /** @description Additional scopes to request from the provider */
- scopes?: unknown[] | null;
- /** @description The URL to redirect to if there is an error during the link process */
- errorCallbackURL?: string | null;
- /** @description Disable automatic redirection to the provider. Useful for handling the redirection yourself */
- disableRedirect?: boolean | null;
- additionalData?: string | null;
- };
- };
- };
- responses: {
- /** @description Success */
- 200: {
- headers: {
- [name: string]: unknown;
- };
- content: {
- 'application/json': {
- /** @description The authorization URL to redirect the user to */
- url?: string;
- /** @description Indicates if the user should be redirected to the authorization URL */
- redirect: boolean;
- status?: boolean;
- };
- };
- };
- /** @description Bad Request. Usually due to missing parameters, or invalid parameters. */
- 400: {
- headers: {
- [name: string]: unknown;
- };
- content: {
- 'application/json': {
- message: string;
- };
+ requestBody: {
+ content: {
+ "application/json": components["schemas"]["Function"];
+ };
};
- };
- /** @description Unauthorized. Due to missing or invalid authentication. */
- 401: {
- headers: {
- [name: string]: unknown;
+ responses: {
+ 201: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content?: never;
+ };
};
- content: {
- 'application/json': {
- message: string;
- };
+ };
+ ProjectsController_publishProject: {
+ parameters: {
+ query?: never;
+ header?: never;
+ path: {
+ /** @description Project ID */
+ id: string;
+ };
+ cookie?: never;
};
- };
- /** @description Forbidden. You do not have permission to access this resource or to perform this action. */
- 403: {
- headers: {
- [name: string]: unknown;
+ /** @description Publish/submit action (Review & Submit) */
+ requestBody: {
+ content: {
+ "application/json": {
+ /** @example true */
+ isCampaign?: boolean;
+ };
+ };
};
- content: {
- 'application/json': {
- message?: string;
- };
+ responses: {
+ 201: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content?: never;
+ };
};
- };
- /** @description Not Found. The requested resource was not found. */
- 404: {
- headers: {
- [name: string]: unknown;
+ };
+ ProjectsController_getMyProjects: {
+ parameters: {
+ query: {
+ limit?: number;
+ offset?: number;
+ status: string;
+ };
+ header?: never;
+ path?: never;
+ cookie?: never;
};
- content: {
- 'application/json': {
- message?: string;
- };
+ requestBody?: never;
+ responses: {
+ 200: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content?: never;
+ };
};
- };
- /** @description Too Many Requests. You have exceeded the rate limit. Try again later. */
- 429: {
- headers: {
- [name: string]: unknown;
+ };
+ ProjectsController_getPublicProjectBySlug: {
+ parameters: {
+ query?: never;
+ header?: never;
+ path: {
+ /** @description Project slug */
+ slug: string;
+ };
+ cookie?: never;
};
- content: {
- 'application/json': {
- message?: string;
- };
+ requestBody?: never;
+ responses: {
+ 200: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content?: never;
+ };
};
- };
- /** @description Internal Server Error. This is a problem with the server that you cannot fix. */
- 500: {
- headers: {
- [name: string]: unknown;
+ };
+ ProjectsController_getProject: {
+ parameters: {
+ query?: never;
+ header?: never;
+ path: {
+ /** @description Project ID */
+ id: string;
+ };
+ cookie?: never;
};
- content: {
- 'application/json': {
- message?: string;
- };
- };
- };
- };
- };
- listUserAccounts: {
- parameters: {
- query?: never;
- header?: never;
- path?: never;
- cookie?: never;
- };
- requestBody?: never;
- responses: {
- /** @description Success */
- 200: {
- headers: {
- [name: string]: unknown;
- };
- content: {
- 'application/json': {
- id: string;
- providerId: string;
- /** Format: date-time */
- createdAt: string;
- /** Format: date-time */
- updatedAt: string;
- accountId: string;
- userId: string;
- scopes: string[];
- }[];
+ requestBody?: never;
+ responses: {
+ 200: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content?: never;
+ };
};
- };
- /** @description Bad Request. Usually due to missing parameters, or invalid parameters. */
- 400: {
- headers: {
- [name: string]: unknown;
+ };
+ OrganizationBountiesDraftsController_getDraft: {
+ parameters: {
+ query?: never;
+ header?: never;
+ path: {
+ organizationId: string;
+ /** @description Bounty draft id */
+ id: string;
+ };
+ cookie?: never;
};
- content: {
- 'application/json': {
- message: string;
- };
+ requestBody?: never;
+ responses: {
+ /** @description Draft retrieved */
+ 200: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content: {
+ "application/json": components["schemas"]["BountyDraftResponseDto"];
+ };
+ };
};
- };
- /** @description Unauthorized. Due to missing or invalid authentication. */
- 401: {
- headers: {
- [name: string]: unknown;
+ };
+ OrganizationBountiesDraftsController_deleteDraft: {
+ parameters: {
+ query?: never;
+ header?: never;
+ path: {
+ organizationId: string;
+ /** @description Bounty draft id */
+ id: string;
+ };
+ cookie?: never;
};
- content: {
- 'application/json': {
- message: string;
- };
+ requestBody?: never;
+ responses: {
+ /** @description Draft deleted */
+ 204: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content?: never;
+ };
+ /** @description Draft not found, not authorized, or not an unpublished draft */
+ 400: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content?: never;
+ };
};
- };
- /** @description Forbidden. You do not have permission to access this resource or to perform this action. */
- 403: {
- headers: {
- [name: string]: unknown;
+ };
+ OrganizationBountiesDraftsController_updateDraft: {
+ parameters: {
+ query?: never;
+ header?: never;
+ path: {
+ organizationId: string;
+ /** @description Bounty draft id */
+ id: string;
+ };
+ cookie?: never;
};
- content: {
- 'application/json': {
- message?: string;
- };
+ requestBody: {
+ content: {
+ "application/json": components["schemas"]["UpdateBountyDraftDto"];
+ };
};
- };
- /** @description Not Found. The requested resource was not found. */
- 404: {
- headers: {
- [name: string]: unknown;
+ responses: {
+ /** @description Draft updated */
+ 200: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content: {
+ "application/json": components["schemas"]["BountyDraftResponseDto"];
+ };
+ };
+ /** @description Validation failed for one or more sections */
+ 400: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content?: never;
+ };
};
- content: {
- 'application/json': {
- message?: string;
- };
+ };
+ OrganizationBountiesDraftsController_getOrganizationBounties: {
+ parameters: {
+ query: {
+ page: number;
+ limit: number;
+ };
+ header?: never;
+ path: {
+ organizationId: string;
+ };
+ cookie?: never;
};
- };
- /** @description Too Many Requests. You have exceeded the rate limit. Try again later. */
- 429: {
- headers: {
- [name: string]: unknown;
+ requestBody?: never;
+ responses: {
+ /** @description Bounties retrieved */
+ 200: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content?: never;
+ };
};
- content: {
- 'application/json': {
- message?: string;
- };
+ };
+ OrganizationBountiesDraftsController_createDraft: {
+ parameters: {
+ query?: never;
+ header?: never;
+ path: {
+ organizationId: string;
+ };
+ cookie?: never;
};
- };
- /** @description Internal Server Error. This is a problem with the server that you cannot fix. */
- 500: {
- headers: {
- [name: string]: unknown;
+ requestBody?: never;
+ responses: {
+ /** @description Draft created */
+ 201: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content: {
+ "application/json": components["schemas"]["BountyDraftResponseDto"];
+ };
+ };
+ /** @description User is not a member of the organization */
+ 400: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content?: never;
+ };
};
- content: {
- 'application/json': {
- message?: string;
- };
- };
- };
- };
- };
- sendEmailVerificationOTP: {
- parameters: {
- query?: never;
- header?: never;
- path?: never;
- cookie?: never;
- };
- requestBody: {
- content: {
- 'application/json': {
- /** @description Email address to send the OTP */
- email: string;
- /** @description Type of the OTP */
- type: string;
- };
- };
- };
- responses: {
- /** @description Success */
- 200: {
- headers: {
- [name: string]: unknown;
- };
- content: {
- 'application/json': {
- success?: boolean;
- };
- };
- };
- /** @description Bad Request. Usually due to missing parameters, or invalid parameters. */
- 400: {
- headers: {
- [name: string]: unknown;
- };
- content: {
- 'application/json': {
- message: string;
- };
+ };
+ OrganizationBountiesDraftsController_getOrganizationDrafts: {
+ parameters: {
+ query?: never;
+ header?: never;
+ path: {
+ organizationId: string;
+ };
+ cookie?: never;
};
- };
- /** @description Unauthorized. Due to missing or invalid authentication. */
- 401: {
- headers: {
- [name: string]: unknown;
+ requestBody?: never;
+ responses: {
+ /** @description Drafts retrieved */
+ 200: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content: {
+ "application/json": components["schemas"]["BountyDraftResponseDto"][];
+ };
+ };
};
- content: {
- 'application/json': {
- message: string;
- };
+ };
+ OrganizationBountiesAiController_clarify: {
+ parameters: {
+ query?: never;
+ header?: never;
+ path: {
+ /** @description Organization ID */
+ organizationId: string;
+ };
+ cookie?: never;
};
- };
- /** @description Forbidden. You do not have permission to access this resource or to perform this action. */
- 403: {
- headers: {
- [name: string]: unknown;
+ requestBody: {
+ content: {
+ "application/json": components["schemas"]["ClarifyBountyBriefDto"];
+ };
};
- content: {
- 'application/json': {
- message?: string;
- };
+ responses: {
+ 200: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content: {
+ "application/json": components["schemas"]["ClarifyBountyDraftResponseDto"];
+ };
+ };
};
- };
- /** @description Not Found. The requested resource was not found. */
- 404: {
- headers: {
- [name: string]: unknown;
+ };
+ OrganizationBountiesAiController_generateFromBrief: {
+ parameters: {
+ query?: never;
+ header?: never;
+ path: {
+ /** @description Organization ID */
+ organizationId: string;
+ };
+ cookie?: never;
};
- content: {
- 'application/json': {
- message?: string;
- };
+ requestBody: {
+ content: {
+ "application/json": components["schemas"]["GenerateBountyDraftFromBriefDto"];
+ };
};
- };
- /** @description Too Many Requests. You have exceeded the rate limit. Try again later. */
- 429: {
- headers: {
- [name: string]: unknown;
+ responses: {
+ /** @description Draft generated and pre-filled. */
+ 201: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content: {
+ "application/json": components["schemas"]["GenerateBountyDraftFromBriefResponseDto"];
+ };
+ };
};
- content: {
- 'application/json': {
- message?: string;
- };
+ };
+ OrganizationBountiesAiController_generateFromBriefStream: {
+ parameters: {
+ query?: never;
+ header?: never;
+ path: {
+ /** @description Organization ID */
+ organizationId: string;
+ };
+ cookie?: never;
};
- };
- /** @description Internal Server Error. This is a problem with the server that you cannot fix. */
- 500: {
- headers: {
- [name: string]: unknown;
+ requestBody: {
+ content: {
+ "application/json": components["schemas"]["GenerateBountyDraftFromBriefDto"];
+ };
};
- content: {
- 'application/json': {
- message?: string;
- };
- };
- };
- };
- };
- verifyEmailWithOTP: {
- parameters: {
- query?: never;
- header?: never;
- path?: never;
- cookie?: never;
- };
- requestBody: {
- content: {
- 'application/json': {
- /** @description Email address the OTP was sent to */
- email: string;
- /** @description Type of the OTP */
- type: string;
- /** @description OTP to verify */
- otp: string;
- };
- };
- };
- responses: {
- /** @description Success */
- 200: {
- headers: {
- [name: string]: unknown;
- };
- content: {
- 'application/json': {
- success?: boolean;
- };
- };
- };
- /** @description Bad Request. Usually due to missing parameters, or invalid parameters. */
- 400: {
- headers: {
- [name: string]: unknown;
- };
- content: {
- 'application/json': {
- message: string;
- };
+ responses: {
+ 201: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content?: never;
+ };
};
- };
- /** @description Unauthorized. Due to missing or invalid authentication. */
- 401: {
- headers: {
- [name: string]: unknown;
+ };
+ OrganizationBountiesAiController_regenerateSection: {
+ parameters: {
+ query?: never;
+ header?: never;
+ path: {
+ /** @description Organization ID */
+ organizationId: string;
+ /** @description Bounty draft ID */
+ id: string;
+ };
+ cookie?: never;
};
- content: {
- 'application/json': {
- message: string;
- };
+ requestBody: {
+ content: {
+ "application/json": components["schemas"]["RegenerateBountyDraftSectionDto"];
+ };
};
- };
- /** @description Forbidden. You do not have permission to access this resource or to perform this action. */
- 403: {
- headers: {
- [name: string]: unknown;
+ responses: {
+ /** @description Regenerated section returned. */
+ 201: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content: {
+ "application/json": components["schemas"]["RegenerateBountyDraftSectionResponseDto"];
+ };
+ };
};
- content: {
- 'application/json': {
- message?: string;
- };
+ };
+ OrganizationBountiesEscrowController_requestFundingOtp: {
+ parameters: {
+ query?: never;
+ header?: never;
+ path: {
+ organizationId: string;
+ /** @description Bounty draft id */
+ id: string;
+ };
+ cookie?: never;
};
- };
- /** @description Not Found. The requested resource was not found. */
- 404: {
- headers: {
- [name: string]: unknown;
+ requestBody?: never;
+ responses: {
+ 200: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content: {
+ "application/json": components["schemas"]["RequestFundingOtpResponseDto"];
+ };
+ };
};
- content: {
- 'application/json': {
- message?: string;
- };
+ };
+ OrganizationBountiesEscrowController_verifyFundingOtp: {
+ parameters: {
+ query?: never;
+ header?: never;
+ path: {
+ organizationId: string;
+ /** @description Bounty draft id */
+ id: string;
+ };
+ cookie?: never;
};
- };
- /** @description Too Many Requests. You have exceeded the rate limit. Try again later. */
- 429: {
- headers: {
- [name: string]: unknown;
+ requestBody: {
+ content: {
+ "application/json": components["schemas"]["VerifyFundingOtpDto"];
+ };
};
- content: {
- 'application/json': {
- message?: string;
- };
+ responses: {
+ 200: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content: {
+ "application/json": components["schemas"]["VerifyFundingOtpResponseDto"];
+ };
+ };
};
- };
- /** @description Internal Server Error. This is a problem with the server that you cannot fix. */
- 500: {
- headers: {
- [name: string]: unknown;
+ };
+ OrganizationBountiesEscrowController_resetToDraft: {
+ parameters: {
+ query?: never;
+ header?: never;
+ path: {
+ organizationId: string;
+ /** @description Bounty draft id */
+ id: string;
+ };
+ cookie?: never;
};
- content: {
- 'application/json': {
- message?: string;
- };
- };
- };
- };
- };
- signInWithEmailOTP: {
- parameters: {
- query?: never;
- header?: never;
- path?: never;
- cookie?: never;
- };
- requestBody: {
- content: {
- 'application/json': {
- /** @description Email address to sign in */
- email: string;
- /** @description OTP sent to the email */
- otp: string;
- };
- };
- };
- responses: {
- /** @description Success */
- 200: {
- headers: {
- [name: string]: unknown;
- };
- content: {
- 'application/json': {
- /** @description Session token for the authenticated session */
- token: string;
- user: components['schemas']['User'];
- };
+ requestBody?: never;
+ responses: {
+ /** @description Bounty reset to draft. */
+ 200: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content?: never;
+ };
};
- };
- /** @description Bad Request. Usually due to missing parameters, or invalid parameters. */
- 400: {
- headers: {
- [name: string]: unknown;
+ };
+ OrganizationBountiesEscrowController_publish: {
+ parameters: {
+ query?: never;
+ header?: never;
+ path: {
+ organizationId: string;
+ /** @description Bounty draft id */
+ id: string;
+ };
+ cookie?: never;
};
- content: {
- 'application/json': {
- message: string;
- };
+ requestBody: {
+ content: {
+ "application/json": components["schemas"]["PublishBountyEscrowDto"];
+ };
};
- };
- /** @description Unauthorized. Due to missing or invalid authentication. */
- 401: {
- headers: {
- [name: string]: unknown;
+ responses: {
+ 200: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content: {
+ "application/json": components["schemas"]["BountyEscrowOpResponseDto"];
+ };
+ };
+ /** @description Validation failed or bounty not in draft status */
+ 400: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content?: never;
+ };
};
- content: {
- 'application/json': {
- message: string;
- };
+ };
+ OrganizationBountiesEscrowController_cancel: {
+ parameters: {
+ query?: never;
+ header?: never;
+ path: {
+ organizationId: string;
+ /** @description Bounty id */
+ id: string;
+ };
+ cookie?: never;
};
- };
- /** @description Forbidden. You do not have permission to access this resource or to perform this action. */
- 403: {
- headers: {
- [name: string]: unknown;
+ requestBody: {
+ content: {
+ "application/json": components["schemas"]["CancelBountyEscrowDto"];
+ };
};
- content: {
- 'application/json': {
- message?: string;
- };
+ responses: {
+ 200: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content: {
+ "application/json": components["schemas"]["BountyEscrowOpResponseDto"];
+ };
+ };
};
- };
- /** @description Not Found. The requested resource was not found. */
- 404: {
- headers: {
- [name: string]: unknown;
+ };
+ OrganizationBountiesEscrowController_selectWinners: {
+ parameters: {
+ query?: never;
+ header?: never;
+ path: {
+ organizationId: string;
+ /** @description Bounty id */
+ id: string;
+ };
+ cookie?: never;
};
- content: {
- 'application/json': {
- message?: string;
- };
+ requestBody: {
+ content: {
+ "application/json": components["schemas"]["SelectBountyWinnersDto"];
+ };
};
- };
- /** @description Too Many Requests. You have exceeded the rate limit. Try again later. */
- 429: {
- headers: {
- [name: string]: unknown;
+ responses: {
+ 200: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content: {
+ "application/json": components["schemas"]["BountyEscrowOpResponseDto"];
+ };
+ };
};
- content: {
- 'application/json': {
- message?: string;
- };
+ };
+ OrganizationBountiesEscrowController_submitSigned: {
+ parameters: {
+ query?: never;
+ header?: never;
+ path: {
+ organizationId: string;
+ /** @description Bounty id */
+ id: string;
+ /** @description EscrowOp uuid */
+ opRowId: string;
+ };
+ cookie?: never;
};
- };
- /** @description Internal Server Error. This is a problem with the server that you cannot fix. */
- 500: {
- headers: {
- [name: string]: unknown;
+ requestBody: {
+ content: {
+ "application/json": components["schemas"]["BountySubmitSignedXdrDto"];
+ };
};
- content: {
- 'application/json': {
- message?: string;
- };
- };
- };
- };
- };
- requestPasswordResetWithEmailOTP: {
- parameters: {
- query?: never;
- header?: never;
- path?: never;
- cookie?: never;
- };
- requestBody: {
- content: {
- 'application/json': {
- /** @description Email address to send the OTP */
- email: string;
- };
- };
- };
- responses: {
- /** @description Success */
- 200: {
- headers: {
- [name: string]: unknown;
- };
- content: {
- 'application/json': {
- /** @description Indicates if the OTP was sent successfully */
- success?: boolean;
- };
- };
- };
- /** @description Bad Request. Usually due to missing parameters, or invalid parameters. */
- 400: {
- headers: {
- [name: string]: unknown;
- };
- content: {
- 'application/json': {
- message: string;
- };
+ responses: {
+ 200: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content: {
+ "application/json": components["schemas"]["BountyEscrowOpResponseDto"];
+ };
+ };
};
- };
- /** @description Unauthorized. Due to missing or invalid authentication. */
- 401: {
- headers: {
- [name: string]: unknown;
+ };
+ OrganizationBountiesEscrowController_getOp: {
+ parameters: {
+ query?: never;
+ header?: never;
+ path: {
+ organizationId: string;
+ /** @description Bounty id */
+ id: string;
+ /** @description EscrowOp uuid */
+ opRowId: string;
+ };
+ cookie?: never;
};
- content: {
- 'application/json': {
- message: string;
- };
+ requestBody?: never;
+ responses: {
+ 200: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content: {
+ "application/json": components["schemas"]["BountyEscrowOpResponseDto"];
+ };
+ };
};
- };
- /** @description Forbidden. You do not have permission to access this resource or to perform this action. */
- 403: {
- headers: {
- [name: string]: unknown;
+ };
+ BountyParticipantEscrowController_apply: {
+ parameters: {
+ query?: never;
+ header?: never;
+ path: {
+ /** @description Bounty id */
+ id: string;
+ };
+ cookie?: never;
};
- content: {
- 'application/json': {
- message?: string;
- };
+ requestBody: {
+ content: {
+ "application/json": components["schemas"]["ApplyBountyDto"];
+ };
};
- };
- /** @description Not Found. The requested resource was not found. */
- 404: {
- headers: {
- [name: string]: unknown;
+ responses: {
+ 200: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content: {
+ "application/json": components["schemas"]["BountyEscrowOpResponseDto"];
+ };
+ };
};
- content: {
- 'application/json': {
- message?: string;
- };
+ };
+ BountyParticipantEscrowController_withdrawApplication: {
+ parameters: {
+ query?: never;
+ header?: never;
+ path: {
+ /** @description Bounty id */
+ id: string;
+ };
+ cookie?: never;
};
- };
- /** @description Too Many Requests. You have exceeded the rate limit. Try again later. */
- 429: {
- headers: {
- [name: string]: unknown;
+ requestBody: {
+ content: {
+ "application/json": components["schemas"]["WithdrawApplicationDto"];
+ };
};
- content: {
- 'application/json': {
- message?: string;
- };
+ responses: {
+ 200: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content: {
+ "application/json": components["schemas"]["BountyEscrowOpResponseDto"];
+ };
+ };
};
- };
- /** @description Internal Server Error. This is a problem with the server that you cannot fix. */
- 500: {
- headers: {
- [name: string]: unknown;
+ };
+ BountyParticipantEscrowController_submit: {
+ parameters: {
+ query?: never;
+ header?: never;
+ path: {
+ /** @description Bounty id */
+ id: string;
+ };
+ cookie?: never;
};
- content: {
- 'application/json': {
- message?: string;
- };
- };
- };
- };
- };
- forgetPasswordWithEmailOTP: {
- parameters: {
- query?: never;
- header?: never;
- path?: never;
- cookie?: never;
- };
- requestBody: {
- content: {
- 'application/json': {
- /** @description Email address to send the OTP */
- email: string;
- };
- };
- };
- responses: {
- /** @description Success */
- 200: {
- headers: {
- [name: string]: unknown;
- };
- content: {
- 'application/json': {
- /** @description Indicates if the OTP was sent successfully */
- success?: boolean;
- };
- };
- };
- /** @description Bad Request. Usually due to missing parameters, or invalid parameters. */
- 400: {
- headers: {
- [name: string]: unknown;
- };
- content: {
- 'application/json': {
- message: string;
- };
+ requestBody: {
+ content: {
+ "application/json": components["schemas"]["SubmitBountyDto"];
+ };
};
- };
- /** @description Unauthorized. Due to missing or invalid authentication. */
- 401: {
- headers: {
- [name: string]: unknown;
+ responses: {
+ 200: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content: {
+ "application/json": components["schemas"]["BountyEscrowOpResponseDto"];
+ };
+ };
};
- content: {
- 'application/json': {
- message: string;
- };
+ };
+ BountyParticipantEscrowController_withdrawSubmission: {
+ parameters: {
+ query?: never;
+ header?: never;
+ path: {
+ /** @description Bounty id */
+ id: string;
+ };
+ cookie?: never;
};
- };
- /** @description Forbidden. You do not have permission to access this resource or to perform this action. */
- 403: {
- headers: {
- [name: string]: unknown;
+ requestBody: {
+ content: {
+ "application/json": components["schemas"]["WithdrawSubmissionDto"];
+ };
};
- content: {
- 'application/json': {
- message?: string;
- };
+ responses: {
+ 200: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content: {
+ "application/json": components["schemas"]["BountyEscrowOpResponseDto"];
+ };
+ };
};
- };
- /** @description Not Found. The requested resource was not found. */
- 404: {
- headers: {
- [name: string]: unknown;
+ };
+ BountyParticipantEscrowController_contribute: {
+ parameters: {
+ query?: never;
+ header?: never;
+ path: {
+ /** @description Bounty id */
+ id: string;
+ };
+ cookie?: never;
};
- content: {
- 'application/json': {
- message?: string;
- };
+ requestBody: {
+ content: {
+ "application/json": components["schemas"]["ContributeBountyDto"];
+ };
};
- };
- /** @description Too Many Requests. You have exceeded the rate limit. Try again later. */
- 429: {
- headers: {
- [name: string]: unknown;
+ responses: {
+ 200: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content: {
+ "application/json": components["schemas"]["BountyEscrowOpResponseDto"];
+ };
+ };
};
- content: {
- 'application/json': {
- message?: string;
- };
+ };
+ BountyParticipantEscrowController_submitSigned: {
+ parameters: {
+ query?: never;
+ header?: never;
+ path: {
+ /** @description Bounty id */
+ id: string;
+ /** @description EscrowOp uuid */
+ opRowId: string;
+ };
+ cookie?: never;
};
- };
- /** @description Internal Server Error. This is a problem with the server that you cannot fix. */
- 500: {
- headers: {
- [name: string]: unknown;
+ requestBody: {
+ content: {
+ "application/json": components["schemas"]["BountySubmitSignedXdrDto"];
+ };
};
- content: {
- 'application/json': {
- message?: string;
- };
- };
- };
- };
- };
- resetPasswordWithEmailOTP: {
- parameters: {
- query?: never;
- header?: never;
- path?: never;
- cookie?: never;
- };
- requestBody: {
- content: {
- 'application/json': {
- /** @description Email address to reset the password */
- email: string;
- /** @description OTP sent to the email */
- otp: string;
- /** @description New password */
- password: string;
- };
- };
- };
- responses: {
- /** @description Success */
- 200: {
- headers: {
- [name: string]: unknown;
- };
- content: {
- 'application/json': {
- success?: boolean;
- };
- };
- };
- /** @description Bad Request. Usually due to missing parameters, or invalid parameters. */
- 400: {
- headers: {
- [name: string]: unknown;
- };
- content: {
- 'application/json': {
- message: string;
- };
+ responses: {
+ 200: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content: {
+ "application/json": components["schemas"]["BountyEscrowOpResponseDto"];
+ };
+ };
};
- };
- /** @description Unauthorized. Due to missing or invalid authentication. */
- 401: {
- headers: {
- [name: string]: unknown;
+ };
+ BountyParticipantEscrowController_getOp: {
+ parameters: {
+ query?: never;
+ header?: never;
+ path: {
+ /** @description Bounty id */
+ id: string;
+ /** @description EscrowOp uuid */
+ opRowId: string;
+ };
+ cookie?: never;
};
- content: {
- 'application/json': {
- message: string;
- };
+ requestBody?: never;
+ responses: {
+ 200: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content: {
+ "application/json": components["schemas"]["BountyEscrowOpResponseDto"];
+ };
+ };
};
- };
- /** @description Forbidden. You do not have permission to access this resource or to perform this action. */
- 403: {
- headers: {
- [name: string]: unknown;
+ };
+ BountyApplicationController_create: {
+ parameters: {
+ query?: never;
+ header?: never;
+ path: {
+ bountyId: string;
+ };
+ cookie?: never;
};
- content: {
- 'application/json': {
- message?: string;
- };
+ requestBody: {
+ content: {
+ "application/json": components["schemas"]["CreateBountyApplicationDto"];
+ };
};
- };
- /** @description Not Found. The requested resource was not found. */
- 404: {
- headers: {
- [name: string]: unknown;
+ responses: {
+ 201: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content?: never;
+ };
};
- content: {
- 'application/json': {
- message?: string;
- };
+ };
+ BountyApplicationController_getMine: {
+ parameters: {
+ query?: never;
+ header?: never;
+ path: {
+ bountyId: string;
+ };
+ cookie?: never;
};
- };
- /** @description Too Many Requests. You have exceeded the rate limit. Try again later. */
- 429: {
- headers: {
- [name: string]: unknown;
+ requestBody?: never;
+ responses: {
+ /** @description The caller's application, or null when they have not applied. */
+ 200: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content: {
+ "application/json": components["schemas"]["BountyApplicationResponseDto"];
+ };
+ };
};
- content: {
- 'application/json': {
- message?: string;
- };
+ };
+ BountyApplicationController_withdraw: {
+ parameters: {
+ query?: never;
+ header?: never;
+ path: {
+ bountyId: string;
+ appId: string;
+ };
+ cookie?: never;
};
- };
- /** @description Internal Server Error. This is a problem with the server that you cannot fix. */
- 500: {
- headers: {
- [name: string]: unknown;
+ requestBody?: never;
+ responses: {
+ 200: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content?: never;
+ };
};
- content: {
- 'application/json': {
- message?: string;
- };
- };
- };
- };
- };
- setActiveOrganization: {
- parameters: {
- query?: never;
- header?: never;
- path?: never;
- cookie?: never;
- };
- requestBody: {
- content: {
- 'application/json': {
- organizationId?: string | null;
- /** @description The organization slug to set as active. It can be null to unset the active organization if organizationId is not provided. Eg: "org-slug" */
- organizationSlug?: string | null;
- };
- };
- };
- responses: {
- /** @description Success */
- 200: {
- headers: {
- [name: string]: unknown;
- };
- content: {
- 'application/json': components['schemas']['Organization'];
- };
- };
- /** @description Bad Request. Usually due to missing parameters, or invalid parameters. */
- 400: {
- headers: {
- [name: string]: unknown;
- };
- content: {
- 'application/json': {
- message: string;
- };
+ };
+ BountyApplicationController_edit: {
+ parameters: {
+ query?: never;
+ header?: never;
+ path: {
+ bountyId: string;
+ appId: string;
+ };
+ cookie?: never;
};
- };
- /** @description Unauthorized. Due to missing or invalid authentication. */
- 401: {
- headers: {
- [name: string]: unknown;
+ requestBody: {
+ content: {
+ "application/json": components["schemas"]["EditBountyApplicationDto"];
+ };
};
- content: {
- 'application/json': {
- message: string;
- };
+ responses: {
+ 200: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content?: never;
+ };
};
- };
- /** @description Forbidden. You do not have permission to access this resource or to perform this action. */
- 403: {
- headers: {
- [name: string]: unknown;
+ };
+ OrganizationBountyShortlistController_list: {
+ parameters: {
+ query?: {
+ /** @description Filter by application status */
+ status?: "SUBMITTED" | "SHORTLISTED" | "SELECTED" | "DECLINED" | "WITHDRAWN";
+ };
+ header?: never;
+ path: {
+ bountyId: string;
+ organizationId: unknown;
+ };
+ cookie?: never;
};
- content: {
- 'application/json': {
- message?: string;
- };
+ requestBody?: never;
+ responses: {
+ 200: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content?: never;
+ };
};
- };
- /** @description Not Found. The requested resource was not found. */
- 404: {
- headers: {
- [name: string]: unknown;
+ };
+ OrganizationBountyShortlistController_selectForSingleClaim: {
+ parameters: {
+ query?: never;
+ header?: never;
+ path: {
+ bountyId: string;
+ };
+ cookie?: never;
};
- content: {
- 'application/json': {
- message?: string;
- };
+ requestBody: {
+ content: {
+ "application/json": components["schemas"]["SelectForSingleClaimDto"];
+ };
};
- };
- /** @description Too Many Requests. You have exceeded the rate limit. Try again later. */
- 429: {
- headers: {
- [name: string]: unknown;
+ responses: {
+ 200: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content?: never;
+ };
};
- content: {
- 'application/json': {
- message?: string;
- };
+ };
+ OrganizationBountyShortlistController_createShortlist: {
+ parameters: {
+ query?: never;
+ header?: never;
+ path: {
+ bountyId: string;
+ };
+ cookie?: never;
};
- };
- /** @description Internal Server Error. This is a problem with the server that you cannot fix. */
- 500: {
- headers: {
- [name: string]: unknown;
+ requestBody: {
+ content: {
+ "application/json": components["schemas"]["CreateShortlistDto"];
+ };
};
- content: {
- 'application/json': {
- message?: string;
- };
- };
- };
- };
- };
- getOrganization: {
- parameters: {
- query?: never;
- header?: never;
- path?: never;
- cookie?: never;
- };
- requestBody?: never;
- responses: {
- /** @description Success */
- 200: {
- headers: {
- [name: string]: unknown;
- };
- content: {
- 'application/json': components['schemas']['Organization'];
- };
- };
- /** @description Bad Request. Usually due to missing parameters, or invalid parameters. */
- 400: {
- headers: {
- [name: string]: unknown;
- };
- content: {
- 'application/json': {
- message: string;
- };
+ responses: {
+ 200: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content?: never;
+ };
};
- };
- /** @description Unauthorized. Due to missing or invalid authentication. */
- 401: {
- headers: {
- [name: string]: unknown;
+ };
+ OrganizationBountyShortlistController_decline: {
+ parameters: {
+ query?: never;
+ header?: never;
+ path: {
+ appId: string;
+ };
+ cookie?: never;
};
- content: {
- 'application/json': {
- message: string;
- };
+ requestBody: {
+ content: {
+ "application/json": components["schemas"]["DeclineApplicationDto"];
+ };
};
- };
- /** @description Forbidden. You do not have permission to access this resource or to perform this action. */
- 403: {
- headers: {
- [name: string]: unknown;
+ responses: {
+ 200: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content?: never;
+ };
};
- content: {
- 'application/json': {
- message?: string;
- };
+ };
+ OrganizationBountySubmissionsController_list: {
+ parameters: {
+ query?: {
+ page?: number;
+ limit?: number;
+ /** @description Filter by review status (pending/accepted/rejected/disputed) */
+ status?: unknown;
+ };
+ header?: never;
+ path: {
+ organizationId: string;
+ bountyId: string;
+ };
+ cookie?: never;
};
- };
- /** @description Not Found. The requested resource was not found. */
- 404: {
- headers: {
- [name: string]: unknown;
+ requestBody?: never;
+ responses: {
+ 200: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content: {
+ "application/json": components["schemas"]["OrganizerBountySubmissionListDto"];
+ };
+ };
};
- content: {
- 'application/json': {
- message?: string;
- };
+ };
+ OrganizationBountySubmissionsController_get: {
+ parameters: {
+ query?: never;
+ header?: never;
+ path: {
+ organizationId: string;
+ bountyId: string;
+ submissionId: string;
+ };
+ cookie?: never;
};
- };
- /** @description Too Many Requests. You have exceeded the rate limit. Try again later. */
- 429: {
- headers: {
- [name: string]: unknown;
+ requestBody?: never;
+ responses: {
+ 200: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content: {
+ "application/json": components["schemas"]["OrganizerBountySubmissionDto"];
+ };
+ };
};
- content: {
- 'application/json': {
- message?: string;
- };
+ };
+ OrganizationBountyOverviewController_overview: {
+ parameters: {
+ query?: never;
+ header?: never;
+ path: {
+ organizationId: string;
+ bountyId: string;
+ };
+ cookie?: never;
};
- };
- /** @description Internal Server Error. This is a problem with the server that you cannot fix. */
- 500: {
- headers: {
- [name: string]: unknown;
+ requestBody?: never;
+ responses: {
+ 200: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content: {
+ "application/json": components["schemas"]["BountyOperateOverviewDto"];
+ };
+ };
};
- content: {
- 'application/json': {
- message?: string;
- };
- };
- };
- };
- };
- createOrganizationInvitation: {
- parameters: {
- query?: never;
- header?: never;
- path?: never;
- cookie?: never;
- };
- requestBody: {
- content: {
- 'application/json': {
- /** @description The email address of the user to invite */
- email: string;
- /** @description The role(s) to assign to the user. It can be `admin`, `member`, owner. Eg: "member" */
- role: string;
- /** @description The organization ID to invite the user to */
- organizationId?: string | null;
- /** @description Resend the invitation email, if the user is already invited. Eg: true */
- resend?: boolean | null;
- teamId: string;
- };
- };
- };
- responses: {
- /** @description Success */
- 200: {
- headers: {
- [name: string]: unknown;
- };
- content: {
- 'application/json': {
- id: string;
- email: string;
- role: string;
- organizationId: string;
- inviterId: string;
- status: string;
- expiresAt: string;
- createdAt: string;
- };
+ };
+ OrganizationBountyArchiveController_archive: {
+ parameters: {
+ query?: never;
+ header?: never;
+ path: {
+ organizationId: string;
+ bountyId: string;
+ };
+ cookie?: never;
};
- };
- /** @description Bad Request. Usually due to missing parameters, or invalid parameters. */
- 400: {
- headers: {
- [name: string]: unknown;
+ requestBody?: never;
+ responses: {
+ /** @description Archive state. */
+ 200: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content?: never;
+ };
};
- content: {
- 'application/json': {
- message: string;
- };
+ };
+ OrganizationBountyArchiveController_restore: {
+ parameters: {
+ query?: never;
+ header?: never;
+ path: {
+ organizationId: string;
+ bountyId: string;
+ };
+ cookie?: never;
};
- };
- /** @description Unauthorized. Due to missing or invalid authentication. */
- 401: {
- headers: {
- [name: string]: unknown;
+ requestBody?: never;
+ responses: {
+ /** @description Archive state. */
+ 200: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content?: never;
+ };
};
- content: {
- 'application/json': {
- message: string;
- };
+ };
+ OrganizationBountyResultsController_publish: {
+ parameters: {
+ query?: never;
+ header?: never;
+ path: {
+ organizationId: string;
+ bountyId: string;
+ };
+ cookie?: never;
};
- };
- /** @description Forbidden. You do not have permission to access this resource or to perform this action. */
- 403: {
- headers: {
- [name: string]: unknown;
+ requestBody: {
+ content: {
+ "application/json": components["schemas"]["PublishBountyResultsDto"];
+ };
};
- content: {
- 'application/json': {
- message?: string;
- };
+ responses: {
+ 200: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content: {
+ "application/json": components["schemas"]["BountyAnnouncementDto"];
+ };
+ };
};
- };
- /** @description Not Found. The requested resource was not found. */
- 404: {
- headers: {
- [name: string]: unknown;
+ };
+ BountyAnnouncementPublicController_get: {
+ parameters: {
+ query?: never;
+ header?: never;
+ path: {
+ bountyId: string;
+ };
+ cookie?: never;
};
- content: {
- 'application/json': {
- message?: string;
- };
+ requestBody?: never;
+ responses: {
+ /** @description Null if unpublished. */
+ 200: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content: {
+ "application/json": components["schemas"]["BountyAnnouncementDto"];
+ };
+ };
};
- };
- /** @description Too Many Requests. You have exceeded the rate limit. Try again later. */
- 429: {
- headers: {
- [name: string]: unknown;
+ };
+ BountyCompetitionJoinController_join: {
+ parameters: {
+ query?: never;
+ header?: never;
+ path: {
+ bountyId: string;
+ };
+ cookie?: never;
};
- content: {
- 'application/json': {
- message?: string;
- };
+ requestBody: {
+ content: {
+ "application/json": components["schemas"]["JoinCompetitionDto"];
+ };
};
- };
- /** @description Internal Server Error. This is a problem with the server that you cannot fix. */
- 500: {
- headers: {
- [name: string]: unknown;
+ responses: {
+ 200: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content?: never;
+ };
};
- content: {
- 'application/json': {
- message?: string;
- };
- };
- };
- };
- };
- updateOrganizationMemberRole: {
- parameters: {
- query?: never;
- header?: never;
- path?: never;
- cookie?: never;
- };
- requestBody: {
- content: {
- 'application/json': {
- /** @description The new role to be applied. This can be a string or array of strings representing the roles. Eg: ["admin", "sale"] */
- role: string;
- /** @description The member id to apply the role update to. Eg: "member-id" */
- memberId: string;
- /** @description An optional organization ID which the member is a part of to apply the role update. If not provided, you must provide session headers to get the active organization. Eg: "organization-id" */
- organizationId?: string | null;
- };
- };
- };
- responses: {
- /** @description Success */
- 200: {
- headers: {
- [name: string]: unknown;
- };
- content: {
- 'application/json': {
- member: {
- id: string;
- userId: string;
- organizationId: string;
- role: string;
- };
- };
- };
- };
- /** @description Bad Request. Usually due to missing parameters, or invalid parameters. */
- 400: {
- headers: {
- [name: string]: unknown;
- };
- content: {
- 'application/json': {
- message: string;
- };
+ };
+ BountyCompetitionJoinController_leave: {
+ parameters: {
+ query?: never;
+ header?: never;
+ path: {
+ bountyId: string;
+ };
+ cookie?: never;
};
- };
- /** @description Unauthorized. Due to missing or invalid authentication. */
- 401: {
- headers: {
- [name: string]: unknown;
+ requestBody: {
+ content: {
+ "application/json": components["schemas"]["JoinCompetitionDto"];
+ };
};
- content: {
- 'application/json': {
- message: string;
- };
+ responses: {
+ 200: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content?: never;
+ };
};
- };
- /** @description Forbidden. You do not have permission to access this resource or to perform this action. */
- 403: {
- headers: {
- [name: string]: unknown;
+ };
+ BountyParticipantDashboardController_myApplications: {
+ parameters: {
+ query?: {
+ page?: number;
+ limit?: number;
+ status?: "SUBMITTED" | "SHORTLISTED" | "SELECTED" | "DECLINED" | "WITHDRAWN";
+ };
+ header?: never;
+ path?: never;
+ cookie?: never;
};
- content: {
- 'application/json': {
- message?: string;
- };
+ requestBody?: never;
+ responses: {
+ 200: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content: {
+ "application/json": components["schemas"]["MyBountyApplicationListDto"];
+ };
+ };
};
- };
- /** @description Not Found. The requested resource was not found. */
- 404: {
- headers: {
- [name: string]: unknown;
+ };
+ BountyParticipantDashboardController_mySubmissions: {
+ parameters: {
+ query?: {
+ page?: number;
+ limit?: number;
+ status?: unknown;
+ };
+ header?: never;
+ path?: never;
+ cookie?: never;
};
- content: {
- 'application/json': {
- message?: string;
- };
+ requestBody?: never;
+ responses: {
+ 200: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content: {
+ "application/json": components["schemas"]["MyBountySubmissionListDto"];
+ };
+ };
};
- };
- /** @description Too Many Requests. You have exceeded the rate limit. Try again later. */
- 429: {
- headers: {
- [name: string]: unknown;
+ };
+ BountyParticipantDashboardController_mySubmissionForBounty: {
+ parameters: {
+ query?: never;
+ header?: never;
+ path: {
+ bountyId: string;
+ };
+ cookie?: never;
};
- content: {
- 'application/json': {
- message?: string;
- };
+ requestBody?: never;
+ responses: {
+ /** @description The caller's submission, or null when they have not submitted. */
+ 200: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content: {
+ "application/json": components["schemas"]["MyBountySubmissionRowDto"];
+ };
+ };
};
- };
- /** @description Internal Server Error. This is a problem with the server that you cannot fix. */
- 500: {
- headers: {
- [name: string]: unknown;
+ };
+ BountyResultsController_getResults: {
+ parameters: {
+ query?: never;
+ header?: never;
+ path: {
+ id: string;
+ };
+ cookie?: never;
};
- content: {
- 'application/json': {
- message?: string;
- };
- };
- };
- };
- };
- setUserRole: {
- parameters: {
- query?: never;
- header?: never;
- path?: never;
- cookie?: never;
- };
- requestBody: {
- content: {
- 'application/json': {
- /** @description The user id */
- userId: string;
- /** @description The role to set, this can be a string or an array of strings. Eg: `admin` or `[admin, user]` */
- role: string;
- };
- };
- };
- responses: {
- /** @description User role updated */
- 200: {
- headers: {
- [name: string]: unknown;
- };
- content: {
- 'application/json': {
- user?: components['schemas']['User'];
- };
- };
- };
- /** @description Bad Request. Usually due to missing parameters, or invalid parameters. */
- 400: {
- headers: {
- [name: string]: unknown;
- };
- content: {
- 'application/json': {
- message: string;
- };
+ requestBody?: never;
+ responses: {
+ 200: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content: {
+ "application/json": components["schemas"]["BountyResultsDto"];
+ };
+ };
};
- };
- /** @description Unauthorized. Due to missing or invalid authentication. */
- 401: {
- headers: {
- [name: string]: unknown;
+ };
+ BountyResultsController_getSubmissions: {
+ parameters: {
+ query?: never;
+ header?: never;
+ path: {
+ id: string;
+ };
+ cookie?: never;
};
- content: {
- 'application/json': {
- message: string;
- };
+ requestBody?: never;
+ responses: {
+ 200: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content: {
+ "application/json": components["schemas"]["BountySubmissionListDto"];
+ };
+ };
};
- };
- /** @description Forbidden. You do not have permission to access this resource or to perform this action. */
- 403: {
- headers: {
- [name: string]: unknown;
+ };
+ BountyPublicController_list: {
+ parameters: {
+ query?: {
+ page?: number;
+ limit?: number;
+ search?: unknown;
+ category?: unknown;
+ status?: unknown;
+ organizationId?: unknown;
+ };
+ header?: never;
+ path?: never;
+ cookie?: never;
};
- content: {
- 'application/json': {
- message?: string;
- };
+ requestBody?: never;
+ responses: {
+ 200: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content: {
+ "application/json": components["schemas"]["BountyPublicListDto"];
+ };
+ };
};
- };
- /** @description Not Found. The requested resource was not found. */
- 404: {
- headers: {
- [name: string]: unknown;
+ };
+ BountyPublicController_findOne: {
+ parameters: {
+ query?: never;
+ header?: never;
+ path: {
+ id: string;
+ };
+ cookie?: never;
};
- content: {
- 'application/json': {
- message?: string;
- };
+ requestBody?: never;
+ responses: {
+ 200: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content: {
+ "application/json": components["schemas"]["BountyPublicDto"];
+ };
+ };
};
- };
- /** @description Too Many Requests. You have exceeded the rate limit. Try again later. */
- 429: {
- headers: {
- [name: string]: unknown;
+ };
+ OrganizationGrantsEscrowController_publish: {
+ parameters: {
+ query?: never;
+ header?: never;
+ path: {
+ organizationId: string;
+ /** @description Grant id */
+ id: string;
+ };
+ cookie?: never;
};
- content: {
- 'application/json': {
- message?: string;
- };
+ requestBody: {
+ content: {
+ "application/json": components["schemas"]["PublishGrantEscrowDto"];
+ };
};
- };
- /** @description Internal Server Error. This is a problem with the server that you cannot fix. */
- 500: {
- headers: {
- [name: string]: unknown;
+ responses: {
+ 200: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content: {
+ "application/json": components["schemas"]["GrantEscrowOpResponseDto"];
+ };
+ };
+ /** @description Draft not in DRAFT status */
+ 400: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content?: never;
+ };
};
- content: {
- 'application/json': {
- message?: string;
- };
- };
- };
- };
- };
- getUser: {
- parameters: {
- query?: {
- id?: string;
- };
- header?: never;
- path?: never;
- cookie?: never;
- };
- requestBody?: never;
- responses: {
- /** @description User */
- 200: {
- headers: {
- [name: string]: unknown;
- };
- content: {
- 'application/json': {
- user?: components['schemas']['User'];
- };
- };
- };
- /** @description Bad Request. Usually due to missing parameters, or invalid parameters. */
- 400: {
- headers: {
- [name: string]: unknown;
- };
- content: {
- 'application/json': {
- message: string;
- };
+ };
+ OrganizationGrantsEscrowController_cancel: {
+ parameters: {
+ query?: never;
+ header?: never;
+ path: {
+ organizationId: string;
+ id: string;
+ };
+ cookie?: never;
};
- };
- /** @description Unauthorized. Due to missing or invalid authentication. */
- 401: {
- headers: {
- [name: string]: unknown;
+ requestBody: {
+ content: {
+ "application/json": components["schemas"]["CancelGrantEscrowDto"];
+ };
};
- content: {
- 'application/json': {
- message: string;
- };
+ responses: {
+ 200: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content: {
+ "application/json": components["schemas"]["GrantEscrowOpResponseDto"];
+ };
+ };
};
- };
- /** @description Forbidden. You do not have permission to access this resource or to perform this action. */
- 403: {
- headers: {
- [name: string]: unknown;
+ };
+ OrganizationGrantsEscrowController_selectWinners: {
+ parameters: {
+ query?: never;
+ header?: never;
+ path: {
+ organizationId: string;
+ id: string;
+ };
+ cookie?: never;
};
- content: {
- 'application/json': {
- message?: string;
- };
+ requestBody: {
+ content: {
+ "application/json": components["schemas"]["SelectGrantWinnersDto"];
+ };
};
- };
- /** @description Not Found. The requested resource was not found. */
- 404: {
- headers: {
- [name: string]: unknown;
+ responses: {
+ 200: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content: {
+ "application/json": components["schemas"]["GrantEscrowOpResponseDto"];
+ };
+ };
};
- content: {
- 'application/json': {
- message?: string;
- };
+ };
+ OrganizationGrantsEscrowController_claimMilestone: {
+ parameters: {
+ query?: never;
+ header?: never;
+ path: {
+ organizationId: string;
+ id: string;
+ };
+ cookie?: never;
};
- };
- /** @description Too Many Requests. You have exceeded the rate limit. Try again later. */
- 429: {
- headers: {
- [name: string]: unknown;
+ requestBody: {
+ content: {
+ "application/json": components["schemas"]["ClaimGrantMilestoneDto"];
+ };
};
- content: {
- 'application/json': {
- message?: string;
- };
+ responses: {
+ 200: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content: {
+ "application/json": components["schemas"]["GrantEscrowOpResponseDto"];
+ };
+ };
};
- };
- /** @description Internal Server Error. This is a problem with the server that you cannot fix. */
- 500: {
- headers: {
- [name: string]: unknown;
+ };
+ OrganizationGrantsEscrowController_submitSigned: {
+ parameters: {
+ query?: never;
+ header?: never;
+ path: {
+ organizationId: string;
+ id: string;
+ opRowId: string;
+ };
+ cookie?: never;
};
- content: {
- 'application/json': {
- message?: string;
- };
- };
- };
- };
- };
- createUser: {
- parameters: {
- query?: never;
- header?: never;
- path?: never;
- cookie?: never;
- };
- requestBody: {
- content: {
- 'application/json': {
- /** @description The email of the user */
- email: string;
- password?: string | null;
- /** @description The name of the user */
- name: string;
- role?: string | null;
- data?: string | null;
- };
- };
- };
- responses: {
- /** @description User created */
- 200: {
- headers: {
- [name: string]: unknown;
- };
- content: {
- 'application/json': {
- user?: components['schemas']['User'];
- };
- };
- };
- /** @description Bad Request. Usually due to missing parameters, or invalid parameters. */
- 400: {
- headers: {
- [name: string]: unknown;
- };
- content: {
- 'application/json': {
- message: string;
- };
+ requestBody: {
+ content: {
+ "application/json": components["schemas"]["GrantSubmitSignedXdrDto"];
+ };
};
- };
- /** @description Unauthorized. Due to missing or invalid authentication. */
- 401: {
- headers: {
- [name: string]: unknown;
+ responses: {
+ 200: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content: {
+ "application/json": components["schemas"]["GrantEscrowOpResponseDto"];
+ };
+ };
};
- content: {
- 'application/json': {
- message: string;
- };
+ };
+ OrganizationGrantsEscrowController_getOp: {
+ parameters: {
+ query?: never;
+ header?: never;
+ path: {
+ organizationId: string;
+ id: string;
+ opRowId: string;
+ };
+ cookie?: never;
};
- };
- /** @description Forbidden. You do not have permission to access this resource or to perform this action. */
- 403: {
- headers: {
- [name: string]: unknown;
+ requestBody?: never;
+ responses: {
+ 200: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content: {
+ "application/json": components["schemas"]["GrantEscrowOpResponseDto"];
+ };
+ };
};
- content: {
- 'application/json': {
- message?: string;
- };
+ };
+ GrantContributeEscrowController_contribute: {
+ parameters: {
+ query?: never;
+ header?: never;
+ path: {
+ /** @description Grant id */
+ id: string;
+ };
+ cookie?: never;
};
- };
- /** @description Not Found. The requested resource was not found. */
- 404: {
- headers: {
- [name: string]: unknown;
+ requestBody: {
+ content: {
+ "application/json": components["schemas"]["ContributeGrantDto"];
+ };
};
- content: {
- 'application/json': {
- message?: string;
- };
+ responses: {
+ 200: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content: {
+ "application/json": components["schemas"]["GrantEscrowOpResponseDto"];
+ };
+ };
};
- };
- /** @description Too Many Requests. You have exceeded the rate limit. Try again later. */
- 429: {
- headers: {
- [name: string]: unknown;
+ };
+ GrantsPublicController_list: {
+ parameters: {
+ query?: {
+ /** @description Pillar-specific status filter (open, closed, in_progress). */
+ status?: string;
+ /** @description Case-insensitive substring match against project title and summary. */
+ search?: string;
+ /** @description Filter by the underlying project category. */
+ category?: string;
+ /** @description Page number (1-indexed). */
+ page?: number;
+ /** @description Items per page. */
+ limit?: number;
+ };
+ header?: never;
+ path?: never;
+ cookie?: never;
+ };
+ requestBody?: never;
+ responses: {
+ /** @description Grants page */
+ 200: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content: {
+ "application/json": components["schemas"]["GrantPublicListResponseDto"];
+ };
+ };
};
- content: {
- 'application/json': {
- message?: string;
- };
+ };
+ OpportunitiesController_list: {
+ parameters: {
+ query?: {
+ /** @description Which pillar to query. "all" fans out across the four adapters; the others restrict to a single adapter. */
+ type?: "all" | "bounty" | "hackathon" | "grant" | "crowdfunding";
+ /** @description Pillar-specific status filter. Adapters match case-insensitively against their own enum and return [] when no value matches. */
+ status?: string;
+ /** @description Case-insensitive substring match against title and summary across adapters. */
+ search?: string;
+ /** @description Comma-separated tag list. Pillar-aware: bounty has no tag field and returns [] for any tags filter. */
+ tags?: string;
+ /** @description Sort mode. "deadline" sorts ascending by the next deadline (NULLS LAST); "prize_desc" sorts by reward descending. */
+ sort?: "newest" | "deadline" | "prize_desc";
+ /** @description Opaque pagination cursor returned by the previous response. Omit to start from page 1. */
+ cursor?: string;
+ /** @description Items per page. Capped at 50. */
+ limit?: number;
+ };
+ header?: never;
+ path?: never;
+ cookie?: never;
+ };
+ requestBody?: never;
+ responses: {
+ /** @description Opportunities page */
+ 200: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content: {
+ "application/json": components["schemas"]["OpportunityListResponseDto"];
+ };
+ };
};
- };
- /** @description Internal Server Error. This is a problem with the server that you cannot fix. */
- 500: {
- headers: {
- [name: string]: unknown;
+ };
+ NewsletterController_subscribe: {
+ parameters: {
+ query?: never;
+ header?: never;
+ path?: never;
+ cookie?: never;
};
- content: {
- 'application/json': {
- message?: string;
- };
- };
- };
- };
- };
- updateUser: {
- parameters: {
- query?: never;
- header?: never;
- path?: never;
- cookie?: never;
- };
- requestBody: {
- content: {
- 'application/json': {
- /** @description The user id */
- userId: string;
- /** @description The user data to update */
- data: string;
- };
- };
- };
- responses: {
- /** @description User updated */
- 200: {
- headers: {
- [name: string]: unknown;
- };
- content: {
- 'application/json': {
- user?: components['schemas']['User'];
- };
- };
- };
- /** @description Bad Request. Usually due to missing parameters, or invalid parameters. */
- 400: {
- headers: {
- [name: string]: unknown;
- };
- content: {
- 'application/json': {
- message: string;
- };
+ requestBody: {
+ content: {
+ "application/json": components["schemas"]["SubscribeDto"];
+ };
};
- };
- /** @description Unauthorized. Due to missing or invalid authentication. */
- 401: {
- headers: {
- [name: string]: unknown;
+ responses: {
+ /** @description Confirmation email sent successfully */
+ 201: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content: {
+ "application/json": unknown;
+ };
+ };
+ /** @description Invalid tags provided */
+ 400: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content?: never;
+ };
+ /** @description Email is already subscribed */
+ 409: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content?: never;
+ };
+ /** @description Too many requests — rate limited */
+ 429: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content?: never;
+ };
};
- content: {
- 'application/json': {
- message: string;
- };
+ };
+ NewsletterController_confirmSubscription: {
+ parameters: {
+ query?: never;
+ header?: never;
+ path: {
+ /** @description Confirmation token received via email */
+ token: string;
+ };
+ cookie?: never;
};
- };
- /** @description Forbidden. You do not have permission to access this resource or to perform this action. */
- 403: {
- headers: {
- [name: string]: unknown;
+ requestBody?: never;
+ responses: {
+ /** @description Redirects to frontend confirmation page */
+ 302: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content?: never;
+ };
+ /** @description Confirmation token has expired */
+ 400: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content?: never;
+ };
+ /** @description Invalid or expired confirmation token */
+ 404: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content?: never;
+ };
};
- content: {
- 'application/json': {
- message?: string;
- };
+ };
+ NewsletterController_unsubscribeByToken: {
+ parameters: {
+ query?: never;
+ header?: never;
+ path: {
+ /** @description Unsubscribe token from the email footer */
+ token: string;
+ };
+ cookie?: never;
};
- };
- /** @description Not Found. The requested resource was not found. */
- 404: {
- headers: {
- [name: string]: unknown;
+ requestBody?: never;
+ responses: {
+ /** @description Redirects to frontend unsubscribe confirmation page */
+ 302: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content?: never;
+ };
+ /** @description Invalid unsubscribe link */
+ 404: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content?: never;
+ };
};
- content: {
- 'application/json': {
- message?: string;
- };
+ };
+ NewsletterController_unsubscribe: {
+ parameters: {
+ query?: never;
+ header?: never;
+ path?: never;
+ cookie?: never;
};
- };
- /** @description Too Many Requests. You have exceeded the rate limit. Try again later. */
- 429: {
- headers: {
- [name: string]: unknown;
+ requestBody: {
+ content: {
+ "application/json": components["schemas"]["UnsubscribeDto"];
+ };
};
- content: {
- 'application/json': {
- message?: string;
- };
+ responses: {
+ /** @description Successfully unsubscribed */
+ 200: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content?: never;
+ };
+ /** @description Subscriber not found */
+ 404: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content?: never;
+ };
};
- };
- /** @description Internal Server Error. This is a problem with the server that you cannot fix. */
- 500: {
- headers: {
- [name: string]: unknown;
+ };
+ NewsletterController_updatePreferences: {
+ parameters: {
+ query?: never;
+ header?: never;
+ path?: never;
+ cookie?: never;
};
- content: {
- 'application/json': {
- message?: string;
- };
- };
- };
- };
- };
- listUsers: {
- parameters: {
- query?: {
- searchValue?: string | null;
- searchField?: string | null;
- searchOperator?: string | null;
- limit?: string | null;
- offset?: string | null;
- sortBy?: string | null;
- sortDirection?: string | null;
- filterField?: string | null;
- filterValue?: string | null;
- filterOperator?: string | null;
- };
- header?: never;
- path?: never;
- cookie?: never;
- };
- requestBody?: never;
- responses: {
- /** @description List of users */
- 200: {
- headers: {
- [name: string]: unknown;
- };
- content: {
- 'application/json': {
- users: components['schemas']['User'][];
- total: number;
- limit?: number;
- offset?: number;
- };
- };
- };
- /** @description Bad Request. Usually due to missing parameters, or invalid parameters. */
- 400: {
- headers: {
- [name: string]: unknown;
- };
- content: {
- 'application/json': {
- message: string;
- };
+ requestBody: {
+ content: {
+ "application/json": components["schemas"]["UpdatePreferencesDto"];
+ };
};
- };
- /** @description Unauthorized. Due to missing or invalid authentication. */
- 401: {
- headers: {
- [name: string]: unknown;
+ responses: {
+ /** @description Preferences updated successfully */
+ 200: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content?: never;
+ };
+ /** @description Invalid tags provided */
+ 400: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content?: never;
+ };
+ /** @description Subscriber not found */
+ 404: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content?: never;
+ };
};
- content: {
- 'application/json': {
- message: string;
- };
+ };
+ NewsletterController_trackOpen: {
+ parameters: {
+ query?: never;
+ header?: never;
+ path: {
+ /** @description Campaign ID */
+ campaignId: string;
+ /** @description Subscriber ID */
+ subscriberId: string;
+ };
+ cookie?: never;
};
- };
- /** @description Forbidden. You do not have permission to access this resource or to perform this action. */
- 403: {
- headers: {
- [name: string]: unknown;
+ requestBody?: never;
+ responses: {
+ /** @description Returns 1x1 transparent GIF */
+ 200: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content?: never;
+ };
};
- content: {
- 'application/json': {
- message?: string;
- };
+ };
+ NewsletterController_trackClick: {
+ parameters: {
+ query: {
+ /** @description Target URL to redirect to after tracking */
+ url: string;
+ };
+ header?: never;
+ path: {
+ /** @description Campaign ID */
+ campaignId: string;
+ /** @description Subscriber ID */
+ subscriberId: string;
+ };
+ cookie?: never;
};
- };
- /** @description Not Found. The requested resource was not found. */
- 404: {
- headers: {
- [name: string]: unknown;
+ requestBody?: never;
+ responses: {
+ /** @description Redirects to the target URL */
+ 302: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content?: never;
+ };
+ };
+ };
+ NewsletterController_getSubscribers: {
+ parameters: {
+ query?: {
+ /** @description Filter by status */
+ status?: "active" | "pending" | "unsubscribed" | "bounced";
+ /** @description Filter by source */
+ source?: string;
+ /** @description Filter by tags (comma-separated) */
+ tags?: string;
+ /** @description Search by email or name */
+ search?: string;
+ /** @description Page number (default: 1) */
+ page?: number;
+ /** @description Items per page (default: 50) */
+ limit?: number;
+ };
+ header?: never;
+ path?: never;
+ cookie?: never;
+ };
+ requestBody?: never;
+ responses: {
+ /** @description Subscribers retrieved successfully */
+ 200: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content: {
+ "application/json": unknown;
+ };
+ };
+ /** @description Unauthorized */
+ 401: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content?: never;
+ };
};
- content: {
- 'application/json': {
- message?: string;
- };
+ };
+ NewsletterController_getStats: {
+ parameters: {
+ query?: never;
+ header?: never;
+ path?: never;
+ cookie?: never;
};
- };
- /** @description Too Many Requests. You have exceeded the rate limit. Try again later. */
- 429: {
- headers: {
- [name: string]: unknown;
+ requestBody?: never;
+ responses: {
+ /** @description Statistics retrieved successfully */
+ 200: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content: {
+ "application/json": unknown;
+ };
+ };
+ /** @description Unauthorized */
+ 401: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content?: never;
+ };
};
- content: {
- 'application/json': {
- message?: string;
- };
+ };
+ NewsletterController_exportSubscribers: {
+ parameters: {
+ query?: {
+ /** @description Filter by subscriber status */
+ status?: "active" | "pending" | "unsubscribed" | "bounced";
+ /** @description Filter by tags (comma-separated) */
+ tags?: string;
+ };
+ header?: never;
+ path?: never;
+ cookie?: never;
};
- };
- /** @description Internal Server Error. This is a problem with the server that you cannot fix. */
- 500: {
- headers: {
- [name: string]: unknown;
+ requestBody?: never;
+ responses: {
+ /** @description CSV file downloaded */
+ 200: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content: {
+ "text/csv": unknown;
+ };
+ };
+ /** @description Unauthorized */
+ 401: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content?: never;
+ };
};
- content: {
- 'application/json': {
- message?: string;
- };
- };
- };
- };
- };
- listUserSessions: {
- parameters: {
- query?: never;
- header?: never;
- path?: never;
- cookie?: never;
- };
- requestBody: {
- content: {
- 'application/json': {
- /** @description The user id */
- userId: string;
- };
- };
- };
- responses: {
- /** @description List of user sessions */
- 200: {
- headers: {
- [name: string]: unknown;
- };
- content: {
- 'application/json': {
- sessions?: components['schemas']['Session'][];
- };
- };
- };
- /** @description Bad Request. Usually due to missing parameters, or invalid parameters. */
- 400: {
- headers: {
- [name: string]: unknown;
- };
- content: {
- 'application/json': {
- message: string;
- };
+ };
+ NewsletterController_deleteSubscriber: {
+ parameters: {
+ query?: never;
+ header?: never;
+ path: {
+ /** @description Subscriber ID */
+ id: string;
+ };
+ cookie?: never;
};
- };
- /** @description Unauthorized. Due to missing or invalid authentication. */
- 401: {
- headers: {
- [name: string]: unknown;
+ requestBody?: never;
+ responses: {
+ /** @description Subscriber deleted successfully */
+ 200: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content: {
+ "application/json": unknown;
+ };
+ };
+ /** @description Unauthorized */
+ 401: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content?: never;
+ };
+ /** @description Subscriber not found */
+ 404: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content?: never;
+ };
};
- content: {
- 'application/json': {
- message: string;
- };
+ };
+ NewsletterController_getCampaigns: {
+ parameters: {
+ query?: {
+ /** @description Page number (default: 1) */
+ page?: number;
+ /** @description Items per page (default: 20) */
+ limit?: number;
+ };
+ header?: never;
+ path?: never;
+ cookie?: never;
};
- };
- /** @description Forbidden. You do not have permission to access this resource or to perform this action. */
- 403: {
- headers: {
- [name: string]: unknown;
+ requestBody?: never;
+ responses: {
+ /** @description Campaigns retrieved successfully */
+ 200: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content: {
+ "application/json": unknown;
+ };
+ };
+ /** @description Unauthorized */
+ 401: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content?: never;
+ };
};
- content: {
- 'application/json': {
- message?: string;
- };
+ };
+ NewsletterController_createCampaign: {
+ parameters: {
+ query?: never;
+ header?: never;
+ path?: never;
+ cookie?: never;
};
- };
- /** @description Not Found. The requested resource was not found. */
- 404: {
- headers: {
- [name: string]: unknown;
+ requestBody: {
+ content: {
+ "application/json": components["schemas"]["CreateNewsletterCampaignDto"];
+ };
};
- content: {
- 'application/json': {
- message?: string;
- };
+ responses: {
+ /** @description Campaign created successfully */
+ 201: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content?: never;
+ };
+ /** @description Invalid tags provided */
+ 400: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content?: never;
+ };
+ /** @description Unauthorized */
+ 401: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content?: never;
+ };
};
- };
- /** @description Too Many Requests. You have exceeded the rate limit. Try again later. */
- 429: {
- headers: {
- [name: string]: unknown;
+ };
+ NewsletterController_getCampaign: {
+ parameters: {
+ query?: never;
+ header?: never;
+ path: {
+ /** @description Campaign ID */
+ id: string;
+ };
+ cookie?: never;
};
- content: {
- 'application/json': {
- message?: string;
- };
+ requestBody?: never;
+ responses: {
+ /** @description Campaign details retrieved successfully */
+ 200: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content?: never;
+ };
+ /** @description Unauthorized */
+ 401: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content?: never;
+ };
+ /** @description Campaign not found */
+ 404: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content?: never;
+ };
};
- };
- /** @description Internal Server Error. This is a problem with the server that you cannot fix. */
- 500: {
- headers: {
- [name: string]: unknown;
+ };
+ NewsletterController_sendCampaign: {
+ parameters: {
+ query?: never;
+ header?: never;
+ path: {
+ /** @description Campaign ID to send */
+ id: string;
+ };
+ cookie?: never;
};
- content: {
- 'application/json': {
- message?: string;
- };
- };
- };
- };
- };
- unbanUser: {
- parameters: {
- query?: never;
- header?: never;
- path?: never;
- cookie?: never;
- };
- requestBody: {
- content: {
- 'application/json': {
- /** @description The user id */
- userId: string;
- };
- };
- };
- responses: {
- /** @description User unbanned */
- 200: {
- headers: {
- [name: string]: unknown;
- };
- content: {
- 'application/json': {
- user?: components['schemas']['User'];
- };
- };
- };
- /** @description Bad Request. Usually due to missing parameters, or invalid parameters. */
- 400: {
- headers: {
- [name: string]: unknown;
- };
- content: {
- 'application/json': {
- message: string;
- };
+ requestBody?: never;
+ responses: {
+ /** @description Campaign sent successfully */
+ 200: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content: {
+ "application/json": unknown;
+ };
+ };
+ /** @description Campaign already sent or currently sending */
+ 400: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content?: never;
+ };
+ /** @description Unauthorized */
+ 401: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content?: never;
+ };
+ /** @description Campaign not found */
+ 404: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content?: never;
+ };
+ };
+ };
+ DiscoverController_getLanding: {
+ parameters: {
+ query?: {
+ /** @description Max bounty cards on the landing page. */
+ bountyLimit?: number;
+ /** @description Max hackathon cards on the landing page. */
+ hackathonLimit?: number;
+ /** @description Max crowdfunding cards on the landing page. */
+ crowdfundingLimit?: number;
+ /** @description Max grant cards on the landing page. */
+ grantLimit?: number;
+ /** @description Max recent-winner rows. */
+ winnersLimit?: number;
+ };
+ header?: never;
+ path?: never;
+ cookie?: never;
+ };
+ requestBody?: never;
+ responses: {
+ 200: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content: {
+ "application/json": components["schemas"]["DiscoverLandingDto"];
+ };
+ };
};
- };
- /** @description Unauthorized. Due to missing or invalid authentication. */
- 401: {
- headers: {
- [name: string]: unknown;
+ };
+ DiscoverController_getRecentWinners: {
+ parameters: {
+ query?: {
+ /** @description Number of winners to return (default: 8, max: 50) */
+ limit?: number;
+ };
+ header?: never;
+ path?: never;
+ cookie?: never;
};
- content: {
- 'application/json': {
- message: string;
- };
+ requestBody?: never;
+ responses: {
+ 200: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content: {
+ "application/json": components["schemas"]["RecentWinnersResponseDto"];
+ };
+ };
};
- };
- /** @description Forbidden. You do not have permission to access this resource or to perform this action. */
- 403: {
- headers: {
- [name: string]: unknown;
+ };
+ DlqAdminController_getDepth: {
+ parameters: {
+ query?: never;
+ header?: never;
+ path?: never;
+ cookie?: never;
};
- content: {
- 'application/json': {
- message?: string;
- };
+ requestBody?: never;
+ responses: {
+ /** @description Total parked jobs */
+ 200: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content?: never;
+ };
};
- };
- /** @description Not Found. The requested resource was not found. */
- 404: {
- headers: {
- [name: string]: unknown;
+ };
+ DlqAdminController_list: {
+ parameters: {
+ query?: {
+ /** @description Max entries to return (1 to 200, default 50) */
+ limit?: string;
+ };
+ header?: never;
+ path?: never;
+ cookie?: never;
};
- content: {
- 'application/json': {
- message?: string;
- };
+ requestBody?: never;
+ responses: {
+ 200: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content?: never;
+ };
};
- };
- /** @description Too Many Requests. You have exceeded the rate limit. Try again later. */
- 429: {
- headers: {
- [name: string]: unknown;
+ };
+ DlqAdminController_getOne: {
+ parameters: {
+ query?: never;
+ header?: never;
+ path: {
+ jobId: string;
+ };
+ cookie?: never;
};
- content: {
- 'application/json': {
- message?: string;
- };
+ requestBody?: never;
+ responses: {
+ 200: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content?: never;
+ };
};
- };
- /** @description Internal Server Error. This is a problem with the server that you cannot fix. */
- 500: {
- headers: {
- [name: string]: unknown;
+ };
+ DlqAdminController_replay: {
+ parameters: {
+ query?: never;
+ header?: never;
+ path: {
+ jobId: string;
+ };
+ cookie?: never;
};
- content: {
- 'application/json': {
- message?: string;
- };
- };
- };
- };
- };
- banUser: {
- parameters: {
- query?: never;
- header?: never;
- path?: never;
- cookie?: never;
- };
- requestBody: {
- content: {
- 'application/json': {
- /** @description The user id */
- userId: string;
- /** @description The reason for the ban */
- banReason?: string | null;
- /** @description The number of seconds until the ban expires */
- banExpiresIn?: number | null;
- };
- };
- };
- responses: {
- /** @description User banned */
- 200: {
- headers: {
- [name: string]: unknown;
- };
- content: {
- 'application/json': {
- user?: components['schemas']['User'];
- };
- };
- };
- /** @description Bad Request. Usually due to missing parameters, or invalid parameters. */
- 400: {
- headers: {
- [name: string]: unknown;
- };
- content: {
- 'application/json': {
- message: string;
- };
+ requestBody?: never;
+ responses: {
+ 201: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content?: never;
+ };
+ };
+ };
+ socialSignIn: {
+ parameters: {
+ query?: never;
+ header?: never;
+ path?: never;
+ cookie?: never;
+ };
+ requestBody: {
+ content: {
+ "application/json": {
+ /** @description Callback URL to redirect to after the user has signed in */
+ callbackURL?: string | null;
+ newUserCallbackURL?: string | null;
+ /** @description Callback URL to redirect to if an error happens */
+ errorCallbackURL?: string | null;
+ provider: string;
+ /** @description Disable automatic redirection to the provider. Useful for handling the redirection yourself */
+ disableRedirect?: boolean | null;
+ idToken?: {
+ /** @description ID token from the provider */
+ token: string;
+ /** @description Nonce used to generate the token */
+ nonce?: string | null;
+ /** @description Access token from the provider */
+ accessToken?: string | null;
+ /** @description Refresh token from the provider */
+ refreshToken?: string | null;
+ /** @description Expiry date of the token */
+ expiresAt?: number | null;
+ } | null;
+ /** @description Array of scopes to request from the provider. This will override the default scopes passed. */
+ scopes?: unknown[] | null;
+ /** @description Explicitly request sign-up. Useful when disableImplicitSignUp is true for this provider */
+ requestSignUp?: boolean | null;
+ /** @description The login hint to use for the authorization code request */
+ loginHint?: string | null;
+ additionalData?: string | null;
+ };
+ };
};
- };
- /** @description Unauthorized. Due to missing or invalid authentication. */
- 401: {
- headers: {
- [name: string]: unknown;
+ responses: {
+ /** @description Success - Returns either session details or redirect URL */
+ 200: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content: {
+ "application/json": {
+ token: string;
+ user: components["schemas"]["User"];
+ url?: string;
+ /** @enum {boolean} */
+ redirect: false;
+ };
+ };
+ };
+ /** @description Bad Request. Usually due to missing parameters, or invalid parameters. */
+ 400: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content: {
+ "application/json": {
+ message: string;
+ };
+ };
+ };
+ /** @description Unauthorized. Due to missing or invalid authentication. */
+ 401: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content: {
+ "application/json": {
+ message: string;
+ };
+ };
+ };
+ /** @description Forbidden. You do not have permission to access this resource or to perform this action. */
+ 403: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content: {
+ "application/json": {
+ message?: string;
+ };
+ };
+ };
+ /** @description Not Found. The requested resource was not found. */
+ 404: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content: {
+ "application/json": {
+ message?: string;
+ };
+ };
+ };
+ /** @description Too Many Requests. You have exceeded the rate limit. Try again later. */
+ 429: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content: {
+ "application/json": {
+ message?: string;
+ };
+ };
+ };
+ /** @description Internal Server Error. This is a problem with the server that you cannot fix. */
+ 500: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content: {
+ "application/json": {
+ message?: string;
+ };
+ };
+ };
};
- content: {
- 'application/json': {
- message: string;
- };
+ };
+ getSession: {
+ parameters: {
+ query?: never;
+ header?: never;
+ path?: never;
+ cookie?: never;
};
- };
- /** @description Forbidden. You do not have permission to access this resource or to perform this action. */
- 403: {
- headers: {
- [name: string]: unknown;
+ requestBody?: never;
+ responses: {
+ /** @description Success */
+ 200: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content: {
+ "application/json": {
+ session: components["schemas"]["Session"];
+ user: components["schemas"]["User"];
+ } | null;
+ };
+ };
+ /** @description Bad Request. Usually due to missing parameters, or invalid parameters. */
+ 400: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content: {
+ "application/json": {
+ message: string;
+ };
+ };
+ };
+ /** @description Unauthorized. Due to missing or invalid authentication. */
+ 401: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content: {
+ "application/json": {
+ message: string;
+ };
+ };
+ };
+ /** @description Forbidden. You do not have permission to access this resource or to perform this action. */
+ 403: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content: {
+ "application/json": {
+ message?: string;
+ };
+ };
+ };
+ /** @description Not Found. The requested resource was not found. */
+ 404: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content: {
+ "application/json": {
+ message?: string;
+ };
+ };
+ };
+ /** @description Too Many Requests. You have exceeded the rate limit. Try again later. */
+ 429: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content: {
+ "application/json": {
+ message?: string;
+ };
+ };
+ };
+ /** @description Internal Server Error. This is a problem with the server that you cannot fix. */
+ 500: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content: {
+ "application/json": {
+ message?: string;
+ };
+ };
+ };
};
- content: {
- 'application/json': {
- message?: string;
- };
+ };
+ signOut: {
+ parameters: {
+ query?: never;
+ header?: never;
+ path?: never;
+ cookie?: never;
};
- };
- /** @description Not Found. The requested resource was not found. */
- 404: {
- headers: {
- [name: string]: unknown;
+ requestBody?: {
+ content: {
+ "application/json": Record;
+ };
};
- content: {
- 'application/json': {
- message?: string;
- };
+ responses: {
+ /** @description Success */
+ 200: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content: {
+ "application/json": {
+ success?: boolean;
+ };
+ };
+ };
+ /** @description Bad Request. Usually due to missing parameters, or invalid parameters. */
+ 400: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content: {
+ "application/json": {
+ message: string;
+ };
+ };
+ };
+ /** @description Unauthorized. Due to missing or invalid authentication. */
+ 401: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content: {
+ "application/json": {
+ message: string;
+ };
+ };
+ };
+ /** @description Forbidden. You do not have permission to access this resource or to perform this action. */
+ 403: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content: {
+ "application/json": {
+ message?: string;
+ };
+ };
+ };
+ /** @description Not Found. The requested resource was not found. */
+ 404: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content: {
+ "application/json": {
+ message?: string;
+ };
+ };
+ };
+ /** @description Too Many Requests. You have exceeded the rate limit. Try again later. */
+ 429: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content: {
+ "application/json": {
+ message?: string;
+ };
+ };
+ };
+ /** @description Internal Server Error. This is a problem with the server that you cannot fix. */
+ 500: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content: {
+ "application/json": {
+ message?: string;
+ };
+ };
+ };
};
- };
- /** @description Too Many Requests. You have exceeded the rate limit. Try again later. */
- 429: {
- headers: {
- [name: string]: unknown;
+ };
+ signUpWithEmailAndPassword: {
+ parameters: {
+ query?: never;
+ header?: never;
+ path?: never;
+ cookie?: never;
+ };
+ requestBody?: {
+ content: {
+ "application/json": {
+ /** @description The name of the user */
+ name: string;
+ /** @description The email of the user */
+ email: string;
+ /** @description The password of the user */
+ password: string;
+ /** @description The profile image URL of the user */
+ image?: string;
+ /** @description The URL to use for email verification callback */
+ callbackURL?: string;
+ /** @description If this is false, the session will not be remembered. Default is `true`. */
+ rememberMe?: boolean;
+ };
+ };
};
- content: {
- 'application/json': {
- message?: string;
- };
+ responses: {
+ /** @description Successfully created user */
+ 200: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content: {
+ "application/json": {
+ /** @description Authentication token for the session */
+ token?: string | null;
+ user: {
+ /** @description The unique identifier of the user */
+ id: string;
+ /**
+ * Format: email
+ * @description The email address of the user
+ */
+ email: string;
+ /** @description The name of the user */
+ name: string;
+ /**
+ * Format: uri
+ * @description The profile image URL of the user
+ */
+ image?: string | null;
+ /** @description Whether the email has been verified */
+ emailVerified: boolean;
+ /**
+ * Format: date-time
+ * @description When the user was created
+ */
+ createdAt: string;
+ /**
+ * Format: date-time
+ * @description When the user was last updated
+ */
+ updatedAt: string;
+ };
+ };
+ };
+ };
+ /** @description Bad Request. Usually due to missing parameters, or invalid parameters. */
+ 400: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content: {
+ "application/json": {
+ message: string;
+ };
+ };
+ };
+ /** @description Unauthorized. Due to missing or invalid authentication. */
+ 401: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content: {
+ "application/json": {
+ message: string;
+ };
+ };
+ };
+ /** @description Forbidden. You do not have permission to access this resource or to perform this action. */
+ 403: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content: {
+ "application/json": {
+ message?: string;
+ };
+ };
+ };
+ /** @description Not Found. The requested resource was not found. */
+ 404: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content: {
+ "application/json": {
+ message?: string;
+ };
+ };
+ };
+ /** @description Unprocessable Entity. User already exists or failed to create user. */
+ 422: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content: {
+ "application/json": {
+ message?: string;
+ };
+ };
+ };
+ /** @description Too Many Requests. You have exceeded the rate limit. Try again later. */
+ 429: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content: {
+ "application/json": {
+ message?: string;
+ };
+ };
+ };
+ /** @description Internal Server Error. This is a problem with the server that you cannot fix. */
+ 500: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content: {
+ "application/json": {
+ message?: string;
+ };
+ };
+ };
};
- };
- /** @description Internal Server Error. This is a problem with the server that you cannot fix. */
- 500: {
- headers: {
- [name: string]: unknown;
+ };
+ signInEmail: {
+ parameters: {
+ query?: never;
+ header?: never;
+ path?: never;
+ cookie?: never;
+ };
+ requestBody: {
+ content: {
+ "application/json": {
+ /** @description Email of the user */
+ email: string;
+ /** @description Password of the user */
+ password: string;
+ /** @description Callback URL to use as a redirect for email verification */
+ callbackURL?: string | null;
+ /**
+ * @description If this is false, the session will not be remembered. Default is `true`.
+ * @default true
+ */
+ rememberMe?: boolean | null;
+ };
+ };
};
- content: {
- 'application/json': {
- message?: string;
- };
- };
- };
- };
- };
- impersonateUser: {
- parameters: {
- query?: never;
- header?: never;
- path?: never;
- cookie?: never;
- };
- requestBody: {
- content: {
- 'application/json': {
- /** @description The user id */
- userId: string;
- };
- };
- };
- responses: {
- /** @description Impersonation session created */
- 200: {
- headers: {
- [name: string]: unknown;
- };
- content: {
- 'application/json': {
- session?: components['schemas']['Session'];
- user?: components['schemas']['User'];
- };
- };
- };
- /** @description Bad Request. Usually due to missing parameters, or invalid parameters. */
- 400: {
- headers: {
- [name: string]: unknown;
- };
- content: {
- 'application/json': {
- message: string;
- };
+ responses: {
+ /** @description Success - Returns either session details or redirect URL */
+ 200: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content: {
+ "application/json": {
+ /** @enum {boolean} */
+ redirect: false;
+ /** @description Session token */
+ token: string;
+ url?: string | null;
+ user: components["schemas"]["User"];
+ };
+ };
+ };
+ /** @description Bad Request. Usually due to missing parameters, or invalid parameters. */
+ 400: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content: {
+ "application/json": {
+ message: string;
+ };
+ };
+ };
+ /** @description Unauthorized. Due to missing or invalid authentication. */
+ 401: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content: {
+ "application/json": {
+ message: string;
+ };
+ };
+ };
+ /** @description Forbidden. You do not have permission to access this resource or to perform this action. */
+ 403: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content: {
+ "application/json": {
+ message?: string;
+ };
+ };
+ };
+ /** @description Not Found. The requested resource was not found. */
+ 404: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content: {
+ "application/json": {
+ message?: string;
+ };
+ };
+ };
+ /** @description Too Many Requests. You have exceeded the rate limit. Try again later. */
+ 429: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content: {
+ "application/json": {
+ message?: string;
+ };
+ };
+ };
+ /** @description Internal Server Error. This is a problem with the server that you cannot fix. */
+ 500: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content: {
+ "application/json": {
+ message?: string;
+ };
+ };
+ };
};
- };
- /** @description Unauthorized. Due to missing or invalid authentication. */
- 401: {
- headers: {
- [name: string]: unknown;
+ };
+ resetPassword: {
+ parameters: {
+ query?: never;
+ header?: never;
+ path?: never;
+ cookie?: never;
};
- content: {
- 'application/json': {
- message: string;
- };
+ requestBody: {
+ content: {
+ "application/json": {
+ /** @description The new password to set */
+ newPassword: string;
+ /** @description The token to reset the password */
+ token?: string | null;
+ };
+ };
};
- };
- /** @description Forbidden. You do not have permission to access this resource or to perform this action. */
- 403: {
- headers: {
- [name: string]: unknown;
+ responses: {
+ /** @description Success */
+ 200: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content: {
+ "application/json": {
+ status?: boolean;
+ };
+ };
+ };
+ /** @description Bad Request. Usually due to missing parameters, or invalid parameters. */
+ 400: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content: {
+ "application/json": {
+ message: string;
+ };
+ };
+ };
+ /** @description Unauthorized. Due to missing or invalid authentication. */
+ 401: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content: {
+ "application/json": {
+ message: string;
+ };
+ };
+ };
+ /** @description Forbidden. You do not have permission to access this resource or to perform this action. */
+ 403: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content: {
+ "application/json": {
+ message?: string;
+ };
+ };
+ };
+ /** @description Not Found. The requested resource was not found. */
+ 404: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content: {
+ "application/json": {
+ message?: string;
+ };
+ };
+ };
+ /** @description Too Many Requests. You have exceeded the rate limit. Try again later. */
+ 429: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content: {
+ "application/json": {
+ message?: string;
+ };
+ };
+ };
+ /** @description Internal Server Error. This is a problem with the server that you cannot fix. */
+ 500: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content: {
+ "application/json": {
+ message?: string;
+ };
+ };
+ };
};
- content: {
- 'application/json': {
- message?: string;
- };
+ };
+ verifyPassword: {
+ parameters: {
+ query?: never;
+ header?: never;
+ path?: never;
+ cookie?: never;
};
- };
- /** @description Not Found. The requested resource was not found. */
- 404: {
- headers: {
- [name: string]: unknown;
+ requestBody: {
+ content: {
+ "application/json": {
+ /** @description The password to verify */
+ password: string;
+ };
+ };
};
- content: {
- 'application/json': {
- message?: string;
- };
+ responses: {
+ /** @description Success */
+ 200: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content: {
+ "application/json": {
+ status?: boolean;
+ };
+ };
+ };
+ /** @description Bad Request. Usually due to missing parameters, or invalid parameters. */
+ 400: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content: {
+ "application/json": {
+ message: string;
+ };
+ };
+ };
+ /** @description Unauthorized. Due to missing or invalid authentication. */
+ 401: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content: {
+ "application/json": {
+ message: string;
+ };
+ };
+ };
+ /** @description Forbidden. You do not have permission to access this resource or to perform this action. */
+ 403: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content: {
+ "application/json": {
+ message?: string;
+ };
+ };
+ };
+ /** @description Not Found. The requested resource was not found. */
+ 404: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content: {
+ "application/json": {
+ message?: string;
+ };
+ };
+ };
+ /** @description Too Many Requests. You have exceeded the rate limit. Try again later. */
+ 429: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content: {
+ "application/json": {
+ message?: string;
+ };
+ };
+ };
+ /** @description Internal Server Error. This is a problem with the server that you cannot fix. */
+ 500: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content: {
+ "application/json": {
+ message?: string;
+ };
+ };
+ };
};
- };
- /** @description Too Many Requests. You have exceeded the rate limit. Try again later. */
- 429: {
- headers: {
- [name: string]: unknown;
+ };
+ sendVerificationEmail: {
+ parameters: {
+ query?: never;
+ header?: never;
+ path?: never;
+ cookie?: never;
+ };
+ requestBody?: {
+ content: {
+ "application/json": {
+ /**
+ * @description The email to send the verification email to
+ * @example user@example.com
+ */
+ email: string;
+ /**
+ * @description The URL to use for email verification callback
+ * @example https://example.com/callback
+ */
+ callbackURL?: string | null;
+ };
+ };
};
- content: {
- 'application/json': {
- message?: string;
- };
+ responses: {
+ /** @description Success */
+ 200: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content: {
+ "application/json": {
+ /**
+ * @description Indicates if the email was sent successfully
+ * @example true
+ */
+ status?: boolean;
+ };
+ };
+ };
+ /** @description Bad Request */
+ 400: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content: {
+ "application/json": {
+ /**
+ * @description Error message
+ * @example Verification email isn't enabled
+ */
+ message?: string;
+ };
+ };
+ };
+ /** @description Unauthorized. Due to missing or invalid authentication. */
+ 401: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content: {
+ "application/json": {
+ message: string;
+ };
+ };
+ };
+ /** @description Forbidden. You do not have permission to access this resource or to perform this action. */
+ 403: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content: {
+ "application/json": {
+ message?: string;
+ };
+ };
+ };
+ /** @description Not Found. The requested resource was not found. */
+ 404: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content: {
+ "application/json": {
+ message?: string;
+ };
+ };
+ };
+ /** @description Too Many Requests. You have exceeded the rate limit. Try again later. */
+ 429: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content: {
+ "application/json": {
+ message?: string;
+ };
+ };
+ };
+ /** @description Internal Server Error. This is a problem with the server that you cannot fix. */
+ 500: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content: {
+ "application/json": {
+ message?: string;
+ };
+ };
+ };
};
- };
- /** @description Internal Server Error. This is a problem with the server that you cannot fix. */
- 500: {
- headers: {
- [name: string]: unknown;
+ };
+ changeEmail: {
+ parameters: {
+ query?: never;
+ header?: never;
+ path?: never;
+ cookie?: never;
};
- content: {
- 'application/json': {
- message?: string;
- };
- };
- };
- };
- };
- revokeUserSession: {
- parameters: {
- query?: never;
- header?: never;
- path?: never;
- cookie?: never;
- };
- requestBody: {
- content: {
- 'application/json': {
- /** @description The session token */
- sessionToken: string;
- };
- };
- };
- responses: {
- /** @description Session revoked */
- 200: {
- headers: {
- [name: string]: unknown;
- };
- content: {
- 'application/json': {
- success?: boolean;
- };
- };
- };
- /** @description Bad Request. Usually due to missing parameters, or invalid parameters. */
- 400: {
- headers: {
- [name: string]: unknown;
- };
- content: {
- 'application/json': {
- message: string;
- };
+ requestBody: {
+ content: {
+ "application/json": {
+ /** @description The new email address to set must be a valid email address */
+ newEmail: string;
+ /** @description The URL to redirect to after email verification */
+ callbackURL?: string | null;
+ };
+ };
};
- };
- /** @description Unauthorized. Due to missing or invalid authentication. */
- 401: {
- headers: {
- [name: string]: unknown;
+ responses: {
+ /** @description Email change request processed successfully */
+ 200: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content: {
+ "application/json": {
+ user?: components["schemas"]["User"];
+ /** @description Indicates if the request was successful */
+ status: boolean;
+ /**
+ * @description Status message of the email change process
+ * @enum {string|null}
+ */
+ message?: "Email updated" | "Verification email sent" | null;
+ };
+ };
+ };
+ /** @description Bad Request. Usually due to missing parameters, or invalid parameters. */
+ 400: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content: {
+ "application/json": {
+ message: string;
+ };
+ };
+ };
+ /** @description Unauthorized. Due to missing or invalid authentication. */
+ 401: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content: {
+ "application/json": {
+ message: string;
+ };
+ };
+ };
+ /** @description Forbidden. You do not have permission to access this resource or to perform this action. */
+ 403: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content: {
+ "application/json": {
+ message?: string;
+ };
+ };
+ };
+ /** @description Not Found. The requested resource was not found. */
+ 404: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content: {
+ "application/json": {
+ message?: string;
+ };
+ };
+ };
+ /** @description Unprocessable Entity. Email already exists */
+ 422: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content: {
+ "application/json": {
+ message?: string;
+ };
+ };
+ };
+ /** @description Too Many Requests. You have exceeded the rate limit. Try again later. */
+ 429: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content: {
+ "application/json": {
+ message?: string;
+ };
+ };
+ };
+ /** @description Internal Server Error. This is a problem with the server that you cannot fix. */
+ 500: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content: {
+ "application/json": {
+ message?: string;
+ };
+ };
+ };
};
- content: {
- 'application/json': {
- message: string;
- };
+ };
+ changePassword: {
+ parameters: {
+ query?: never;
+ header?: never;
+ path?: never;
+ cookie?: never;
};
- };
- /** @description Forbidden. You do not have permission to access this resource or to perform this action. */
- 403: {
- headers: {
- [name: string]: unknown;
+ requestBody: {
+ content: {
+ "application/json": {
+ /** @description The new password to set */
+ newPassword: string;
+ /** @description The current password is required */
+ currentPassword: string;
+ /** @description Must be a boolean value */
+ revokeOtherSessions?: boolean | null;
+ };
+ };
};
- content: {
- 'application/json': {
- message?: string;
- };
+ responses: {
+ /** @description Password successfully changed */
+ 200: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content: {
+ "application/json": {
+ /** @description New session token if other sessions were revoked */
+ token?: string | null;
+ user: {
+ /** @description The unique identifier of the user */
+ id: string;
+ /**
+ * Format: email
+ * @description The email address of the user
+ */
+ email: string;
+ /** @description The name of the user */
+ name: string;
+ /**
+ * Format: uri
+ * @description The profile image URL of the user
+ */
+ image?: string | null;
+ /** @description Whether the email has been verified */
+ emailVerified: boolean;
+ /**
+ * Format: date-time
+ * @description When the user was created
+ */
+ createdAt: string;
+ /**
+ * Format: date-time
+ * @description When the user was last updated
+ */
+ updatedAt: string;
+ };
+ };
+ };
+ };
+ /** @description Bad Request. Usually due to missing parameters, or invalid parameters. */
+ 400: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content: {
+ "application/json": {
+ message: string;
+ };
+ };
+ };
+ /** @description Unauthorized. Due to missing or invalid authentication. */
+ 401: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content: {
+ "application/json": {
+ message: string;
+ };
+ };
+ };
+ /** @description Forbidden. You do not have permission to access this resource or to perform this action. */
+ 403: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content: {
+ "application/json": {
+ message?: string;
+ };
+ };
+ };
+ /** @description Not Found. The requested resource was not found. */
+ 404: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content: {
+ "application/json": {
+ message?: string;
+ };
+ };
+ };
+ /** @description Too Many Requests. You have exceeded the rate limit. Try again later. */
+ 429: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content: {
+ "application/json": {
+ message?: string;
+ };
+ };
+ };
+ /** @description Internal Server Error. This is a problem with the server that you cannot fix. */
+ 500: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content: {
+ "application/json": {
+ message?: string;
+ };
+ };
+ };
};
- };
- /** @description Not Found. The requested resource was not found. */
- 404: {
- headers: {
- [name: string]: unknown;
+ };
+ updateUser: {
+ parameters: {
+ query?: never;
+ header?: never;
+ path?: never;
+ cookie?: never;
};
- content: {
- 'application/json': {
- message?: string;
- };
+ requestBody?: {
+ content: {
+ "application/json": {
+ /** @description The name of the user */
+ name?: string;
+ /** @description The image of the user */
+ image?: string | null;
+ };
+ };
};
- };
- /** @description Too Many Requests. You have exceeded the rate limit. Try again later. */
- 429: {
- headers: {
- [name: string]: unknown;
+ responses: {
+ /** @description Success */
+ 200: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content: {
+ "application/json": {
+ user?: components["schemas"]["User"];
+ };
+ };
+ };
+ /** @description Bad Request. Usually due to missing parameters, or invalid parameters. */
+ 400: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content: {
+ "application/json": {
+ message: string;
+ };
+ };
+ };
+ /** @description Unauthorized. Due to missing or invalid authentication. */
+ 401: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content: {
+ "application/json": {
+ message: string;
+ };
+ };
+ };
+ /** @description Forbidden. You do not have permission to access this resource or to perform this action. */
+ 403: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content: {
+ "application/json": {
+ message?: string;
+ };
+ };
+ };
+ /** @description Not Found. The requested resource was not found. */
+ 404: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content: {
+ "application/json": {
+ message?: string;
+ };
+ };
+ };
+ /** @description Too Many Requests. You have exceeded the rate limit. Try again later. */
+ 429: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content: {
+ "application/json": {
+ message?: string;
+ };
+ };
+ };
+ /** @description Internal Server Error. This is a problem with the server that you cannot fix. */
+ 500: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content: {
+ "application/json": {
+ message?: string;
+ };
+ };
+ };
};
- content: {
- 'application/json': {
- message?: string;
- };
+ };
+ deleteUser: {
+ parameters: {
+ query?: never;
+ header?: never;
+ path?: never;
+ cookie?: never;
};
- };
- /** @description Internal Server Error. This is a problem with the server that you cannot fix. */
- 500: {
- headers: {
- [name: string]: unknown;
+ requestBody?: {
+ content: {
+ "application/json": {
+ /** @description The callback URL to redirect to after the user is deleted */
+ callbackURL?: string;
+ /** @description The user's password. Required if session is not fresh */
+ password?: string;
+ /** @description The deletion verification token */
+ token?: string;
+ };
+ };
};
- content: {
- 'application/json': {
- message?: string;
- };
- };
- };
- };
- };
- revokeUserSessions: {
- parameters: {
- query?: never;
- header?: never;
- path?: never;
- cookie?: never;
- };
- requestBody: {
- content: {
- 'application/json': {
- /** @description The user id */
- userId: string;
- };
- };
- };
- responses: {
- /** @description Sessions revoked */
- 200: {
- headers: {
- [name: string]: unknown;
- };
- content: {
- 'application/json': {
- success?: boolean;
- };
- };
- };
- /** @description Bad Request. Usually due to missing parameters, or invalid parameters. */
- 400: {
- headers: {
- [name: string]: unknown;
- };
- content: {
- 'application/json': {
- message: string;
- };
+ responses: {
+ /** @description User deletion processed successfully */
+ 200: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content: {
+ "application/json": {
+ /** @description Indicates if the operation was successful */
+ success: boolean;
+ /**
+ * @description Status message of the deletion process
+ * @enum {string}
+ */
+ message: "User deleted" | "Verification email sent";
+ };
+ };
+ };
+ /** @description Bad Request. Usually due to missing parameters, or invalid parameters. */
+ 400: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content: {
+ "application/json": {
+ message: string;
+ };
+ };
+ };
+ /** @description Unauthorized. Due to missing or invalid authentication. */
+ 401: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content: {
+ "application/json": {
+ message: string;
+ };
+ };
+ };
+ /** @description Forbidden. You do not have permission to access this resource or to perform this action. */
+ 403: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content: {
+ "application/json": {
+ message?: string;
+ };
+ };
+ };
+ /** @description Not Found. The requested resource was not found. */
+ 404: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content: {
+ "application/json": {
+ message?: string;
+ };
+ };
+ };
+ /** @description Too Many Requests. You have exceeded the rate limit. Try again later. */
+ 429: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content: {
+ "application/json": {
+ message?: string;
+ };
+ };
+ };
+ /** @description Internal Server Error. This is a problem with the server that you cannot fix. */
+ 500: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content: {
+ "application/json": {
+ message?: string;
+ };
+ };
+ };
};
- };
- /** @description Unauthorized. Due to missing or invalid authentication. */
- 401: {
- headers: {
- [name: string]: unknown;
+ };
+ requestPasswordReset: {
+ parameters: {
+ query?: never;
+ header?: never;
+ path?: never;
+ cookie?: never;
};
- content: {
- 'application/json': {
- message: string;
- };
+ requestBody: {
+ content: {
+ "application/json": {
+ /** @description The email address of the user to send a password reset email to */
+ email: string;
+ /** @description The URL to redirect the user to reset their password. If the token isn't valid or expired, it'll be redirected with a query parameter `?error=INVALID_TOKEN`. If the token is valid, it'll be redirected with a query parameter `?token=VALID_TOKEN */
+ redirectTo?: string | null;
+ };
+ };
};
- };
- /** @description Forbidden. You do not have permission to access this resource or to perform this action. */
- 403: {
- headers: {
- [name: string]: unknown;
+ responses: {
+ /** @description Success */
+ 200: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content: {
+ "application/json": {
+ status?: boolean;
+ message?: string;
+ };
+ };
+ };
+ /** @description Bad Request. Usually due to missing parameters, or invalid parameters. */
+ 400: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content: {
+ "application/json": {
+ message: string;
+ };
+ };
+ };
+ /** @description Unauthorized. Due to missing or invalid authentication. */
+ 401: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content: {
+ "application/json": {
+ message: string;
+ };
+ };
+ };
+ /** @description Forbidden. You do not have permission to access this resource or to perform this action. */
+ 403: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content: {
+ "application/json": {
+ message?: string;
+ };
+ };
+ };
+ /** @description Not Found. The requested resource was not found. */
+ 404: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content: {
+ "application/json": {
+ message?: string;
+ };
+ };
+ };
+ /** @description Too Many Requests. You have exceeded the rate limit. Try again later. */
+ 429: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content: {
+ "application/json": {
+ message?: string;
+ };
+ };
+ };
+ /** @description Internal Server Error. This is a problem with the server that you cannot fix. */
+ 500: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content: {
+ "application/json": {
+ message?: string;
+ };
+ };
+ };
};
- content: {
- 'application/json': {
- message?: string;
- };
+ };
+ resetPasswordCallback: {
+ parameters: {
+ query: {
+ /** @description The URL to redirect the user to reset their password */
+ callbackURL: string;
+ };
+ header?: never;
+ path: {
+ /** @description The token to reset the password */
+ token: string;
+ };
+ cookie?: never;
};
- };
- /** @description Not Found. The requested resource was not found. */
- 404: {
- headers: {
- [name: string]: unknown;
+ requestBody?: never;
+ responses: {
+ /** @description Success */
+ 200: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content: {
+ "application/json": {
+ token?: string;
+ };
+ };
+ };
+ /** @description Bad Request. Usually due to missing parameters, or invalid parameters. */
+ 400: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content: {
+ "application/json": {
+ message: string;
+ };
+ };
+ };
+ /** @description Unauthorized. Due to missing or invalid authentication. */
+ 401: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content: {
+ "application/json": {
+ message: string;
+ };
+ };
+ };
+ /** @description Forbidden. You do not have permission to access this resource or to perform this action. */
+ 403: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content: {
+ "application/json": {
+ message?: string;
+ };
+ };
+ };
+ /** @description Not Found. The requested resource was not found. */
+ 404: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content: {
+ "application/json": {
+ message?: string;
+ };
+ };
+ };
+ /** @description Too Many Requests. You have exceeded the rate limit. Try again later. */
+ 429: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content: {
+ "application/json": {
+ message?: string;
+ };
+ };
+ };
+ /** @description Internal Server Error. This is a problem with the server that you cannot fix. */
+ 500: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content: {
+ "application/json": {
+ message?: string;
+ };
+ };
+ };
};
- content: {
- 'application/json': {
- message?: string;
- };
+ };
+ listUserSessions: {
+ parameters: {
+ query?: never;
+ header?: never;
+ path?: never;
+ cookie?: never;
};
- };
- /** @description Too Many Requests. You have exceeded the rate limit. Try again later. */
- 429: {
- headers: {
- [name: string]: unknown;
+ requestBody?: never;
+ responses: {
+ /** @description Success */
+ 200: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content: {
+ "application/json": components["schemas"]["Session"][];
+ };
+ };
+ /** @description Bad Request. Usually due to missing parameters, or invalid parameters. */
+ 400: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content: {
+ "application/json": {
+ message: string;
+ };
+ };
+ };
+ /** @description Unauthorized. Due to missing or invalid authentication. */
+ 401: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content: {
+ "application/json": {
+ message: string;
+ };
+ };
+ };
+ /** @description Forbidden. You do not have permission to access this resource or to perform this action. */
+ 403: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content: {
+ "application/json": {
+ message?: string;
+ };
+ };
+ };
+ /** @description Not Found. The requested resource was not found. */
+ 404: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content: {
+ "application/json": {
+ message?: string;
+ };
+ };
+ };
+ /** @description Too Many Requests. You have exceeded the rate limit. Try again later. */
+ 429: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content: {
+ "application/json": {
+ message?: string;
+ };
+ };
+ };
+ /** @description Internal Server Error. This is a problem with the server that you cannot fix. */
+ 500: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content: {
+ "application/json": {
+ message?: string;
+ };
+ };
+ };
};
- content: {
- 'application/json': {
- message?: string;
- };
+ };
+ linkSocialAccount: {
+ parameters: {
+ query?: never;
+ header?: never;
+ path?: never;
+ cookie?: never;
+ };
+ requestBody: {
+ content: {
+ "application/json": {
+ /** @description The URL to redirect to after the user has signed in */
+ callbackURL?: string | null;
+ provider: string;
+ idToken?: {
+ token: string;
+ nonce?: string | null;
+ accessToken?: string | null;
+ refreshToken?: string | null;
+ scopes?: unknown[] | null;
+ } | null;
+ requestSignUp?: boolean | null;
+ /** @description Additional scopes to request from the provider */
+ scopes?: unknown[] | null;
+ /** @description The URL to redirect to if there is an error during the link process */
+ errorCallbackURL?: string | null;
+ /** @description Disable automatic redirection to the provider. Useful for handling the redirection yourself */
+ disableRedirect?: boolean | null;
+ additionalData?: string | null;
+ };
+ };
};
- };
- /** @description Internal Server Error. This is a problem with the server that you cannot fix. */
- 500: {
- headers: {
- [name: string]: unknown;
+ responses: {
+ /** @description Success */
+ 200: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content: {
+ "application/json": {
+ /** @description The authorization URL to redirect the user to */
+ url?: string;
+ /** @description Indicates if the user should be redirected to the authorization URL */
+ redirect: boolean;
+ status?: boolean;
+ };
+ };
+ };
+ /** @description Bad Request. Usually due to missing parameters, or invalid parameters. */
+ 400: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content: {
+ "application/json": {
+ message: string;
+ };
+ };
+ };
+ /** @description Unauthorized. Due to missing or invalid authentication. */
+ 401: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content: {
+ "application/json": {
+ message: string;
+ };
+ };
+ };
+ /** @description Forbidden. You do not have permission to access this resource or to perform this action. */
+ 403: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content: {
+ "application/json": {
+ message?: string;
+ };
+ };
+ };
+ /** @description Not Found. The requested resource was not found. */
+ 404: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content: {
+ "application/json": {
+ message?: string;
+ };
+ };
+ };
+ /** @description Too Many Requests. You have exceeded the rate limit. Try again later. */
+ 429: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content: {
+ "application/json": {
+ message?: string;
+ };
+ };
+ };
+ /** @description Internal Server Error. This is a problem with the server that you cannot fix. */
+ 500: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content: {
+ "application/json": {
+ message?: string;
+ };
+ };
+ };
};
- content: {
- 'application/json': {
- message?: string;
- };
- };
- };
- };
- };
- removeUser: {
- parameters: {
- query?: never;
- header?: never;
- path?: never;
- cookie?: never;
- };
- requestBody: {
- content: {
- 'application/json': {
- /** @description The user id */
- userId: string;
- };
- };
- };
- responses: {
- /** @description User removed */
- 200: {
- headers: {
- [name: string]: unknown;
- };
- content: {
- 'application/json': {
- success?: boolean;
- };
- };
- };
- /** @description Bad Request. Usually due to missing parameters, or invalid parameters. */
- 400: {
- headers: {
- [name: string]: unknown;
- };
- content: {
- 'application/json': {
- message: string;
- };
+ };
+ listUserAccounts: {
+ parameters: {
+ query?: never;
+ header?: never;
+ path?: never;
+ cookie?: never;
};
- };
- /** @description Unauthorized. Due to missing or invalid authentication. */
- 401: {
- headers: {
- [name: string]: unknown;
+ requestBody?: never;
+ responses: {
+ /** @description Success */
+ 200: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content: {
+ "application/json": {
+ id: string;
+ providerId: string;
+ /** Format: date-time */
+ createdAt: string;
+ /** Format: date-time */
+ updatedAt: string;
+ accountId: string;
+ userId: string;
+ scopes: string[];
+ }[];
+ };
+ };
+ /** @description Bad Request. Usually due to missing parameters, or invalid parameters. */
+ 400: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content: {
+ "application/json": {
+ message: string;
+ };
+ };
+ };
+ /** @description Unauthorized. Due to missing or invalid authentication. */
+ 401: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content: {
+ "application/json": {
+ message: string;
+ };
+ };
+ };
+ /** @description Forbidden. You do not have permission to access this resource or to perform this action. */
+ 403: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content: {
+ "application/json": {
+ message?: string;
+ };
+ };
+ };
+ /** @description Not Found. The requested resource was not found. */
+ 404: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content: {
+ "application/json": {
+ message?: string;
+ };
+ };
+ };
+ /** @description Too Many Requests. You have exceeded the rate limit. Try again later. */
+ 429: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content: {
+ "application/json": {
+ message?: string;
+ };
+ };
+ };
+ /** @description Internal Server Error. This is a problem with the server that you cannot fix. */
+ 500: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content: {
+ "application/json": {
+ message?: string;
+ };
+ };
+ };
};
- content: {
- 'application/json': {
- message: string;
- };
+ };
+ sendEmailVerificationOTP: {
+ parameters: {
+ query?: never;
+ header?: never;
+ path?: never;
+ cookie?: never;
};
- };
- /** @description Forbidden. You do not have permission to access this resource or to perform this action. */
- 403: {
- headers: {
- [name: string]: unknown;
+ requestBody: {
+ content: {
+ "application/json": {
+ /** @description Email address to send the OTP */
+ email: string;
+ /** @description Type of the OTP */
+ type: string;
+ };
+ };
};
- content: {
- 'application/json': {
- message?: string;
- };
+ responses: {
+ /** @description Success */
+ 200: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content: {
+ "application/json": {
+ success?: boolean;
+ };
+ };
+ };
+ /** @description Bad Request. Usually due to missing parameters, or invalid parameters. */
+ 400: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content: {
+ "application/json": {
+ message: string;
+ };
+ };
+ };
+ /** @description Unauthorized. Due to missing or invalid authentication. */
+ 401: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content: {
+ "application/json": {
+ message: string;
+ };
+ };
+ };
+ /** @description Forbidden. You do not have permission to access this resource or to perform this action. */
+ 403: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content: {
+ "application/json": {
+ message?: string;
+ };
+ };
+ };
+ /** @description Not Found. The requested resource was not found. */
+ 404: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content: {
+ "application/json": {
+ message?: string;
+ };
+ };
+ };
+ /** @description Too Many Requests. You have exceeded the rate limit. Try again later. */
+ 429: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content: {
+ "application/json": {
+ message?: string;
+ };
+ };
+ };
+ /** @description Internal Server Error. This is a problem with the server that you cannot fix. */
+ 500: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content: {
+ "application/json": {
+ message?: string;
+ };
+ };
+ };
};
- };
- /** @description Not Found. The requested resource was not found. */
- 404: {
- headers: {
- [name: string]: unknown;
+ };
+ verifyEmailWithOTP: {
+ parameters: {
+ query?: never;
+ header?: never;
+ path?: never;
+ cookie?: never;
};
- content: {
- 'application/json': {
- message?: string;
- };
+ requestBody: {
+ content: {
+ "application/json": {
+ /** @description Email address the OTP was sent to */
+ email: string;
+ /** @description Type of the OTP */
+ type: string;
+ /** @description OTP to verify */
+ otp: string;
+ };
+ };
};
- };
- /** @description Too Many Requests. You have exceeded the rate limit. Try again later. */
- 429: {
- headers: {
- [name: string]: unknown;
+ responses: {
+ /** @description Success */
+ 200: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content: {
+ "application/json": {
+ success?: boolean;
+ };
+ };
+ };
+ /** @description Bad Request. Usually due to missing parameters, or invalid parameters. */
+ 400: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content: {
+ "application/json": {
+ message: string;
+ };
+ };
+ };
+ /** @description Unauthorized. Due to missing or invalid authentication. */
+ 401: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content: {
+ "application/json": {
+ message: string;
+ };
+ };
+ };
+ /** @description Forbidden. You do not have permission to access this resource or to perform this action. */
+ 403: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content: {
+ "application/json": {
+ message?: string;
+ };
+ };
+ };
+ /** @description Not Found. The requested resource was not found. */
+ 404: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content: {
+ "application/json": {
+ message?: string;
+ };
+ };
+ };
+ /** @description Too Many Requests. You have exceeded the rate limit. Try again later. */
+ 429: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content: {
+ "application/json": {
+ message?: string;
+ };
+ };
+ };
+ /** @description Internal Server Error. This is a problem with the server that you cannot fix. */
+ 500: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content: {
+ "application/json": {
+ message?: string;
+ };
+ };
+ };
};
- content: {
- 'application/json': {
- message?: string;
- };
+ };
+ signInWithEmailOTP: {
+ parameters: {
+ query?: never;
+ header?: never;
+ path?: never;
+ cookie?: never;
};
- };
- /** @description Internal Server Error. This is a problem with the server that you cannot fix. */
- 500: {
- headers: {
- [name: string]: unknown;
+ requestBody: {
+ content: {
+ "application/json": {
+ /** @description Email address to sign in */
+ email: string;
+ /** @description OTP sent to the email */
+ otp: string;
+ };
+ };
};
- content: {
- 'application/json': {
- message?: string;
- };
- };
- };
- };
- };
- setUserPassword: {
- parameters: {
- query?: never;
- header?: never;
- path?: never;
- cookie?: never;
- };
- requestBody: {
- content: {
- 'application/json': {
- /** @description The new password */
- newPassword: string;
- /** @description The user id */
- userId: string;
- };
- };
- };
- responses: {
- /** @description Password set */
- 200: {
- headers: {
- [name: string]: unknown;
- };
- content: {
- 'application/json': {
- status?: boolean;
- };
- };
- };
- /** @description Bad Request. Usually due to missing parameters, or invalid parameters. */
- 400: {
- headers: {
- [name: string]: unknown;
- };
- content: {
- 'application/json': {
- message: string;
- };
+ responses: {
+ /** @description Success */
+ 200: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content: {
+ "application/json": {
+ /** @description Session token for the authenticated session */
+ token: string;
+ user: components["schemas"]["User"];
+ };
+ };
+ };
+ /** @description Bad Request. Usually due to missing parameters, or invalid parameters. */
+ 400: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content: {
+ "application/json": {
+ message: string;
+ };
+ };
+ };
+ /** @description Unauthorized. Due to missing or invalid authentication. */
+ 401: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content: {
+ "application/json": {
+ message: string;
+ };
+ };
+ };
+ /** @description Forbidden. You do not have permission to access this resource or to perform this action. */
+ 403: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content: {
+ "application/json": {
+ message?: string;
+ };
+ };
+ };
+ /** @description Not Found. The requested resource was not found. */
+ 404: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content: {
+ "application/json": {
+ message?: string;
+ };
+ };
+ };
+ /** @description Too Many Requests. You have exceeded the rate limit. Try again later. */
+ 429: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content: {
+ "application/json": {
+ message?: string;
+ };
+ };
+ };
+ /** @description Internal Server Error. This is a problem with the server that you cannot fix. */
+ 500: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content: {
+ "application/json": {
+ message?: string;
+ };
+ };
+ };
};
- };
- /** @description Unauthorized. Due to missing or invalid authentication. */
- 401: {
- headers: {
- [name: string]: unknown;
+ };
+ requestPasswordResetWithEmailOTP: {
+ parameters: {
+ query?: never;
+ header?: never;
+ path?: never;
+ cookie?: never;
};
- content: {
- 'application/json': {
- message: string;
- };
+ requestBody: {
+ content: {
+ "application/json": {
+ /** @description Email address to send the OTP */
+ email: string;
+ };
+ };
};
- };
- /** @description Forbidden. You do not have permission to access this resource or to perform this action. */
- 403: {
- headers: {
- [name: string]: unknown;
+ responses: {
+ /** @description Success */
+ 200: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content: {
+ "application/json": {
+ /** @description Indicates if the OTP was sent successfully */
+ success?: boolean;
+ };
+ };
+ };
+ /** @description Bad Request. Usually due to missing parameters, or invalid parameters. */
+ 400: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content: {
+ "application/json": {
+ message: string;
+ };
+ };
+ };
+ /** @description Unauthorized. Due to missing or invalid authentication. */
+ 401: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content: {
+ "application/json": {
+ message: string;
+ };
+ };
+ };
+ /** @description Forbidden. You do not have permission to access this resource or to perform this action. */
+ 403: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content: {
+ "application/json": {
+ message?: string;
+ };
+ };
+ };
+ /** @description Not Found. The requested resource was not found. */
+ 404: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content: {
+ "application/json": {
+ message?: string;
+ };
+ };
+ };
+ /** @description Too Many Requests. You have exceeded the rate limit. Try again later. */
+ 429: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content: {
+ "application/json": {
+ message?: string;
+ };
+ };
+ };
+ /** @description Internal Server Error. This is a problem with the server that you cannot fix. */
+ 500: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content: {
+ "application/json": {
+ message?: string;
+ };
+ };
+ };
};
- content: {
- 'application/json': {
- message?: string;
- };
+ };
+ forgetPasswordWithEmailOTP: {
+ parameters: {
+ query?: never;
+ header?: never;
+ path?: never;
+ cookie?: never;
};
- };
- /** @description Not Found. The requested resource was not found. */
- 404: {
- headers: {
- [name: string]: unknown;
+ requestBody: {
+ content: {
+ "application/json": {
+ /** @description Email address to send the OTP */
+ email: string;
+ };
+ };
};
- content: {
- 'application/json': {
- message?: string;
- };
+ responses: {
+ /** @description Success */
+ 200: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content: {
+ "application/json": {
+ /** @description Indicates if the OTP was sent successfully */
+ success?: boolean;
+ };
+ };
+ };
+ /** @description Bad Request. Usually due to missing parameters, or invalid parameters. */
+ 400: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content: {
+ "application/json": {
+ message: string;
+ };
+ };
+ };
+ /** @description Unauthorized. Due to missing or invalid authentication. */
+ 401: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content: {
+ "application/json": {
+ message: string;
+ };
+ };
+ };
+ /** @description Forbidden. You do not have permission to access this resource or to perform this action. */
+ 403: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content: {
+ "application/json": {
+ message?: string;
+ };
+ };
+ };
+ /** @description Not Found. The requested resource was not found. */
+ 404: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content: {
+ "application/json": {
+ message?: string;
+ };
+ };
+ };
+ /** @description Too Many Requests. You have exceeded the rate limit. Try again later. */
+ 429: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content: {
+ "application/json": {
+ message?: string;
+ };
+ };
+ };
+ /** @description Internal Server Error. This is a problem with the server that you cannot fix. */
+ 500: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content: {
+ "application/json": {
+ message?: string;
+ };
+ };
+ };
};
- };
- /** @description Too Many Requests. You have exceeded the rate limit. Try again later. */
- 429: {
- headers: {
- [name: string]: unknown;
+ };
+ resetPasswordWithEmailOTP: {
+ parameters: {
+ query?: never;
+ header?: never;
+ path?: never;
+ cookie?: never;
};
- content: {
- 'application/json': {
- message?: string;
- };
+ requestBody: {
+ content: {
+ "application/json": {
+ /** @description Email address to reset the password */
+ email: string;
+ /** @description OTP sent to the email */
+ otp: string;
+ /** @description New password */
+ password: string;
+ };
+ };
};
- };
- /** @description Internal Server Error. This is a problem with the server that you cannot fix. */
- 500: {
- headers: {
- [name: string]: unknown;
+ responses: {
+ /** @description Success */
+ 200: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content: {
+ "application/json": {
+ success?: boolean;
+ };
+ };
+ };
+ /** @description Bad Request. Usually due to missing parameters, or invalid parameters. */
+ 400: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content: {
+ "application/json": {
+ message: string;
+ };
+ };
+ };
+ /** @description Unauthorized. Due to missing or invalid authentication. */
+ 401: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content: {
+ "application/json": {
+ message: string;
+ };
+ };
+ };
+ /** @description Forbidden. You do not have permission to access this resource or to perform this action. */
+ 403: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content: {
+ "application/json": {
+ message?: string;
+ };
+ };
+ };
+ /** @description Not Found. The requested resource was not found. */
+ 404: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content: {
+ "application/json": {
+ message?: string;
+ };
+ };
+ };
+ /** @description Too Many Requests. You have exceeded the rate limit. Try again later. */
+ 429: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content: {
+ "application/json": {
+ message?: string;
+ };
+ };
+ };
+ /** @description Internal Server Error. This is a problem with the server that you cannot fix. */
+ 500: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content: {
+ "application/json": {
+ message?: string;
+ };
+ };
+ };
};
- content: {
- 'application/json': {
- message?: string;
- };
- };
- };
- };
- };
- generatePasskeyRegistrationOptions: {
- parameters: {
- query?: never;
- header?: never;
- path?: never;
- cookie?: never;
- };
- requestBody?: never;
- responses: {
- /** @description Success */
- 200: {
- headers: {
- [name: string]: unknown;
- };
- content: {
- 'application/json': {
- challenge?: string;
- rp?: {
- name?: string;
- id?: string;
- };
- user?: {
- id?: string;
- name?: string;
- displayName?: string;
- };
- pubKeyCredParams?: {
- type?: string;
- alg?: number;
- }[];
- timeout?: number;
- excludeCredentials?: {
- id?: string;
- type?: string;
- transports?: string[];
- }[];
- authenticatorSelection?: {
- authenticatorAttachment?: string;
- requireResidentKey?: boolean;
- userVerification?: string;
- };
- attestation?: string;
- extensions?: Record;
- };
- };
- };
- /** @description Bad Request. Usually due to missing parameters, or invalid parameters. */
- 400: {
- headers: {
- [name: string]: unknown;
- };
- content: {
- 'application/json': {
- message: string;
- };
+ };
+ setActiveOrganization: {
+ parameters: {
+ query?: never;
+ header?: never;
+ path?: never;
+ cookie?: never;
};
- };
- /** @description Unauthorized. Due to missing or invalid authentication. */
- 401: {
- headers: {
- [name: string]: unknown;
+ requestBody: {
+ content: {
+ "application/json": {
+ organizationId?: string | null;
+ /** @description The organization slug to set as active. It can be null to unset the active organization if organizationId is not provided. Eg: "org-slug" */
+ organizationSlug?: string | null;
+ };
+ };
};
- content: {
- 'application/json': {
- message: string;
- };
+ responses: {
+ /** @description Success */
+ 200: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content: {
+ "application/json": components["schemas"]["Organization"];
+ };
+ };
+ /** @description Bad Request. Usually due to missing parameters, or invalid parameters. */
+ 400: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content: {
+ "application/json": {
+ message: string;
+ };
+ };
+ };
+ /** @description Unauthorized. Due to missing or invalid authentication. */
+ 401: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content: {
+ "application/json": {
+ message: string;
+ };
+ };
+ };
+ /** @description Forbidden. You do not have permission to access this resource or to perform this action. */
+ 403: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content: {
+ "application/json": {
+ message?: string;
+ };
+ };
+ };
+ /** @description Not Found. The requested resource was not found. */
+ 404: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content: {
+ "application/json": {
+ message?: string;
+ };
+ };
+ };
+ /** @description Too Many Requests. You have exceeded the rate limit. Try again later. */
+ 429: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content: {
+ "application/json": {
+ message?: string;
+ };
+ };
+ };
+ /** @description Internal Server Error. This is a problem with the server that you cannot fix. */
+ 500: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content: {
+ "application/json": {
+ message?: string;
+ };
+ };
+ };
};
- };
- /** @description Forbidden. You do not have permission to access this resource or to perform this action. */
- 403: {
- headers: {
- [name: string]: unknown;
+ };
+ getOrganization: {
+ parameters: {
+ query?: never;
+ header?: never;
+ path?: never;
+ cookie?: never;
};
- content: {
- 'application/json': {
- message?: string;
- };
+ requestBody?: never;
+ responses: {
+ /** @description Success */
+ 200: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content: {
+ "application/json": components["schemas"]["Organization"];
+ };
+ };
+ /** @description Bad Request. Usually due to missing parameters, or invalid parameters. */
+ 400: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content: {
+ "application/json": {
+ message: string;
+ };
+ };
+ };
+ /** @description Unauthorized. Due to missing or invalid authentication. */
+ 401: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content: {
+ "application/json": {
+ message: string;
+ };
+ };
+ };
+ /** @description Forbidden. You do not have permission to access this resource or to perform this action. */
+ 403: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content: {
+ "application/json": {
+ message?: string;
+ };
+ };
+ };
+ /** @description Not Found. The requested resource was not found. */
+ 404: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content: {
+ "application/json": {
+ message?: string;
+ };
+ };
+ };
+ /** @description Too Many Requests. You have exceeded the rate limit. Try again later. */
+ 429: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content: {
+ "application/json": {
+ message?: string;
+ };
+ };
+ };
+ /** @description Internal Server Error. This is a problem with the server that you cannot fix. */
+ 500: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content: {
+ "application/json": {
+ message?: string;
+ };
+ };
+ };
};
- };
- /** @description Not Found. The requested resource was not found. */
- 404: {
- headers: {
- [name: string]: unknown;
+ };
+ createOrganizationInvitation: {
+ parameters: {
+ query?: never;
+ header?: never;
+ path?: never;
+ cookie?: never;
+ };
+ requestBody: {
+ content: {
+ "application/json": {
+ /** @description The email address of the user to invite */
+ email: string;
+ /** @description The role(s) to assign to the user. It can be `admin`, `member`, owner. Eg: "member" */
+ role: string;
+ /** @description The organization ID to invite the user to */
+ organizationId?: string | null;
+ /** @description Resend the invitation email, if the user is already invited. Eg: true */
+ resend?: boolean | null;
+ teamId: string;
+ };
+ };
};
- content: {
- 'application/json': {
- message?: string;
- };
+ responses: {
+ /** @description Success */
+ 200: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content: {
+ "application/json": {
+ id: string;
+ email: string;
+ role: string;
+ organizationId: string;
+ inviterId: string;
+ status: string;
+ expiresAt: string;
+ createdAt: string;
+ };
+ };
+ };
+ /** @description Bad Request. Usually due to missing parameters, or invalid parameters. */
+ 400: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content: {
+ "application/json": {
+ message: string;
+ };
+ };
+ };
+ /** @description Unauthorized. Due to missing or invalid authentication. */
+ 401: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content: {
+ "application/json": {
+ message: string;
+ };
+ };
+ };
+ /** @description Forbidden. You do not have permission to access this resource or to perform this action. */
+ 403: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content: {
+ "application/json": {
+ message?: string;
+ };
+ };
+ };
+ /** @description Not Found. The requested resource was not found. */
+ 404: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content: {
+ "application/json": {
+ message?: string;
+ };
+ };
+ };
+ /** @description Too Many Requests. You have exceeded the rate limit. Try again later. */
+ 429: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content: {
+ "application/json": {
+ message?: string;
+ };
+ };
+ };
+ /** @description Internal Server Error. This is a problem with the server that you cannot fix. */
+ 500: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content: {
+ "application/json": {
+ message?: string;
+ };
+ };
+ };
};
- };
- /** @description Too Many Requests. You have exceeded the rate limit. Try again later. */
- 429: {
- headers: {
- [name: string]: unknown;
+ };
+ updateOrganizationMemberRole: {
+ parameters: {
+ query?: never;
+ header?: never;
+ path?: never;
+ cookie?: never;
};
- content: {
- 'application/json': {
- message?: string;
- };
+ requestBody: {
+ content: {
+ "application/json": {
+ /** @description The new role to be applied. This can be a string or array of strings representing the roles. Eg: ["admin", "sale"] */
+ role: string;
+ /** @description The member id to apply the role update to. Eg: "member-id" */
+ memberId: string;
+ /** @description An optional organization ID which the member is a part of to apply the role update. If not provided, you must provide session headers to get the active organization. Eg: "organization-id" */
+ organizationId?: string | null;
+ };
+ };
};
- };
- /** @description Internal Server Error. This is a problem with the server that you cannot fix. */
- 500: {
- headers: {
- [name: string]: unknown;
+ responses: {
+ /** @description Success */
+ 200: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content: {
+ "application/json": {
+ member: {
+ id: string;
+ userId: string;
+ organizationId: string;
+ role: string;
+ };
+ };
+ };
+ };
+ /** @description Bad Request. Usually due to missing parameters, or invalid parameters. */
+ 400: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content: {
+ "application/json": {
+ message: string;
+ };
+ };
+ };
+ /** @description Unauthorized. Due to missing or invalid authentication. */
+ 401: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content: {
+ "application/json": {
+ message: string;
+ };
+ };
+ };
+ /** @description Forbidden. You do not have permission to access this resource or to perform this action. */
+ 403: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content: {
+ "application/json": {
+ message?: string;
+ };
+ };
+ };
+ /** @description Not Found. The requested resource was not found. */
+ 404: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content: {
+ "application/json": {
+ message?: string;
+ };
+ };
+ };
+ /** @description Too Many Requests. You have exceeded the rate limit. Try again later. */
+ 429: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content: {
+ "application/json": {
+ message?: string;
+ };
+ };
+ };
+ /** @description Internal Server Error. This is a problem with the server that you cannot fix. */
+ 500: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content: {
+ "application/json": {
+ message?: string;
+ };
+ };
+ };
};
- content: {
- 'application/json': {
- message?: string;
- };
- };
- };
- };
- };
- passkeyGenerateAuthenticateOptions: {
- parameters: {
- query?: never;
- header?: never;
- path?: never;
- cookie?: never;
- };
- requestBody?: never;
- responses: {
- /** @description Success */
- 200: {
- headers: {
- [name: string]: unknown;
- };
- content: {
- 'application/json': {
- challenge?: string;
- rp?: {
- name?: string;
- id?: string;
- };
- user?: {
- id?: string;
- name?: string;
- displayName?: string;
- };
- timeout?: number;
- allowCredentials?: {
- id?: string;
- type?: string;
- transports?: string[];
- }[];
- userVerification?: string;
- authenticatorSelection?: {
- authenticatorAttachment?: string;
- requireResidentKey?: boolean;
- userVerification?: string;
- };
- extensions?: Record;
- };
- };
- };
- /** @description Bad Request. Usually due to missing parameters, or invalid parameters. */
- 400: {
- headers: {
- [name: string]: unknown;
- };
- content: {
- 'application/json': {
- message: string;
- };
+ };
+ setUserRole: {
+ parameters: {
+ query?: never;
+ header?: never;
+ path?: never;
+ cookie?: never;
};
- };
- /** @description Unauthorized. Due to missing or invalid authentication. */
- 401: {
- headers: {
- [name: string]: unknown;
+ requestBody: {
+ content: {
+ "application/json": {
+ /** @description The user id */
+ userId: string;
+ /** @description The role to set, this can be a string or an array of strings. Eg: `admin` or `[admin, user]` */
+ role: string;
+ };
+ };
};
- content: {
- 'application/json': {
- message: string;
- };
+ responses: {
+ /** @description User role updated */
+ 200: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content: {
+ "application/json": {
+ user?: components["schemas"]["User"];
+ };
+ };
+ };
+ /** @description Bad Request. Usually due to missing parameters, or invalid parameters. */
+ 400: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content: {
+ "application/json": {
+ message: string;
+ };
+ };
+ };
+ /** @description Unauthorized. Due to missing or invalid authentication. */
+ 401: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content: {
+ "application/json": {
+ message: string;
+ };
+ };
+ };
+ /** @description Forbidden. You do not have permission to access this resource or to perform this action. */
+ 403: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content: {
+ "application/json": {
+ message?: string;
+ };
+ };
+ };
+ /** @description Not Found. The requested resource was not found. */
+ 404: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content: {
+ "application/json": {
+ message?: string;
+ };
+ };
+ };
+ /** @description Too Many Requests. You have exceeded the rate limit. Try again later. */
+ 429: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content: {
+ "application/json": {
+ message?: string;
+ };
+ };
+ };
+ /** @description Internal Server Error. This is a problem with the server that you cannot fix. */
+ 500: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content: {
+ "application/json": {
+ message?: string;
+ };
+ };
+ };
};
- };
- /** @description Forbidden. You do not have permission to access this resource or to perform this action. */
- 403: {
- headers: {
- [name: string]: unknown;
+ };
+ getUser: {
+ parameters: {
+ query?: {
+ id?: string;
+ };
+ header?: never;
+ path?: never;
+ cookie?: never;
};
- content: {
- 'application/json': {
- message?: string;
- };
+ requestBody?: never;
+ responses: {
+ /** @description User */
+ 200: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content: {
+ "application/json": {
+ user?: components["schemas"]["User"];
+ };
+ };
+ };
+ /** @description Bad Request. Usually due to missing parameters, or invalid parameters. */
+ 400: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content: {
+ "application/json": {
+ message: string;
+ };
+ };
+ };
+ /** @description Unauthorized. Due to missing or invalid authentication. */
+ 401: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content: {
+ "application/json": {
+ message: string;
+ };
+ };
+ };
+ /** @description Forbidden. You do not have permission to access this resource or to perform this action. */
+ 403: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content: {
+ "application/json": {
+ message?: string;
+ };
+ };
+ };
+ /** @description Not Found. The requested resource was not found. */
+ 404: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content: {
+ "application/json": {
+ message?: string;
+ };
+ };
+ };
+ /** @description Too Many Requests. You have exceeded the rate limit. Try again later. */
+ 429: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content: {
+ "application/json": {
+ message?: string;
+ };
+ };
+ };
+ /** @description Internal Server Error. This is a problem with the server that you cannot fix. */
+ 500: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content: {
+ "application/json": {
+ message?: string;
+ };
+ };
+ };
};
- };
- /** @description Not Found. The requested resource was not found. */
- 404: {
- headers: {
- [name: string]: unknown;
+ };
+ createUser: {
+ parameters: {
+ query?: never;
+ header?: never;
+ path?: never;
+ cookie?: never;
+ };
+ requestBody: {
+ content: {
+ "application/json": {
+ /** @description The email of the user */
+ email: string;
+ password?: string | null;
+ /** @description The name of the user */
+ name: string;
+ role?: string | null;
+ data?: string | null;
+ };
+ };
};
- content: {
- 'application/json': {
- message?: string;
- };
+ responses: {
+ /** @description User created */
+ 200: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content: {
+ "application/json": {
+ user?: components["schemas"]["User"];
+ };
+ };
+ };
+ /** @description Bad Request. Usually due to missing parameters, or invalid parameters. */
+ 400: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content: {
+ "application/json": {
+ message: string;
+ };
+ };
+ };
+ /** @description Unauthorized. Due to missing or invalid authentication. */
+ 401: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content: {
+ "application/json": {
+ message: string;
+ };
+ };
+ };
+ /** @description Forbidden. You do not have permission to access this resource or to perform this action. */
+ 403: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content: {
+ "application/json": {
+ message?: string;
+ };
+ };
+ };
+ /** @description Not Found. The requested resource was not found. */
+ 404: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content: {
+ "application/json": {
+ message?: string;
+ };
+ };
+ };
+ /** @description Too Many Requests. You have exceeded the rate limit. Try again later. */
+ 429: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content: {
+ "application/json": {
+ message?: string;
+ };
+ };
+ };
+ /** @description Internal Server Error. This is a problem with the server that you cannot fix. */
+ 500: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content: {
+ "application/json": {
+ message?: string;
+ };
+ };
+ };
};
- };
- /** @description Too Many Requests. You have exceeded the rate limit. Try again later. */
- 429: {
- headers: {
- [name: string]: unknown;
+ };
+ updateUser: {
+ parameters: {
+ query?: never;
+ header?: never;
+ path?: never;
+ cookie?: never;
};
- content: {
- 'application/json': {
- message?: string;
- };
+ requestBody: {
+ content: {
+ "application/json": {
+ /** @description The user id */
+ userId: string;
+ /** @description The user data to update */
+ data: string;
+ };
+ };
};
- };
- /** @description Internal Server Error. This is a problem with the server that you cannot fix. */
- 500: {
- headers: {
- [name: string]: unknown;
+ responses: {
+ /** @description User updated */
+ 200: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content: {
+ "application/json": {
+ user?: components["schemas"]["User"];
+ };
+ };
+ };
+ /** @description Bad Request. Usually due to missing parameters, or invalid parameters. */
+ 400: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content: {
+ "application/json": {
+ message: string;
+ };
+ };
+ };
+ /** @description Unauthorized. Due to missing or invalid authentication. */
+ 401: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content: {
+ "application/json": {
+ message: string;
+ };
+ };
+ };
+ /** @description Forbidden. You do not have permission to access this resource or to perform this action. */
+ 403: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content: {
+ "application/json": {
+ message?: string;
+ };
+ };
+ };
+ /** @description Not Found. The requested resource was not found. */
+ 404: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content: {
+ "application/json": {
+ message?: string;
+ };
+ };
+ };
+ /** @description Too Many Requests. You have exceeded the rate limit. Try again later. */
+ 429: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content: {
+ "application/json": {
+ message?: string;
+ };
+ };
+ };
+ /** @description Internal Server Error. This is a problem with the server that you cannot fix. */
+ 500: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content: {
+ "application/json": {
+ message?: string;
+ };
+ };
+ };
};
- content: {
- 'application/json': {
- message?: string;
- };
- };
- };
- };
- };
- passkeyVerifyRegistration: {
- parameters: {
- query?: never;
- header?: never;
- path?: never;
- cookie?: never;
- };
- requestBody: {
- content: {
- 'application/json': {
- response: string;
- /** @description Name of the passkey */
- name?: string | null;
- };
- };
- };
- responses: {
- /** @description Success */
- 200: {
- headers: {
- [name: string]: unknown;
- };
- content: {
- 'application/json': components['schemas']['Passkey'];
- };
- };
- /** @description Bad request */
- 400: {
- headers: {
- [name: string]: unknown;
- };
- content?: never;
- };
- /** @description Unauthorized. Due to missing or invalid authentication. */
- 401: {
- headers: {
- [name: string]: unknown;
- };
- content: {
- 'application/json': {
- message: string;
- };
+ };
+ listUsers: {
+ parameters: {
+ query?: {
+ searchValue?: string | null;
+ searchField?: string | null;
+ searchOperator?: string | null;
+ limit?: string | null;
+ offset?: string | null;
+ sortBy?: string | null;
+ sortDirection?: string | null;
+ filterField?: string | null;
+ filterValue?: string | null;
+ filterOperator?: string | null;
+ };
+ header?: never;
+ path?: never;
+ cookie?: never;
+ };
+ requestBody?: never;
+ responses: {
+ /** @description List of users */
+ 200: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content: {
+ "application/json": {
+ users: components["schemas"]["User"][];
+ total: number;
+ limit?: number;
+ offset?: number;
+ };
+ };
+ };
+ /** @description Bad Request. Usually due to missing parameters, or invalid parameters. */
+ 400: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content: {
+ "application/json": {
+ message: string;
+ };
+ };
+ };
+ /** @description Unauthorized. Due to missing or invalid authentication. */
+ 401: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content: {
+ "application/json": {
+ message: string;
+ };
+ };
+ };
+ /** @description Forbidden. You do not have permission to access this resource or to perform this action. */
+ 403: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content: {
+ "application/json": {
+ message?: string;
+ };
+ };
+ };
+ /** @description Not Found. The requested resource was not found. */
+ 404: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content: {
+ "application/json": {
+ message?: string;
+ };
+ };
+ };
+ /** @description Too Many Requests. You have exceeded the rate limit. Try again later. */
+ 429: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content: {
+ "application/json": {
+ message?: string;
+ };
+ };
+ };
+ /** @description Internal Server Error. This is a problem with the server that you cannot fix. */
+ 500: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content: {
+ "application/json": {
+ message?: string;
+ };
+ };
+ };
};
- };
- /** @description Forbidden. You do not have permission to access this resource or to perform this action. */
- 403: {
- headers: {
- [name: string]: unknown;
+ };
+ listUserSessions: {
+ parameters: {
+ query?: never;
+ header?: never;
+ path?: never;
+ cookie?: never;
};
- content: {
- 'application/json': {
- message?: string;
- };
+ requestBody: {
+ content: {
+ "application/json": {
+ /** @description The user id */
+ userId: string;
+ };
+ };
};
- };
- /** @description Not Found. The requested resource was not found. */
- 404: {
- headers: {
- [name: string]: unknown;
+ responses: {
+ /** @description List of user sessions */
+ 200: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content: {
+ "application/json": {
+ sessions?: components["schemas"]["Session"][];
+ };
+ };
+ };
+ /** @description Bad Request. Usually due to missing parameters, or invalid parameters. */
+ 400: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content: {
+ "application/json": {
+ message: string;
+ };
+ };
+ };
+ /** @description Unauthorized. Due to missing or invalid authentication. */
+ 401: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content: {
+ "application/json": {
+ message: string;
+ };
+ };
+ };
+ /** @description Forbidden. You do not have permission to access this resource or to perform this action. */
+ 403: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content: {
+ "application/json": {
+ message?: string;
+ };
+ };
+ };
+ /** @description Not Found. The requested resource was not found. */
+ 404: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content: {
+ "application/json": {
+ message?: string;
+ };
+ };
+ };
+ /** @description Too Many Requests. You have exceeded the rate limit. Try again later. */
+ 429: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content: {
+ "application/json": {
+ message?: string;
+ };
+ };
+ };
+ /** @description Internal Server Error. This is a problem with the server that you cannot fix. */
+ 500: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content: {
+ "application/json": {
+ message?: string;
+ };
+ };
+ };
};
- content: {
- 'application/json': {
- message?: string;
- };
+ };
+ unbanUser: {
+ parameters: {
+ query?: never;
+ header?: never;
+ path?: never;
+ cookie?: never;
};
- };
- /** @description Too Many Requests. You have exceeded the rate limit. Try again later. */
- 429: {
- headers: {
- [name: string]: unknown;
+ requestBody: {
+ content: {
+ "application/json": {
+ /** @description The user id */
+ userId: string;
+ };
+ };
};
- content: {
- 'application/json': {
- message?: string;
- };
+ responses: {
+ /** @description User unbanned */
+ 200: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content: {
+ "application/json": {
+ user?: components["schemas"]["User"];
+ };
+ };
+ };
+ /** @description Bad Request. Usually due to missing parameters, or invalid parameters. */
+ 400: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content: {
+ "application/json": {
+ message: string;
+ };
+ };
+ };
+ /** @description Unauthorized. Due to missing or invalid authentication. */
+ 401: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content: {
+ "application/json": {
+ message: string;
+ };
+ };
+ };
+ /** @description Forbidden. You do not have permission to access this resource or to perform this action. */
+ 403: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content: {
+ "application/json": {
+ message?: string;
+ };
+ };
+ };
+ /** @description Not Found. The requested resource was not found. */
+ 404: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content: {
+ "application/json": {
+ message?: string;
+ };
+ };
+ };
+ /** @description Too Many Requests. You have exceeded the rate limit. Try again later. */
+ 429: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content: {
+ "application/json": {
+ message?: string;
+ };
+ };
+ };
+ /** @description Internal Server Error. This is a problem with the server that you cannot fix. */
+ 500: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content: {
+ "application/json": {
+ message?: string;
+ };
+ };
+ };
};
- };
- /** @description Internal Server Error. This is a problem with the server that you cannot fix. */
- 500: {
- headers: {
- [name: string]: unknown;
+ };
+ banUser: {
+ parameters: {
+ query?: never;
+ header?: never;
+ path?: never;
+ cookie?: never;
};
- content: {
- 'application/json': {
- message?: string;
- };
- };
- };
- };
- };
- passkeyVerifyAuthentication: {
- parameters: {
- query?: never;
- header?: never;
- path?: never;
- cookie?: never;
- };
- requestBody: {
- content: {
- 'application/json': {
- response: string;
- };
- };
- };
- responses: {
- /** @description Success */
- 200: {
- headers: {
- [name: string]: unknown;
- };
- content: {
- 'application/json': {
- session?: components['schemas']['Session'];
- user?: components['schemas']['User'];
- };
- };
- };
- /** @description Bad Request. Usually due to missing parameters, or invalid parameters. */
- 400: {
- headers: {
- [name: string]: unknown;
- };
- content: {
- 'application/json': {
- message: string;
- };
+ requestBody: {
+ content: {
+ "application/json": {
+ /** @description The user id */
+ userId: string;
+ /** @description The reason for the ban */
+ banReason?: string | null;
+ /** @description The number of seconds until the ban expires */
+ banExpiresIn?: number | null;
+ };
+ };
};
- };
- /** @description Unauthorized. Due to missing or invalid authentication. */
- 401: {
- headers: {
- [name: string]: unknown;
+ responses: {
+ /** @description User banned */
+ 200: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content: {
+ "application/json": {
+ user?: components["schemas"]["User"];
+ };
+ };
+ };
+ /** @description Bad Request. Usually due to missing parameters, or invalid parameters. */
+ 400: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content: {
+ "application/json": {
+ message: string;
+ };
+ };
+ };
+ /** @description Unauthorized. Due to missing or invalid authentication. */
+ 401: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content: {
+ "application/json": {
+ message: string;
+ };
+ };
+ };
+ /** @description Forbidden. You do not have permission to access this resource or to perform this action. */
+ 403: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content: {
+ "application/json": {
+ message?: string;
+ };
+ };
+ };
+ /** @description Not Found. The requested resource was not found. */
+ 404: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content: {
+ "application/json": {
+ message?: string;
+ };
+ };
+ };
+ /** @description Too Many Requests. You have exceeded the rate limit. Try again later. */
+ 429: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content: {
+ "application/json": {
+ message?: string;
+ };
+ };
+ };
+ /** @description Internal Server Error. This is a problem with the server that you cannot fix. */
+ 500: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content: {
+ "application/json": {
+ message?: string;
+ };
+ };
+ };
};
- content: {
- 'application/json': {
- message: string;
- };
+ };
+ impersonateUser: {
+ parameters: {
+ query?: never;
+ header?: never;
+ path?: never;
+ cookie?: never;
};
- };
- /** @description Forbidden. You do not have permission to access this resource or to perform this action. */
- 403: {
- headers: {
- [name: string]: unknown;
+ requestBody: {
+ content: {
+ "application/json": {
+ /** @description The user id */
+ userId: string;
+ };
+ };
};
- content: {
- 'application/json': {
- message?: string;
- };
+ responses: {
+ /** @description Impersonation session created */
+ 200: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content: {
+ "application/json": {
+ session?: components["schemas"]["Session"];
+ user?: components["schemas"]["User"];
+ };
+ };
+ };
+ /** @description Bad Request. Usually due to missing parameters, or invalid parameters. */
+ 400: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content: {
+ "application/json": {
+ message: string;
+ };
+ };
+ };
+ /** @description Unauthorized. Due to missing or invalid authentication. */
+ 401: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content: {
+ "application/json": {
+ message: string;
+ };
+ };
+ };
+ /** @description Forbidden. You do not have permission to access this resource or to perform this action. */
+ 403: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content: {
+ "application/json": {
+ message?: string;
+ };
+ };
+ };
+ /** @description Not Found. The requested resource was not found. */
+ 404: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content: {
+ "application/json": {
+ message?: string;
+ };
+ };
+ };
+ /** @description Too Many Requests. You have exceeded the rate limit. Try again later. */
+ 429: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content: {
+ "application/json": {
+ message?: string;
+ };
+ };
+ };
+ /** @description Internal Server Error. This is a problem with the server that you cannot fix. */
+ 500: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content: {
+ "application/json": {
+ message?: string;
+ };
+ };
+ };
};
- };
- /** @description Not Found. The requested resource was not found. */
- 404: {
- headers: {
- [name: string]: unknown;
+ };
+ revokeUserSession: {
+ parameters: {
+ query?: never;
+ header?: never;
+ path?: never;
+ cookie?: never;
};
- content: {
- 'application/json': {
- message?: string;
- };
+ requestBody: {
+ content: {
+ "application/json": {
+ /** @description The session token */
+ sessionToken: string;
+ };
+ };
};
- };
- /** @description Too Many Requests. You have exceeded the rate limit. Try again later. */
- 429: {
- headers: {
- [name: string]: unknown;
+ responses: {
+ /** @description Session revoked */
+ 200: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content: {
+ "application/json": {
+ success?: boolean;
+ };
+ };
+ };
+ /** @description Bad Request. Usually due to missing parameters, or invalid parameters. */
+ 400: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content: {
+ "application/json": {
+ message: string;
+ };
+ };
+ };
+ /** @description Unauthorized. Due to missing or invalid authentication. */
+ 401: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content: {
+ "application/json": {
+ message: string;
+ };
+ };
+ };
+ /** @description Forbidden. You do not have permission to access this resource or to perform this action. */
+ 403: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content: {
+ "application/json": {
+ message?: string;
+ };
+ };
+ };
+ /** @description Not Found. The requested resource was not found. */
+ 404: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content: {
+ "application/json": {
+ message?: string;
+ };
+ };
+ };
+ /** @description Too Many Requests. You have exceeded the rate limit. Try again later. */
+ 429: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content: {
+ "application/json": {
+ message?: string;
+ };
+ };
+ };
+ /** @description Internal Server Error. This is a problem with the server that you cannot fix. */
+ 500: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content: {
+ "application/json": {
+ message?: string;
+ };
+ };
+ };
};
- content: {
- 'application/json': {
- message?: string;
- };
+ };
+ revokeUserSessions: {
+ parameters: {
+ query?: never;
+ header?: never;
+ path?: never;
+ cookie?: never;
};
- };
- /** @description Internal Server Error. This is a problem with the server that you cannot fix. */
- 500: {
- headers: {
- [name: string]: unknown;
+ requestBody: {
+ content: {
+ "application/json": {
+ /** @description The user id */
+ userId: string;
+ };
+ };
};
- content: {
- 'application/json': {
- message?: string;
- };
- };
- };
- };
- };
- signInWithMagicLink: {
- parameters: {
- query?: never;
- header?: never;
- path?: never;
- cookie?: never;
- };
- requestBody: {
- content: {
- 'application/json': {
- /** @description Email address to send the magic link */
- email: string;
- /** @description User display name. Only used if the user is registering for the first time. Eg: "my-name" */
- name?: string | null;
- /** @description URL to redirect after magic link verification */
- callbackURL?: string | null;
- /** @description URL to redirect after new user signup. Only used if the user is registering for the first time. */
- newUserCallbackURL?: string | null;
- /** @description URL to redirect after error. */
- errorCallbackURL?: string | null;
- };
- };
- };
- responses: {
- /** @description Success */
- 200: {
- headers: {
- [name: string]: unknown;
- };
- content: {
- 'application/json': {
- status?: boolean;
- };
- };
- };
- /** @description Bad Request. Usually due to missing parameters, or invalid parameters. */
- 400: {
- headers: {
- [name: string]: unknown;
- };
- content: {
- 'application/json': {
- message: string;
- };
+ responses: {
+ /** @description Sessions revoked */
+ 200: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content: {
+ "application/json": {
+ success?: boolean;
+ };
+ };
+ };
+ /** @description Bad Request. Usually due to missing parameters, or invalid parameters. */
+ 400: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content: {
+ "application/json": {
+ message: string;
+ };
+ };
+ };
+ /** @description Unauthorized. Due to missing or invalid authentication. */
+ 401: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content: {
+ "application/json": {
+ message: string;
+ };
+ };
+ };
+ /** @description Forbidden. You do not have permission to access this resource or to perform this action. */
+ 403: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content: {
+ "application/json": {
+ message?: string;
+ };
+ };
+ };
+ /** @description Not Found. The requested resource was not found. */
+ 404: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content: {
+ "application/json": {
+ message?: string;
+ };
+ };
+ };
+ /** @description Too Many Requests. You have exceeded the rate limit. Try again later. */
+ 429: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content: {
+ "application/json": {
+ message?: string;
+ };
+ };
+ };
+ /** @description Internal Server Error. This is a problem with the server that you cannot fix. */
+ 500: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content: {
+ "application/json": {
+ message?: string;
+ };
+ };
+ };
};
- };
- /** @description Unauthorized. Due to missing or invalid authentication. */
- 401: {
- headers: {
- [name: string]: unknown;
+ };
+ removeUser: {
+ parameters: {
+ query?: never;
+ header?: never;
+ path?: never;
+ cookie?: never;
};
- content: {
- 'application/json': {
- message: string;
- };
+ requestBody: {
+ content: {
+ "application/json": {
+ /** @description The user id */
+ userId: string;
+ };
+ };
};
- };
- /** @description Forbidden. You do not have permission to access this resource or to perform this action. */
- 403: {
- headers: {
- [name: string]: unknown;
+ responses: {
+ /** @description User removed */
+ 200: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content: {
+ "application/json": {
+ success?: boolean;
+ };
+ };
+ };
+ /** @description Bad Request. Usually due to missing parameters, or invalid parameters. */
+ 400: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content: {
+ "application/json": {
+ message: string;
+ };
+ };
+ };
+ /** @description Unauthorized. Due to missing or invalid authentication. */
+ 401: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content: {
+ "application/json": {
+ message: string;
+ };
+ };
+ };
+ /** @description Forbidden. You do not have permission to access this resource or to perform this action. */
+ 403: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content: {
+ "application/json": {
+ message?: string;
+ };
+ };
+ };
+ /** @description Not Found. The requested resource was not found. */
+ 404: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content: {
+ "application/json": {
+ message?: string;
+ };
+ };
+ };
+ /** @description Too Many Requests. You have exceeded the rate limit. Try again later. */
+ 429: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content: {
+ "application/json": {
+ message?: string;
+ };
+ };
+ };
+ /** @description Internal Server Error. This is a problem with the server that you cannot fix. */
+ 500: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content: {
+ "application/json": {
+ message?: string;
+ };
+ };
+ };
};
- content: {
- 'application/json': {
- message?: string;
- };
+ };
+ setUserPassword: {
+ parameters: {
+ query?: never;
+ header?: never;
+ path?: never;
+ cookie?: never;
};
- };
- /** @description Not Found. The requested resource was not found. */
- 404: {
- headers: {
- [name: string]: unknown;
+ requestBody: {
+ content: {
+ "application/json": {
+ /** @description The new password */
+ newPassword: string;
+ /** @description The user id */
+ userId: string;
+ };
+ };
};
- content: {
- 'application/json': {
- message?: string;
- };
+ responses: {
+ /** @description Password set */
+ 200: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content: {
+ "application/json": {
+ status?: boolean;
+ };
+ };
+ };
+ /** @description Bad Request. Usually due to missing parameters, or invalid parameters. */
+ 400: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content: {
+ "application/json": {
+ message: string;
+ };
+ };
+ };
+ /** @description Unauthorized. Due to missing or invalid authentication. */
+ 401: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content: {
+ "application/json": {
+ message: string;
+ };
+ };
+ };
+ /** @description Forbidden. You do not have permission to access this resource or to perform this action. */
+ 403: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content: {
+ "application/json": {
+ message?: string;
+ };
+ };
+ };
+ /** @description Not Found. The requested resource was not found. */
+ 404: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content: {
+ "application/json": {
+ message?: string;
+ };
+ };
+ };
+ /** @description Too Many Requests. You have exceeded the rate limit. Try again later. */
+ 429: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content: {
+ "application/json": {
+ message?: string;
+ };
+ };
+ };
+ /** @description Internal Server Error. This is a problem with the server that you cannot fix. */
+ 500: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content: {
+ "application/json": {
+ message?: string;
+ };
+ };
+ };
};
- };
- /** @description Too Many Requests. You have exceeded the rate limit. Try again later. */
- 429: {
- headers: {
- [name: string]: unknown;
+ };
+ generatePasskeyRegistrationOptions: {
+ parameters: {
+ query?: never;
+ header?: never;
+ path?: never;
+ cookie?: never;
};
- content: {
- 'application/json': {
- message?: string;
- };
+ requestBody?: never;
+ responses: {
+ /** @description Success */
+ 200: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content: {
+ "application/json": {
+ challenge?: string;
+ rp?: {
+ name?: string;
+ id?: string;
+ };
+ user?: {
+ id?: string;
+ name?: string;
+ displayName?: string;
+ };
+ pubKeyCredParams?: {
+ type?: string;
+ alg?: number;
+ }[];
+ timeout?: number;
+ excludeCredentials?: {
+ id?: string;
+ type?: string;
+ transports?: string[];
+ }[];
+ authenticatorSelection?: {
+ authenticatorAttachment?: string;
+ requireResidentKey?: boolean;
+ userVerification?: string;
+ };
+ attestation?: string;
+ extensions?: Record;
+ };
+ };
+ };
+ /** @description Bad Request. Usually due to missing parameters, or invalid parameters. */
+ 400: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content: {
+ "application/json": {
+ message: string;
+ };
+ };
+ };
+ /** @description Unauthorized. Due to missing or invalid authentication. */
+ 401: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content: {
+ "application/json": {
+ message: string;
+ };
+ };
+ };
+ /** @description Forbidden. You do not have permission to access this resource or to perform this action. */
+ 403: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content: {
+ "application/json": {
+ message?: string;
+ };
+ };
+ };
+ /** @description Not Found. The requested resource was not found. */
+ 404: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content: {
+ "application/json": {
+ message?: string;
+ };
+ };
+ };
+ /** @description Too Many Requests. You have exceeded the rate limit. Try again later. */
+ 429: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content: {
+ "application/json": {
+ message?: string;
+ };
+ };
+ };
+ /** @description Internal Server Error. This is a problem with the server that you cannot fix. */
+ 500: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content: {
+ "application/json": {
+ message?: string;
+ };
+ };
+ };
};
- };
- /** @description Internal Server Error. This is a problem with the server that you cannot fix. */
- 500: {
- headers: {
- [name: string]: unknown;
+ };
+ passkeyGenerateAuthenticateOptions: {
+ parameters: {
+ query?: never;
+ header?: never;
+ path?: never;
+ cookie?: never;
};
- content: {
- 'application/json': {
- message?: string;
- };
- };
- };
- };
- };
- verifyMagicLink: {
- parameters: {
- query?: {
- token?: string;
- callbackURL?: string | null;
- errorCallbackURL?: string | null;
- newUserCallbackURL?: string | null;
- };
- header?: never;
- path?: never;
- cookie?: never;
- };
- requestBody?: never;
- responses: {
- /** @description Success */
- 200: {
- headers: {
- [name: string]: unknown;
- };
- content: {
- 'application/json': {
- session?: components['schemas']['Session'];
- user?: components['schemas']['User'];
- };
- };
- };
- /** @description Bad Request. Usually due to missing parameters, or invalid parameters. */
- 400: {
- headers: {
- [name: string]: unknown;
- };
- content: {
- 'application/json': {
- message: string;
- };
+ requestBody?: never;
+ responses: {
+ /** @description Success */
+ 200: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content: {
+ "application/json": {
+ challenge?: string;
+ rp?: {
+ name?: string;
+ id?: string;
+ };
+ user?: {
+ id?: string;
+ name?: string;
+ displayName?: string;
+ };
+ timeout?: number;
+ allowCredentials?: {
+ id?: string;
+ type?: string;
+ transports?: string[];
+ }[];
+ userVerification?: string;
+ authenticatorSelection?: {
+ authenticatorAttachment?: string;
+ requireResidentKey?: boolean;
+ userVerification?: string;
+ };
+ extensions?: Record;
+ };
+ };
+ };
+ /** @description Bad Request. Usually due to missing parameters, or invalid parameters. */
+ 400: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content: {
+ "application/json": {
+ message: string;
+ };
+ };
+ };
+ /** @description Unauthorized. Due to missing or invalid authentication. */
+ 401: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content: {
+ "application/json": {
+ message: string;
+ };
+ };
+ };
+ /** @description Forbidden. You do not have permission to access this resource or to perform this action. */
+ 403: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content: {
+ "application/json": {
+ message?: string;
+ };
+ };
+ };
+ /** @description Not Found. The requested resource was not found. */
+ 404: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content: {
+ "application/json": {
+ message?: string;
+ };
+ };
+ };
+ /** @description Too Many Requests. You have exceeded the rate limit. Try again later. */
+ 429: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content: {
+ "application/json": {
+ message?: string;
+ };
+ };
+ };
+ /** @description Internal Server Error. This is a problem with the server that you cannot fix. */
+ 500: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content: {
+ "application/json": {
+ message?: string;
+ };
+ };
+ };
};
- };
- /** @description Unauthorized. Due to missing or invalid authentication. */
- 401: {
- headers: {
- [name: string]: unknown;
+ };
+ passkeyVerifyRegistration: {
+ parameters: {
+ query?: never;
+ header?: never;
+ path?: never;
+ cookie?: never;
};
- content: {
- 'application/json': {
- message: string;
- };
+ requestBody: {
+ content: {
+ "application/json": {
+ response: string;
+ /** @description Name of the passkey */
+ name?: string | null;
+ };
+ };
};
- };
- /** @description Forbidden. You do not have permission to access this resource or to perform this action. */
- 403: {
- headers: {
- [name: string]: unknown;
+ responses: {
+ /** @description Success */
+ 200: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content: {
+ "application/json": components["schemas"]["Passkey"];
+ };
+ };
+ /** @description Bad request */
+ 400: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content?: never;
+ };
+ /** @description Unauthorized. Due to missing or invalid authentication. */
+ 401: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content: {
+ "application/json": {
+ message: string;
+ };
+ };
+ };
+ /** @description Forbidden. You do not have permission to access this resource or to perform this action. */
+ 403: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content: {
+ "application/json": {
+ message?: string;
+ };
+ };
+ };
+ /** @description Not Found. The requested resource was not found. */
+ 404: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content: {
+ "application/json": {
+ message?: string;
+ };
+ };
+ };
+ /** @description Too Many Requests. You have exceeded the rate limit. Try again later. */
+ 429: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content: {
+ "application/json": {
+ message?: string;
+ };
+ };
+ };
+ /** @description Internal Server Error. This is a problem with the server that you cannot fix. */
+ 500: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content: {
+ "application/json": {
+ message?: string;
+ };
+ };
+ };
};
- content: {
- 'application/json': {
- message?: string;
- };
+ };
+ passkeyVerifyAuthentication: {
+ parameters: {
+ query?: never;
+ header?: never;
+ path?: never;
+ cookie?: never;
};
- };
- /** @description Not Found. The requested resource was not found. */
- 404: {
- headers: {
- [name: string]: unknown;
+ requestBody: {
+ content: {
+ "application/json": {
+ response: string;
+ };
+ };
};
- content: {
- 'application/json': {
- message?: string;
- };
+ responses: {
+ /** @description Success */
+ 200: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content: {
+ "application/json": {
+ session?: components["schemas"]["Session"];
+ user?: components["schemas"]["User"];
+ };
+ };
+ };
+ /** @description Bad Request. Usually due to missing parameters, or invalid parameters. */
+ 400: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content: {
+ "application/json": {
+ message: string;
+ };
+ };
+ };
+ /** @description Unauthorized. Due to missing or invalid authentication. */
+ 401: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content: {
+ "application/json": {
+ message: string;
+ };
+ };
+ };
+ /** @description Forbidden. You do not have permission to access this resource or to perform this action. */
+ 403: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content: {
+ "application/json": {
+ message?: string;
+ };
+ };
+ };
+ /** @description Not Found. The requested resource was not found. */
+ 404: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content: {
+ "application/json": {
+ message?: string;
+ };
+ };
+ };
+ /** @description Too Many Requests. You have exceeded the rate limit. Try again later. */
+ 429: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content: {
+ "application/json": {
+ message?: string;
+ };
+ };
+ };
+ /** @description Internal Server Error. This is a problem with the server that you cannot fix. */
+ 500: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content: {
+ "application/json": {
+ message?: string;
+ };
+ };
+ };
};
- };
- /** @description Too Many Requests. You have exceeded the rate limit. Try again later. */
- 429: {
- headers: {
- [name: string]: unknown;
+ };
+ signInWithMagicLink: {
+ parameters: {
+ query?: never;
+ header?: never;
+ path?: never;
+ cookie?: never;
+ };
+ requestBody: {
+ content: {
+ "application/json": {
+ /** @description Email address to send the magic link */
+ email: string;
+ /** @description User display name. Only used if the user is registering for the first time. Eg: "my-name" */
+ name?: string | null;
+ /** @description URL to redirect after magic link verification */
+ callbackURL?: string | null;
+ /** @description URL to redirect after new user signup. Only used if the user is registering for the first time. */
+ newUserCallbackURL?: string | null;
+ /** @description URL to redirect after error. */
+ errorCallbackURL?: string | null;
+ };
+ };
};
- content: {
- 'application/json': {
- message?: string;
- };
+ responses: {
+ /** @description Success */
+ 200: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content: {
+ "application/json": {
+ status?: boolean;
+ };
+ };
+ };
+ /** @description Bad Request. Usually due to missing parameters, or invalid parameters. */
+ 400: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content: {
+ "application/json": {
+ message: string;
+ };
+ };
+ };
+ /** @description Unauthorized. Due to missing or invalid authentication. */
+ 401: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content: {
+ "application/json": {
+ message: string;
+ };
+ };
+ };
+ /** @description Forbidden. You do not have permission to access this resource or to perform this action. */
+ 403: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content: {
+ "application/json": {
+ message?: string;
+ };
+ };
+ };
+ /** @description Not Found. The requested resource was not found. */
+ 404: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content: {
+ "application/json": {
+ message?: string;
+ };
+ };
+ };
+ /** @description Too Many Requests. You have exceeded the rate limit. Try again later. */
+ 429: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content: {
+ "application/json": {
+ message?: string;
+ };
+ };
+ };
+ /** @description Internal Server Error. This is a problem with the server that you cannot fix. */
+ 500: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content: {
+ "application/json": {
+ message?: string;
+ };
+ };
+ };
};
- };
- /** @description Internal Server Error. This is a problem with the server that you cannot fix. */
- 500: {
- headers: {
- [name: string]: unknown;
+ };
+ verifyMagicLink: {
+ parameters: {
+ query?: {
+ token?: string;
+ callbackURL?: string | null;
+ errorCallbackURL?: string | null;
+ newUserCallbackURL?: string | null;
+ };
+ header?: never;
+ path?: never;
+ cookie?: never;
};
- content: {
- 'application/json': {
- message?: string;
- };
+ requestBody?: never;
+ responses: {
+ /** @description Success */
+ 200: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content: {
+ "application/json": {
+ session?: components["schemas"]["Session"];
+ user?: components["schemas"]["User"];
+ };
+ };
+ };
+ /** @description Bad Request. Usually due to missing parameters, or invalid parameters. */
+ 400: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content: {
+ "application/json": {
+ message: string;
+ };
+ };
+ };
+ /** @description Unauthorized. Due to missing or invalid authentication. */
+ 401: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content: {
+ "application/json": {
+ message: string;
+ };
+ };
+ };
+ /** @description Forbidden. You do not have permission to access this resource or to perform this action. */
+ 403: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content: {
+ "application/json": {
+ message?: string;
+ };
+ };
+ };
+ /** @description Not Found. The requested resource was not found. */
+ 404: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content: {
+ "application/json": {
+ message?: string;
+ };
+ };
+ };
+ /** @description Too Many Requests. You have exceeded the rate limit. Try again later. */
+ 429: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content: {
+ "application/json": {
+ message?: string;
+ };
+ };
+ };
+ /** @description Internal Server Error. This is a problem with the server that you cannot fix. */
+ 500: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content: {
+ "application/json": {
+ message?: string;
+ };
+ };
+ };
};
- };
};
- };
}
diff --git a/lib/utils.ts b/lib/utils.ts
index da977cbb..d1ace299 100644
--- a/lib/utils.ts
+++ b/lib/utils.ts
@@ -112,3 +112,10 @@ export const slugify = (text: string) => {
.replace(/ /g, '-')
.replace(/[^\w-]+/g, '');
};
+
+/** 1 -> "1st", 2 -> "2nd", 11 -> "11th", 21 -> "21st". */
+export const ordinal = (n: number): string => {
+ const s = ['th', 'st', 'nd', 'rd'];
+ const v = n % 100;
+ return `${n}${s[(v - 20) % 10] ?? s[v] ?? s[0]}`;
+};
diff --git a/openapi.snapshot.json b/openapi.snapshot.json
index 537392b2..71c13929 100644
--- a/openapi.snapshot.json
+++ b/openapi.snapshot.json
@@ -10,7 +10,9 @@
"description": ""
}
},
- "tags": ["App"]
+ "tags": [
+ "App"
+ ]
}
},
"/api/notifications": {
@@ -22,7 +24,9 @@
"description": ""
}
},
- "tags": ["Notifications"]
+ "tags": [
+ "Notifications"
+ ]
}
},
"/api/notifications/unread-count": {
@@ -34,7 +38,9 @@
"description": ""
}
},
- "tags": ["Notifications"]
+ "tags": [
+ "Notifications"
+ ]
}
},
"/api/notifications/{id}/read": {
@@ -55,7 +61,9 @@
"description": ""
}
},
- "tags": ["Notifications"]
+ "tags": [
+ "Notifications"
+ ]
}
},
"/api/notifications/read-all": {
@@ -67,7 +75,9 @@
"description": ""
}
},
- "tags": ["Notifications"]
+ "tags": [
+ "Notifications"
+ ]
}
},
"/api/notifications/{id}": {
@@ -88,7 +98,9 @@
"description": ""
}
},
- "tags": ["Notifications"]
+ "tags": [
+ "Notifications"
+ ]
}
},
"/api/notifications/preferences": {
@@ -100,7 +112,9 @@
"description": ""
}
},
- "tags": ["Notifications"]
+ "tags": [
+ "Notifications"
+ ]
},
"put": {
"operationId": "NotificationsController_updatePreferences",
@@ -120,7 +134,9 @@
"description": ""
}
},
- "tags": ["Notifications"]
+ "tags": [
+ "Notifications"
+ ]
}
},
"/api/notifications/test": {
@@ -132,7 +148,9 @@
"description": ""
}
},
- "tags": ["Notifications"]
+ "tags": [
+ "Notifications"
+ ]
}
},
"/api/notifications/test-marketing-cron": {
@@ -144,7 +162,9 @@
"description": ""
}
},
- "tags": ["Notifications"]
+ "tags": [
+ "Notifications"
+ ]
}
},
"/api/users/settings": {
@@ -165,7 +185,9 @@
}
],
"summary": "Get user settings",
- "tags": ["users"]
+ "tags": [
+ "users"
+ ]
}
},
"/api/users/settings/notifications": {
@@ -200,7 +222,9 @@
}
],
"summary": "Update notification settings",
- "tags": ["users"]
+ "tags": [
+ "users"
+ ]
}
},
"/api/users/settings/privacy": {
@@ -234,7 +258,9 @@
}
],
"summary": "Update privacy settings",
- "tags": ["users"]
+ "tags": [
+ "users"
+ ]
}
},
"/api/users/settings/appearance": {
@@ -268,7 +294,9 @@
}
],
"summary": "Update appearance settings",
- "tags": ["users"]
+ "tags": [
+ "users"
+ ]
}
},
"/api/users/earnings/public": {
@@ -323,7 +351,9 @@
}
},
"summary": "Get public earnings for a user (profile page)",
- "tags": ["users"]
+ "tags": [
+ "users"
+ ]
}
},
"/api/users/earnings": {
@@ -371,20 +401,22 @@
}
],
"summary": "Get current user earnings",
- "tags": ["users"]
+ "tags": [
+ "users"
+ ]
}
},
- "/api/users/me": {
+ "/api/users/profile": {
"get": {
- "operationId": "UserController_getProfile",
+ "operationId": "ProfileController_getProfile",
"parameters": [],
"responses": {
"200": {
- "description": "User dashboard with profile, stats, chart data, activities graph, and recent activities retrieved successfully",
+ "description": "Profile retrieved successfully",
"content": {
"application/json": {
"schema": {
- "$ref": "#/components/schemas/DashboardDto"
+ "$ref": "#/components/schemas/ProfileResponseDto"
}
}
}
@@ -398,193 +430,10 @@
"JWT-auth": []
}
],
- "summary": "Get current user dashboard with overview, chart, and activities graph",
- "tags": ["users"]
- }
- },
- "/api/users/public": {
- "get": {
- "operationId": "UserController_getPublic",
- "parameters": [],
- "responses": {
- "200": {
- "description": "Public route accessed successfully"
- }
- },
- "summary": "Public test endpoint",
- "tags": ["users"]
- }
- },
- "/api/users/optional": {
- "get": {
- "operationId": "UserController_getOptional",
- "parameters": [],
- "responses": {
- "200": {
- "description": "Optional auth route accessed successfully"
- }
- },
- "summary": "Optional authentication test endpoint",
- "tags": ["users"]
- }
- },
- "/api/users/{username}": {
- "get": {
- "description": "Get a user profile by their username. Accessible to anyone without authentication.",
- "operationId": "UserController_getUserByUsername",
- "parameters": [
- {
- "name": "username",
- "required": true,
- "in": "path",
- "description": "Username of the user to retrieve",
- "schema": {
- "example": "johndoe",
- "type": "string"
- }
- }
- ],
- "responses": {
- "200": {
- "description": "User profile retrieved successfully"
- },
- "404": {
- "description": "User not found"
- }
- },
- "summary": "Get user profile by username",
- "tags": ["users"]
- }
- },
- "/api/users/{username}/followers": {
- "get": {
- "description": "Get a list of users who follow this profile",
- "operationId": "UserController_getUserFollowers",
- "parameters": [
- {
- "name": "username",
- "required": true,
- "in": "path",
- "description": "Username of the user",
- "schema": {
- "example": "johndoe",
- "type": "string"
- }
- },
- {
- "name": "offset",
- "required": false,
- "in": "query",
- "description": "Pagination offset",
- "schema": {
- "type": "number"
- }
- },
- {
- "name": "limit",
- "required": false,
- "in": "query",
- "description": "Number of followers to return",
- "schema": {
- "type": "number"
- }
- }
- ],
- "responses": {
- "200": {
- "description": "Followers retrieved successfully"
- },
- "404": {
- "description": "User not found"
- }
- },
- "summary": "Get user followers",
- "tags": ["users"]
- }
- },
- "/api/users/{username}/following": {
- "get": {
- "description": "Get a list of entities (users, projects, organizations) followed by this user",
- "operationId": "UserController_getUserFollowing",
- "parameters": [
- {
- "name": "username",
- "required": true,
- "in": "path",
- "description": "Username of the user",
- "schema": {
- "example": "johndoe",
- "type": "string"
- }
- },
- {
- "name": "entityType",
- "required": false,
- "in": "query",
- "description": "Filter by entity type",
- "schema": {
- "enum": [
- "USER",
- "PROJECT",
- "ORGANIZATION",
- "CROWDFUNDING_CAMPAIGN",
- "BOUNTY",
- "GRANT",
- "HACKATHON"
- ],
- "type": "string"
- }
- },
- {
- "name": "offset",
- "required": false,
- "in": "query",
- "description": "Pagination offset",
- "schema": {
- "type": "number"
- }
- },
- {
- "name": "limit",
- "required": false,
- "in": "query",
- "description": "Number of following to return",
- "schema": {
- "type": "number"
- }
- }
- ],
- "responses": {
- "200": {
- "description": "Following list retrieved successfully"
- },
- "404": {
- "description": "User not found"
- }
- },
- "summary": "Get users followed by this profile",
- "tags": ["users"]
- }
- },
- "/api/users/profile": {
- "get": {
- "operationId": "ProfileController_getProfile",
- "parameters": [],
- "responses": {
- "200": {
- "description": "Profile retrieved successfully"
- },
- "401": {
- "description": "Unauthorized"
- }
- },
- "security": [
- {
- "JWT-auth": []
- }
- ],
"summary": "Get current user profile",
- "tags": ["users"]
+ "tags": [
+ "users"
+ ]
},
"put": {
"operationId": "ProfileController_updateProfile",
@@ -616,7 +465,9 @@
}
],
"summary": "Update current user profile",
- "tags": ["users"]
+ "tags": [
+ "users"
+ ]
}
},
"/api/users/profile/stats": {
@@ -637,7 +488,9 @@
}
],
"summary": "Get user profile statistics",
- "tags": ["users"]
+ "tags": [
+ "users"
+ ]
}
},
"/api/users/profile/activity": {
@@ -658,7 +511,9 @@
}
],
"summary": "Get user activity",
- "tags": ["users"]
+ "tags": [
+ "users"
+ ]
}
},
"/api/users/profile/avatar": {
@@ -699,7 +554,9 @@
}
],
"summary": "Upload user avatar",
- "tags": ["users"]
+ "tags": [
+ "users"
+ ]
}
},
"/api/users/preferences": {
@@ -720,7 +577,9 @@
}
],
"summary": "Get user preferences",
- "tags": ["users"]
+ "tags": [
+ "users"
+ ]
}
},
"/api/users/preferences/language": {
@@ -760,7 +619,9 @@
}
],
"summary": "Update language preference",
- "tags": ["users"]
+ "tags": [
+ "users"
+ ]
}
},
"/api/users/preferences/timezone": {
@@ -800,7 +661,9 @@
}
],
"summary": "Update timezone preference",
- "tags": ["users"]
+ "tags": [
+ "users"
+ ]
}
},
"/api/users/preferences/categories": {
@@ -819,7 +682,10 @@
"items": {
"type": "string"
},
- "example": ["tech", "design"]
+ "example": [
+ "tech",
+ "design"
+ ]
}
}
}
@@ -843,7 +709,9 @@
}
],
"summary": "Update category preferences",
- "tags": ["users"]
+ "tags": [
+ "users"
+ ]
}
},
"/api/users/preferences/skills": {
@@ -862,7 +730,10 @@
"items": {
"type": "string"
},
- "example": ["javascript", "react"]
+ "example": [
+ "javascript",
+ "react"
+ ]
}
}
}
@@ -886,7 +757,279 @@
}
],
"summary": "Update skill preferences",
- "tags": ["users"]
+ "tags": [
+ "users"
+ ]
+ }
+ },
+ "/api/users/me": {
+ "get": {
+ "operationId": "UserController_getMe",
+ "parameters": [],
+ "responses": {
+ "200": {
+ "description": "Current user retrieved successfully",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/CurrentUserDto"
+ }
+ }
+ }
+ },
+ "401": {
+ "description": "Unauthorized"
+ }
+ },
+ "security": [
+ {
+ "JWT-auth": []
+ }
+ ],
+ "summary": "Get the current user (lean identity payload)",
+ "tags": [
+ "users"
+ ]
+ }
+ },
+ "/api/users/dashboard": {
+ "get": {
+ "operationId": "UserController_getDashboard",
+ "parameters": [],
+ "responses": {
+ "200": {
+ "description": "Dashboard with profile, stats, chart data, activities graph, and recent activities retrieved successfully",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/DashboardDto"
+ }
+ }
+ }
+ },
+ "401": {
+ "description": "Unauthorized"
+ }
+ },
+ "security": [
+ {
+ "JWT-auth": []
+ }
+ ],
+ "summary": "Get the current user dashboard: stats, chart, activities graph, and recent activities",
+ "tags": [
+ "users"
+ ]
+ }
+ },
+ "/api/users/onboarding": {
+ "post": {
+ "operationId": "UserController_completeOnboarding",
+ "parameters": [],
+ "requestBody": {
+ "required": true,
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/CompleteOnboardingDto"
+ }
+ }
+ }
+ },
+ "responses": {
+ "200": {
+ "description": "Onboarding completed"
+ },
+ "400": {
+ "description": "Bad request"
+ },
+ "401": {
+ "description": "Unauthorized"
+ }
+ },
+ "security": [
+ {
+ "JWT-auth": []
+ }
+ ],
+ "summary": "Complete onboarding (persona, referral source, skills, goals)",
+ "tags": [
+ "users"
+ ]
+ }
+ },
+ "/api/users/public": {
+ "get": {
+ "operationId": "UserController_getPublic",
+ "parameters": [],
+ "responses": {
+ "200": {
+ "description": "Public route accessed successfully"
+ }
+ },
+ "summary": "Public test endpoint",
+ "tags": [
+ "users"
+ ]
+ }
+ },
+ "/api/users/optional": {
+ "get": {
+ "operationId": "UserController_getOptional",
+ "parameters": [],
+ "responses": {
+ "200": {
+ "description": "Optional auth route accessed successfully"
+ }
+ },
+ "summary": "Optional authentication test endpoint",
+ "tags": [
+ "users"
+ ]
+ }
+ },
+ "/api/users/{username}": {
+ "get": {
+ "description": "Get a user profile by their username. Accessible to anyone without authentication.",
+ "operationId": "UserController_getUserByUsername",
+ "parameters": [
+ {
+ "name": "username",
+ "required": true,
+ "in": "path",
+ "description": "Username of the user to retrieve",
+ "schema": {
+ "example": "johndoe",
+ "type": "string"
+ }
+ }
+ ],
+ "responses": {
+ "200": {
+ "description": "User profile retrieved successfully"
+ },
+ "404": {
+ "description": "User not found"
+ }
+ },
+ "summary": "Get user profile by username",
+ "tags": [
+ "users"
+ ]
+ }
+ },
+ "/api/users/{username}/followers": {
+ "get": {
+ "description": "Get a list of users who follow this profile",
+ "operationId": "UserController_getUserFollowers",
+ "parameters": [
+ {
+ "name": "username",
+ "required": true,
+ "in": "path",
+ "description": "Username of the user",
+ "schema": {
+ "example": "johndoe",
+ "type": "string"
+ }
+ },
+ {
+ "name": "offset",
+ "required": false,
+ "in": "query",
+ "description": "Pagination offset",
+ "schema": {
+ "type": "number"
+ }
+ },
+ {
+ "name": "limit",
+ "required": false,
+ "in": "query",
+ "description": "Number of followers to return",
+ "schema": {
+ "type": "number"
+ }
+ }
+ ],
+ "responses": {
+ "200": {
+ "description": "Followers retrieved successfully"
+ },
+ "404": {
+ "description": "User not found"
+ }
+ },
+ "summary": "Get user followers",
+ "tags": [
+ "users"
+ ]
+ }
+ },
+ "/api/users/{username}/following": {
+ "get": {
+ "description": "Get a list of entities (users, projects, organizations) followed by this user",
+ "operationId": "UserController_getUserFollowing",
+ "parameters": [
+ {
+ "name": "username",
+ "required": true,
+ "in": "path",
+ "description": "Username of the user",
+ "schema": {
+ "example": "johndoe",
+ "type": "string"
+ }
+ },
+ {
+ "name": "entityType",
+ "required": false,
+ "in": "query",
+ "description": "Filter by entity type",
+ "schema": {
+ "enum": [
+ "USER",
+ "PROJECT",
+ "ORGANIZATION",
+ "CROWDFUNDING_CAMPAIGN",
+ "BOUNTY",
+ "GRANT",
+ "HACKATHON"
+ ],
+ "type": "string"
+ }
+ },
+ {
+ "name": "offset",
+ "required": false,
+ "in": "query",
+ "description": "Pagination offset",
+ "schema": {
+ "type": "number"
+ }
+ },
+ {
+ "name": "limit",
+ "required": false,
+ "in": "query",
+ "description": "Number of following to return",
+ "schema": {
+ "type": "number"
+ }
+ }
+ ],
+ "responses": {
+ "200": {
+ "description": "Following list retrieved successfully"
+ },
+ "404": {
+ "description": "User not found"
+ }
+ },
+ "summary": "Get users followed by this profile",
+ "tags": [
+ "users"
+ ]
}
},
"/api/users": {
@@ -910,7 +1053,9 @@
}
],
"summary": "Get paginated list of users (Admin only)",
- "tags": ["users"]
+ "tags": [
+ "users"
+ ]
}
},
"/api/users/{id}": {
@@ -947,7 +1092,9 @@
}
],
"summary": "Get user by ID",
- "tags": ["users"]
+ "tags": [
+ "users"
+ ]
},
"put": {
"operationId": "UsersController_updateUser",
@@ -989,7 +1136,9 @@
}
],
"summary": "Update user by ID",
- "tags": ["users"]
+ "tags": [
+ "users"
+ ]
},
"delete": {
"operationId": "UsersController_deleteUser",
@@ -1024,7 +1173,9 @@
}
],
"summary": "Delete user by ID (Admin only)",
- "tags": ["users"]
+ "tags": [
+ "users"
+ ]
}
},
"/api/users/{id}/profile": {
@@ -1050,7 +1201,9 @@
}
},
"summary": "Get user profile by ID",
- "tags": ["users"]
+ "tags": [
+ "users"
+ ]
}
},
"/api/upload/single": {
@@ -1081,7 +1234,10 @@
"items": {
"type": "string"
},
- "example": ["project", "logo"],
+ "example": [
+ "project",
+ "logo"
+ ],
"description": "Tags for the file"
},
"transformation": {
@@ -1136,7 +1292,9 @@
}
],
"summary": "Upload a single file",
- "tags": ["Upload"]
+ "tags": [
+ "Upload"
+ ]
}
},
"/api/upload/multiple": {
@@ -1170,7 +1328,10 @@
"items": {
"type": "string"
},
- "example": ["project", "gallery"],
+ "example": [
+ "project",
+ "gallery"
+ ],
"description": "Tags for the files"
}
}
@@ -1199,7 +1360,9 @@
}
],
"summary": "Upload multiple files",
- "tags": ["Upload"]
+ "tags": [
+ "Upload"
+ ]
}
},
"/api/upload/{publicId}/{resourceType}": {
@@ -1223,7 +1386,11 @@
"in": "path",
"description": "Type of resource",
"schema": {
- "enum": ["image", "video", "raw"],
+ "enum": [
+ "image",
+ "video",
+ "raw"
+ ],
"type": "string"
}
}
@@ -1259,7 +1426,9 @@
}
],
"summary": "Delete a file",
- "tags": ["Upload"]
+ "tags": [
+ "Upload"
+ ]
}
},
"/api/upload/info/{publicId}/{resourceType}": {
@@ -1283,7 +1452,11 @@
"in": "path",
"description": "Type of resource",
"schema": {
- "enum": ["image", "video", "raw"],
+ "enum": [
+ "image",
+ "video",
+ "raw"
+ ],
"type": "string"
}
}
@@ -1309,7 +1482,9 @@
}
],
"summary": "Get file information",
- "tags": ["Upload"]
+ "tags": [
+ "Upload"
+ ]
}
},
"/api/upload/search": {
@@ -1333,7 +1508,11 @@
"in": "query",
"description": "Resource type to filter by",
"schema": {
- "enum": ["image", "video", "raw"],
+ "enum": [
+ "image",
+ "video",
+ "raw"
+ ],
"type": "string"
}
},
@@ -1352,7 +1531,10 @@
"in": "query",
"description": "Tags to filter by",
"schema": {
- "example": ["project", "logo"],
+ "example": [
+ "project",
+ "logo"
+ ],
"type": "array",
"items": {
"type": "string"
@@ -1381,7 +1563,9 @@
}
],
"summary": "Search files",
- "tags": ["Upload"]
+ "tags": [
+ "Upload"
+ ]
}
},
"/api/upload/optimize/{publicId}": {
@@ -1468,7 +1652,9 @@
}
],
"summary": "Generate optimized URL",
- "tags": ["Upload"]
+ "tags": [
+ "Upload"
+ ]
}
},
"/api/upload/responsive/{publicId}": {
@@ -1555,7 +1741,9 @@
}
],
"summary": "Generate responsive URLs",
- "tags": ["Upload"]
+ "tags": [
+ "Upload"
+ ]
}
},
"/api/upload/avatar/{publicId}": {
@@ -1605,7 +1793,9 @@
}
],
"summary": "Generate avatar URL",
- "tags": ["Upload"]
+ "tags": [
+ "Upload"
+ ]
}
},
"/api/upload/logo/{publicId}": {
@@ -1665,7 +1855,9 @@
}
],
"summary": "Generate logo URL",
- "tags": ["Upload"]
+ "tags": [
+ "Upload"
+ ]
}
},
"/api/upload/banner/{publicId}": {
@@ -1725,7 +1917,9 @@
}
],
"summary": "Generate banner URL",
- "tags": ["Upload"]
+ "tags": [
+ "Upload"
+ ]
}
},
"/api/upload/stats": {
@@ -1754,7 +1948,9 @@
}
],
"summary": "Get usage statistics",
- "tags": ["Upload"]
+ "tags": [
+ "Upload"
+ ]
}
},
"/api/auth/register": {
@@ -1776,7 +1972,9 @@
"description": ""
}
},
- "tags": ["Auth"]
+ "tags": [
+ "Auth"
+ ]
}
},
"/api/auth/login": {
@@ -1798,7 +1996,9 @@
"description": ""
}
},
- "tags": ["Auth"]
+ "tags": [
+ "Auth"
+ ]
}
},
"/api/auth/refresh": {
@@ -1820,7 +2020,9 @@
"description": ""
}
},
- "tags": ["Auth"]
+ "tags": [
+ "Auth"
+ ]
}
},
"/api/auth/logout": {
@@ -1832,7 +2034,9 @@
"description": ""
}
},
- "tags": ["Auth"]
+ "tags": [
+ "Auth"
+ ]
}
},
"/api/auth/me": {
@@ -1844,7 +2048,9 @@
"description": ""
}
},
- "tags": ["Auth"]
+ "tags": [
+ "Auth"
+ ]
}
},
"/api/auth/verify-stellar-signature": {
@@ -1866,7 +2072,9 @@
"description": ""
}
},
- "tags": ["Auth"]
+ "tags": [
+ "Auth"
+ ]
}
},
"/api/auth/oauth/google": {
@@ -1878,7 +2086,9 @@
"description": ""
}
},
- "tags": ["OAuth"]
+ "tags": [
+ "OAuth"
+ ]
}
},
"/api/auth/oauth/google/callback": {
@@ -1890,7 +2100,9 @@
"description": ""
}
},
- "tags": ["OAuth"]
+ "tags": [
+ "OAuth"
+ ]
}
},
"/api/auth/oauth/github": {
@@ -1902,7 +2114,9 @@
"description": ""
}
},
- "tags": ["OAuth"]
+ "tags": [
+ "OAuth"
+ ]
}
},
"/api/auth/oauth/github/callback": {
@@ -1914,7 +2128,9 @@
"description": ""
}
},
- "tags": ["OAuth"]
+ "tags": [
+ "OAuth"
+ ]
}
},
"/api/auth/oauth/twitter": {
@@ -1926,7 +2142,9 @@
"description": ""
}
},
- "tags": ["OAuth"]
+ "tags": [
+ "OAuth"
+ ]
}
},
"/api/auth/oauth/twitter/callback": {
@@ -1938,7 +2156,9 @@
"description": ""
}
},
- "tags": ["OAuth"]
+ "tags": [
+ "OAuth"
+ ]
}
},
"/api/follows/{entityType}/{entityId}": {
@@ -1967,7 +2187,9 @@
"description": ""
}
},
- "tags": ["Follows"]
+ "tags": [
+ "Follows"
+ ]
},
"delete": {
"operationId": "FollowsController_unfollowEntity",
@@ -1994,7 +2216,9 @@
"description": ""
}
},
- "tags": ["Follows"]
+ "tags": [
+ "Follows"
+ ]
}
},
"/api/follows/user/{userId}/following": {
@@ -2023,7 +2247,9 @@
"description": ""
}
},
- "tags": ["Follows"]
+ "tags": [
+ "Follows"
+ ]
}
},
"/api/follows/entity/{entityType}/{entityId}/followers": {
@@ -2052,7 +2278,9 @@
"description": ""
}
},
- "tags": ["Follows"]
+ "tags": [
+ "Follows"
+ ]
}
},
"/api/follows/user/{userId}/stats": {
@@ -2073,7 +2301,9 @@
"description": ""
}
},
- "tags": ["Follows"]
+ "tags": [
+ "Follows"
+ ]
}
},
"/api/follows/{entityType}/{entityId}/check": {
@@ -2102,7 +2332,9 @@
"description": ""
}
},
- "tags": ["Follows"]
+ "tags": [
+ "Follows"
+ ]
}
},
"/api/chat/history": {
@@ -2153,7 +2385,9 @@
}
],
"summary": "Get chat message history",
- "tags": ["Chat"]
+ "tags": [
+ "Chat"
+ ]
}
},
"/api/messages/conversations": {
@@ -2188,7 +2422,9 @@
}
],
"summary": "List my conversations",
- "tags": ["Messages"]
+ "tags": [
+ "Messages"
+ ]
},
"post": {
"operationId": "MessagesController_startOrGetConversation",
@@ -2214,7 +2450,9 @@
}
],
"summary": "Start or get existing conversation",
- "tags": ["Messages"]
+ "tags": [
+ "Messages"
+ ]
}
},
"/api/messages/conversations/{id}": {
@@ -2242,7 +2480,9 @@
}
],
"summary": "Get one conversation (thread header)",
- "tags": ["Messages"]
+ "tags": [
+ "Messages"
+ ]
}
},
"/api/messages/conversations/{id}/messages": {
@@ -2287,7 +2527,9 @@
}
],
"summary": "List messages in a conversation",
- "tags": ["Messages"]
+ "tags": [
+ "Messages"
+ ]
},
"post": {
"operationId": "MessagesController_sendMessage",
@@ -2323,7 +2565,9 @@
}
],
"summary": "Send a message",
- "tags": ["Messages"]
+ "tags": [
+ "Messages"
+ ]
}
},
"/api/messages/conversations/{id}/read": {
@@ -2351,7 +2595,85 @@
}
],
"summary": "Mark conversation as read",
- "tags": ["Messages"]
+ "tags": [
+ "Messages"
+ ]
+ }
+ },
+ "/api/credits/me": {
+ "get": {
+ "operationId": "CreditsController_getMine",
+ "parameters": [],
+ "responses": {
+ "200": {
+ "description": "",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/CreditSummaryDto"
+ }
+ }
+ }
+ }
+ },
+ "security": [
+ {
+ "JWT-auth": []
+ }
+ ],
+ "summary": "Current user credit balance, tier and next refill",
+ "tags": [
+ "credits"
+ ]
+ }
+ },
+ "/api/credits/history": {
+ "get": {
+ "operationId": "CreditsController_getHistory",
+ "parameters": [
+ {
+ "name": "page",
+ "required": false,
+ "in": "query",
+ "schema": {
+ "minimum": 1,
+ "default": 1,
+ "type": "number"
+ }
+ },
+ {
+ "name": "limit",
+ "required": false,
+ "in": "query",
+ "schema": {
+ "minimum": 1,
+ "maximum": 100,
+ "default": 20,
+ "type": "number"
+ }
+ }
+ ],
+ "responses": {
+ "200": {
+ "description": "",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/CreditHistoryDto"
+ }
+ }
+ }
+ }
+ },
+ "security": [
+ {
+ "JWT-auth": []
+ }
+ ],
+ "summary": "Paginated credit ledger for the current user",
+ "tags": [
+ "credits"
+ ]
}
},
"/api/crowdfunding/validate": {
@@ -2383,7 +2705,9 @@
}
],
"summary": "Validate campaign data",
- "tags": ["crowdfunding"]
+ "tags": [
+ "crowdfunding"
+ ]
}
},
"/api/crowdfunding/draft": {
@@ -2412,7 +2736,9 @@
}
],
"summary": "Create a draft campaign",
- "tags": ["crowdfunding"]
+ "tags": [
+ "crowdfunding"
+ ]
}
},
"/api/crowdfunding": {
@@ -2444,7 +2770,9 @@
}
],
"summary": "Create a crowdfunding campaign",
- "tags": ["crowdfunding"]
+ "tags": [
+ "crowdfunding"
+ ]
},
"get": {
"description": "Get a paginated list of crowdfunding campaigns with optional filtering",
@@ -2466,7 +2794,11 @@
"in": "query",
"description": "Status of the campaign",
"schema": {
- "enum": ["active", "funded", "completed"],
+ "enum": [
+ "active",
+ "funded",
+ "completed"
+ ],
"type": "string"
}
},
@@ -2545,7 +2877,9 @@
}
},
"summary": "List crowdfunding campaigns",
- "tags": ["crowdfunding"]
+ "tags": [
+ "crowdfunding"
+ ]
}
},
"/api/crowdfunding/trigger-cron": {
@@ -2559,7 +2893,9 @@
}
},
"summary": "Trigger campaign transition cron",
- "tags": ["crowdfunding"]
+ "tags": [
+ "crowdfunding"
+ ]
}
},
"/api/crowdfunding/me": {
@@ -2667,7 +3003,9 @@
}
],
"summary": "List authenticated user's campaigns",
- "tags": ["crowdfunding"]
+ "tags": [
+ "crowdfunding"
+ ]
}
},
"/api/crowdfunding/s/{slug}": {
@@ -2694,7 +3032,9 @@
}
},
"summary": "Get campaign by slug",
- "tags": ["crowdfunding"]
+ "tags": [
+ "crowdfunding"
+ ]
}
},
"/api/crowdfunding/{id}": {
@@ -2721,7 +3061,9 @@
}
},
"summary": "Get campaign details",
- "tags": ["crowdfunding"]
+ "tags": [
+ "crowdfunding"
+ ]
},
"put": {
"description": "Update a crowdfunding campaign. Only campaign owners can update campaigns.",
@@ -2761,7 +3103,9 @@
}
],
"summary": "Update campaign",
- "tags": ["crowdfunding"]
+ "tags": [
+ "crowdfunding"
+ ]
},
"delete": {
"description": "Delete a crowdfunding campaign. Only campaign owners can delete campaigns that are in draft/reviewing phase and have no contributions.",
@@ -2791,7 +3135,9 @@
}
],
"summary": "Delete campaign",
- "tags": ["crowdfunding"]
+ "tags": [
+ "crowdfunding"
+ ]
}
},
"/api/crowdfunding/{id}/statistics": {
@@ -2815,7 +3161,9 @@
}
},
"summary": "Get campaign statistics",
- "tags": ["crowdfunding"]
+ "tags": [
+ "crowdfunding"
+ ]
}
},
"/api/crowdfunding/{id}/invitations": {
@@ -2852,7 +3200,9 @@
}
],
"summary": "Invite a team member to the campaign",
- "tags": ["crowdfunding"]
+ "tags": [
+ "crowdfunding"
+ ]
},
"get": {
"operationId": "CampaignsController_getInvitations",
@@ -2877,7 +3227,9 @@
}
],
"summary": "Get all invitations for a campaign",
- "tags": ["crowdfunding"]
+ "tags": [
+ "crowdfunding"
+ ]
}
},
"/api/crowdfunding/invitations/accept": {
@@ -2904,7 +3256,9 @@
}
],
"summary": "Accept a campaign team invitation",
- "tags": ["crowdfunding"]
+ "tags": [
+ "crowdfunding"
+ ]
}
},
"/api/crowdfunding/{id}/contributions": {
@@ -2944,7 +3298,9 @@
}
},
"summary": "Get campaign contributions",
- "tags": ["crowdfunding"]
+ "tags": [
+ "crowdfunding"
+ ]
}
},
"/api/crowdfunding/{id}/contributions/stats": {
@@ -2968,7 +3324,9 @@
}
},
"summary": "Get contribution statistics",
- "tags": ["crowdfunding"]
+ "tags": [
+ "crowdfunding"
+ ]
}
},
"/api/crowdfunding/{id}/milestones": {
@@ -2992,7 +3350,9 @@
}
},
"summary": "Get campaign milestones",
- "tags": ["crowdfunding"]
+ "tags": [
+ "crowdfunding"
+ ]
}
},
"/api/crowdfunding/{id}/milestones/{milestoneId}": {
@@ -3028,7 +3388,9 @@
}
},
"summary": "Get milestone details",
- "tags": ["crowdfunding"]
+ "tags": [
+ "crowdfunding"
+ ]
},
"put": {
"description": "Submit milestone with proof of work for review. Creators: Provide proof of work files/links and optional notes. Data will be strictly validated. Milestone will be marked as SUBMITTED status for admin review.",
@@ -3080,7 +3442,9 @@
}
],
"summary": "Submit milestone for review",
- "tags": ["crowdfunding"]
+ "tags": [
+ "crowdfunding"
+ ]
}
},
"/api/crowdfunding/{id}/milestones/{milestoneId}/validate-submission": {
@@ -3145,7 +3509,9 @@
"items": {
"type": "string"
},
- "example": ["https://example.com/report.pdf"]
+ "example": [
+ "https://example.com/report.pdf"
+ ]
}
}
}
@@ -3176,7 +3542,9 @@
}
},
"summary": "Validate milestone submission data",
- "tags": ["crowdfunding"]
+ "tags": [
+ "crowdfunding"
+ ]
}
},
"/api/crowdfunding/{id}/milestones/stats": {
@@ -3200,7 +3568,9 @@
}
},
"summary": "Get milestone statistics",
- "tags": ["crowdfunding"]
+ "tags": [
+ "crowdfunding"
+ ]
}
},
"/api/crowdfunding/campaigns/{id}/v2/submit-for-review": {
@@ -3227,7 +3597,9 @@
}
],
"summary": "Submit a DRAFT campaign to admin review",
- "tags": ["Crowdfunding v2 - Builder"]
+ "tags": [
+ "Crowdfunding v2 - Builder"
+ ]
}
},
"/api/crowdfunding/campaigns/{id}/v2/withdraw-submission": {
@@ -3254,7 +3626,9 @@
}
],
"summary": "Withdraw a pending review back to DRAFT (D4)",
- "tags": ["Crowdfunding v2 - Builder"]
+ "tags": [
+ "Crowdfunding v2 - Builder"
+ ]
}
},
"/api/crowdfunding/campaigns/{id}/v2/revise-and-resubmit": {
@@ -3281,7 +3655,9 @@
}
],
"summary": "Resubmit a REVIEW_REJECTED campaign (D5: unlimited retries)",
- "tags": ["Crowdfunding v2 - Builder"]
+ "tags": [
+ "Crowdfunding v2 - Builder"
+ ]
}
},
"/api/crowdfunding/campaigns/{id}/v2/escrow/publish": {
@@ -3318,7 +3694,9 @@
}
],
"summary": "Publish a VOTE_PASSED campaign to the events contract",
- "tags": ["Crowdfunding v2 - Builder"]
+ "tags": [
+ "Crowdfunding v2 - Builder"
+ ]
}
},
"/api/crowdfunding/campaigns/{id}/v2/escrow/cancel": {
@@ -3355,7 +3733,9 @@
}
],
"summary": "Cancel a campaign and refund backers",
- "tags": ["Crowdfunding v2 - Builder"]
+ "tags": [
+ "Crowdfunding v2 - Builder"
+ ]
}
},
"/api/crowdfunding/campaigns/{id}/v2/escrow/contribute": {
@@ -3392,7 +3772,9 @@
}
],
"summary": "Build (and optionally submit) an add_funds op against the campaign",
- "tags": ["Crowdfunding v2 - Backer"]
+ "tags": [
+ "Crowdfunding v2 - Backer"
+ ]
}
},
"/api/crowdfunding/campaigns/{id}/v2/escrow/ops/{opRowId}/submit-signed": {
@@ -3437,7 +3819,9 @@
}
],
"summary": "Submit a wallet-signed contribution XDR (EXTERNAL path)",
- "tags": ["Crowdfunding v2 - Backer"]
+ "tags": [
+ "Crowdfunding v2 - Backer"
+ ]
}
},
"/api/crowdfunding/campaigns/{id}/v2/escrow/ops/{opRowId}": {
@@ -3472,7 +3856,9 @@
}
],
"summary": "Poll the state of a contribution escrow op",
- "tags": ["Crowdfunding v2 - Backer"]
+ "tags": [
+ "Crowdfunding v2 - Backer"
+ ]
}
},
"/api/crowdfunding/campaigns/{id}/v2/vote": {
@@ -3509,7 +3895,9 @@
}
],
"summary": "Cast or change vote on a VOTING campaign",
- "tags": ["Crowdfunding v2 - Community"]
+ "tags": [
+ "Crowdfunding v2 - Community"
+ ]
},
"get": {
"operationId": "CommunityCrowdfundingV2Controller_getTally",
@@ -3534,7 +3922,9 @@
}
],
"summary": "Read the campaign vote tally",
- "tags": ["Crowdfunding v2 - Community"]
+ "tags": [
+ "Crowdfunding v2 - Community"
+ ]
}
},
"/api/crowdfunding/campaigns/{id}/v2/vote/me": {
@@ -3561,7 +3951,9 @@
}
],
"summary": "Read the caller's current vote (or null)",
- "tags": ["Crowdfunding v2 - Community"]
+ "tags": [
+ "Crowdfunding v2 - Community"
+ ]
}
},
"/api/crowdfunding/campaigns/{id}/v2/admin/approve": {
@@ -3598,7 +3990,9 @@
}
],
"summary": "Approve a submitted campaign; assigns reviewer",
- "tags": ["Crowdfunding v2 - Admin"]
+ "tags": [
+ "Crowdfunding v2 - Admin"
+ ]
}
},
"/api/crowdfunding/campaigns/{id}/v2/admin/reject": {
@@ -3635,7 +4029,9 @@
}
],
"summary": "Reject a submitted campaign with optional reason",
- "tags": ["Crowdfunding v2 - Admin"]
+ "tags": [
+ "Crowdfunding v2 - Admin"
+ ]
}
},
"/api/crowdfunding/campaigns/{id}/v2/admin/extend-funding": {
@@ -3672,7 +4068,9 @@
}
],
"summary": "Extend a live campaign funding deadline",
- "tags": ["Crowdfunding v2 - Admin"]
+ "tags": [
+ "Crowdfunding v2 - Admin"
+ ]
}
},
"/api/crowdfunding/campaigns/{id}/v2/admin/pause": {
@@ -3709,7 +4107,9 @@
}
],
"summary": "Pause a live campaign (D7)",
- "tags": ["Crowdfunding v2 - Admin"]
+ "tags": [
+ "Crowdfunding v2 - Admin"
+ ]
}
},
"/api/crowdfunding/campaigns/{id}/v2/admin/unpause": {
@@ -3736,7 +4136,9 @@
}
],
"summary": "Unpause a campaign and restore previous status",
- "tags": ["Crowdfunding v2 - Admin"]
+ "tags": [
+ "Crowdfunding v2 - Admin"
+ ]
}
},
"/api/crowdfunding/campaigns/{id}/v2/admin/milestones/{milestoneId}/approve": {
@@ -3781,7 +4183,9 @@
}
],
"summary": "Approve a submitted milestone",
- "tags": ["Crowdfunding v2 - Admin"]
+ "tags": [
+ "Crowdfunding v2 - Admin"
+ ]
}
},
"/api/crowdfunding/campaigns/{id}/v2/admin/milestones/{milestoneId}/reject": {
@@ -3826,7 +4230,9 @@
}
],
"summary": "Reject a submitted milestone with feedback",
- "tags": ["Crowdfunding v2 - Admin"]
+ "tags": [
+ "Crowdfunding v2 - Admin"
+ ]
}
},
"/api/crowdfunding/campaigns/{id}/v2/disputes": {
@@ -3870,7 +4276,9 @@
}
],
"summary": "Open a dispute on a campaign (backers only)",
- "tags": ["Crowdfunding v2 - Backer"]
+ "tags": [
+ "Crowdfunding v2 - Backer"
+ ]
}
},
"/api/crowdfunding/campaigns/{id}/v2/disputes/mine": {
@@ -3907,7 +4315,9 @@
}
],
"summary": "List the caller’s disputes on a campaign",
- "tags": ["Crowdfunding v2 - Backer"]
+ "tags": [
+ "Crowdfunding v2 - Backer"
+ ]
}
},
"/api/wallet": {
@@ -3925,7 +4335,9 @@
}
],
"summary": "Get current user wallet",
- "tags": ["wallet"]
+ "tags": [
+ "wallet"
+ ]
}
},
"/api/wallet/details": {
@@ -3943,7 +4355,36 @@
}
],
"summary": "Get wallet details including balances and transactions",
- "tags": ["wallet"]
+ "tags": [
+ "wallet"
+ ]
+ }
+ },
+ "/api/wallet/summary": {
+ "get": {
+ "operationId": "WalletController_getWalletSummary",
+ "parameters": [],
+ "responses": {
+ "200": {
+ "description": "",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/WalletSummaryDto"
+ }
+ }
+ }
+ }
+ },
+ "security": [
+ {
+ "bearer": []
+ }
+ ],
+ "summary": "Total USD balance across the user wallet assets (nav chip)",
+ "tags": [
+ "wallet"
+ ]
}
},
"/api/wallet/balance/{address}": {
@@ -3971,7 +4412,9 @@
}
],
"summary": "Get USDC + XLM balance for any Stellar address",
- "tags": ["wallet"]
+ "tags": [
+ "wallet"
+ ]
}
},
"/api/wallet/sync": {
@@ -3989,7 +4432,9 @@
}
],
"summary": "Sync wallet with blockchain",
- "tags": ["wallet"]
+ "tags": [
+ "wallet"
+ ]
}
},
"/api/wallet/create": {
@@ -4007,7 +4452,9 @@
}
],
"summary": "Create a new wallet for the current user",
- "tags": ["wallet"]
+ "tags": [
+ "wallet"
+ ]
}
},
"/api/wallet/activate": {
@@ -4032,7 +4479,9 @@
}
],
"summary": "Activate wallet on Stellar with sponsored reserves",
- "tags": ["wallet"]
+ "tags": [
+ "wallet"
+ ]
}
},
"/api/wallet/admin/reclaim-dormant": {
@@ -4064,7 +4513,9 @@
}
],
"summary": "Admin: reclaim sponsor XLM from dormant zero-balance wallets",
- "tags": ["wallet"]
+ "tags": [
+ "wallet"
+ ]
}
},
"/api/wallet/trustline/supported": {
@@ -4082,7 +4533,9 @@
}
],
"summary": "List assets that can have a trustline added (e.g. USDC, EURC)",
- "tags": ["wallet"]
+ "tags": [
+ "wallet"
+ ]
}
},
"/api/wallet/trustline": {
@@ -4113,7 +4566,9 @@
}
],
"summary": "Add a trustline for a supported asset (e.g. USDC)",
- "tags": ["wallet"]
+ "tags": [
+ "wallet"
+ ]
}
},
"/api/wallet/send/validate": {
@@ -4180,7 +4635,9 @@
}
],
"summary": "Validate destination address before sending",
- "tags": ["wallet"]
+ "tags": [
+ "wallet"
+ ]
}
},
"/api/wallet/send": {
@@ -4215,42 +4672,9 @@
}
],
"summary": "Send funds from your wallet to a Stellar address",
- "tags": ["wallet"]
- }
- },
- "/api/wallet/payout": {
- "post": {
- "description": "Sends funds from the Boundless platform wallet to a destination. Validates: destination activated, trustline for asset, memo when required, platform balance. Idempotent when idempotencyKey is provided.",
- "operationId": "WalletPayoutController_sendPayout",
- "parameters": [],
- "requestBody": {
- "required": true,
- "content": {
- "application/json": {
- "schema": {
- "$ref": "#/components/schemas/SendPayoutDto"
- }
- }
- }
- },
- "responses": {
- "201": {
- "description": "Payout submitted successfully"
- },
- "400": {
- "description": "Validation or business rule error (e.g. destination not activated, no trustline, memo required)"
- },
- "403": {
- "description": "Forbidden – admin only"
- }
- },
- "security": [
- {
- "JWT-auth": []
- }
- ],
- "summary": "Send payout from platform (Admin only)",
- "tags": ["wallet"]
+ "tags": [
+ "wallet"
+ ]
}
},
"/api/api/comments": {
@@ -4284,7 +4708,9 @@
}
],
"summary": "Create a comment",
- "tags": ["comments"]
+ "tags": [
+ "comments"
+ ]
},
"get": {
"operationId": "CommentsController_listComments",
@@ -4342,7 +4768,12 @@
"description": "Comment status to filter",
"schema": {
"type": "string",
- "enum": ["ACTIVE", "HIDDEN", "DELETED", "PENDING_MODERATION"]
+ "enum": [
+ "ACTIVE",
+ "HIDDEN",
+ "DELETED",
+ "PENDING_MODERATION"
+ ]
}
},
{
@@ -4406,7 +4837,10 @@
"schema": {
"default": "desc",
"type": "string",
- "enum": ["asc", "desc"]
+ "enum": [
+ "asc",
+ "desc"
+ ]
}
}
],
@@ -4416,7 +4850,9 @@
}
},
"summary": "List comments with filters",
- "tags": ["comments"]
+ "tags": [
+ "comments"
+ ]
}
},
"/api/api/comments/{id}": {
@@ -4442,7 +4878,9 @@
}
},
"summary": "Get comment by ID",
- "tags": ["comments"]
+ "tags": [
+ "comments"
+ ]
},
"put": {
"operationId": "CommentsController_updateComment",
@@ -4484,7 +4922,9 @@
}
],
"summary": "Update comment (author only)",
- "tags": ["comments"]
+ "tags": [
+ "comments"
+ ]
},
"delete": {
"operationId": "CommentsController_deleteComment",
@@ -4516,7 +4956,9 @@
}
],
"summary": "Delete comment (author or moderator only)",
- "tags": ["comments"]
+ "tags": [
+ "comments"
+ ]
}
},
"/api/api/comments/entity/{entityType}/{entityId}": {
@@ -4556,7 +4998,9 @@
}
},
"summary": "Get comments for an entity",
- "tags": ["comments"]
+ "tags": [
+ "comments"
+ ]
}
},
"/api/api/comments/{id}/reactions": {
@@ -4597,7 +5041,9 @@
}
],
"summary": "Add reaction to comment",
- "tags": ["comments"]
+ "tags": [
+ "comments"
+ ]
},
"get": {
"operationId": "CommentsController_getReactions",
@@ -4618,7 +5064,9 @@
}
},
"summary": "Get reactions for comment",
- "tags": ["comments"]
+ "tags": [
+ "comments"
+ ]
}
},
"/api/api/comments/{id}/reactions/{reactionType}": {
@@ -4655,7 +5103,9 @@
}
],
"summary": "Remove reaction from comment",
- "tags": ["comments"]
+ "tags": [
+ "comments"
+ ]
}
},
"/api/api/comments/{id}/report": {
@@ -4696,7 +5146,9 @@
}
],
"summary": "Report a comment",
- "tags": ["comments"]
+ "tags": [
+ "comments"
+ ]
}
},
"/api/api/comments/moderation/queue": {
@@ -4734,7 +5186,9 @@
}
],
"summary": "Get moderation queue (moderators only)",
- "tags": ["comment-moderation"]
+ "tags": [
+ "comment-moderation"
+ ]
}
},
"/api/api/comments/moderation/reports": {
@@ -4746,7 +5200,12 @@
"required": false,
"in": "query",
"schema": {
- "enum": ["PENDING", "REVIEWED", "RESOLVED", "DISMISSED"],
+ "enum": [
+ "PENDING",
+ "REVIEWED",
+ "RESOLVED",
+ "DISMISSED"
+ ],
"type": "string"
}
},
@@ -4781,7 +5240,9 @@
}
],
"summary": "Get all reports (moderators only)",
- "tags": ["comment-moderation"]
+ "tags": [
+ "comment-moderation"
+ ]
}
},
"/api/api/comments/moderation/reports/{id}/resolve": {
@@ -4825,7 +5286,9 @@
}
],
"summary": "Resolve a report (moderators only)",
- "tags": ["comment-moderation"]
+ "tags": [
+ "comment-moderation"
+ ]
}
},
"/api/api/comments/moderation/{id}/approve": {
@@ -4859,7 +5322,9 @@
}
],
"summary": "Approve a comment (moderators only)",
- "tags": ["comment-moderation"]
+ "tags": [
+ "comment-moderation"
+ ]
}
},
"/api/api/comments/moderation/{id}/reject": {
@@ -4893,7 +5358,9 @@
}
],
"summary": "Reject/Hide a comment (moderators only)",
- "tags": ["comment-moderation"]
+ "tags": [
+ "comment-moderation"
+ ]
}
},
"/api/api/comments/moderation/{id}/hide": {
@@ -4927,7 +5394,9 @@
}
],
"summary": "Hide a comment (moderators only)",
- "tags": ["comment-moderation"]
+ "tags": [
+ "comment-moderation"
+ ]
}
},
"/api/api/comments/moderation/{id}/restore": {
@@ -4961,7 +5430,9 @@
}
],
"summary": "Restore a hidden comment (moderators only)",
- "tags": ["comment-moderation"]
+ "tags": [
+ "comment-moderation"
+ ]
}
},
"/api/api/comments/moderation/stats": {
@@ -4982,7 +5453,9 @@
}
],
"summary": "Get moderation statistics (moderators only)",
- "tags": ["comment-moderation"]
+ "tags": [
+ "comment-moderation"
+ ]
}
},
"/api/hackathons": {
@@ -5003,7 +5476,9 @@
}
},
"summary": "Get published hackathons",
- "tags": ["Hackathons"]
+ "tags": [
+ "Hackathons"
+ ]
}
},
"/api/hackathons/fee-estimate": {
@@ -5036,7 +5511,9 @@
}
},
"summary": "Get fee estimate for prize pool",
- "tags": ["Hackathons"]
+ "tags": [
+ "Hackathons"
+ ]
}
},
"/api/hackathons/{idOrSlug}/winners": {
@@ -5079,7 +5556,9 @@
}
],
"summary": "Get hackathon winners",
- "tags": ["Hackathons"]
+ "tags": [
+ "Hackathons"
+ ]
}
},
"/api/hackathons/{idOrSlug}/results": {
@@ -5117,7 +5596,9 @@
}
},
"summary": "Get public judging results",
- "tags": ["Hackathons"]
+ "tags": [
+ "Hackathons"
+ ]
}
},
"/api/hackathons/{idOrSlug}": {
@@ -5163,7 +5644,9 @@
}
},
"summary": "Get hackathon by ID or slug",
- "tags": ["Hackathons"]
+ "tags": [
+ "Hackathons"
+ ]
}
},
"/api/hackathons/{idOrSlug}/access/verify": {
@@ -5203,7 +5686,9 @@
}
},
"summary": "Verify a private hackathon access password",
- "tags": ["Hackathons"]
+ "tags": [
+ "Hackathons"
+ ]
}
},
"/api/hackathons/{slug}/contributors": {
@@ -5226,7 +5711,9 @@
}
},
"summary": "List public partner contributors for a hackathon",
- "tags": ["Hackathons"]
+ "tags": [
+ "Hackathons"
+ ]
}
},
"/api/hackathons/{idOrSlug}/follow": {
@@ -5270,7 +5757,9 @@
}
},
"summary": "Follow or unfollow a hackathon",
- "tags": ["Hackathons"]
+ "tags": [
+ "Hackathons"
+ ]
}
},
"/api/hackathons/{idOrSlug}/join": {
@@ -5318,7 +5807,9 @@
}
},
"summary": "Join a hackathon",
- "tags": ["Hackathons"]
+ "tags": [
+ "Hackathons"
+ ]
}
},
"/api/hackathons/{idOrSlug}/leave": {
@@ -5356,7 +5847,9 @@
}
},
"summary": "Leave a hackathon",
- "tags": ["Hackathons"]
+ "tags": [
+ "Hackathons"
+ ]
}
},
"/api/hackathons/{idOrSlug}/participants": {
@@ -5445,7 +5938,9 @@
}
},
"summary": "Get hackathon participants",
- "tags": ["Hackathons"]
+ "tags": [
+ "Hackathons"
+ ]
}
},
"/api/hackathons/{idOrSlug}/submissions": {
@@ -5469,7 +5964,11 @@
"in": "query",
"description": "Filter by submission status",
"schema": {
- "enum": ["SUBMITTED", "SHORTLISTED", "DISQUALIFIED"],
+ "enum": [
+ "SUBMITTED",
+ "SHORTLISTED",
+ "DISQUALIFIED"
+ ],
"type": "string"
}
},
@@ -5532,7 +6031,9 @@
}
},
"summary": "Get hackathon submissions",
- "tags": ["Hackathons - Submissions"]
+ "tags": [
+ "Hackathons - Submissions"
+ ]
},
"post": {
"description": "Submit a project to a hackathon",
@@ -5578,7 +6079,9 @@
}
},
"summary": "Create a hackathon submission",
- "tags": ["Hackathons - Submissions"]
+ "tags": [
+ "Hackathons - Submissions"
+ ]
}
},
"/api/hackathons/{idOrSlug}/submissions/explore": {
@@ -5652,7 +6155,9 @@
}
},
"summary": "Explore hackathon submissions",
- "tags": ["Hackathons - Submissions"]
+ "tags": [
+ "Hackathons - Submissions"
+ ]
}
},
"/api/hackathons/{idOrSlug}/my-submission": {
@@ -5690,7 +6195,9 @@
}
},
"summary": "Get my submission for a hackathon",
- "tags": ["Hackathons - Submissions"]
+ "tags": [
+ "Hackathons - Submissions"
+ ]
}
},
"/api/hackathons/submissions/{submissionId}": {
@@ -5738,7 +6245,9 @@
}
},
"summary": "Update a hackathon submission",
- "tags": ["Hackathons - Submissions"]
+ "tags": [
+ "Hackathons - Submissions"
+ ]
},
"delete": {
"description": "Delete your submission before the deadline",
@@ -5780,7 +6289,9 @@
}
},
"summary": "Withdraw a hackathon submission",
- "tags": ["Hackathons - Submissions"]
+ "tags": [
+ "Hackathons - Submissions"
+ ]
},
"get": {
"description": "Retrieve details of a specific submission",
@@ -5816,7 +6327,9 @@
}
},
"summary": "Get a submission by ID",
- "tags": ["Hackathons - Submissions"]
+ "tags": [
+ "Hackathons - Submissions"
+ ]
}
},
"/api/hackathons/{id}/discussions": {
@@ -5858,7 +6371,10 @@
"in": "query",
"description": "Sort by field",
"schema": {
- "enum": ["createdAt", "updatedAt"],
+ "enum": [
+ "createdAt",
+ "updatedAt"
+ ],
"type": "string"
}
},
@@ -5868,7 +6384,10 @@
"in": "query",
"description": "Sort order",
"schema": {
- "enum": ["asc", "desc"],
+ "enum": [
+ "asc",
+ "desc"
+ ],
"type": "string"
}
},
@@ -5894,7 +6413,9 @@
}
},
"summary": "Get hackathon discussions",
- "tags": ["Hackathons - Discussions"]
+ "tags": [
+ "Hackathons - Discussions"
+ ]
},
"post": {
"description": "Create a new comment in the hackathon discussion thread",
@@ -5924,7 +6445,9 @@
"application/json": {
"schema": {
"type": "object",
- "required": ["content"],
+ "required": [
+ "content"
+ ],
"properties": {
"content": {
"type": "string",
@@ -5953,7 +6476,9 @@
}
},
"summary": "Post a comment in hackathon discussion",
- "tags": ["Hackathons - Discussions"]
+ "tags": [
+ "Hackathons - Discussions"
+ ]
}
},
"/api/hackathons/discussions/{commentId}": {
@@ -5978,7 +6503,9 @@
"application/json": {
"schema": {
"type": "object",
- "required": ["content"],
+ "required": [
+ "content"
+ ],
"properties": {
"content": {
"type": "string",
@@ -6002,7 +6529,9 @@
}
},
"summary": "Update a discussion comment",
- "tags": ["Hackathons - Discussions"]
+ "tags": [
+ "Hackathons - Discussions"
+ ]
},
"delete": {
"description": "Remove your own comment from the hackathon discussion",
@@ -6044,7 +6573,9 @@
}
},
"summary": "Delete a discussion comment",
- "tags": ["Hackathons - Discussions"]
+ "tags": [
+ "Hackathons - Discussions"
+ ]
}
},
"/api/hackathons/discussions/{commentId}/react": {
@@ -6069,11 +6600,18 @@
"application/json": {
"schema": {
"type": "object",
- "required": ["reactionType"],
+ "required": [
+ "reactionType"
+ ],
"properties": {
"reactionType": {
"type": "string",
- "enum": ["LIKE", "LOVE", "CELEBRATE", "INSIGHTFUL"],
+ "enum": [
+ "LIKE",
+ "LOVE",
+ "CELEBRATE",
+ "INSIGHTFUL"
+ ],
"description": "Type of reaction",
"example": "LIKE"
}
@@ -6094,7 +6632,9 @@
}
},
"summary": "React to a comment",
- "tags": ["Hackathons - Discussions"]
+ "tags": [
+ "Hackathons - Discussions"
+ ]
}
},
"/api/hackathons/discussions/{commentId}/replies": {
@@ -6145,7 +6685,9 @@
}
},
"summary": "Get comment replies",
- "tags": ["Hackathons - Discussions"]
+ "tags": [
+ "Hackathons - Discussions"
+ ]
}
},
"/api/hackathons/{id}/teams": {
@@ -6233,7 +6775,9 @@
}
},
"summary": "Get hackathon teams",
- "tags": ["Hackathons - Teams"]
+ "tags": [
+ "Hackathons - Teams"
+ ]
},
"post": {
"description": "Create a new team for the hackathon. Team is closed by default unless skills are specified.",
@@ -6286,7 +6830,9 @@
}
},
"summary": "Create a team",
- "tags": ["Hackathons - Teams"]
+ "tags": [
+ "Hackathons - Teams"
+ ]
}
},
"/api/hackathons/{id}/teams/{teamId}": {
@@ -6341,7 +6887,9 @@
}
},
"summary": "Get team details",
- "tags": ["Hackathons - Teams"]
+ "tags": [
+ "Hackathons - Teams"
+ ]
},
"patch": {
"description": "Update team information (leader only). Team opens when skills are added, closes when removed.",
@@ -6397,7 +6945,9 @@
}
},
"summary": "Update team",
- "tags": ["Hackathons - Teams"]
+ "tags": [
+ "Hackathons - Teams"
+ ]
},
"delete": {
"description": "Disband the team and remove all members. Refuses if the team has already submitted — withdraw the submission first.",
@@ -6446,7 +6996,9 @@
}
},
"summary": "Disband a team (leader only)",
- "tags": ["Hackathons - Teams"]
+ "tags": [
+ "Hackathons - Teams"
+ ]
}
},
"/api/hackathons/{id}/teams/{teamId}/join": {
@@ -6511,7 +7063,9 @@
}
},
"summary": "Join a team",
- "tags": ["Hackathons - Teams"]
+ "tags": [
+ "Hackathons - Teams"
+ ]
}
},
"/api/hackathons/{id}/teams/{teamId}/members/{userId}": {
@@ -6570,7 +7124,9 @@
}
},
"summary": "Remove a member from the team (leader only)",
- "tags": ["Hackathons - Teams"]
+ "tags": [
+ "Hackathons - Teams"
+ ]
}
},
"/api/hackathons/{id}/teams/{teamId}/leave": {
@@ -6618,7 +7174,9 @@
}
},
"summary": "Leave a team",
- "tags": ["Hackathons - Teams"]
+ "tags": [
+ "Hackathons - Teams"
+ ]
}
},
"/api/hackathons/{id}/my-team": {
@@ -6663,7 +7221,9 @@
}
},
"summary": "Get my team",
- "tags": ["Hackathons - Teams"]
+ "tags": [
+ "Hackathons - Teams"
+ ]
}
},
"/api/hackathons/{id}/teams/{teamId}/invite": {
@@ -6728,7 +7288,9 @@
}
},
"summary": "Invite a user to join team",
- "tags": ["Hackathons - Teams"]
+ "tags": [
+ "Hackathons - Teams"
+ ]
}
},
"/api/hackathons/{id}/my-invitations": {
@@ -6750,7 +7312,12 @@
"in": "query",
"description": "Filter by invitation status",
"schema": {
- "enum": ["pending", "accepted", "rejected", "expired"],
+ "enum": [
+ "pending",
+ "accepted",
+ "rejected",
+ "expired"
+ ],
"type": "string"
}
},
@@ -6777,7 +7344,9 @@
}
},
"summary": "Get my team invitations",
- "tags": ["Hackathons - Teams"]
+ "tags": [
+ "Hackathons - Teams"
+ ]
}
},
"/api/hackathons/{id}/invitations/{inviteId}/accept": {
@@ -6832,7 +7401,9 @@
}
},
"summary": "Accept team invitation",
- "tags": ["Hackathons - Teams"]
+ "tags": [
+ "Hackathons - Teams"
+ ]
}
},
"/api/hackathons/{id}/invitations/{inviteId}/reject": {
@@ -6887,7 +7458,9 @@
}
},
"summary": "Reject team invitation",
- "tags": ["Hackathons - Teams"]
+ "tags": [
+ "Hackathons - Teams"
+ ]
}
},
"/api/hackathons/{id}/invitations/{inviteId}": {
@@ -6935,7 +7508,9 @@
}
},
"summary": "Cancel team invitation",
- "tags": ["Hackathons - Teams"]
+ "tags": [
+ "Hackathons - Teams"
+ ]
}
},
"/api/hackathons/{id}/teams/{teamId}/invitations": {
@@ -6967,7 +7542,12 @@
"in": "query",
"description": "Filter by invitation status",
"schema": {
- "enum": ["pending", "accepted", "rejected", "expired"],
+ "enum": [
+ "pending",
+ "accepted",
+ "rejected",
+ "expired"
+ ],
"type": "string"
}
},
@@ -7000,7 +7580,9 @@
}
},
"summary": "Get team invitations",
- "tags": ["Hackathons - Teams"]
+ "tags": [
+ "Hackathons - Teams"
+ ]
}
},
"/api/hackathons/{id}/teams/{teamId}/roles/toggle-hired": {
@@ -7058,7 +7640,9 @@
}
},
"summary": "Toggle role hired status",
- "tags": ["Hackathons - Teams"]
+ "tags": [
+ "Hackathons - Teams"
+ ]
}
},
"/api/hackathons/{id}/teams/{teamId}/transfer-leadership": {
@@ -7126,7 +7710,9 @@
}
},
"summary": "Transfer team leadership",
- "tags": ["Hackathons - Teams"]
+ "tags": [
+ "Hackathons - Teams"
+ ]
}
},
"/api/organizations/{organizationId}/hackathons/draft/{id}": {
@@ -7172,7 +7758,9 @@
}
],
"summary": "Delete hackathon draft",
- "tags": ["Organization Hackathons - Drafts"]
+ "tags": [
+ "Organization Hackathons - Drafts"
+ ]
},
"patch": {
"description": "Applies any subset of wizard sections in a single PATCH. Send one section for a per-step \"Continue\", or several for \"Save draft\". Each present section is validated and transformed independently, then merged into one write.",
@@ -7214,7 +7802,10 @@
"name": "Web3 Innovation Hackathon",
"banner": "https://example.com/banner.jpg",
"description": "A hackathon for building the future of Web3",
- "categories": ["DeFi", "NFTs"],
+ "categories": [
+ "DeFi",
+ "NFTs"
+ ],
"venueType": "virtual",
"tagline": "Build the future of Web3"
}
@@ -7227,7 +7818,10 @@
"name": "Web3 Innovation Hackathon",
"banner": "https://example.com/banner.jpg",
"description": "A hackathon for building the future of Web3",
- "categories": ["DeFi", "NFTs"],
+ "categories": [
+ "DeFi",
+ "NFTs"
+ ],
"venueType": "virtual",
"tagline": "Build the future of Web3"
},
@@ -7266,7 +7860,9 @@
}
],
"summary": "Update one or more sections of a hackathon draft",
- "tags": ["Organization Hackathons - Drafts"]
+ "tags": [
+ "Organization Hackathons - Drafts"
+ ]
},
"get": {
"description": "Retrieves the current state of a hackathon draft for editing",
@@ -7317,7 +7913,9 @@
}
],
"summary": "Get hackathon draft details",
- "tags": ["Organization Hackathons - Drafts"]
+ "tags": [
+ "Organization Hackathons - Drafts"
+ ]
}
},
"/api/organizations/{organizationId}/hackathons": {
@@ -7357,7 +7955,11 @@
"in": "query",
"description": "Filter by hackathon status",
"schema": {
- "enum": ["upcoming", "active", "ended"],
+ "enum": [
+ "upcoming",
+ "active",
+ "ended"
+ ],
"type": "string"
}
}
@@ -7380,7 +7982,9 @@
}
],
"summary": "Get organization's published hackathons",
- "tags": ["Organization Hackathons - Drafts"]
+ "tags": [
+ "Organization Hackathons - Drafts"
+ ]
}
},
"/api/organizations/{organizationId}/hackathons/draft": {
@@ -7423,7 +8027,9 @@
}
],
"summary": "Create a new hackathon draft for an organization",
- "tags": ["Organization Hackathons - Drafts"]
+ "tags": [
+ "Organization Hackathons - Drafts"
+ ]
}
},
"/api/organizations/{organizationId}/hackathons/drafts": {
@@ -7463,7 +8069,9 @@
}
],
"summary": "Get organization's hackathon drafts",
- "tags": ["Organization Hackathons - Drafts"]
+ "tags": [
+ "Organization Hackathons - Drafts"
+ ]
}
},
"/api/organizations/{organizationId}/hackathons/hackathons/{id}/announcement-preview": {
@@ -7492,7 +8100,64 @@
}
],
"summary": "Preview the marketing announcement audience size",
- "tags": ["Organization Hackathons - Drafts"]
+ "tags": [
+ "Organization Hackathons - Drafts"
+ ]
+ }
+ },
+ "/api/organizations/{organizationId}/hackathons/draft/clarify": {
+ "post": {
+ "description": "A cheap pre-draft gate: returns { ready: true } when the brief is specific enough, or 1-3 clarifying questions (duration / structure / participation) the organizer answers before drafting.",
+ "operationId": "OrganizationHackathonsAiController_clarify",
+ "parameters": [
+ {
+ "name": "organizationId",
+ "required": true,
+ "in": "path",
+ "description": "Organization ID",
+ "schema": {
+ "example": "org_1234567890",
+ "type": "string"
+ }
+ }
+ ],
+ "requestBody": {
+ "required": true,
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/ClarifyHackathonBriefDto"
+ }
+ }
+ }
+ },
+ "responses": {
+ "200": {
+ "description": "",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/ClarifyHackathonDraftResponseDto"
+ }
+ }
+ }
+ },
+ "400": {
+ "description": "Invalid request"
+ },
+ "404": {
+ "description": "Resource not found"
+ }
+ },
+ "security": [
+ {
+ "bearer": []
+ }
+ ],
+ "summary": "Triage a hackathon brief for clarifying questions (Organizer Assist)",
+ "tags": [
+ "Organization Hackathons - AI Assist"
+ ]
}
},
"/api/organizations/{organizationId}/hackathons/draft/from-brief": {
@@ -7545,7 +8210,51 @@
}
],
"summary": "Generate a hackathon draft from a brief (Organizer Assist)",
- "tags": ["Organization Hackathons - AI Assist"]
+ "tags": [
+ "Organization Hackathons - AI Assist"
+ ]
+ }
+ },
+ "/api/organizations/{organizationId}/hackathons/draft/from-brief/stream": {
+ "post": {
+ "description": "Server-Sent Events: `partial` frames carry the draft taking shape for a live reveal, then a `done` frame carries { draftId, draft }. Errors arrive as an `error` frame (or a normal 4xx before the stream opens, e.g. quota).",
+ "operationId": "OrganizationHackathonsAiController_generateFromBriefStream",
+ "parameters": [
+ {
+ "name": "organizationId",
+ "required": true,
+ "in": "path",
+ "description": "Organization ID",
+ "schema": {
+ "example": "org_1234567890",
+ "type": "string"
+ }
+ }
+ ],
+ "requestBody": {
+ "required": true,
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/GenerateDraftFromBriefDto"
+ }
+ }
+ }
+ },
+ "responses": {
+ "201": {
+ "description": ""
+ }
+ },
+ "security": [
+ {
+ "bearer": []
+ }
+ ],
+ "summary": "Generate a hackathon draft from a brief, streaming (Organizer Assist)",
+ "tags": [
+ "Organization Hackathons - AI Assist"
+ ]
}
},
"/api/organizations/{organizationId}/hackathons/draft/{id}/regenerate-section": {
@@ -7607,7 +8316,9 @@
}
],
"summary": "Regenerate one section of a draft (Organizer Assist)",
- "tags": ["Organization Hackathons - AI Assist"]
+ "tags": [
+ "Organization Hackathons - AI Assist"
+ ]
}
},
"/api/organizations/{organizationId}/hackathons/{id}/visibility": {
@@ -7664,7 +8375,9 @@
}
],
"summary": "Update hackathon submission visibility settings",
- "tags": ["Organization Hackathons - Submissions"]
+ "tags": [
+ "Organization Hackathons - Submissions"
+ ]
}
},
"/api/organizations/{organizationId}/hackathons/{hackathonId}/submissions/{submissionId}/review": {
@@ -7753,7 +8466,9 @@
}
],
"summary": "Review a submission",
- "tags": ["Organization Hackathons - Submissions"]
+ "tags": [
+ "Organization Hackathons - Submissions"
+ ]
}
},
"/api/organizations/{organizationId}/hackathons/{idOrSlug}/participants": {
@@ -7850,7 +8565,9 @@
}
],
"summary": "Get hackathon participants (organization)",
- "tags": ["Organization Hackathons - Submissions"]
+ "tags": [
+ "Organization Hackathons - Submissions"
+ ]
}
},
"/api/organizations/{organizationId}/hackathons/{hackathonId}/submissions/{submissionId}/score-override": {
@@ -7913,7 +8630,9 @@
"description": "Scores for each criterion"
}
},
- "required": ["criteriaScores"]
+ "required": [
+ "criteriaScores"
+ ]
}
}
}
@@ -7962,7 +8681,9 @@
}
],
"summary": "Organizer: Override submission scoring",
- "tags": ["Organization Hackathons - Submissions"]
+ "tags": [
+ "Organization Hackathons - Submissions"
+ ]
}
},
"/api/organizations/{organizationId}/hackathons/{hackathonId}/submissions/{submissionId}/disqualify": {
@@ -8051,7 +8772,9 @@
}
],
"summary": "Disqualify a submission",
- "tags": ["Organization Hackathons - Submissions"]
+ "tags": [
+ "Organization Hackathons - Submissions"
+ ]
}
},
"/api/organizations/{organizationId}/hackathons/{hackathonId}/submissions/bulk-action": {
@@ -8132,7 +8855,9 @@
}
],
"summary": "Perform bulk action on submissions",
- "tags": ["Organization Hackathons - Submissions"]
+ "tags": [
+ "Organization Hackathons - Submissions"
+ ]
}
},
"/api/organizations/{organizationId}/hackathons/{hackathonId}/submissions/{submissionId}/rank": {
@@ -8191,7 +8916,9 @@
"minimum": 1
}
},
- "required": ["rank"]
+ "required": [
+ "rank"
+ ]
}
}
}
@@ -8229,7 +8956,9 @@
}
],
"summary": "Set submission rank",
- "tags": ["Organization Hackathons - Submissions"]
+ "tags": [
+ "Organization Hackathons - Submissions"
+ ]
}
},
"/api/organizations/{organizationId}/hackathons/{hackathonId}/analytics": {
@@ -8292,7 +9021,9 @@
}
],
"summary": "Get hackathon analytics",
- "tags": ["Organization Hackathons - Submissions"]
+ "tags": [
+ "Organization Hackathons - Submissions"
+ ]
}
},
"/api/hackathons/{idOrSlug}/announcements": {
@@ -8347,7 +9078,9 @@
}
},
"summary": "Get hackathon announcements",
- "tags": ["Hackathons - Announcements"]
+ "tags": [
+ "Hackathons - Announcements"
+ ]
}
},
"/api/hackathons/announcements/{announcementId}": {
@@ -8384,7 +9117,9 @@
}
},
"summary": "Get announcement details",
- "tags": ["Hackathons - Announcements"]
+ "tags": [
+ "Hackathons - Announcements"
+ ]
}
},
"/api/organizations/{organizationId}/hackathons/{idOrSlug}/announcements": {
@@ -8447,7 +9182,9 @@
}
],
"summary": "Create a hackathon announcement",
- "tags": ["Organization Hackathons - Announcements"]
+ "tags": [
+ "Organization Hackathons - Announcements"
+ ]
}
},
"/api/organizations/{organizationId}/hackathons/{idOrSlug}/announcements/{announcementId}": {
@@ -8519,7 +9256,9 @@
}
],
"summary": "Update a hackathon announcement",
- "tags": ["Organization Hackathons - Announcements"]
+ "tags": [
+ "Organization Hackathons - Announcements"
+ ]
},
"delete": {
"description": "Deletes an announcement for an organization hackathon",
@@ -8572,7 +9311,9 @@
}
],
"summary": "Delete a hackathon announcement",
- "tags": ["Organization Hackathons - Announcements"]
+ "tags": [
+ "Organization Hackathons - Announcements"
+ ]
}
},
"/api/organizations/{organizationId}/hackathons/{idOrSlug}/announcements/{announcementId}/publish": {
@@ -8634,7 +9375,9 @@
}
],
"summary": "Publish a draft announcement",
- "tags": ["Organization Hackathons - Announcements"]
+ "tags": [
+ "Organization Hackathons - Announcements"
+ ]
}
},
"/api/hackathons/{idOrSlug}/judging/criteria": {
@@ -8674,7 +9417,9 @@
}
},
"summary": "Get hackathon judging criteria",
- "tags": ["Hackathons - Judging"]
+ "tags": [
+ "Hackathons - Judging"
+ ]
}
},
"/api/hackathons/judging/score": {
@@ -8749,7 +9494,9 @@
}
],
"summary": "Judge: Submit criterion-based scores",
- "tags": ["Hackathons - Judging"]
+ "tags": [
+ "Hackathons - Judging"
+ ]
}
},
"/api/hackathons/{idOrSlug}/judging/submissions": {
@@ -8804,7 +9551,12 @@
"schema": {
"default": "date",
"type": "string",
- "enum": ["date", "name", "score", "rank"]
+ "enum": [
+ "date",
+ "name",
+ "score",
+ "rank"
+ ]
}
},
{
@@ -8815,7 +9567,10 @@
"schema": {
"default": "desc",
"type": "string",
- "enum": ["asc", "desc"]
+ "enum": [
+ "asc",
+ "desc"
+ ]
}
}
],
@@ -8843,7 +9598,9 @@
}
],
"summary": "Get submissions for judging",
- "tags": ["Hackathons - Judging"]
+ "tags": [
+ "Hackathons - Judging"
+ ]
}
},
"/api/organizations/{organizationId}/hackathons/{idOrSlug}/judging/judges": {
@@ -8906,7 +9663,9 @@
}
],
"summary": "Add a judge to a hackathon",
- "tags": ["Organization Hackathons - Judging"]
+ "tags": [
+ "Organization Hackathons - Judging"
+ ]
},
"get": {
"description": "Retrieves the list of judges assigned to the hackathon",
@@ -8960,7 +9719,9 @@
}
],
"summary": "Get hackathon judges",
- "tags": ["Organization Hackathons - Judging"]
+ "tags": [
+ "Organization Hackathons - Judging"
+ ]
}
},
"/api/organizations/{organizationId}/hackathons/{idOrSlug}/judging/judges/{userId}": {
@@ -9015,7 +9776,9 @@
}
],
"summary": "Remove a judge from a hackathon",
- "tags": ["Organization Hackathons - Judging"]
+ "tags": [
+ "Organization Hackathons - Judging"
+ ]
}
},
"/api/organizations/{organizationId}/hackathons/{idOrSlug}/judging/results": {
@@ -9080,7 +9843,12 @@
"schema": {
"default": "score",
"type": "string",
- "enum": ["score", "name", "rank", "date"]
+ "enum": [
+ "score",
+ "name",
+ "rank",
+ "date"
+ ]
}
},
{
@@ -9091,7 +9859,10 @@
"schema": {
"default": "desc",
"type": "string",
- "enum": ["asc", "desc"]
+ "enum": [
+ "asc",
+ "desc"
+ ]
}
},
{
@@ -9129,7 +9900,9 @@
}
],
"summary": "Get aggregated judging results",
- "tags": ["Organization Hackathons - Judging"]
+ "tags": [
+ "Organization Hackathons - Judging"
+ ]
}
},
"/api/organizations/{organizationId}/hackathons/{idOrSlug}/judging/submissions/{submissionId}/scores": {
@@ -9194,7 +9967,9 @@
}
],
"summary": "Get individual judge scores for a submission",
- "tags": ["Organization Hackathons - Judging"]
+ "tags": [
+ "Organization Hackathons - Judging"
+ ]
}
},
"/api/organizations/{organizationId}/hackathons/{idOrSlug}/judging/winners": {
@@ -9259,7 +10034,12 @@
"schema": {
"default": "score",
"type": "string",
- "enum": ["score", "name", "rank", "date"]
+ "enum": [
+ "score",
+ "name",
+ "rank",
+ "date"
+ ]
}
},
{
@@ -9270,7 +10050,10 @@
"schema": {
"default": "desc",
"type": "string",
- "enum": ["asc", "desc"]
+ "enum": [
+ "asc",
+ "desc"
+ ]
}
},
{
@@ -9311,7 +10094,9 @@
}
],
"summary": "Get winner ranking",
- "tags": ["Organization Hackathons - Judging"]
+ "tags": [
+ "Organization Hackathons - Judging"
+ ]
}
},
"/api/organizations/{organizationId}/hackathons/{idOrSlug}/judging/coverage": {
@@ -9354,7 +10139,9 @@
}
],
"summary": "Full judges × submissions coverage matrix",
- "tags": ["Organization Hackathons - Judging"]
+ "tags": [
+ "Organization Hackathons - Judging"
+ ]
}
},
"/api/organizations/{organizationId}/hackathons/{idOrSlug}/judging/preview-allocation": {
@@ -9397,7 +10184,9 @@
}
],
"summary": "Preview the allocator outcome before publishing",
- "tags": ["Organization Hackathons - Judging"]
+ "tags": [
+ "Organization Hackathons - Judging"
+ ]
}
},
"/api/organizations/{organizationId}/hackathons/{idOrSlug}/judging/allocation-parity": {
@@ -9440,7 +10229,9 @@
}
],
"summary": "Phase 4 gate: new allocator vs legacy parity (compute-only)",
- "tags": ["Organization Hackathons - Judging"]
+ "tags": [
+ "Organization Hackathons - Judging"
+ ]
}
},
"/api/organizations/{organizationId}/hackathons/{idOrSlug}/judging/completeness": {
@@ -9483,7 +10274,9 @@
}
],
"summary": "Preview judging completeness",
- "tags": ["Organization Hackathons - Judging"]
+ "tags": [
+ "Organization Hackathons - Judging"
+ ]
}
},
"/api/organizations/{organizationId}/hackathons/{idOrSlug}/judging/publish-results": {
@@ -9529,7 +10322,9 @@
}
],
"summary": "Publish results",
- "tags": ["Organization Hackathons - Judging"]
+ "tags": [
+ "Organization Hackathons - Judging"
+ ]
}
},
"/api/organizations/{organizationId}/hackathons/{idOrSlug}/judging/winners/board": {
@@ -9572,7 +10367,9 @@
}
],
"summary": "Get the winners board",
- "tags": ["Organization Hackathons - Judging"]
+ "tags": [
+ "Organization Hackathons - Judging"
+ ]
}
},
"/api/organizations/{organizationId}/hackathons/{idOrSlug}/judging/winners/placements/{placementId}": {
@@ -9634,7 +10431,9 @@
}
],
"summary": "Pick the winner for a placement",
- "tags": ["Organization Hackathons - Judging"]
+ "tags": [
+ "Organization Hackathons - Judging"
+ ]
},
"delete": {
"description": "Removes the organizer override draft for a placement, reverting it to the score-based default. Only valid before results are published.",
@@ -9684,7 +10483,9 @@
}
],
"summary": "Clear an organizer pick for a placement",
- "tags": ["Organization Hackathons - Judging"]
+ "tags": [
+ "Organization Hackathons - Judging"
+ ]
}
},
"/api/organizations/{organizationId}/hackathons/{idOrSlug}/judging/winners/placements/{placementId}/withhold": {
@@ -9736,7 +10537,9 @@
}
],
"summary": "Leave a placement unawarded",
- "tags": ["Organization Hackathons - Judging"]
+ "tags": [
+ "Organization Hackathons - Judging"
+ ]
}
},
"/api/organizations/{organizationId}/hackathons/{idOrSlug}/judging/invitations": {
@@ -9789,7 +10592,9 @@
}
],
"summary": "Invite a judge by email",
- "tags": ["Organization Hackathons - Judging"]
+ "tags": [
+ "Organization Hackathons - Judging"
+ ]
},
"get": {
"operationId": "OrganizationHackathonsJudgingController_listInvitations",
@@ -9829,7 +10634,9 @@
}
],
"summary": "List judge invitations for this hackathon",
- "tags": ["Organization Hackathons - Judging"]
+ "tags": [
+ "Organization Hackathons - Judging"
+ ]
}
},
"/api/organizations/{organizationId}/hackathons/{idOrSlug}/judging/invitations/bulk": {
@@ -9892,7 +10699,9 @@
}
],
"summary": "Bulk-invite judges (e.g. from a CSV import)",
- "tags": ["Organization Hackathons - Judging"]
+ "tags": [
+ "Organization Hackathons - Judging"
+ ]
}
},
"/api/organizations/{organizationId}/hackathons/{idOrSlug}/judging/invitations/{invitationId}": {
@@ -9943,7 +10752,9 @@
}
],
"summary": "Cancel (revoke) a pending judge invitation",
- "tags": ["Organization Hackathons - Judging"]
+ "tags": [
+ "Organization Hackathons - Judging"
+ ]
}
},
"/api/organizations/{organizationId}/hackathons/{idOrSlug}/judging/invitations/{invitationId}/resend": {
@@ -9995,7 +10806,9 @@
}
],
"summary": "Resend a pending judge invitation",
- "tags": ["Organization Hackathons - Judging"]
+ "tags": [
+ "Organization Hackathons - Judging"
+ ]
}
},
"/api/organizations/{organizationId}/hackathons/{idOrSlug}/judging/recommendation-thresholds": {
@@ -10049,7 +10862,9 @@
}
],
"summary": "List recommendation thresholds",
- "tags": ["Organization Hackathons - Judging"]
+ "tags": [
+ "Organization Hackathons - Judging"
+ ]
},
"put": {
"description": "Creates or updates the top-X% threshold for a scope. Omit trackId for the overall cut.",
@@ -10109,7 +10924,9 @@
}
],
"summary": "Set a recommendation threshold (overall or per-track)",
- "tags": ["Organization Hackathons - Judging"]
+ "tags": [
+ "Organization Hackathons - Judging"
+ ]
}
},
"/api/organizations/{organizationId}/hackathons/{idOrSlug}/judging/recommendation-thresholds/{thresholdId}": {
@@ -10159,7 +10976,9 @@
}
],
"summary": "Delete a recommendation threshold",
- "tags": ["Organization Hackathons - Judging"]
+ "tags": [
+ "Organization Hackathons - Judging"
+ ]
}
},
"/api/organizations/{organizationId}/hackathons/{idOrSlug}/judging/recommendation-thresholds/compute": {
@@ -10211,7 +11030,9 @@
}
],
"summary": "Recompute recommended flags from the configured thresholds",
- "tags": ["Organization Hackathons - Judging"]
+ "tags": [
+ "Organization Hackathons - Judging"
+ ]
}
},
"/api/organizations/{organizationId}/hackathons/{idOrSlug}/judging/submissions/{submissionId}/ai-score": {
@@ -10268,7 +11089,9 @@
}
],
"summary": "Run AI Judging Assist on a submission (advisory)",
- "tags": ["Organization Hackathons - Judging"]
+ "tags": [
+ "Organization Hackathons - Judging"
+ ]
}
},
"/api/organizations/{organizationId}/hackathons/{idOrSlug}/judging/ai-scorecards": {
@@ -10310,7 +11133,9 @@
}
],
"summary": "List AI Judging Assist scorecards (advisory)",
- "tags": ["Organization Hackathons - Judging"]
+ "tags": [
+ "Organization Hackathons - Judging"
+ ]
}
},
"/api/organizations/{organizationId}/hackathons/{idOrSlug}/judging/submissions/{submissionId}/ai-score/promote": {
@@ -10361,7 +11186,9 @@
}
],
"summary": "Promote an AI scorecard into a counting score",
- "tags": ["Organization Hackathons - Judging"]
+ "tags": [
+ "Organization Hackathons - Judging"
+ ]
}
},
"/api/organizations/{organizationId}/hackathons/{idOrSlug}/judging/submissions/{submissionId}/ai-score/unpromote": {
@@ -10411,7 +11238,9 @@
}
],
"summary": "Reverse a promotion (back to advisory-only)",
- "tags": ["Organization Hackathons - Judging"]
+ "tags": [
+ "Organization Hackathons - Judging"
+ ]
}
},
"/api/judge/invitations": {
@@ -10433,7 +11262,9 @@
}
],
"summary": "List my pending judge invitations",
- "tags": ["Judge"]
+ "tags": [
+ "Judge"
+ ]
}
},
"/api/judge/invitations/{token}": {
@@ -10465,7 +11296,9 @@
}
],
"summary": "Preview an invitation by token",
- "tags": ["Judge"]
+ "tags": [
+ "Judge"
+ ]
}
},
"/api/judge/invitations/{token}/accept": {
@@ -10507,7 +11340,9 @@
}
],
"summary": "Accept a judge invitation",
- "tags": ["Judge"]
+ "tags": [
+ "Judge"
+ ]
}
},
"/api/judge/invitations/{token}/decline": {
@@ -10538,7 +11373,9 @@
}
],
"summary": "Decline a judge invitation",
- "tags": ["Judge"]
+ "tags": [
+ "Judge"
+ ]
}
},
"/api/judge/hackathons": {
@@ -10563,7 +11400,9 @@
}
],
"summary": "List hackathons I'm assigned to judge",
- "tags": ["Judge"]
+ "tags": [
+ "Judge"
+ ]
}
},
"/api/judge/hackathons/{hackathonId}": {
@@ -10596,7 +11435,9 @@
}
],
"summary": "Get judge-scoped hackathon overview",
- "tags": ["Judge"]
+ "tags": [
+ "Judge"
+ ]
}
},
"/api/judge/hackathons/{hackathonId}/submissions": {
@@ -10642,7 +11483,12 @@
"schema": {
"default": "date",
"type": "string",
- "enum": ["date", "name", "score", "rank"]
+ "enum": [
+ "date",
+ "name",
+ "score",
+ "rank"
+ ]
}
},
{
@@ -10653,7 +11499,10 @@
"schema": {
"default": "desc",
"type": "string",
- "enum": ["asc", "desc"]
+ "enum": [
+ "asc",
+ "desc"
+ ]
}
},
{
@@ -10688,7 +11537,9 @@
}
],
"summary": "List submissions for scoring",
- "tags": ["Judge"]
+ "tags": [
+ "Judge"
+ ]
}
},
"/api/judge/hackathons/{hackathonId}/submissions/{submissionId}": {
@@ -10727,7 +11578,9 @@
}
],
"summary": "Get one submission with my score",
- "tags": ["Judge"]
+ "tags": [
+ "Judge"
+ ]
}
},
"/api/judge/hackathons/{hackathonId}/submissions/{submissionId}/neighbors": {
@@ -10766,7 +11619,9 @@
}
],
"summary": "Queue neighbors for the scoring page",
- "tags": ["Judge"]
+ "tags": [
+ "Judge"
+ ]
}
},
"/api/judge/hackathons/{hackathonId}/criteria": {
@@ -10795,7 +11650,9 @@
}
],
"summary": "Get judging criteria for this hackathon",
- "tags": ["Judge"]
+ "tags": [
+ "Judge"
+ ]
}
},
"/api/judge/hackathons/{hackathonId}/results": {
@@ -10825,7 +11682,9 @@
}
],
"summary": "Final results for this hackathon",
- "tags": ["Judge"]
+ "tags": [
+ "Judge"
+ ]
}
},
"/api/judge/hackathons/{hackathonId}/submissions/{submissionId}/score": {
@@ -10864,7 +11723,9 @@
}
],
"summary": "Submit (or update) my scores for a submission",
- "tags": ["Judge"]
+ "tags": [
+ "Judge"
+ ]
}
},
"/api/judge/hackathons/{hackathonId}/submissions/{submissionId}/ai-score": {
@@ -10905,7 +11766,9 @@
}
],
"summary": "AI advisory scorecard for a submission (judge view)",
- "tags": ["Judge"]
+ "tags": [
+ "Judge"
+ ]
},
"post": {
"description": "Generates (or regenerates) the advisory AI scorecard against the rubric. Advisory only; the judge still enters and submits their own score.",
@@ -10944,7 +11807,9 @@
}
],
"summary": "Run AI scoring for a submission (judge assist)",
- "tags": ["Judge"]
+ "tags": [
+ "Judge"
+ ]
}
},
"/api/organizations/{organizationId}/hackathons/{id}/statistics": {
@@ -11032,7 +11897,9 @@
}
],
"summary": "Get hackathon statistics (organizers only)",
- "tags": ["Organization Hackathons - Updates"]
+ "tags": [
+ "Organization Hackathons - Updates"
+ ]
}
},
"/api/organizations/{organizationId}/hackathons/{id}/content": {
@@ -11102,7 +11969,9 @@
}
],
"summary": "Update published hackathon content",
- "tags": ["Organization Hackathons - Updates"]
+ "tags": [
+ "Organization Hackathons - Updates"
+ ]
}
},
"/api/organizations/{organizationId}/hackathons/{id}/schedule": {
@@ -11172,7 +12041,9 @@
}
],
"summary": "Update published hackathon schedule",
- "tags": ["Organization Hackathons - Updates"]
+ "tags": [
+ "Organization Hackathons - Updates"
+ ]
}
},
"/api/organizations/{organizationId}/hackathons/{id}/financial": {
@@ -11242,7 +12113,9 @@
}
],
"summary": "Update published hackathon financial settings",
- "tags": ["Organization Hackathons - Updates"]
+ "tags": [
+ "Organization Hackathons - Updates"
+ ]
}
},
"/api/organizations/{organizationId}/hackathons/{id}/financial/preview": {
@@ -11379,7 +12252,9 @@
}
],
"summary": "Preview financial update cost (dry-run)",
- "tags": ["Organization Hackathons - Updates"]
+ "tags": [
+ "Organization Hackathons - Updates"
+ ]
}
},
"/api/organizations/{organizationId}/hackathons/{id}/advanced-settings": {
@@ -11449,7 +12324,9 @@
}
],
"summary": "Update published hackathon advanced settings",
- "tags": ["Organization Hackathons - Updates"]
+ "tags": [
+ "Organization Hackathons - Updates"
+ ]
}
},
"/api/organizations/{organizationId}/hackathons/{id}/access": {
@@ -11519,7 +12396,9 @@
}
],
"summary": "Set hackathon visibility + access password (owner/admin)",
- "tags": ["Organization Hackathons - Updates"]
+ "tags": [
+ "Organization Hackathons - Updates"
+ ]
}
},
"/api/organizations/{organizationId}/hackathons/{id}/export": {
@@ -11553,7 +12432,10 @@
"in": "query",
"description": "Output format",
"schema": {
- "enum": ["csv", "pdf"],
+ "enum": [
+ "csv",
+ "pdf"
+ ],
"type": "string"
}
},
@@ -11610,7 +12492,9 @@
}
],
"summary": "Export hackathon data (organizer only)",
- "tags": ["Organization Hackathons - Export"]
+ "tags": [
+ "Organization Hackathons - Export"
+ ]
}
},
"/api/organizations/{organizationId}/hackathons/{hackathonId}/partners/invite": {
@@ -11657,7 +12541,9 @@
}
],
"summary": "Invite a partner to contribute to the hackathon prize pool",
- "tags": ["Hackathons - Organizer Partners"]
+ "tags": [
+ "Hackathons - Organizer Partners"
+ ]
}
},
"/api/organizations/{organizationId}/hackathons/{hackathonId}/partners/contributions": {
@@ -11727,7 +12613,9 @@
}
],
"summary": "List partner contributions for a hackathon",
- "tags": ["Hackathons - Organizer Partners"]
+ "tags": [
+ "Hackathons - Organizer Partners"
+ ]
}
},
"/api/organizations/{organizationId}/hackathons/{hackathonId}/partners/contributions/{contributionId}": {
@@ -11773,7 +12661,9 @@
}
],
"summary": "Cancel a pending partner invitation",
- "tags": ["Hackathons - Organizer Partners"]
+ "tags": [
+ "Hackathons - Organizer Partners"
+ ]
}
},
"/api/organizations/{organizationId}/hackathons/{hackathonId}/partners/contributions/{contributionId}/allocations": {
@@ -11817,7 +12707,9 @@
}
],
"summary": "Get allocation summary for a contribution",
- "tags": ["Hackathons - Organizer Partners"]
+ "tags": [
+ "Hackathons - Organizer Partners"
+ ]
}
},
"/api/organizations/{organizationId}/hackathons/{hackathonId}/partners/contributions/{contributionId}/allocate": {
@@ -11871,7 +12763,9 @@
}
],
"summary": "Allocate a partner contribution into prize tiers",
- "tags": ["Hackathons - Organizer Partners"]
+ "tags": [
+ "Hackathons - Organizer Partners"
+ ]
}
},
"/api/organizations/{organizationId}/hackathons/{hackathonId}/partners/prizes": {
@@ -11907,7 +12801,9 @@
}
],
"summary": "List prizes + placements available for allocation",
- "tags": ["Hackathons - Organizer Partners"]
+ "tags": [
+ "Hackathons - Organizer Partners"
+ ]
}
},
"/api/organizations/{organizationId}/hackathons/{hackathonId}/partners/allocations/{allocationId}": {
@@ -11951,7 +12847,9 @@
}
],
"summary": "Undo a single allocation",
- "tags": ["Hackathons - Organizer Partners"]
+ "tags": [
+ "Hackathons - Organizer Partners"
+ ]
}
},
"/api/partners/contribute/{token}": {
@@ -11974,7 +12872,9 @@
}
},
"summary": "Get partner invitation details by token (public, tokenized)",
- "tags": ["Partner Contributions"]
+ "tags": [
+ "Partner Contributions"
+ ]
}
},
"/api/partners/contribute/{token}/prepare-fund-tx": {
@@ -12008,7 +12908,9 @@
}
},
"summary": "Build an unsigned ADD_FUNDS escrow transaction",
- "tags": ["Partner Contributions"]
+ "tags": [
+ "Partner Contributions"
+ ]
}
},
"/api/partners/contribute/{token}/submit-tx": {
@@ -12042,7 +12944,9 @@
}
},
"summary": "Submit a partner-signed ADD_FUNDS transaction",
- "tags": ["Partner Contributions"]
+ "tags": [
+ "Partner Contributions"
+ ]
}
},
"/api/hackathons/{idOrSlug}/tracks": {
@@ -12091,7 +12995,9 @@
}
},
"summary": "List hackathon tracks",
- "tags": ["Hackathons - Tracks"]
+ "tags": [
+ "Hackathons - Tracks"
+ ]
}
},
"/api/hackathons/{idOrSlug}/custom-questions": {
@@ -12113,7 +13019,10 @@
"required": false,
"in": "query",
"schema": {
- "enum": ["REGISTRATION", "SUBMISSION"],
+ "enum": [
+ "REGISTRATION",
+ "SUBMISSION"
+ ],
"type": "string"
}
}
@@ -12140,7 +13049,9 @@
}
},
"summary": "List public custom questions",
- "tags": ["Hackathons - Custom Questions"]
+ "tags": [
+ "Hackathons - Custom Questions"
+ ]
}
},
"/api/organizations/{organizationId}/hackathons/{id}/tracks": {
@@ -12193,7 +13104,9 @@
}
],
"summary": "List tracks (organizer view)",
- "tags": ["Hackathons - Organizer Tracks"]
+ "tags": [
+ "Hackathons - Organizer Tracks"
+ ]
},
"post": {
"operationId": "OrganizationHackathonsTracksController_create",
@@ -12235,7 +13148,9 @@
}
],
"summary": "Create a track",
- "tags": ["Hackathons - Organizer Tracks"]
+ "tags": [
+ "Hackathons - Organizer Tracks"
+ ]
}
},
"/api/organizations/{organizationId}/hackathons/{id}/tracks/config": {
@@ -12273,7 +13188,9 @@
}
],
"summary": "Update hackathon-level track config",
- "tags": ["Hackathons - Organizer Tracks"]
+ "tags": [
+ "Hackathons - Organizer Tracks"
+ ]
}
},
"/api/organizations/{organizationId}/hackathons/{id}/tracks/{trackId}": {
@@ -12317,7 +13234,9 @@
}
],
"summary": "Update a track",
- "tags": ["Hackathons - Organizer Tracks"]
+ "tags": [
+ "Hackathons - Organizer Tracks"
+ ]
},
"delete": {
"description": "Hard-deletes the track if no submissions are entered. If submissions have already opted in, archives the track instead (preserves history).",
@@ -12343,7 +13262,9 @@
}
],
"summary": "Delete a track",
- "tags": ["Hackathons - Organizer Tracks"]
+ "tags": [
+ "Hackathons - Organizer Tracks"
+ ]
}
},
"/api/organizations/{organizationId}/hackathons/{id}/tracks/{trackId}/bulk-opt-in": {
@@ -12399,7 +13320,9 @@
}
],
"summary": "Opt in every existing submission into this track",
- "tags": ["Hackathons - Organizer Tracks"]
+ "tags": [
+ "Hackathons - Organizer Tracks"
+ ]
}
},
"/api/organizations/{organizationId}/hackathons/{id}/custom-questions": {
@@ -12421,7 +13344,10 @@
"required": false,
"in": "query",
"schema": {
- "enum": ["REGISTRATION", "SUBMISSION"],
+ "enum": [
+ "REGISTRATION",
+ "SUBMISSION"
+ ],
"type": "string"
}
},
@@ -12453,7 +13379,9 @@
}
],
"summary": "List custom questions (organizer view)",
- "tags": ["Hackathons - Organizer Custom Questions"]
+ "tags": [
+ "Hackathons - Organizer Custom Questions"
+ ]
},
"put": {
"description": "Delete-and-recreate: the submitted array becomes the complete question set across both scopes.",
@@ -12499,7 +13427,9 @@
}
],
"summary": "Replace the full custom-question set",
- "tags": ["Hackathons - Organizer Custom Questions"]
+ "tags": [
+ "Hackathons - Organizer Custom Questions"
+ ]
}
},
"/api/organizations/{organizationId}/hackathons/{id}/escrow/funding-otp/request": {
@@ -12544,7 +13474,9 @@
}
],
"summary": "Request a funding step-up code",
- "tags": ["Organization Hackathons - Escrow (v2)"]
+ "tags": [
+ "Organization Hackathons - Escrow (v2)"
+ ]
}
},
"/api/organizations/{organizationId}/hackathons/{id}/escrow/funding-otp/verify": {
@@ -12599,7 +13531,9 @@
}
],
"summary": "Verify a funding step-up code",
- "tags": ["Organization Hackathons - Escrow (v2)"]
+ "tags": [
+ "Organization Hackathons - Escrow (v2)"
+ ]
}
},
"/api/organizations/{organizationId}/hackathons/{id}/escrow/publish": {
@@ -12658,7 +13592,9 @@
}
],
"summary": "Publish a hackathon draft to the events contract",
- "tags": ["Organization Hackathons - Escrow (v2)"]
+ "tags": [
+ "Organization Hackathons - Escrow (v2)"
+ ]
}
},
"/api/organizations/{organizationId}/hackathons/{id}/escrow/cancel": {
@@ -12713,7 +13649,9 @@
}
],
"summary": "Cancel an active hackathon",
- "tags": ["Organization Hackathons - Escrow (v2)"]
+ "tags": [
+ "Organization Hackathons - Escrow (v2)"
+ ]
}
},
"/api/organizations/{organizationId}/hackathons/{id}/escrow/select-winners": {
@@ -12768,7 +13706,9 @@
}
],
"summary": "Select winners for a hackathon",
- "tags": ["Organization Hackathons - Escrow (v2)"]
+ "tags": [
+ "Organization Hackathons - Escrow (v2)"
+ ]
}
},
"/api/organizations/{organizationId}/hackathons/{id}/escrow/ops/{opRowId}/submit-signed": {
@@ -12833,7 +13773,9 @@
}
],
"summary": "Submit signed XDR for a previously-built escrow op",
- "tags": ["Organization Hackathons - Escrow (v2)"]
+ "tags": [
+ "Organization Hackathons - Escrow (v2)"
+ ]
}
},
"/api/organizations/{organizationId}/hackathons/{id}/escrow/ops/{opRowId}": {
@@ -12887,7 +13829,9 @@
}
],
"summary": "Read the current state of an escrow op",
- "tags": ["Organization Hackathons - Escrow (v2)"]
+ "tags": [
+ "Organization Hackathons - Escrow (v2)"
+ ]
}
},
"/api/organizations/{organizationId}/hackathons/{id}/escrow/reset-to-draft": {
@@ -12925,7 +13869,9 @@
}
],
"summary": "Reset a stranded hackathon back to DRAFT",
- "tags": ["Organization Hackathons - Escrow (v2)"]
+ "tags": [
+ "Organization Hackathons - Escrow (v2)"
+ ]
}
},
"/api/hackathons/{id}/escrow/submissions/{submissionId}/submit": {
@@ -12980,7 +13926,9 @@
}
],
"summary": "Anchor a hackathon submission on chain",
- "tags": ["Hackathons - Participant Escrow (v2)"]
+ "tags": [
+ "Hackathons - Participant Escrow (v2)"
+ ]
}
},
"/api/hackathons/{id}/escrow/submissions/{submissionId}/withdraw": {
@@ -13034,7 +13982,9 @@
}
],
"summary": "Withdraw a hackathon submission anchor",
- "tags": ["Hackathons - Participant Escrow (v2)"]
+ "tags": [
+ "Hackathons - Participant Escrow (v2)"
+ ]
}
},
"/api/hackathons/{id}/escrow/contribute": {
@@ -13080,7 +14030,9 @@
}
],
"summary": "Contribute funds to a hackathon pool",
- "tags": ["Hackathons - Participant Escrow (v2)"]
+ "tags": [
+ "Hackathons - Participant Escrow (v2)"
+ ]
}
},
"/api/hackathons/{id}/escrow/ops/{opRowId}/submit-signed": {
@@ -13134,7 +14086,9 @@
}
],
"summary": "Submit signed XDR for a participant op",
- "tags": ["Hackathons - Participant Escrow (v2)"]
+ "tags": [
+ "Hackathons - Participant Escrow (v2)"
+ ]
}
},
"/api/hackathons/{id}/escrow/ops/{opRowId}": {
@@ -13178,7 +14132,9 @@
}
],
"summary": "Read the state of a participant op",
- "tags": ["Hackathons - Participant Escrow (v2)"]
+ "tags": [
+ "Hackathons - Participant Escrow (v2)"
+ ]
}
},
"/api/organizations": {
@@ -13200,7 +14156,9 @@
"description": ""
}
},
- "tags": ["Organization"]
+ "tags": [
+ "Organization"
+ ]
},
"get": {
"operationId": "OrganizationsController_getOrganizations",
@@ -13210,7 +14168,9 @@
"description": ""
}
},
- "tags": ["Organization"]
+ "tags": [
+ "Organization"
+ ]
}
},
"/api/organizations/my": {
@@ -13222,7 +14182,9 @@
"description": ""
}
},
- "tags": ["Organization"]
+ "tags": [
+ "Organization"
+ ]
}
},
"/api/organizations/profile/{idOrSlug}": {
@@ -13257,7 +14219,9 @@
}
},
"summary": "Get organization profile (public)",
- "tags": ["Organization"]
+ "tags": [
+ "Organization"
+ ]
}
},
"/api/organizations/search": {
@@ -13278,7 +14242,10 @@
"required": false,
"in": "query",
"schema": {
- "enum": ["true", "false"],
+ "enum": [
+ "true",
+ "false"
+ ],
"type": "string"
}
},
@@ -13287,7 +14254,10 @@
"required": false,
"in": "query",
"schema": {
- "enum": ["true", "false"],
+ "enum": [
+ "true",
+ "false"
+ ],
"type": "string"
}
},
@@ -13296,7 +14266,10 @@
"required": false,
"in": "query",
"schema": {
- "enum": ["true", "false"],
+ "enum": [
+ "true",
+ "false"
+ ],
"type": "string"
}
},
@@ -13316,7 +14289,9 @@
}
},
"summary": "Search organizations",
- "tags": ["Organization"]
+ "tags": [
+ "Organization"
+ ]
}
},
"/api/organizations/{id}": {
@@ -13389,14 +14364,19 @@
"items": {
"type": "string"
},
- "example": ["user_123", "user_456"]
+ "example": [
+ "user_123",
+ "user_456"
+ ]
},
"admins": {
"type": "array",
"items": {
"type": "string"
},
- "example": ["user_123"]
+ "example": [
+ "user_123"
+ ]
},
"owner": {
"type": "string",
@@ -13425,7 +14405,9 @@
"items": {
"type": "string"
},
- "example": ["invite_123"]
+ "example": [
+ "invite_123"
+ ]
},
"betterAuthOrgId": {
"type": "string",
@@ -13575,7 +14557,9 @@
}
},
"summary": "Get organization by ID",
- "tags": ["Organization"]
+ "tags": [
+ "Organization"
+ ]
},
"put": {
"operationId": "OrganizationsController_updateOrganization",
@@ -13604,7 +14588,9 @@
"description": ""
}
},
- "tags": ["Organization"]
+ "tags": [
+ "Organization"
+ ]
},
"delete": {
"operationId": "OrganizationsController_deleteOrganization",
@@ -13623,7 +14609,9 @@
"description": ""
}
},
- "tags": ["Organization"]
+ "tags": [
+ "Organization"
+ ]
}
},
"/api/organizations/{id}/members": {
@@ -13644,7 +14632,9 @@
"description": ""
}
},
- "tags": ["Organization"]
+ "tags": [
+ "Organization"
+ ]
}
},
"/api/organizations/{id}/permissions": {
@@ -13666,7 +14656,9 @@
}
},
"summary": "Get the org role-permission matrix",
- "tags": ["Organization"]
+ "tags": [
+ "Organization"
+ ]
},
"patch": {
"operationId": "OrganizationsController_updateOrganizationPermissions",
@@ -13686,7 +14678,9 @@
}
},
"summary": "Update the org role-permission matrix (owner only)",
- "tags": ["Organization"]
+ "tags": [
+ "Organization"
+ ]
}
},
"/api/organizations/{id}/permissions/reset": {
@@ -13708,7 +14702,9 @@
}
},
"summary": "Reset the org role-permission matrix (owner only)",
- "tags": ["Organization"]
+ "tags": [
+ "Organization"
+ ]
}
},
"/api/organizations/{id}/stats": {
@@ -13729,7 +14725,9 @@
"description": ""
}
},
- "tags": ["Organization"]
+ "tags": [
+ "Organization"
+ ]
}
},
"/api/organizations/{organizationId}/members": {
@@ -13750,7 +14748,9 @@
"description": ""
}
},
- "tags": ["Members"]
+ "tags": [
+ "Members"
+ ]
}
},
"/api/organizations/{organizationId}/members/{userId}": {
@@ -13779,7 +14779,9 @@
"description": ""
}
},
- "tags": ["Members"]
+ "tags": [
+ "Members"
+ ]
},
"delete": {
"operationId": "MembersController_removeMember",
@@ -13806,7 +14808,9 @@
"description": ""
}
},
- "tags": ["Members"]
+ "tags": [
+ "Members"
+ ]
}
},
"/api/organizations/{organizationId}/members/{userId}/role": {
@@ -13845,7 +14849,9 @@
"description": ""
}
},
- "tags": ["Members"]
+ "tags": [
+ "Members"
+ ]
}
},
"/api/organizations/{organizationId}/members/me": {
@@ -13866,7 +14872,9 @@
"description": ""
}
},
- "tags": ["Members"]
+ "tags": [
+ "Members"
+ ]
}
},
"/api/organizations/{organizationId}/invitations": {
@@ -13897,7 +14905,9 @@
"description": ""
}
},
- "tags": ["Invitations"]
+ "tags": [
+ "Invitations"
+ ]
},
"get": {
"operationId": "InvitationsController_getInvitations",
@@ -13916,7 +14926,9 @@
"description": ""
}
},
- "tags": ["Invitations"]
+ "tags": [
+ "Invitations"
+ ]
}
},
"/api/organizations/{organizationId}/invitations/{invitationId}/accept": {
@@ -13937,7 +14949,9 @@
"description": ""
}
},
- "tags": ["Invitations"]
+ "tags": [
+ "Invitations"
+ ]
}
},
"/api/organizations/{organizationId}/invitations/{invitationId}/reject": {
@@ -13958,7 +14972,9 @@
"description": ""
}
},
- "tags": ["Invitations"]
+ "tags": [
+ "Invitations"
+ ]
}
},
"/api/organizations/{organizationId}/invitations/{invitationId}": {
@@ -13987,7 +15003,9 @@
"description": ""
}
},
- "tags": ["Invitations"]
+ "tags": [
+ "Invitations"
+ ]
}
},
"/api/organizations/{organizationId}/invitations/my": {
@@ -13999,7 +15017,9 @@
"description": ""
}
},
- "tags": ["Invitations"]
+ "tags": [
+ "Invitations"
+ ]
}
},
"/api/organizations/{organizationId}/treasury/wallets": {
@@ -14037,7 +15057,9 @@
}
],
"summary": "List treasury wallets",
- "tags": ["Organization Treasury"]
+ "tags": [
+ "Organization Treasury"
+ ]
}
},
"/api/organizations/{organizationId}/treasury/wallets/archived": {
@@ -14076,7 +15098,9 @@
}
],
"summary": "List archived treasury wallets",
- "tags": ["Organization Treasury"]
+ "tags": [
+ "Organization Treasury"
+ ]
}
},
"/api/organizations/{organizationId}/treasury/default-wallet": {
@@ -14112,7 +15136,9 @@
}
],
"summary": "Get (or create) the organization default wallet",
- "tags": ["Organization Treasury"]
+ "tags": [
+ "Organization Treasury"
+ ]
}
},
"/api/organizations/{organizationId}/treasury/wallets/managed": {
@@ -14158,7 +15184,9 @@
}
],
"summary": "Create a Tier 1 managed treasury wallet",
- "tags": ["Organization Treasury"]
+ "tags": [
+ "Organization Treasury"
+ ]
}
},
"/api/organizations/{organizationId}/treasury/wallets/connected": {
@@ -14204,7 +15232,9 @@
}
],
"summary": "Register a connected (Tier 2/3) wallet",
- "tags": ["Organization Treasury"]
+ "tags": [
+ "Organization Treasury"
+ ]
}
},
"/api/organizations/{organizationId}/treasury/wallets/{walletId}/refresh-signers": {
@@ -14247,7 +15277,9 @@
}
],
"summary": "Re-fetch a connected wallet signer set from Horizon",
- "tags": ["Organization Treasury"]
+ "tags": [
+ "Organization Treasury"
+ ]
}
},
"/api/organizations/{organizationId}/treasury/wallets/{walletId}": {
@@ -14300,7 +15332,9 @@
}
],
"summary": "Update a wallet label / default flag",
- "tags": ["Organization Treasury"]
+ "tags": [
+ "Organization Treasury"
+ ]
}
},
"/api/organizations/{organizationId}/treasury/wallets/{walletId}/archive": {
@@ -14343,7 +15377,9 @@
}
],
"summary": "Archive a treasury wallet",
- "tags": ["Organization Treasury"]
+ "tags": [
+ "Organization Treasury"
+ ]
}
},
"/api/organizations/{organizationId}/treasury/wallets/{walletId}/restore": {
@@ -14387,7 +15423,9 @@
}
],
"summary": "Restore an archived treasury wallet",
- "tags": ["Organization Treasury"]
+ "tags": [
+ "Organization Treasury"
+ ]
}
},
"/api/organizations/{organizationId}/treasury/wallets/{walletId}/balance": {
@@ -14430,7 +15468,9 @@
}
],
"summary": "Live USDC + XLM balance for a wallet",
- "tags": ["Organization Treasury"]
+ "tags": [
+ "Organization Treasury"
+ ]
}
},
"/api/organizations/{organizationId}/treasury/policy": {
@@ -14465,7 +15505,9 @@
}
],
"summary": "Get the treasury spend policy (defaults if unset)",
- "tags": ["Organization Treasury"]
+ "tags": [
+ "Organization Treasury"
+ ]
},
"put": {
"operationId": "OrganizationTreasuryController_updatePolicy",
@@ -14508,7 +15550,9 @@
}
],
"summary": "Update the treasury spend policy (owner only)",
- "tags": ["Organization Treasury"]
+ "tags": [
+ "Organization Treasury"
+ ]
}
},
"/api/organizations/{organizationId}/treasury/spend": {
@@ -14553,7 +15597,9 @@
}
],
"summary": "Initiate a spend request",
- "tags": ["Organization Treasury"]
+ "tags": [
+ "Organization Treasury"
+ ]
},
"get": {
"operationId": "OrganizationTreasuryController_listSpend",
@@ -14597,7 +15643,9 @@
}
],
"summary": "List spend requests",
- "tags": ["Organization Treasury"]
+ "tags": [
+ "Organization Treasury"
+ ]
}
},
"/api/organizations/{organizationId}/treasury/spend/funding-otp/request": {
@@ -14632,7 +15680,9 @@
}
],
"summary": "Request an email verification code before sending funds",
- "tags": ["Organization Treasury"]
+ "tags": [
+ "Organization Treasury"
+ ]
}
},
"/api/organizations/{organizationId}/treasury/spend/funding-otp/verify": {
@@ -14677,7 +15727,9 @@
}
],
"summary": "Verify the email code to authorize sending funds",
- "tags": ["Organization Treasury"]
+ "tags": [
+ "Organization Treasury"
+ ]
}
},
"/api/organizations/{organizationId}/treasury/spend/send": {
@@ -14723,7 +15775,9 @@
}
],
"summary": "Send funds from a managed treasury wallet",
- "tags": ["Organization Treasury"]
+ "tags": [
+ "Organization Treasury"
+ ]
}
},
"/api/organizations/{organizationId}/treasury/spend/destination-readiness": {
@@ -14767,7 +15821,9 @@
}
],
"summary": "Check whether a destination can receive USDC",
- "tags": ["Organization Treasury"]
+ "tags": [
+ "Organization Treasury"
+ ]
}
},
"/api/organizations/{organizationId}/treasury/spend/{requestId}": {
@@ -14810,7 +15866,9 @@
}
],
"summary": "Get a spend request",
- "tags": ["Organization Treasury"]
+ "tags": [
+ "Organization Treasury"
+ ]
}
},
"/api/organizations/{organizationId}/treasury/spend/{requestId}/approve": {
@@ -14863,7 +15921,9 @@
}
],
"summary": "Approve a spend request (owner/admin)",
- "tags": ["Organization Treasury"]
+ "tags": [
+ "Organization Treasury"
+ ]
}
},
"/api/organizations/{organizationId}/treasury/spend/{requestId}/reject": {
@@ -14916,7 +15976,9 @@
}
],
"summary": "Reject a spend request (owner/admin)",
- "tags": ["Organization Treasury"]
+ "tags": [
+ "Organization Treasury"
+ ]
}
},
"/api/organizations/{organizationId}/treasury/spend/{requestId}/cancel": {
@@ -14959,7 +16021,9 @@
}
],
"summary": "Cancel a spend request (initiator or owner)",
- "tags": ["Organization Treasury"]
+ "tags": [
+ "Organization Treasury"
+ ]
}
},
"/api/organizations/{organizationId}/treasury/spend/{requestId}/execute": {
@@ -15003,7 +16067,9 @@
}
],
"summary": "Execute an approved spend on-chain (managed wallets)",
- "tags": ["Organization Treasury"]
+ "tags": [
+ "Organization Treasury"
+ ]
}
},
"/api/organizations/{organizationId}/treasury/spend/{requestId}/build-xdr": {
@@ -15047,7 +16113,9 @@
}
],
"summary": "Build the unsigned XDR for a connected-wallet spend",
- "tags": ["Organization Treasury"]
+ "tags": [
+ "Organization Treasury"
+ ]
}
},
"/api/organizations/{organizationId}/treasury/spend/{requestId}/submit-signed-xdr": {
@@ -15100,7 +16168,9 @@
}
],
"summary": "Submit a browser-signed spend XDR (connected wallets)",
- "tags": ["Organization Treasury"]
+ "tags": [
+ "Organization Treasury"
+ ]
}
},
"/api/organizations/{organizationId}/treasury/audit-log": {
@@ -15151,7 +16221,9 @@
}
],
"summary": "Paginated treasury audit log",
- "tags": ["Organization Treasury"]
+ "tags": [
+ "Organization Treasury"
+ ]
}
},
"/api/organizations/{organizationId}/receipts": {
@@ -15226,7 +16298,9 @@
}
],
"summary": "List money receipts (newest first)",
- "tags": ["Organization Receipts"]
+ "tags": [
+ "Organization Receipts"
+ ]
}
},
"/api/organizations/{organizationId}/receipts/{receiptId}": {
@@ -15269,7 +16343,9 @@
}
],
"summary": "Get a single receipt",
- "tags": ["Organization Receipts"]
+ "tags": [
+ "Organization Receipts"
+ ]
}
},
"/api/organizations/{organizationId}/receipts/{receiptId}/send": {
@@ -15315,7 +16391,9 @@
}
],
"summary": "Email a copy of the receipt",
- "tags": ["Organization Receipts"]
+ "tags": [
+ "Organization Receipts"
+ ]
}
},
"/api/organizations/{organizationId}/receipts/{receiptId}/void": {
@@ -15368,7 +16446,9 @@
}
],
"summary": "Void a receipt (owner/admin). Never deleted.",
- "tags": ["Organization Receipts"]
+ "tags": [
+ "Organization Receipts"
+ ]
}
},
"/api/votes": {
@@ -15390,7 +16470,9 @@
"description": ""
}
},
- "tags": ["Votes"]
+ "tags": [
+ "Votes"
+ ]
},
"get": {
"operationId": "VotesController_getVotes",
@@ -15461,7 +16543,9 @@
"description": ""
}
},
- "tags": ["Votes"]
+ "tags": [
+ "Votes"
+ ]
}
},
"/api/votes/{projectId}/{entityType}": {
@@ -15490,7 +16574,9 @@
"description": ""
}
},
- "tags": ["Votes"]
+ "tags": [
+ "Votes"
+ ]
}
},
"/api/votes/count/{projectId}/{entityType}": {
@@ -15519,7 +16605,9 @@
"description": ""
}
},
- "tags": ["Votes"]
+ "tags": [
+ "Votes"
+ ]
}
},
"/api/votes/my-vote/{projectId}/{entityType}": {
@@ -15548,7 +16636,9 @@
"description": ""
}
},
- "tags": ["Votes"]
+ "tags": [
+ "Votes"
+ ]
}
},
"/api/votes/project/{projectId}": {
@@ -15583,7 +16673,10 @@
"required": false,
"in": "query",
"schema": {
- "enum": ["UPVOTE", "DOWNVOTE"],
+ "enum": [
+ "UPVOTE",
+ "DOWNVOTE"
+ ],
"type": "string"
}
},
@@ -15619,7 +16712,9 @@
}
},
"summary": "Get project votes",
- "tags": ["Votes"]
+ "tags": [
+ "Votes"
+ ]
}
},
"/api/leaderboard": {
@@ -15648,7 +16743,12 @@
"in": "query",
"description": "Time window for score aggregation",
"schema": {
- "enum": ["ALL_TIME", "THIS_MONTH", "THIS_WEEK", "THIS_DAY"],
+ "enum": [
+ "ALL_TIME",
+ "THIS_MONTH",
+ "THIS_WEEK",
+ "THIS_DAY"
+ ],
"type": "string"
}
},
@@ -15677,7 +16777,9 @@
}
},
"summary": "Get community leaderboard entries",
- "tags": ["leaderboard"]
+ "tags": [
+ "leaderboard"
+ ]
}
},
"/api/blog-posts": {
@@ -15714,7 +16816,9 @@
}
],
"summary": "Create a new blog post",
- "tags": ["blog-posts"]
+ "tags": [
+ "blog-posts"
+ ]
},
"get": {
"operationId": "BlogPostsController_listBlogPosts",
@@ -15735,7 +16839,12 @@
"description": "Post status to filter",
"schema": {
"type": "string",
- "enum": ["DRAFT", "PUBLISHED", "ARCHIVED", "SCHEDULED"]
+ "enum": [
+ "DRAFT",
+ "PUBLISHED",
+ "ARCHIVED",
+ "SCHEDULED"
+ ]
}
},
{
@@ -15835,7 +16944,10 @@
"schema": {
"default": "desc",
"type": "string",
- "enum": ["asc", "desc"]
+ "enum": [
+ "asc",
+ "desc"
+ ]
}
}
],
@@ -15845,7 +16957,9 @@
}
},
"summary": "List all blog posts with pagination and filters",
- "tags": ["blog-posts"]
+ "tags": [
+ "blog-posts"
+ ]
}
},
"/api/blog-posts/id/{id}": {
@@ -15874,7 +16988,9 @@
}
},
"summary": "Get blog post by ID",
- "tags": ["blog-posts"]
+ "tags": [
+ "blog-posts"
+ ]
}
},
"/api/blog-posts/slug/{slug}": {
@@ -15903,7 +17019,9 @@
}
},
"summary": "Get blog post by slug",
- "tags": ["blog-posts"]
+ "tags": [
+ "blog-posts"
+ ]
}
},
"/api/blog-posts/{id}/related": {
@@ -15937,7 +17055,9 @@
}
},
"summary": "Get related blog posts",
- "tags": ["blog-posts"]
+ "tags": [
+ "blog-posts"
+ ]
}
},
"/api/blog-posts/{id}": {
@@ -15981,7 +17101,9 @@
}
],
"summary": "Update a blog post",
- "tags": ["blog-posts"]
+ "tags": [
+ "blog-posts"
+ ]
},
"delete": {
"operationId": "BlogPostsController_deleteBlogPost",
@@ -16013,7 +17135,9 @@
}
],
"summary": "Delete a blog post",
- "tags": ["blog-posts"]
+ "tags": [
+ "blog-posts"
+ ]
}
},
"/api/admin/ai/generate-excerpt": {
@@ -16031,7 +17155,9 @@
"type": "string"
}
},
- "required": ["content"]
+ "required": [
+ "content"
+ ]
}
}
}
@@ -16047,7 +17173,9 @@
}
],
"summary": "Generate excerpt from content",
- "tags": ["Admin - AI"]
+ "tags": [
+ "Admin - AI"
+ ]
}
},
"/api/admin/ai/generate-reading-time": {
@@ -16065,7 +17193,9 @@
"type": "string"
}
},
- "required": ["content"]
+ "required": [
+ "content"
+ ]
}
}
}
@@ -16081,7 +17211,9 @@
}
],
"summary": "Generate reading time estimate from content",
- "tags": ["Admin - AI"]
+ "tags": [
+ "Admin - AI"
+ ]
}
},
"/api/admin/ai/generate-seo": {
@@ -16099,7 +17231,9 @@
"type": "string"
}
},
- "required": ["content"]
+ "required": [
+ "content"
+ ]
}
}
}
@@ -16115,7 +17249,9 @@
}
],
"summary": "Generate SEO settings from content",
- "tags": ["Admin - AI"]
+ "tags": [
+ "Admin - AI"
+ ]
}
},
"/api/admin/ai/generate-tags": {
@@ -16133,7 +17269,9 @@
"type": "string"
}
},
- "required": ["content"]
+ "required": [
+ "content"
+ ]
}
}
}
@@ -16149,7 +17287,9 @@
}
],
"summary": "Generate tags from content",
- "tags": ["Admin - AI"]
+ "tags": [
+ "Admin - AI"
+ ]
}
},
"/api/admin/ai/generate-category": {
@@ -16167,7 +17307,9 @@
"type": "string"
}
},
- "required": ["content"]
+ "required": [
+ "content"
+ ]
}
}
}
@@ -16183,7 +17325,9 @@
}
],
"summary": "Generate category from content",
- "tags": ["Admin - AI"]
+ "tags": [
+ "Admin - AI"
+ ]
}
},
"/api/admin/overview": {
@@ -16197,7 +17341,11 @@
"in": "query",
"description": "Time range for the overview data",
"schema": {
- "enum": ["7d", "30d", "90d"],
+ "enum": [
+ "7d",
+ "30d",
+ "90d"
+ ],
"type": "string"
}
}
@@ -16229,7 +17377,9 @@
}
],
"summary": "Get admin overview data (Admin only)",
- "tags": ["Admin"]
+ "tags": [
+ "Admin"
+ ]
}
},
"/api/admin/users": {
@@ -16302,7 +17452,9 @@
}
],
"summary": "Get all users (Admin only)",
- "tags": ["Admin"]
+ "tags": [
+ "Admin"
+ ]
}
},
"/api/admin/users/export": {
@@ -16327,7 +17479,9 @@
}
],
"summary": "Export all users as CSV (Admin only)",
- "tags": ["Admin"]
+ "tags": [
+ "Admin"
+ ]
}
},
"/api/admin/users/{usernameOrId}": {
@@ -16366,7 +17520,9 @@
}
],
"summary": "Get user details (Admin only)",
- "tags": ["Admin"]
+ "tags": [
+ "Admin"
+ ]
}
},
"/api/admin/users/{usernameOrId}/stats": {
@@ -16405,7 +17561,9 @@
}
],
"summary": "Get user statistics (Admin only)",
- "tags": ["Admin"]
+ "tags": [
+ "Admin"
+ ]
}
},
"/api/admin/users/{usernameOrId}/activity": {
@@ -16464,7 +17622,9 @@
}
],
"summary": "Get user activity (Admin only)",
- "tags": ["Admin"]
+ "tags": [
+ "Admin"
+ ]
}
},
"/api/admin/users/{usernameOrId}/projects": {
@@ -16543,7 +17703,9 @@
}
],
"summary": "Get user projects (Admin only)",
- "tags": ["Admin"]
+ "tags": [
+ "Admin"
+ ]
}
},
"/api/admin/organizations": {
@@ -16598,7 +17760,9 @@
}
],
"summary": "Get all organizations (Admin only)",
- "tags": ["Admin"]
+ "tags": [
+ "Admin"
+ ]
}
},
"/api/admin/organizations/{orgId}": {
@@ -16637,7 +17801,9 @@
}
],
"summary": "Get organization details (Admin only)",
- "tags": ["Admin"]
+ "tags": [
+ "Admin"
+ ]
}
},
"/api/admin/users/{usernameOrId}/organizations": {
@@ -16676,7 +17842,9 @@
}
],
"summary": "Get user organizations (Admin only)",
- "tags": ["Admin"]
+ "tags": [
+ "Admin"
+ ]
}
},
"/api/admin/blog-posts": {
@@ -16713,7 +17881,9 @@
}
],
"summary": "Create a new blog post (Admin only)",
- "tags": ["Admin - Blog Posts"]
+ "tags": [
+ "Admin - Blog Posts"
+ ]
},
"get": {
"operationId": "AdminBlogsController_listAllBlogPosts",
@@ -16734,7 +17904,12 @@
"description": "Post status to filter",
"schema": {
"type": "string",
- "enum": ["DRAFT", "PUBLISHED", "ARCHIVED", "SCHEDULED"]
+ "enum": [
+ "DRAFT",
+ "PUBLISHED",
+ "ARCHIVED",
+ "SCHEDULED"
+ ]
}
},
{
@@ -16834,7 +18009,10 @@
"schema": {
"default": "desc",
"type": "string",
- "enum": ["asc", "desc"]
+ "enum": [
+ "asc",
+ "desc"
+ ]
}
}
],
@@ -16849,7 +18027,9 @@
}
],
"summary": "List all blog posts including drafts (Admin only)",
- "tags": ["Admin - Blog Posts"]
+ "tags": [
+ "Admin - Blog Posts"
+ ]
}
},
"/api/admin/blog-posts/{id}": {
@@ -16880,7 +18060,9 @@
}
],
"summary": "Get blog post by ID (Admin only)",
- "tags": ["Admin - Blog Posts"]
+ "tags": [
+ "Admin - Blog Posts"
+ ]
},
"put": {
"operationId": "AdminBlogsController_updateBlogPost",
@@ -16922,7 +18104,9 @@
}
],
"summary": "Update a blog post (Admin only)",
- "tags": ["Admin - Blog Posts"]
+ "tags": [
+ "Admin - Blog Posts"
+ ]
},
"delete": {
"description": "Marks the blog post as deleted without removing it from database",
@@ -16952,7 +18136,9 @@
}
],
"summary": "Soft delete a blog post (Admin only)",
- "tags": ["Admin - Blog Posts"]
+ "tags": [
+ "Admin - Blog Posts"
+ ]
}
},
"/api/admin/blog-posts/{id}/permanent": {
@@ -16984,7 +18170,9 @@
}
],
"summary": "Permanently delete a blog post (Admin only)",
- "tags": ["Admin - Blog Posts"]
+ "tags": [
+ "Admin - Blog Posts"
+ ]
}
},
"/api/admin/blog-posts/{id}/restore": {
@@ -17015,7 +18203,9 @@
}
],
"summary": "Restore a soft-deleted blog post (Admin only)",
- "tags": ["Admin - Blog Posts"]
+ "tags": [
+ "Admin - Blog Posts"
+ ]
}
},
"/api/admin/blog-posts/tags/all": {
@@ -17042,7 +18232,9 @@
}
],
"summary": "Get all tags with post counts (Admin only)",
- "tags": ["Admin - Blog Posts"]
+ "tags": [
+ "Admin - Blog Posts"
+ ]
}
},
"/api/admin/blog-posts/tags/{slug}": {
@@ -17073,7 +18265,9 @@
}
],
"summary": "Get tag by slug (Admin only)",
- "tags": ["Admin - Blog Posts"]
+ "tags": [
+ "Admin - Blog Posts"
+ ]
}
},
"/api/admin/blog-posts/tags/unused": {
@@ -17092,7 +18286,9 @@
}
],
"summary": "Delete all unused tags (Admin only)",
- "tags": ["Admin - Blog Posts"]
+ "tags": [
+ "Admin - Blog Posts"
+ ]
}
},
"/api/admin/blog-posts/scheduled/publish": {
@@ -17110,7 +18306,9 @@
}
],
"summary": "Manually trigger publishing of scheduled posts (Admin only)",
- "tags": ["Admin - Blog Posts"]
+ "tags": [
+ "Admin - Blog Posts"
+ ]
}
},
"/api/admin/crowdfunding": {
@@ -17141,7 +18339,9 @@
}
],
"summary": "List crowdfunding campaigns",
- "tags": ["Admin - Crowdfunding"]
+ "tags": [
+ "Admin - Crowdfunding"
+ ]
}
},
"/api/admin/crowdfunding/user/{usernameOrId}": {
@@ -17184,7 +18384,9 @@
}
],
"summary": "List crowdfunding campaigns by user",
- "tags": ["Admin - Crowdfunding"]
+ "tags": [
+ "Admin - Crowdfunding"
+ ]
}
},
"/api/admin/crowdfunding/{campaignId}": {
@@ -17215,7 +18417,9 @@
}
],
"summary": "Get crowdfunding campaign by ID",
- "tags": ["Admin - Crowdfunding"]
+ "tags": [
+ "Admin - Crowdfunding"
+ ]
}
},
"/api/admin/crowdfunding/pending": {
@@ -17246,7 +18450,9 @@
}
],
"summary": "List crowdfunding campaigns pending admin review",
- "tags": ["Admin - Crowdfunding"]
+ "tags": [
+ "Admin - Crowdfunding"
+ ]
}
},
"/api/admin/crowdfunding/{campaignId}/approve": {
@@ -17273,7 +18479,9 @@
}
],
"summary": "Approve a crowdfunding campaign",
- "tags": ["Admin - Crowdfunding"]
+ "tags": [
+ "Admin - Crowdfunding"
+ ]
}
},
"/api/admin/crowdfunding/{campaignId}/reject": {
@@ -17310,7 +18518,9 @@
}
],
"summary": "Reject a crowdfunding campaign",
- "tags": ["Admin - Crowdfunding"]
+ "tags": [
+ "Admin - Crowdfunding"
+ ]
}
},
"/api/admin/crowdfunding/{campaignId}/request-revision": {
@@ -17350,7 +18560,9 @@
}
],
"summary": "Request revisions for a crowdfunding campaign",
- "tags": ["Admin - Crowdfunding"]
+ "tags": [
+ "Admin - Crowdfunding"
+ ]
}
},
"/api/admin/crowdfunding/{campaignId}/review-note": {
@@ -17390,7 +18602,9 @@
}
],
"summary": "Add an admin review note for a campaign",
- "tags": ["Admin - Crowdfunding"]
+ "tags": [
+ "Admin - Crowdfunding"
+ ]
}
},
"/api/admin/crowdfunding/{campaignId}/assign-reviewer": {
@@ -17430,7 +18644,9 @@
}
],
"summary": "Assign a reviewer to a campaign",
- "tags": ["Admin - Crowdfunding"]
+ "tags": [
+ "Admin - Crowdfunding"
+ ]
}
},
"/api/admin/milestones": {
@@ -17514,7 +18730,9 @@
}
],
"summary": "List all milestones grouped by campaign",
- "tags": ["Admin"]
+ "tags": [
+ "Admin"
+ ]
}
},
"/api/admin/milestones/pending": {
@@ -17597,7 +18815,9 @@
}
],
"summary": "Get pending milestone review queue",
- "tags": ["Admin"]
+ "tags": [
+ "Admin"
+ ]
}
},
"/api/admin/milestones/{milestoneId}": {
@@ -17627,7 +18847,9 @@
}
],
"summary": "Get milestone detail for review",
- "tags": ["Admin"]
+ "tags": [
+ "Admin"
+ ]
}
},
"/api/admin/milestones/{milestoneId}/approve": {
@@ -17667,7 +18889,9 @@
}
],
"summary": "Approve a milestone submission",
- "tags": ["Admin"]
+ "tags": [
+ "Admin"
+ ]
}
},
"/api/admin/milestones/{milestoneId}/reject": {
@@ -17707,7 +18931,9 @@
}
],
"summary": "Reject a milestone submission",
- "tags": ["Admin"]
+ "tags": [
+ "Admin"
+ ]
}
},
"/api/admin/milestones/{milestoneId}/request-resubmission": {
@@ -17747,7 +18973,9 @@
}
],
"summary": "Request milestone resubmission with changes",
- "tags": ["Admin"]
+ "tags": [
+ "Admin"
+ ]
}
},
"/api/admin/milestones/{milestoneId}/review-note": {
@@ -17787,7 +19015,9 @@
}
],
"summary": "Add a review note to milestone",
- "tags": ["Admin"]
+ "tags": [
+ "Admin"
+ ]
}
},
"/api/admin/escrow/{campaignId}": {
@@ -17817,7 +19047,9 @@
}
],
"summary": "Get escrow information and transaction history for campaign",
- "tags": ["Admin"]
+ "tags": [
+ "Admin"
+ ]
}
},
"/api/admin/escrow/{campaignId}/action": {
@@ -17858,7 +19090,9 @@
}
],
"summary": "Execute manual escrow action (testnet only)",
- "tags": ["Admin"]
+ "tags": [
+ "Admin"
+ ]
}
},
"/api/admin/disputes": {
@@ -17925,7 +19159,9 @@
}
],
"summary": "Get dispute dashboard with filtering",
- "tags": ["Admin"]
+ "tags": [
+ "Admin"
+ ]
}
},
"/api/admin/disputes/{disputeId}": {
@@ -17955,7 +19191,9 @@
}
],
"summary": "Get detailed dispute information",
- "tags": ["Admin"]
+ "tags": [
+ "Admin"
+ ]
}
},
"/api/admin/disputes/{disputeId}/assign": {
@@ -17995,7 +19233,9 @@
}
],
"summary": "Assign dispute to an admin",
- "tags": ["Admin"]
+ "tags": [
+ "Admin"
+ ]
}
},
"/api/admin/disputes/{disputeId}/note": {
@@ -18036,7 +19276,9 @@
}
],
"summary": "Add note or message to dispute",
- "tags": ["Admin"]
+ "tags": [
+ "Admin"
+ ]
}
},
"/api/admin/disputes/{disputeId}/resolve": {
@@ -18076,7 +19318,9 @@
}
],
"summary": "Resolve a dispute with a final decision",
- "tags": ["Admin"]
+ "tags": [
+ "Admin"
+ ]
}
},
"/api/admin/disputes/{disputeId}/escalate": {
@@ -18116,7 +19360,9 @@
}
],
"summary": "Escalate dispute to arbitration",
- "tags": ["Admin"]
+ "tags": [
+ "Admin"
+ ]
}
},
"/api/admin/manual-projects/pending": {
@@ -18153,7 +19399,9 @@
}
],
"summary": "List pending manual project submissions",
- "tags": ["Admin Manual Projects"]
+ "tags": [
+ "Admin Manual Projects"
+ ]
}
},
"/api/admin/manual-projects/{projectId}/approve": {
@@ -18181,7 +19429,9 @@
}
],
"summary": "Approve a pending manual project",
- "tags": ["Admin Manual Projects"]
+ "tags": [
+ "Admin Manual Projects"
+ ]
}
},
"/api/admin/manual-projects/{projectId}/reject": {
@@ -18219,7 +19469,9 @@
}
],
"summary": "Reject a pending manual project",
- "tags": ["Admin Manual Projects"]
+ "tags": [
+ "Admin Manual Projects"
+ ]
}
},
"/api/admin/manual-projects/{projectId}/request-changes": {
@@ -18257,7 +19509,9 @@
}
],
"summary": "Request changes for a pending manual project",
- "tags": ["Admin Manual Projects"]
+ "tags": [
+ "Admin Manual Projects"
+ ]
}
},
"/api/admin/project-edits/pending": {
@@ -18294,7 +19548,9 @@
}
],
"summary": "List pending major project edits",
- "tags": ["Admin Project Edits"]
+ "tags": [
+ "Admin Project Edits"
+ ]
}
},
"/api/admin/project-edits/{editId}/approve": {
@@ -18322,7 +19578,9 @@
}
],
"summary": "Approve a pending major project edit",
- "tags": ["Admin Project Edits"]
+ "tags": [
+ "Admin Project Edits"
+ ]
}
},
"/api/admin/project-edits/{editId}/reject": {
@@ -18360,7 +19618,9 @@
}
],
"summary": "Reject a pending major project edit",
- "tags": ["Admin Project Edits"]
+ "tags": [
+ "Admin Project Edits"
+ ]
}
},
"/api/admin/wallets/stats": {
@@ -18372,7 +19632,11 @@
"required": false,
"in": "query",
"schema": {
- "enum": ["7d", "30d", "90d"],
+ "enum": [
+ "7d",
+ "30d",
+ "90d"
+ ],
"type": "string"
}
}
@@ -18395,7 +19659,9 @@
}
],
"summary": "Get wallet statistics",
- "tags": ["Admin Wallets"]
+ "tags": [
+ "Admin Wallets"
+ ]
}
},
"/api/admin/wallets": {
@@ -18445,7 +19711,9 @@
}
],
"summary": "List user wallets",
- "tags": ["Admin Wallets"]
+ "tags": [
+ "Admin Wallets"
+ ]
}
},
"/api/admin/wallets/user/{userId}": {
@@ -18482,7 +19750,9 @@
}
],
"summary": "Get wallets for a specific user",
- "tags": ["Admin Wallets"]
+ "tags": [
+ "Admin Wallets"
+ ]
}
},
"/api/admin/wallets/{id}": {
@@ -18516,7 +19786,9 @@
}
],
"summary": "Get detailed wallet info",
- "tags": ["Admin Wallets"]
+ "tags": [
+ "Admin Wallets"
+ ]
}
},
"/api/admin/wallets/{id}/activate": {
@@ -18544,7 +19816,9 @@
}
],
"summary": "Sponsor-activate a wallet by ID (creates account + configured trustlines, default USDC)",
- "tags": ["Admin Wallets"]
+ "tags": [
+ "Admin Wallets"
+ ]
}
},
"/api/admin/wallets/users/{userId}/sponsor-activate": {
@@ -18572,7 +19846,9 @@
}
],
"summary": "Sponsor-activate a single user (account + USDC trustline)",
- "tags": ["Admin Wallets"]
+ "tags": [
+ "Admin Wallets"
+ ]
}
},
"/api/admin/wallets/hackathons/{hackathonId}/sponsor-activate": {
@@ -18600,7 +19876,9 @@
}
],
"summary": "Enqueue sponsor activation for every participant of a hackathon",
- "tags": ["Admin Wallets"]
+ "tags": [
+ "Admin Wallets"
+ ]
}
},
"/api/admin/wallets/jobs/sponsor-activation/{jobId}": {
@@ -18628,7 +19906,9 @@
}
],
"summary": "Get status of a sponsor-activation job",
- "tags": ["Admin Wallets"]
+ "tags": [
+ "Admin Wallets"
+ ]
}
},
"/healthz": {
@@ -18642,7 +19922,9 @@
}
},
"summary": "Liveness probe",
- "tags": ["Health"]
+ "tags": [
+ "Health"
+ ]
}
},
"/readyz": {
@@ -18671,7 +19953,9 @@
},
"additionalProperties": {
"type": "object",
- "required": ["status"],
+ "required": [
+ "status"
+ ],
"properties": {
"status": {
"type": "string"
@@ -18686,7 +19970,9 @@
"example": {},
"additionalProperties": {
"type": "object",
- "required": ["status"],
+ "required": [
+ "status"
+ ],
"properties": {
"status": {
"type": "string"
@@ -18705,7 +19991,9 @@
},
"additionalProperties": {
"type": "object",
- "required": ["status"],
+ "required": [
+ "status"
+ ],
"properties": {
"status": {
"type": "string"
@@ -18739,7 +20027,9 @@
},
"additionalProperties": {
"type": "object",
- "required": ["status"],
+ "required": [
+ "status"
+ ],
"properties": {
"status": {
"type": "string"
@@ -18759,7 +20049,9 @@
},
"additionalProperties": {
"type": "object",
- "required": ["status"],
+ "required": [
+ "status"
+ ],
"properties": {
"status": {
"type": "string"
@@ -18782,7 +20074,9 @@
},
"additionalProperties": {
"type": "object",
- "required": ["status"],
+ "required": [
+ "status"
+ ],
"properties": {
"status": {
"type": "string"
@@ -18798,7 +20092,9 @@
}
},
"summary": "Readiness probe",
- "tags": ["Health"]
+ "tags": [
+ "Health"
+ ]
}
},
"/api/didit/status": {
@@ -18824,7 +20120,9 @@
}
],
"summary": "Get current verification state for the authenticated user",
- "tags": ["Didit Identity Verification"]
+ "tags": [
+ "Didit Identity Verification"
+ ]
}
},
"/api/didit/callback": {
@@ -18838,7 +20136,9 @@
}
},
"summary": "Didit redirect target (post-verification)",
- "tags": ["Didit Identity Verification"]
+ "tags": [
+ "Didit Identity Verification"
+ ]
}
},
"/api/didit/create-session": {
@@ -18875,7 +20175,9 @@
}
],
"summary": "Create verification session",
- "tags": ["Didit Identity Verification"]
+ "tags": [
+ "Didit Identity Verification"
+ ]
}
},
"/api/didit/webhook": {
@@ -18892,7 +20194,9 @@
}
},
"summary": "Didit webhook",
- "tags": ["Didit Identity Verification"]
+ "tags": [
+ "Didit Identity Verification"
+ ]
}
},
"/api/pricing/preview": {
@@ -18905,7 +20209,12 @@
"in": "query",
"schema": {
"type": "string",
- "enum": ["Hackathon", "Bounty", "Grant", "Crowdfunding"]
+ "enum": [
+ "Hackathon",
+ "Bounty",
+ "Grant",
+ "Crowdfunding"
+ ]
}
},
{
@@ -18959,7 +20268,46 @@
}
},
"summary": "Compute the financial preview for a publish wizard",
- "tags": ["pricing"]
+ "tags": [
+ "pricing"
+ ]
+ }
+ },
+ "/api/organizations/{organizationId}/ai/usage": {
+ "get": {
+ "operationId": "AiUsageController_getUsage",
+ "parameters": [
+ {
+ "name": "organizationId",
+ "required": true,
+ "in": "path",
+ "description": "Organization ID",
+ "schema": {
+ "type": "string"
+ }
+ }
+ ],
+ "responses": {
+ "200": {
+ "description": "",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/AiUsageResponseDto"
+ }
+ }
+ }
+ }
+ },
+ "security": [
+ {
+ "bearer": []
+ }
+ ],
+ "summary": "Get this organization’s monthly AI usage + cost",
+ "tags": [
+ "AI Usage"
+ ]
}
},
"/api/admin/ops/pause": {
@@ -18971,7 +20319,9 @@
"description": ""
}
},
- "tags": ["AdminOps"]
+ "tags": [
+ "AdminOps"
+ ]
}
},
"/api/admin/ops/unpause": {
@@ -18983,7 +20333,9 @@
"description": ""
}
},
- "tags": ["AdminOps"]
+ "tags": [
+ "AdminOps"
+ ]
}
},
"/api/admin/ops/set-fee-bps": {
@@ -18995,7 +20347,9 @@
"description": ""
}
},
- "tags": ["AdminOps"]
+ "tags": [
+ "AdminOps"
+ ]
}
},
"/api/admin/v2/access/me": {
@@ -19020,7 +20374,9 @@
}
],
"summary": "The current staff principal and role",
- "tags": ["Admin v2 - Access"]
+ "tags": [
+ "Admin v2 - Access"
+ ]
}
},
"/api/admin/v2/access/roles": {
@@ -19038,7 +20394,9 @@
}
],
"summary": "The role and permission matrix (Super Admin only)",
- "tags": ["Admin v2 - Access"]
+ "tags": [
+ "Admin v2 - Access"
+ ]
}
},
"/api/admin/v2/analytics": {
@@ -19063,7 +20421,9 @@
}
],
"summary": "Platform analytics (growth, breakdowns, trend)",
- "tags": ["Admin v2 - Analytics"]
+ "tags": [
+ "Admin v2 - Analytics"
+ ]
}
},
"/api/admin/v2/overview": {
@@ -19088,7 +20448,9 @@
}
],
"summary": "Platform overview counts",
- "tags": ["Admin v2 - Overview"]
+ "tags": [
+ "Admin v2 - Overview"
+ ]
}
},
"/api/admin/v2/users": {
@@ -19111,7 +20473,10 @@
"schema": {
"default": "desc",
"type": "string",
- "enum": ["asc", "desc"]
+ "enum": [
+ "asc",
+ "desc"
+ ]
}
},
{
@@ -19163,7 +20528,9 @@
}
],
"summary": "List users (paginated, searchable)",
- "tags": ["Admin v2 - Users"]
+ "tags": [
+ "Admin v2 - Users"
+ ]
}
},
"/api/admin/v2/users/{id}": {
@@ -19197,7 +20564,9 @@
}
],
"summary": "Get one user",
- "tags": ["Admin v2 - Users"]
+ "tags": [
+ "Admin v2 - Users"
+ ]
}
},
"/api/admin/v2/users/{id}/earnings": {
@@ -19231,7 +20600,9 @@
}
],
"summary": "Get a user's earnings (summary, breakdown, activity)",
- "tags": ["Admin v2 - Users"]
+ "tags": [
+ "Admin v2 - Users"
+ ]
}
},
"/api/admin/v2/users/{id}/organizations": {
@@ -19268,7 +20639,9 @@
}
],
"summary": "Get a user's organizations",
- "tags": ["Admin v2 - Users"]
+ "tags": [
+ "Admin v2 - Users"
+ ]
}
},
"/api/admin/v2/users/{id}/wallet": {
@@ -19302,7 +20675,9 @@
}
],
"summary": "Get a user's wallet and live balances",
- "tags": ["Admin v2 - Users"]
+ "tags": [
+ "Admin v2 - Users"
+ ]
}
},
"/api/admin/v2/users/{id}/ban": {
@@ -19346,7 +20721,9 @@
}
],
"summary": "Ban or unban a user (Tier 2: requires step-up)",
- "tags": ["Admin v2 - Users"]
+ "tags": [
+ "Admin v2 - Users"
+ ]
}
},
"/api/admin/v2/organizations": {
@@ -19369,7 +20746,10 @@
"schema": {
"default": "desc",
"type": "string",
- "enum": ["asc", "desc"]
+ "enum": [
+ "asc",
+ "desc"
+ ]
}
},
{
@@ -19421,7 +20801,9 @@
}
],
"summary": "List organizations (paginated, searchable)",
- "tags": ["Admin v2 - Organizations"]
+ "tags": [
+ "Admin v2 - Organizations"
+ ]
}
},
"/api/admin/v2/organizations/{id}": {
@@ -19455,7 +20837,9 @@
}
],
"summary": "Get one organization",
- "tags": ["Admin v2 - Organizations"]
+ "tags": [
+ "Admin v2 - Organizations"
+ ]
},
"patch": {
"operationId": "OrganizationsController_update",
@@ -19497,7 +20881,9 @@
}
],
"summary": "Update organization details (Tier 2: requires step-up)",
- "tags": ["Admin v2 - Organizations"]
+ "tags": [
+ "Admin v2 - Organizations"
+ ]
}
},
"/api/admin/v2/organizations/{id}/suspend": {
@@ -19542,7 +20928,9 @@
}
],
"summary": "Suspend an organization (Tier 2: requires step-up)",
- "tags": ["Admin v2 - Organizations"]
+ "tags": [
+ "Admin v2 - Organizations"
+ ]
}
},
"/api/admin/v2/organizations/{id}/reinstate": {
@@ -19586,7 +20974,9 @@
}
],
"summary": "Reinstate a suspended organization (Tier 2: requires step-up)",
- "tags": ["Admin v2 - Organizations"]
+ "tags": [
+ "Admin v2 - Organizations"
+ ]
}
},
"/api/admin/v2/programs": {
@@ -19609,7 +20999,10 @@
"schema": {
"default": "desc",
"type": "string",
- "enum": ["asc", "desc"]
+ "enum": [
+ "asc",
+ "desc"
+ ]
}
},
{
@@ -19620,7 +21013,12 @@
"schema": {
"default": "hackathon",
"type": "string",
- "enum": ["hackathon", "bounty", "grant", "crowdfunding"]
+ "enum": [
+ "hackathon",
+ "bounty",
+ "grant",
+ "crowdfunding"
+ ]
}
},
{
@@ -19672,7 +21070,9 @@
}
],
"summary": "List programs across a pillar (paginated, searchable)",
- "tags": ["Admin v2 - Programs"]
+ "tags": [
+ "Admin v2 - Programs"
+ ]
}
},
"/api/admin/v2/programs/{id}": {
@@ -19694,7 +21094,12 @@
"description": "Which pillar the id belongs to",
"schema": {
"type": "string",
- "enum": ["hackathon", "bounty", "grant", "crowdfunding"]
+ "enum": [
+ "hackathon",
+ "bounty",
+ "grant",
+ "crowdfunding"
+ ]
}
}
],
@@ -19716,7 +21121,9 @@
}
],
"summary": "Get one program (type selects the pillar)",
- "tags": ["Admin v2 - Programs"]
+ "tags": [
+ "Admin v2 - Programs"
+ ]
}
},
"/api/admin/v2/programs/{id}/feature": {
@@ -19760,7 +21167,9 @@
}
],
"summary": "Feature or unfeature a program (Tier 1; hackathons & bounties)",
- "tags": ["Admin v2 - Programs"]
+ "tags": [
+ "Admin v2 - Programs"
+ ]
}
},
"/api/admin/v2/programs/{id}/status": {
@@ -19804,7 +21213,9 @@
}
],
"summary": "Set an admin lifecycle status (Tier 2: requires step-up)",
- "tags": ["Admin v2 - Programs"]
+ "tags": [
+ "Admin v2 - Programs"
+ ]
}
},
"/api/admin/v2/disputes": {
@@ -19827,7 +21238,10 @@
"schema": {
"default": "desc",
"type": "string",
- "enum": ["asc", "desc"]
+ "enum": [
+ "asc",
+ "desc"
+ ]
}
},
{
@@ -19879,7 +21293,9 @@
}
],
"summary": "List disputes (paginated, searchable)",
- "tags": ["Admin v2 - Disputes"]
+ "tags": [
+ "Admin v2 - Disputes"
+ ]
}
},
"/api/admin/v2/disputes/{id}": {
@@ -19913,7 +21329,9 @@
}
],
"summary": "Get one dispute",
- "tags": ["Admin v2 - Disputes"]
+ "tags": [
+ "Admin v2 - Disputes"
+ ]
}
},
"/api/admin/v2/disputes/{id}/assign": {
@@ -19934,7 +21352,7 @@
"content": {
"application/json": {
"schema": {
- "$ref": "#/components/schemas/AssignDisputeDto"
+ "$ref": "#/components/schemas/AdminV2AssignDisputeDto"
}
}
}
@@ -19957,7 +21375,9 @@
}
],
"summary": "Assign a dispute to a staff handler, or unassign (Tier 1)",
- "tags": ["Admin v2 - Disputes"]
+ "tags": [
+ "Admin v2 - Disputes"
+ ]
}
},
"/api/admin/v2/disputes/{id}/note": {
@@ -20001,7 +21421,9 @@
}
],
"summary": "Add an internal note to a dispute (Tier 1)",
- "tags": ["Admin v2 - Disputes"]
+ "tags": [
+ "Admin v2 - Disputes"
+ ]
}
},
"/api/admin/v2/disputes/{id}/resolve": {
@@ -20022,7 +21444,7 @@
"content": {
"application/json": {
"schema": {
- "$ref": "#/components/schemas/ResolveDisputeDto"
+ "$ref": "#/components/schemas/AdminV2ResolveDisputeDto"
}
}
}
@@ -20045,7 +21467,9 @@
}
],
"summary": "Resolve a dispute with an outcome (Tier 2: requires step-up)",
- "tags": ["Admin v2 - Disputes"]
+ "tags": [
+ "Admin v2 - Disputes"
+ ]
}
},
"/api/admin/v2/disputes/{id}/escalate": {
@@ -20066,7 +21490,7 @@
"content": {
"application/json": {
"schema": {
- "$ref": "#/components/schemas/EscalateDisputeDto"
+ "$ref": "#/components/schemas/AdminV2EscalateDisputeDto"
}
}
}
@@ -20089,7 +21513,9 @@
}
],
"summary": "Escalate a dispute to arbitration (Tier 2: requires step-up)",
- "tags": ["Admin v2 - Disputes"]
+ "tags": [
+ "Admin v2 - Disputes"
+ ]
}
},
"/api/admin/v2/escrow": {
@@ -20112,7 +21538,10 @@
"schema": {
"default": "desc",
"type": "string",
- "enum": ["asc", "desc"]
+ "enum": [
+ "asc",
+ "desc"
+ ]
}
},
{
@@ -20164,7 +21593,9 @@
}
],
"summary": "List escrow transactions (paginated, searchable)",
- "tags": ["Admin v2 - Money"]
+ "tags": [
+ "Admin v2 - Money"
+ ]
}
},
"/api/admin/v2/escrow/requests": {
@@ -20178,7 +21609,12 @@
"description": "Filter to a single request status",
"schema": {
"type": "string",
- "enum": ["PROPOSED", "APPROVED", "REJECTED", "EXECUTED"]
+ "enum": [
+ "PROPOSED",
+ "APPROVED",
+ "REJECTED",
+ "EXECUTED"
+ ]
}
}
],
@@ -20200,7 +21636,9 @@
}
],
"summary": "List escrow release/refund requests (maker-checker)",
- "tags": ["Admin v2 - Money"]
+ "tags": [
+ "Admin v2 - Money"
+ ]
},
"post": {
"operationId": "EscrowController_propose",
@@ -20233,7 +21671,9 @@
}
],
"summary": "Propose an escrow release/refund (Tier 3: step-up)",
- "tags": ["Admin v2 - Money"]
+ "tags": [
+ "Admin v2 - Money"
+ ]
}
},
"/api/admin/v2/escrow/requests/{id}/decision": {
@@ -20277,7 +21717,9 @@
}
],
"summary": "Approve or reject a request (Tier 3: step-up, maker-checker)",
- "tags": ["Admin v2 - Money"]
+ "tags": [
+ "Admin v2 - Money"
+ ]
}
},
"/api/admin/v2/escrow/requests/{id}/execute": {
@@ -20321,7 +21763,9 @@
}
],
"summary": "Record an approved request as executed (Tier 3: step-up)",
- "tags": ["Admin v2 - Money"]
+ "tags": [
+ "Admin v2 - Money"
+ ]
}
},
"/api/admin/v2/payouts": {
@@ -20344,7 +21788,10 @@
"schema": {
"default": "desc",
"type": "string",
- "enum": ["asc", "desc"]
+ "enum": [
+ "asc",
+ "desc"
+ ]
}
},
{
@@ -20396,7 +21843,9 @@
}
],
"summary": "List platform payouts (paginated, searchable)",
- "tags": ["Admin v2 - Money"]
+ "tags": [
+ "Admin v2 - Money"
+ ]
}
},
"/api/admin/v2/payouts/requests": {
@@ -20438,7 +21887,9 @@
}
],
"summary": "List payout requests (maker-checker)",
- "tags": ["Admin v2 - Money"]
+ "tags": [
+ "Admin v2 - Money"
+ ]
},
"post": {
"operationId": "PayoutsController_propose",
@@ -20471,7 +21922,9 @@
}
],
"summary": "Propose a payout (Tier 3: step-up)",
- "tags": ["Admin v2 - Money"]
+ "tags": [
+ "Admin v2 - Money"
+ ]
}
},
"/api/admin/v2/payouts/requests/{id}/decision": {
@@ -20515,7 +21968,9 @@
}
],
"summary": "Approve or reject a payout request (Tier 3: step-up, maker-checker)",
- "tags": ["Admin v2 - Money"]
+ "tags": [
+ "Admin v2 - Money"
+ ]
}
},
"/api/admin/v2/payouts/requests/{id}/build-xdr": {
@@ -20549,7 +22004,9 @@
}
],
"summary": "Build the unsigned payout XDR for offline signing (Tier 3: step-up)",
- "tags": ["Admin v2 - Money"]
+ "tags": [
+ "Admin v2 - Money"
+ ]
}
},
"/api/admin/v2/payouts/requests/{id}/submit-signed": {
@@ -20593,7 +22050,9 @@
}
],
"summary": "Submit the offline-signed payout XDR; verifies + broadcasts (Tier 3: step-up)",
- "tags": ["Admin v2 - Money"]
+ "tags": [
+ "Admin v2 - Money"
+ ]
}
},
"/api/admin/v2/payouts/requests/{id}/execute": {
@@ -20637,7 +22096,9 @@
}
],
"summary": "Fallback: record a payout signed + broadcast off-platform (Tier 3: step-up)",
- "tags": ["Admin v2 - Money"]
+ "tags": [
+ "Admin v2 - Money"
+ ]
}
},
"/api/admin/v2/content": {
@@ -20660,7 +22121,10 @@
"schema": {
"default": "desc",
"type": "string",
- "enum": ["asc", "desc"]
+ "enum": [
+ "asc",
+ "desc"
+ ]
}
},
{
@@ -20722,7 +22186,9 @@
}
],
"summary": "List blog posts (paginated, searchable; archived via ?archived)",
- "tags": ["Admin v2 - Content"]
+ "tags": [
+ "Admin v2 - Content"
+ ]
},
"post": {
"operationId": "ContentController_create",
@@ -20755,7 +22221,9 @@
}
],
"summary": "Create a blog post (MDX body) (Tier 1)",
- "tags": ["Admin v2 - Content"]
+ "tags": [
+ "Admin v2 - Content"
+ ]
}
},
"/api/admin/v2/content/{id}": {
@@ -20789,7 +22257,9 @@
}
],
"summary": "Get one post (full body + metadata, for editing)",
- "tags": ["Admin v2 - Content"]
+ "tags": [
+ "Admin v2 - Content"
+ ]
},
"patch": {
"operationId": "ContentController_update",
@@ -20831,7 +22301,9 @@
}
],
"summary": "Update a blog post (Tier 1)",
- "tags": ["Admin v2 - Content"]
+ "tags": [
+ "Admin v2 - Content"
+ ]
}
},
"/api/admin/v2/content/{id}/publish": {
@@ -20875,7 +22347,9 @@
}
],
"summary": "Publish or unpublish a post (Tier 1)",
- "tags": ["Admin v2 - Content"]
+ "tags": [
+ "Admin v2 - Content"
+ ]
}
},
"/api/admin/v2/content/{id}/archive": {
@@ -20919,7 +22393,9 @@
}
],
"summary": "Archive (soft-delete) a post (Tier 2: requires step-up)",
- "tags": ["Admin v2 - Content"]
+ "tags": [
+ "Admin v2 - Content"
+ ]
}
},
"/api/admin/v2/content/{id}/restore": {
@@ -20953,7 +22429,9 @@
}
],
"summary": "Restore an archived post (Tier 1)",
- "tags": ["Admin v2 - Content"]
+ "tags": [
+ "Admin v2 - Content"
+ ]
}
},
"/api/admin/v2/crowdfunding/review-checklist": {
@@ -20981,7 +22459,9 @@
}
],
"summary": "List active review checklist items (display order)",
- "tags": ["Admin v2 - Crowdfunding Review Checklist"]
+ "tags": [
+ "Admin v2 - Crowdfunding Review Checklist"
+ ]
},
"post": {
"operationId": "CrowdfundingChecklistController_create",
@@ -21014,7 +22494,9 @@
}
],
"summary": "Add a checklist item (super_admin / operations)",
- "tags": ["Admin v2 - Crowdfunding Review Checklist"]
+ "tags": [
+ "Admin v2 - Crowdfunding Review Checklist"
+ ]
}
},
"/api/admin/v2/crowdfunding/review-checklist/reorder": {
@@ -21052,7 +22534,9 @@
}
],
"summary": "Reorder checklist items (super_admin / operations)",
- "tags": ["Admin v2 - Crowdfunding Review Checklist"]
+ "tags": [
+ "Admin v2 - Crowdfunding Review Checklist"
+ ]
}
},
"/api/admin/v2/crowdfunding/review-checklist/{itemId}": {
@@ -21096,7 +22580,9 @@
}
],
"summary": "Edit a checklist item (super_admin / operations)",
- "tags": ["Admin v2 - Crowdfunding Review Checklist"]
+ "tags": [
+ "Admin v2 - Crowdfunding Review Checklist"
+ ]
},
"delete": {
"operationId": "CrowdfundingChecklistController_archive",
@@ -21121,7 +22607,9 @@
}
],
"summary": "Archive a checklist item (super_admin / operations)",
- "tags": ["Admin v2 - Crowdfunding Review Checklist"]
+ "tags": [
+ "Admin v2 - Crowdfunding Review Checklist"
+ ]
}
},
"/api/admin/v2/crowdfunding": {
@@ -21144,7 +22632,10 @@
"schema": {
"default": "desc",
"type": "string",
- "enum": ["asc", "desc"]
+ "enum": [
+ "asc",
+ "desc"
+ ]
}
},
{
@@ -21220,7 +22711,9 @@
}
],
"summary": "List crowdfunding campaigns (defaults to the review queue)",
- "tags": ["Admin v2 - Crowdfunding"]
+ "tags": [
+ "Admin v2 - Crowdfunding"
+ ]
}
},
"/api/admin/v2/crowdfunding/{id}": {
@@ -21254,7 +22747,9 @@
}
],
"summary": "Get one campaign with its review history",
- "tags": ["Admin v2 - Crowdfunding"]
+ "tags": [
+ "Admin v2 - Crowdfunding"
+ ]
}
},
"/api/admin/v2/crowdfunding/{id}/approve": {
@@ -21298,7 +22793,9 @@
}
],
"summary": "Approve a submitted campaign; assigns a reviewer (Tier 2: step-up)",
- "tags": ["Admin v2 - Crowdfunding"]
+ "tags": [
+ "Admin v2 - Crowdfunding"
+ ]
}
},
"/api/admin/v2/crowdfunding/{id}/reject": {
@@ -21342,7 +22839,9 @@
}
],
"summary": "Reject a submitted campaign (Tier 2: step-up)",
- "tags": ["Admin v2 - Crowdfunding"]
+ "tags": [
+ "Admin v2 - Crowdfunding"
+ ]
}
},
"/api/admin/v2/crowdfunding/{id}/request-revision": {
@@ -21386,7 +22885,9 @@
}
],
"summary": "Send a submitted campaign back for revisions (Tier 1)",
- "tags": ["Admin v2 - Crowdfunding"]
+ "tags": [
+ "Admin v2 - Crowdfunding"
+ ]
}
},
"/api/admin/v2/access/totp/enroll": {
@@ -21411,7 +22912,9 @@
}
],
"summary": "Begin TOTP enrollment (returns secret + QR URI)",
- "tags": ["Admin v2 - Access"]
+ "tags": [
+ "Admin v2 - Access"
+ ]
}
},
"/api/admin/v2/access/totp/activate": {
@@ -21446,7 +22949,9 @@
}
],
"summary": "Confirm TOTP enrollment with a code",
- "tags": ["Admin v2 - Access"]
+ "tags": [
+ "Admin v2 - Access"
+ ]
}
},
"/api/admin/v2/access/step-up": {
@@ -21481,7 +22986,9 @@
}
],
"summary": "Step up: verify a fresh TOTP code for sensitive actions",
- "tags": ["Admin v2 - Access"]
+ "tags": [
+ "Admin v2 - Access"
+ ]
}
},
"/api/admin/v2/audit": {
@@ -21504,7 +23011,10 @@
"schema": {
"default": "desc",
"type": "string",
- "enum": ["asc", "desc"]
+ "enum": [
+ "asc",
+ "desc"
+ ]
}
},
{
@@ -21556,7 +23066,9 @@
}
],
"summary": "List admin audit log entries (paginated, searchable)",
- "tags": ["Admin v2 - Audit"]
+ "tags": [
+ "Admin v2 - Audit"
+ ]
}
},
"/api/admin/v2/audit/stream": {
@@ -21574,7 +23086,9 @@
}
],
"summary": "Live stream of new audit entries (Server-Sent Events)",
- "tags": ["Admin v2 - Audit"]
+ "tags": [
+ "Admin v2 - Audit"
+ ]
}
},
"/api/admin/v2/feature-flags": {
@@ -21599,7 +23113,9 @@
}
],
"summary": "List feature flags",
- "tags": ["Admin v2 - Feature flags"]
+ "tags": [
+ "Admin v2 - Feature flags"
+ ]
}
},
"/api/admin/v2/feature-flags/{key}": {
@@ -21643,7 +23159,9 @@
}
],
"summary": "Toggle a feature flag (Tier 2: requires step-up)",
- "tags": ["Admin v2 - Feature flags"]
+ "tags": [
+ "Admin v2 - Feature flags"
+ ]
}
},
"/api/admin/v2/staff": {
@@ -21668,7 +23186,9 @@
}
],
"summary": "List staff members and their roles",
- "tags": ["Admin v2 - Access"]
+ "tags": [
+ "Admin v2 - Access"
+ ]
}
},
"/api/admin/v2/staff/{id}/role": {
@@ -21712,7 +23232,9 @@
}
],
"summary": "Assign a staff role (Tier 2: requires step-up)",
- "tags": ["Admin v2 - Access"]
+ "tags": [
+ "Admin v2 - Access"
+ ]
}
},
"/api/admin/v2/governance": {
@@ -21726,7 +23248,12 @@
"description": "Filter to a single proposal status",
"schema": {
"type": "string",
- "enum": ["PROPOSED", "APPROVED", "REJECTED", "EXECUTED"]
+ "enum": [
+ "PROPOSED",
+ "APPROVED",
+ "REJECTED",
+ "EXECUTED"
+ ]
}
}
],
@@ -21748,7 +23275,9 @@
}
],
"summary": "List governance proposals (optionally by status)",
- "tags": ["Admin v2 - Governance"]
+ "tags": [
+ "Admin v2 - Governance"
+ ]
},
"post": {
"operationId": "GovernanceController_propose",
@@ -21781,7 +23310,9 @@
}
],
"summary": "Propose a governance action (Tier 4: step-up)",
- "tags": ["Admin v2 - Governance"]
+ "tags": [
+ "Admin v2 - Governance"
+ ]
}
},
"/api/admin/v2/governance/{id}/decision": {
@@ -21825,7 +23356,9 @@
}
],
"summary": "Approve or reject a proposal (Tier 3: step-up, maker-checker)",
- "tags": ["Admin v2 - Governance"]
+ "tags": [
+ "Admin v2 - Governance"
+ ]
}
},
"/api/admin/v2/governance/{id}/execute": {
@@ -21869,80 +23402,116 @@
}
],
"summary": "Record an approved proposal as executed (Tier 4: step-up)",
- "tags": ["Admin v2 - Governance"]
+ "tags": [
+ "Admin v2 - Governance"
+ ]
}
},
- "/api/admin/v2/kyc": {
+ "/api/admin/v2/contract-governance/tokens": {
"get": {
- "operationId": "KycController_list",
- "parameters": [
- {
- "name": "sort",
- "required": false,
- "in": "query",
- "description": "Field to sort by (whitelisted per resource; ignored otherwise)",
- "schema": {
- "type": "string"
- }
- },
- {
- "name": "dir",
- "required": false,
- "in": "query",
- "schema": {
- "default": "desc",
- "type": "string",
- "enum": ["asc", "desc"]
+ "operationId": "GovernanceContractController_listTokens",
+ "parameters": [],
+ "responses": {
+ "200": {
+ "description": "",
+ "content": {
+ "application/json": {
+ "schema": {
+ "type": "array",
+ "items": {
+ "$ref": "#/components/schemas/SupportedTokenDto"
+ }
+ }
+ }
}
- },
+ }
+ },
+ "security": [
{
- "name": "status",
- "required": false,
- "in": "query",
- "description": "Filter to one KYC state. Omit for all KYC-engaged users.",
- "schema": {
- "type": "string",
- "enum": ["in_review", "approved", "declined"]
+ "JWT-auth": []
+ }
+ ],
+ "summary": "List whitelisted tokens with live on-chain status",
+ "tags": [
+ "Admin v2 - Contract Governance"
+ ]
+ }
+ },
+ "/api/admin/v2/contract-governance/tokens/sync": {
+ "post": {
+ "operationId": "GovernanceContractController_syncTokens",
+ "parameters": [],
+ "responses": {
+ "200": {
+ "description": "",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/SyncTokensResultDto"
+ }
+ }
}
- },
+ }
+ },
+ "security": [
{
- "name": "page",
- "required": false,
- "in": "query",
- "schema": {
- "minimum": 1,
- "default": 1,
- "type": "number"
+ "JWT-auth": []
+ }
+ ],
+ "summary": "Sync the whitelist from contract state (authoritative enumeration, any age); falls back to an event rescan on pre-enumeration contracts.",
+ "tags": [
+ "Admin v2 - Contract Governance"
+ ]
+ }
+ },
+ "/api/admin/v2/contract-governance/tokens/import": {
+ "post": {
+ "operationId": "GovernanceContractController_importToken",
+ "parameters": [],
+ "requestBody": {
+ "required": true,
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/RegisterTokenDto"
+ }
}
- },
- {
- "name": "limit",
- "required": false,
- "in": "query",
- "schema": {
- "minimum": 1,
- "maximum": 100,
- "default": 25,
- "type": "number"
+ }
+ },
+ "responses": {
+ "200": {
+ "description": "",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/SupportedTokenDto"
+ }
+ }
}
- },
+ }
+ },
+ "security": [
{
- "name": "search",
- "required": false,
- "in": "query",
- "description": "Match against the user name or email",
- "schema": {
- "type": "string"
- }
+ "JWT-auth": []
}
],
+ "summary": "Import a token already whitelisted on-chain into the portal (verified via is_supported_token; no signing). For recovering older tokens.",
+ "tags": [
+ "Admin v2 - Contract Governance"
+ ]
+ }
+ },
+ "/api/admin/v2/contract-governance/pause-state": {
+ "get": {
+ "operationId": "GovernanceContractController_pauseState",
+ "parameters": [],
"responses": {
"200": {
"description": "",
"content": {
"application/json": {
"schema": {
- "$ref": "#/components/schemas/PaginatedKycDto"
+ "$ref": "#/components/schemas/PauseStateDto"
}
}
}
@@ -21953,21 +23522,33 @@
"JWT-auth": []
}
],
- "summary": "List identity-verification (KYC) records (paginated, filterable)",
- "tags": ["Admin v2 - KYC"]
+ "summary": "Live pause flag for the events contract",
+ "tags": [
+ "Admin v2 - Contract Governance"
+ ]
}
},
- "/api/admin/v2/kyc/connection": {
- "get": {
- "operationId": "KycController_connection",
+ "/api/admin/v2/contract-governance/tokens/build-xdr": {
+ "post": {
+ "operationId": "GovernanceContractController_buildRegisterToken",
"parameters": [],
+ "requestBody": {
+ "required": true,
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/RegisterTokenDto"
+ }
+ }
+ }
+ },
"responses": {
"200": {
"description": "",
"content": {
"application/json": {
"schema": {
- "$ref": "#/components/schemas/DiditConnectionDto"
+ "$ref": "#/components/schemas/ContractOpXdrDto"
}
}
}
@@ -21978,30 +23559,33 @@
"JWT-auth": []
}
],
- "summary": "Live Didit integration status (config presence)",
- "tags": ["Admin v2 - KYC"]
+ "summary": "Build the unsigned register_supported_token transaction. Tier 3: step-up.",
+ "tags": [
+ "Admin v2 - Contract Governance"
+ ]
}
},
- "/api/admin/v2/kyc/{userId}/sync": {
+ "/api/admin/v2/contract-governance/tokens/deregister/build-xdr": {
"post": {
- "operationId": "KycController_sync",
- "parameters": [
- {
- "name": "userId",
- "required": true,
- "in": "path",
- "schema": {
- "type": "string"
+ "operationId": "GovernanceContractController_buildDeregisterToken",
+ "parameters": [],
+ "requestBody": {
+ "required": true,
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/DeregisterTokenDto"
+ }
}
}
- ],
+ },
"responses": {
"200": {
"description": "",
"content": {
"application/json": {
"schema": {
- "$ref": "#/components/schemas/KycSyncResponseDto"
+ "$ref": "#/components/schemas/ContractOpXdrDto"
}
}
}
@@ -22012,30 +23596,50 @@
"JWT-auth": []
}
],
- "summary": "Pull the latest decision live from Didit and reconcile (Tier 1)",
- "tags": ["Admin v2 - KYC"]
+ "summary": "Build the unsigned deregister_supported_token transaction. Tier 3: step-up.",
+ "tags": [
+ "Admin v2 - Contract Governance"
+ ]
}
},
- "/api/admin/v2/kyc/{userId}/retrigger": {
+ "/api/admin/v2/contract-governance/pause/build-xdr": {
"post": {
- "operationId": "KycController_retrigger",
- "parameters": [
- {
- "name": "userId",
- "required": true,
- "in": "path",
- "schema": {
- "type": "string"
+ "operationId": "GovernanceContractController_buildPause",
+ "parameters": [],
+ "responses": {
+ "200": {
+ "description": "",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/ContractOpXdrDto"
+ }
+ }
}
}
+ },
+ "security": [
+ {
+ "JWT-auth": []
+ }
],
+ "summary": "Build the unsigned pause transaction. Tier 3: step-up.",
+ "tags": [
+ "Admin v2 - Contract Governance"
+ ]
+ }
+ },
+ "/api/admin/v2/contract-governance/unpause/build-xdr": {
+ "post": {
+ "operationId": "GovernanceContractController_buildUnpause",
+ "parameters": [],
"responses": {
"200": {
"description": "",
"content": {
"application/json": {
"schema": {
- "$ref": "#/components/schemas/KycRetriggerResponseDto"
+ "$ref": "#/components/schemas/ContractOpXdrDto"
}
}
}
@@ -22046,16 +23650,18 @@
"JWT-auth": []
}
],
- "summary": "Create a fresh Didit verification session for the user (Tier 1)",
- "tags": ["Admin v2 - KYC"]
+ "summary": "Build the unsigned unpause transaction. Tier 3: step-up.",
+ "tags": [
+ "Admin v2 - Contract Governance"
+ ]
}
},
- "/api/admin/v2/kyc/{userId}/override": {
+ "/api/admin/v2/contract-governance/ops/{id}/submit-signed": {
"post": {
- "operationId": "KycController_override",
+ "operationId": "GovernanceContractController_submitSigned",
"parameters": [
{
- "name": "userId",
+ "name": "id",
"required": true,
"in": "path",
"schema": {
@@ -22068,7 +23674,7 @@
"content": {
"application/json": {
"schema": {
- "$ref": "#/components/schemas/KycOverrideDto"
+ "$ref": "#/components/schemas/SubmitSignedContractOpDto"
}
}
}
@@ -22079,7 +23685,7 @@
"content": {
"application/json": {
"schema": {
- "$ref": "#/components/schemas/KycOverrideResponseDto"
+ "$ref": "#/components/schemas/ContractOpResultDto"
}
}
}
@@ -22090,13 +23696,15 @@
"JWT-auth": []
}
],
- "summary": "Manually force a KYC decision, overriding Didit (Tier 2: step-up)",
- "tags": ["Admin v2 - KYC"]
+ "summary": "Submit the admin-signed transaction for a built op (verified against the built XDR). Tier 3: step-up.",
+ "tags": [
+ "Admin v2 - Contract Governance"
+ ]
}
},
- "/api/admin/v2/milestones": {
+ "/api/admin/v2/kyc": {
"get": {
- "operationId": "MilestonesController_list",
+ "operationId": "KycController_list",
"parameters": [
{
"name": "sort",
@@ -22114,18 +23722,263 @@
"schema": {
"default": "desc",
"type": "string",
- "enum": ["asc", "desc"]
+ "enum": [
+ "asc",
+ "desc"
+ ]
}
},
{
- "name": "type",
+ "name": "status",
"required": false,
"in": "query",
- "description": "Which pillar to list. Defaults to crowdfunding.",
+ "description": "Filter to one KYC state. Omit for all KYC-engaged users.",
"schema": {
- "default": "crowdfunding",
"type": "string",
- "enum": ["crowdfunding", "grant"]
+ "enum": [
+ "in_review",
+ "approved",
+ "declined"
+ ]
+ }
+ },
+ {
+ "name": "page",
+ "required": false,
+ "in": "query",
+ "schema": {
+ "minimum": 1,
+ "default": 1,
+ "type": "number"
+ }
+ },
+ {
+ "name": "limit",
+ "required": false,
+ "in": "query",
+ "schema": {
+ "minimum": 1,
+ "maximum": 100,
+ "default": 25,
+ "type": "number"
+ }
+ },
+ {
+ "name": "search",
+ "required": false,
+ "in": "query",
+ "description": "Match against the user name or email",
+ "schema": {
+ "type": "string"
+ }
+ }
+ ],
+ "responses": {
+ "200": {
+ "description": "",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/PaginatedKycDto"
+ }
+ }
+ }
+ }
+ },
+ "security": [
+ {
+ "JWT-auth": []
+ }
+ ],
+ "summary": "List identity-verification (KYC) records (paginated, filterable)",
+ "tags": [
+ "Admin v2 - KYC"
+ ]
+ }
+ },
+ "/api/admin/v2/kyc/connection": {
+ "get": {
+ "operationId": "KycController_connection",
+ "parameters": [],
+ "responses": {
+ "200": {
+ "description": "",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/DiditConnectionDto"
+ }
+ }
+ }
+ }
+ },
+ "security": [
+ {
+ "JWT-auth": []
+ }
+ ],
+ "summary": "Live Didit integration status (config presence)",
+ "tags": [
+ "Admin v2 - KYC"
+ ]
+ }
+ },
+ "/api/admin/v2/kyc/{userId}/sync": {
+ "post": {
+ "operationId": "KycController_sync",
+ "parameters": [
+ {
+ "name": "userId",
+ "required": true,
+ "in": "path",
+ "schema": {
+ "type": "string"
+ }
+ }
+ ],
+ "responses": {
+ "200": {
+ "description": "",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/KycSyncResponseDto"
+ }
+ }
+ }
+ }
+ },
+ "security": [
+ {
+ "JWT-auth": []
+ }
+ ],
+ "summary": "Pull the latest decision live from Didit and reconcile (Tier 1)",
+ "tags": [
+ "Admin v2 - KYC"
+ ]
+ }
+ },
+ "/api/admin/v2/kyc/{userId}/retrigger": {
+ "post": {
+ "operationId": "KycController_retrigger",
+ "parameters": [
+ {
+ "name": "userId",
+ "required": true,
+ "in": "path",
+ "schema": {
+ "type": "string"
+ }
+ }
+ ],
+ "responses": {
+ "200": {
+ "description": "",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/KycRetriggerResponseDto"
+ }
+ }
+ }
+ }
+ },
+ "security": [
+ {
+ "JWT-auth": []
+ }
+ ],
+ "summary": "Create a fresh Didit verification session for the user (Tier 1)",
+ "tags": [
+ "Admin v2 - KYC"
+ ]
+ }
+ },
+ "/api/admin/v2/kyc/{userId}/override": {
+ "post": {
+ "operationId": "KycController_override",
+ "parameters": [
+ {
+ "name": "userId",
+ "required": true,
+ "in": "path",
+ "schema": {
+ "type": "string"
+ }
+ }
+ ],
+ "requestBody": {
+ "required": true,
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/KycOverrideDto"
+ }
+ }
+ }
+ },
+ "responses": {
+ "200": {
+ "description": "",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/KycOverrideResponseDto"
+ }
+ }
+ }
+ }
+ },
+ "security": [
+ {
+ "JWT-auth": []
+ }
+ ],
+ "summary": "Manually force a KYC decision, overriding Didit (Tier 2: step-up)",
+ "tags": [
+ "Admin v2 - KYC"
+ ]
+ }
+ },
+ "/api/admin/v2/milestones": {
+ "get": {
+ "operationId": "MilestonesController_list",
+ "parameters": [
+ {
+ "name": "sort",
+ "required": false,
+ "in": "query",
+ "description": "Field to sort by (whitelisted per resource; ignored otherwise)",
+ "schema": {
+ "type": "string"
+ }
+ },
+ {
+ "name": "dir",
+ "required": false,
+ "in": "query",
+ "schema": {
+ "default": "desc",
+ "type": "string",
+ "enum": [
+ "asc",
+ "desc"
+ ]
+ }
+ },
+ {
+ "name": "type",
+ "required": false,
+ "in": "query",
+ "description": "Which pillar to list. Defaults to crowdfunding.",
+ "schema": {
+ "default": "crowdfunding",
+ "type": "string",
+ "enum": [
+ "crowdfunding",
+ "grant"
+ ]
}
},
{
@@ -22177,7 +24030,9 @@
}
],
"summary": "List deliverable milestones across a pillar (paginated)",
- "tags": ["Admin v2 - Milestones"]
+ "tags": [
+ "Admin v2 - Milestones"
+ ]
}
},
"/api/admin/v2/milestones/{id}": {
@@ -22211,7 +24066,9 @@
}
],
"summary": "Get full milestone detail for admin review",
- "tags": ["Admin v2 - Milestones"]
+ "tags": [
+ "Admin v2 - Milestones"
+ ]
}
},
"/api/admin/v2/milestones/{id}/approve": {
@@ -22245,7 +24102,9 @@
}
],
"summary": "Approve a submitted crowdfunding milestone (Tier 3: step-up)",
- "tags": ["Admin v2 - Milestones"]
+ "tags": [
+ "Admin v2 - Milestones"
+ ]
}
},
"/api/admin/v2/milestones/{id}/reject": {
@@ -22266,18 +24125,707 @@
"content": {
"application/json": {
"schema": {
- "$ref": "#/components/schemas/RejectMilestoneDto"
+ "$ref": "#/components/schemas/AdminV2RejectMilestoneDto"
+ }
+ }
+ }
+ },
+ "responses": {
+ "200": {
+ "description": "",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/MilestoneActionResponseDto"
+ }
+ }
+ }
+ }
+ },
+ "security": [
+ {
+ "JWT-auth": []
+ }
+ ],
+ "summary": "Reject a submitted crowdfunding milestone (Tier 2: step-up)",
+ "tags": [
+ "Admin v2 - Milestones"
+ ]
+ }
+ },
+ "/api/admin/v2/milestones/{id}/release/build-xdr": {
+ "post": {
+ "operationId": "MilestonesController_buildReleaseXdr",
+ "parameters": [
+ {
+ "name": "id",
+ "required": true,
+ "in": "path",
+ "schema": {
+ "type": "string"
+ }
+ }
+ ],
+ "responses": {
+ "200": {
+ "description": "",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/MilestoneReleaseXdrDto"
+ }
+ }
+ }
+ }
+ },
+ "security": [
+ {
+ "JWT-auth": []
+ }
+ ],
+ "summary": "Build the unsigned release transaction for an APPROVED milestone (admin signs the envelope offline at the Lab). Tier 3: step-up.",
+ "tags": [
+ "Admin v2 - Milestones"
+ ]
+ }
+ },
+ "/api/admin/v2/milestones/{id}/release/submit-signed": {
+ "post": {
+ "operationId": "MilestonesController_submitReleaseSigned",
+ "parameters": [
+ {
+ "name": "id",
+ "required": true,
+ "in": "path",
+ "schema": {
+ "type": "string"
+ }
+ }
+ ],
+ "requestBody": {
+ "required": true,
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/SubmitMilestoneReleaseDto"
+ }
+ }
+ }
+ },
+ "responses": {
+ "200": {
+ "description": "",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/MilestoneReleaseResultDto"
+ }
+ }
+ }
+ }
+ },
+ "security": [
+ {
+ "JWT-auth": []
+ }
+ ],
+ "summary": "Submit the admin-signed release transaction for a milestone (verified against the built XDR). Tier 3: step-up.",
+ "tags": [
+ "Admin v2 - Milestones"
+ ]
+ }
+ },
+ "/api/admin/v2/wallets": {
+ "get": {
+ "operationId": "WalletsController_list",
+ "parameters": [
+ {
+ "name": "sort",
+ "required": false,
+ "in": "query",
+ "description": "Field to sort by (whitelisted per resource; ignored otherwise)",
+ "schema": {
+ "type": "string"
+ }
+ },
+ {
+ "name": "dir",
+ "required": false,
+ "in": "query",
+ "schema": {
+ "default": "desc",
+ "type": "string",
+ "enum": [
+ "asc",
+ "desc"
+ ]
+ }
+ },
+ {
+ "name": "page",
+ "required": false,
+ "in": "query",
+ "schema": {
+ "minimum": 1,
+ "default": 1,
+ "type": "number"
+ }
+ },
+ {
+ "name": "limit",
+ "required": false,
+ "in": "query",
+ "schema": {
+ "minimum": 1,
+ "maximum": 100,
+ "default": 25,
+ "type": "number"
+ }
+ },
+ {
+ "name": "search",
+ "required": false,
+ "in": "query",
+ "description": "Match against the public key (G-address)",
+ "schema": {
+ "type": "string"
+ }
+ }
+ ],
+ "responses": {
+ "200": {
+ "description": "",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/PaginatedWalletsDto"
+ }
+ }
+ }
+ }
+ },
+ "security": [
+ {
+ "JWT-auth": []
+ }
+ ],
+ "summary": "List abstracted wallets (paginated, searchable)",
+ "tags": [
+ "Admin v2 - Wallets"
+ ]
+ }
+ },
+ "/api/admin/v2/hackathon-brief-templates": {
+ "get": {
+ "operationId": "HackathonBriefTemplatesController_list",
+ "parameters": [],
+ "responses": {
+ "200": {
+ "description": "",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/HackathonBriefTemplatesResponseDto"
+ }
+ }
+ }
+ }
+ },
+ "security": [
+ {
+ "JWT-auth": []
+ }
+ ],
+ "summary": "List all hackathon brief templates (including inactive)",
+ "tags": [
+ "Admin v2 - Hackathon brief templates"
+ ]
+ },
+ "post": {
+ "operationId": "HackathonBriefTemplatesController_create",
+ "parameters": [],
+ "requestBody": {
+ "required": true,
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/CreateHackathonBriefTemplateDto"
+ }
+ }
+ }
+ },
+ "responses": {
+ "200": {
+ "description": "",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/HackathonBriefTemplateDto"
+ }
+ }
+ }
+ }
+ },
+ "security": [
+ {
+ "JWT-auth": []
+ }
+ ],
+ "summary": "Create a hackathon brief template (Tier 1)",
+ "tags": [
+ "Admin v2 - Hackathon brief templates"
+ ]
+ }
+ },
+ "/api/admin/v2/hackathon-brief-templates/{id}": {
+ "put": {
+ "operationId": "HackathonBriefTemplatesController_update",
+ "parameters": [
+ {
+ "name": "id",
+ "required": true,
+ "in": "path",
+ "schema": {
+ "type": "string"
+ }
+ }
+ ],
+ "requestBody": {
+ "required": true,
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/UpdateHackathonBriefTemplateDto"
+ }
+ }
+ }
+ },
+ "responses": {
+ "200": {
+ "description": "",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/HackathonBriefTemplateDto"
+ }
+ }
+ }
+ }
+ },
+ "security": [
+ {
+ "JWT-auth": []
+ }
+ ],
+ "summary": "Update a hackathon brief template (Tier 1)",
+ "tags": [
+ "Admin v2 - Hackathon brief templates"
+ ]
+ },
+ "delete": {
+ "operationId": "HackathonBriefTemplatesController_archive",
+ "parameters": [
+ {
+ "name": "id",
+ "required": true,
+ "in": "path",
+ "schema": {
+ "type": "string"
+ }
+ }
+ ],
+ "responses": {
+ "204": {
+ "description": ""
+ }
+ },
+ "security": [
+ {
+ "JWT-auth": []
+ }
+ ],
+ "summary": "Archive a hackathon brief template (soft-delete)",
+ "tags": [
+ "Admin v2 - Hackathon brief templates"
+ ]
+ }
+ },
+ "/api/hackathon-brief-templates": {
+ "get": {
+ "operationId": "HackathonBriefTemplatesPublicController_list",
+ "parameters": [],
+ "responses": {
+ "200": {
+ "description": "",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/HackathonBriefTemplatesResponseDto"
+ }
+ }
+ }
+ }
+ },
+ "summary": "List active hackathon brief templates",
+ "tags": [
+ "Hackathon brief templates"
+ ]
+ }
+ },
+ "/api/admin/v2/marketing/templates": {
+ "get": {
+ "operationId": "MarketingTemplatesController_list",
+ "parameters": [],
+ "responses": {
+ "200": {
+ "description": "",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/MarketingTemplatesResponseDto"
+ }
+ }
+ }
+ }
+ },
+ "security": [
+ {
+ "JWT-auth": []
+ }
+ ],
+ "summary": "List all marketing templates",
+ "tags": [
+ "Admin v2 - Marketing templates"
+ ]
+ },
+ "post": {
+ "operationId": "MarketingTemplatesController_create",
+ "parameters": [],
+ "requestBody": {
+ "required": true,
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/CreateMarketingTemplateDto"
+ }
+ }
+ }
+ },
+ "responses": {
+ "200": {
+ "description": "",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/MarketingTemplateDto"
+ }
+ }
+ }
+ }
+ },
+ "security": [
+ {
+ "JWT-auth": []
+ }
+ ],
+ "summary": "Create a marketing template (Tier 1)",
+ "tags": [
+ "Admin v2 - Marketing templates"
+ ]
+ }
+ },
+ "/api/admin/v2/marketing/templates/{id}": {
+ "put": {
+ "operationId": "MarketingTemplatesController_update",
+ "parameters": [
+ {
+ "name": "id",
+ "required": true,
+ "in": "path",
+ "schema": {
+ "type": "string"
+ }
+ }
+ ],
+ "requestBody": {
+ "required": true,
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/UpdateMarketingTemplateDto"
+ }
+ }
+ }
+ },
+ "responses": {
+ "200": {
+ "description": "",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/MarketingTemplateDto"
+ }
+ }
+ }
+ }
+ },
+ "security": [
+ {
+ "JWT-auth": []
+ }
+ ],
+ "summary": "Update a marketing template (Tier 1)",
+ "tags": [
+ "Admin v2 - Marketing templates"
+ ]
+ },
+ "delete": {
+ "operationId": "MarketingTemplatesController_archive",
+ "parameters": [
+ {
+ "name": "id",
+ "required": true,
+ "in": "path",
+ "schema": {
+ "type": "string"
+ }
+ }
+ ],
+ "responses": {
+ "204": {
+ "description": ""
+ }
+ },
+ "security": [
+ {
+ "JWT-auth": []
+ }
+ ],
+ "summary": "Archive a marketing template (soft-delete)",
+ "tags": [
+ "Admin v2 - Marketing templates"
+ ]
+ }
+ },
+ "/api/admin/v2/marketing/campaigns": {
+ "get": {
+ "operationId": "MarketingCampaignsController_list",
+ "parameters": [],
+ "responses": {
+ "200": {
+ "description": "",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/MarketingCampaignsResponseDto"
+ }
+ }
+ }
+ }
+ },
+ "security": [
+ {
+ "JWT-auth": []
+ }
+ ],
+ "summary": "List all marketing campaigns",
+ "tags": [
+ "Admin v2 - Marketing campaigns"
+ ]
+ },
+ "post": {
+ "operationId": "MarketingCampaignsController_create",
+ "parameters": [],
+ "requestBody": {
+ "required": true,
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/CreateMarketingCampaignDto"
+ }
+ }
+ }
+ },
+ "responses": {
+ "200": {
+ "description": "",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/MarketingCampaignDto"
+ }
+ }
+ }
+ }
+ },
+ "security": [
+ {
+ "JWT-auth": []
+ }
+ ],
+ "summary": "Create a campaign draft (Tier 1)",
+ "tags": [
+ "Admin v2 - Marketing campaigns"
+ ]
+ }
+ },
+ "/api/admin/v2/marketing/campaigns/{id}": {
+ "put": {
+ "operationId": "MarketingCampaignsController_update",
+ "parameters": [
+ {
+ "name": "id",
+ "required": true,
+ "in": "path",
+ "schema": {
+ "type": "string"
+ }
+ }
+ ],
+ "requestBody": {
+ "required": true,
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/UpdateMarketingCampaignDto"
+ }
+ }
+ }
+ },
+ "responses": {
+ "200": {
+ "description": "",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/MarketingCampaignDto"
+ }
+ }
+ }
+ }
+ },
+ "security": [
+ {
+ "JWT-auth": []
+ }
+ ],
+ "summary": "Update a campaign draft (Tier 1)",
+ "tags": [
+ "Admin v2 - Marketing campaigns"
+ ]
+ },
+ "delete": {
+ "operationId": "MarketingCampaignsController_cancel",
+ "parameters": [
+ {
+ "name": "id",
+ "required": true,
+ "in": "path",
+ "schema": {
+ "type": "string"
+ }
+ }
+ ],
+ "responses": {
+ "204": {
+ "description": ""
+ }
+ },
+ "security": [
+ {
+ "JWT-auth": []
+ }
+ ],
+ "summary": "Cancel a campaign (soft-cancel)",
+ "tags": [
+ "Admin v2 - Marketing campaigns"
+ ]
+ }
+ },
+ "/api/admin/v2/marketing/campaigns/audience-size": {
+ "post": {
+ "operationId": "MarketingCampaignsController_audienceSize",
+ "parameters": [],
+ "requestBody": {
+ "required": true,
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/PreviewCampaignAudienceDto"
+ }
+ }
+ }
+ },
+ "responses": {
+ "200": {
+ "description": "",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/CampaignAudienceSizeDto"
+ }
+ }
+ }
+ }
+ },
+ "security": [
+ {
+ "JWT-auth": []
+ }
+ ],
+ "summary": "Preview audience count for a filter",
+ "tags": [
+ "Admin v2 - Marketing campaigns"
+ ]
+ }
+ },
+ "/api/admin/v2/marketing/campaigns/{id}/send": {
+ "post": {
+ "operationId": "MarketingCampaignsController_send",
+ "parameters": [
+ {
+ "name": "id",
+ "required": true,
+ "in": "path",
+ "schema": {
+ "type": "string"
+ }
+ }
+ ],
+ "responses": {
+ "200": {
+ "description": "",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/MarketingCampaignDto"
+ }
}
}
}
},
+ "security": [
+ {
+ "JWT-auth": []
+ }
+ ],
+ "summary": "Send a campaign to its audience (Tier 2 step-up)",
+ "tags": [
+ "Admin v2 - Marketing campaigns"
+ ]
+ }
+ },
+ "/api/admin/v2/marketing/automations": {
+ "get": {
+ "operationId": "MarketingAutomationsController_list",
+ "parameters": [],
"responses": {
"200": {
"description": "",
"content": {
"application/json": {
"schema": {
- "$ref": "#/components/schemas/MilestoneActionResponseDto"
+ "$ref": "#/components/schemas/MarketingAutomationsResponseDto"
}
}
}
@@ -22288,30 +24836,31 @@
"JWT-auth": []
}
],
- "summary": "Reject a submitted crowdfunding milestone (Tier 2: step-up)",
- "tags": ["Admin v2 - Milestones"]
- }
- },
- "/api/admin/v2/milestones/{id}/release/build-xdr": {
+ "summary": "List all marketing automations",
+ "tags": [
+ "Admin v2 - Marketing automations"
+ ]
+ },
"post": {
- "operationId": "MilestonesController_buildReleaseXdr",
- "parameters": [
- {
- "name": "id",
- "required": true,
- "in": "path",
- "schema": {
- "type": "string"
+ "operationId": "MarketingAutomationsController_create",
+ "parameters": [],
+ "requestBody": {
+ "required": true,
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/CreateMarketingAutomationDto"
+ }
}
}
- ],
+ },
"responses": {
"200": {
"description": "",
"content": {
"application/json": {
"schema": {
- "$ref": "#/components/schemas/MilestoneReleaseXdrDto"
+ "$ref": "#/components/schemas/MarketingAutomationDto"
}
}
}
@@ -22322,13 +24871,15 @@
"JWT-auth": []
}
],
- "summary": "Build the unsigned release transaction for an APPROVED milestone (admin signs the envelope offline at the Lab). Tier 3: step-up.",
- "tags": ["Admin v2 - Milestones"]
+ "summary": "Create a marketing automation (Tier 1)",
+ "tags": [
+ "Admin v2 - Marketing automations"
+ ]
}
},
- "/api/admin/v2/milestones/{id}/release/submit-signed": {
- "post": {
- "operationId": "MilestonesController_submitReleaseSigned",
+ "/api/admin/v2/marketing/automations/{id}": {
+ "put": {
+ "operationId": "MarketingAutomationsController_update",
"parameters": [
{
"name": "id",
@@ -22344,7 +24895,7 @@
"content": {
"application/json": {
"schema": {
- "$ref": "#/components/schemas/SubmitMilestoneReleaseDto"
+ "$ref": "#/components/schemas/UpdateMarketingAutomationDto"
}
}
}
@@ -22355,7 +24906,7 @@
"content": {
"application/json": {
"schema": {
- "$ref": "#/components/schemas/MilestoneReleaseResultDto"
+ "$ref": "#/components/schemas/MarketingAutomationDto"
}
}
}
@@ -22366,59 +24917,47 @@
"JWT-auth": []
}
],
- "summary": "Submit the admin-signed release transaction for a milestone (verified against the built XDR). Tier 3: step-up.",
- "tags": ["Admin v2 - Milestones"]
- }
- },
- "/api/admin/v2/wallets": {
- "get": {
- "operationId": "WalletsController_list",
+ "summary": "Update a marketing automation (Tier 1)",
+ "tags": [
+ "Admin v2 - Marketing automations"
+ ]
+ },
+ "delete": {
+ "operationId": "MarketingAutomationsController_remove",
"parameters": [
{
- "name": "sort",
- "required": false,
- "in": "query",
- "description": "Field to sort by (whitelisted per resource; ignored otherwise)",
+ "name": "id",
+ "required": true,
+ "in": "path",
"schema": {
"type": "string"
}
- },
- {
- "name": "dir",
- "required": false,
- "in": "query",
- "schema": {
- "default": "desc",
- "type": "string",
- "enum": ["asc", "desc"]
- }
- },
- {
- "name": "page",
- "required": false,
- "in": "query",
- "schema": {
- "minimum": 1,
- "default": 1,
- "type": "number"
- }
- },
+ }
+ ],
+ "responses": {
+ "204": {
+ "description": ""
+ }
+ },
+ "security": [
{
- "name": "limit",
- "required": false,
- "in": "query",
- "schema": {
- "minimum": 1,
- "maximum": 100,
- "default": 25,
- "type": "number"
- }
- },
+ "JWT-auth": []
+ }
+ ],
+ "summary": "Delete an automation (hard delete — no audit trail loss)",
+ "tags": [
+ "Admin v2 - Marketing automations"
+ ]
+ }
+ },
+ "/api/admin/v2/marketing/automations/{id}/toggle": {
+ "patch": {
+ "operationId": "MarketingAutomationsController_toggle",
+ "parameters": [
{
- "name": "search",
- "required": false,
- "in": "query",
- "description": "Match against the public key (G-address)",
+ "name": "id",
+ "required": true,
+ "in": "path",
"schema": {
"type": "string"
}
@@ -22430,7 +24969,7 @@
"content": {
"application/json": {
"schema": {
- "$ref": "#/components/schemas/PaginatedWalletsDto"
+ "$ref": "#/components/schemas/MarketingAutomationDto"
}
}
}
@@ -22441,8 +24980,10 @@
"JWT-auth": []
}
],
- "summary": "List abstracted wallets (paginated, searchable)",
- "tags": ["Admin v2 - Wallets"]
+ "summary": "Enable or disable an automation",
+ "tags": [
+ "Admin v2 - Marketing automations"
+ ]
}
},
"/api/prices": {
@@ -22468,7 +25009,9 @@
}
},
"summary": "Get USD prices for all supported assets",
- "tags": ["prices"]
+ "tags": [
+ "prices"
+ ]
}
},
"/api/prices/debug": {
@@ -22508,7 +25051,9 @@
}
},
"summary": "Per-provider price resolution (diagnostic)",
- "tags": ["prices"]
+ "tags": [
+ "prices"
+ ]
}
},
"/api/prices/{symbol}": {
@@ -22522,7 +25067,12 @@
"in": "path",
"description": "Asset ticker (case-insensitive).",
"schema": {
- "enum": ["XLM", "USDC", "EURC", "USDGLO"],
+ "enum": [
+ "XLM",
+ "USDC",
+ "EURC",
+ "USDGLO"
+ ],
"type": "string"
}
}
@@ -22540,7 +25090,9 @@
}
},
"summary": "Get USD price for a single asset",
- "tags": ["prices"]
+ "tags": [
+ "prices"
+ ]
}
},
"/api/projects/drafts": {
@@ -22582,7 +25134,11 @@
"primary": "@alex123",
"backup": "alex_doe#1234"
},
- "tags": ["Soroban", "TypeScript", "DeFi"],
+ "tags": [
+ "Soroban",
+ "TypeScript",
+ "DeFi"
+ ],
"draftData": {
"isCampaign": true,
"campaign": {
@@ -22667,7 +25223,10 @@
"contact": {
"primary": "@alex123"
},
- "tags": ["NFT", "React"],
+ "tags": [
+ "NFT",
+ "React"
+ ],
"draftData": {
"isCampaign": false
}
@@ -22688,7 +25247,9 @@
}
],
"summary": "Create a project draft (stepped form)",
- "tags": ["projects"]
+ "tags": [
+ "projects"
+ ]
}
},
"/api/projects/{id}/draft": {
@@ -22740,7 +25301,11 @@
"primary": "@alex123",
"backup": "alex_doe#1234"
},
- "tags": ["Soroban", "TypeScript", "DeFi"],
+ "tags": [
+ "Soroban",
+ "TypeScript",
+ "DeFi"
+ ],
"draftData": {
"isCampaign": true,
"campaign": {
@@ -22825,7 +25390,10 @@
"contact": {
"primary": "@alex123"
},
- "tags": ["NFT", "React"],
+ "tags": [
+ "NFT",
+ "React"
+ ],
"draftData": {
"isCampaign": false
}
@@ -22846,7 +25414,9 @@
}
],
"summary": "Update a project draft (stepped form autosave)",
- "tags": ["projects"]
+ "tags": [
+ "projects"
+ ]
}
},
"/api/projects": {
@@ -22859,7 +25429,9 @@
}
},
"summary": "List public projects (PRD products directory)",
- "tags": ["projects"]
+ "tags": [
+ "projects"
+ ]
}
},
"/api/projects/search": {
@@ -22881,7 +25453,9 @@
}
},
"summary": "Search public projects",
- "tags": ["projects"]
+ "tags": [
+ "projects"
+ ]
}
},
"/api/projects/featured": {
@@ -22894,7 +25468,9 @@
}
},
"summary": "List featured projects",
- "tags": ["projects"]
+ "tags": [
+ "projects"
+ ]
}
},
"/api/projects/{id}/edits": {
@@ -22931,7 +25507,9 @@
}
],
"summary": "Submit a major/minor edit for your project",
- "tags": ["projects"]
+ "tags": [
+ "projects"
+ ]
},
"get": {
"operationId": "ProjectsController_listProjectEdits",
@@ -22956,7 +25534,9 @@
}
],
"summary": "List edit history for your project",
- "tags": ["projects"]
+ "tags": [
+ "projects"
+ ]
}
},
"/api/projects/{id}/publish": {
@@ -23013,7 +25593,9 @@
}
],
"summary": "Publish/submit a project draft (Review & Submit)",
- "tags": ["projects"]
+ "tags": [
+ "projects"
+ ]
}
},
"/api/projects/me": {
@@ -23056,7 +25638,9 @@
}
],
"summary": "List my projects",
- "tags": ["projects"]
+ "tags": [
+ "projects"
+ ]
}
},
"/api/projects/{slug}": {
@@ -23084,7 +25668,9 @@
}
],
"summary": "Get public project by slug",
- "tags": ["projects"]
+ "tags": [
+ "projects"
+ ]
}
},
"/api/projects/me/{id}": {
@@ -23100,10 +25686,422 @@
"type": "string"
}
}
- ],
+ ],
+ "responses": {
+ "200": {
+ "description": ""
+ }
+ },
+ "security": [
+ {
+ "bearer": []
+ }
+ ],
+ "summary": "Get my project by ID",
+ "tags": [
+ "projects"
+ ]
+ }
+ },
+ "/api/organizations/{organizationId}/bounties/draft/{id}": {
+ "delete": {
+ "description": "Deletes an unpublished bounty (draft / draft_awaiting_funding).",
+ "operationId": "OrganizationBountiesDraftsController_deleteDraft",
+ "parameters": [
+ {
+ "name": "organizationId",
+ "required": true,
+ "in": "path",
+ "schema": {
+ "example": "org_1234567890",
+ "type": "string"
+ }
+ },
+ {
+ "name": "id",
+ "required": true,
+ "in": "path",
+ "description": "Bounty draft id",
+ "schema": {
+ "example": "bnt_123",
+ "type": "string"
+ }
+ }
+ ],
+ "responses": {
+ "204": {
+ "description": "Draft deleted"
+ },
+ "400": {
+ "description": "Draft not found, not authorized, or not an unpublished draft"
+ }
+ },
+ "security": [
+ {
+ "bearer": []
+ }
+ ],
+ "summary": "Delete a bounty draft",
+ "tags": [
+ "Organization Bounties - Drafts"
+ ]
+ },
+ "patch": {
+ "description": "Applies any subset of wizard sections in a single PATCH. Send one section for a per-step \"Continue\", or several for \"Save draft\". Each present section is validated and transformed independently, then merged into one write. The reward section replaces the prize tiers.",
+ "operationId": "OrganizationBountiesDraftsController_updateDraft",
+ "parameters": [
+ {
+ "name": "organizationId",
+ "required": true,
+ "in": "path",
+ "schema": {
+ "example": "org_1234567890",
+ "type": "string"
+ }
+ },
+ {
+ "name": "id",
+ "required": true,
+ "in": "path",
+ "description": "Bounty draft id",
+ "schema": {
+ "example": "bnt_123",
+ "type": "string"
+ }
+ }
+ ],
+ "requestBody": {
+ "required": true,
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/UpdateBountyDraftDto"
+ },
+ "examples": {
+ "singleSection": {
+ "summary": "Update one section (per-step Continue)",
+ "value": {
+ "scope": {
+ "title": "Build a Soroban faucet bot",
+ "description": "A Discord bot that drips testnet tokens on request."
+ }
+ }
+ },
+ "multipleSections": {
+ "summary": "Update several sections (Save draft)",
+ "value": {
+ "mode": {
+ "claimType": "COMPETITION",
+ "entryType": "APPLICATION_LIGHT"
+ },
+ "submission": {
+ "submissionDeadline": "2026-12-01T00:00:00Z",
+ "applicationWindowCloseAt": "2026-11-01T00:00:00Z",
+ "shortlistSize": 3
+ },
+ "reward": {
+ "rewardCurrency": "USDC",
+ "prizeTiers": [
+ {
+ "position": 1,
+ "amount": "500"
+ },
+ {
+ "position": 2,
+ "amount": "250"
+ }
+ ]
+ }
+ }
+ }
+ }
+ }
+ }
+ },
+ "responses": {
+ "200": {
+ "description": "Draft updated",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/BountyDraftResponseDto"
+ }
+ }
+ }
+ },
+ "400": {
+ "description": "Validation failed for one or more sections"
+ }
+ },
+ "security": [
+ {
+ "bearer": []
+ }
+ ],
+ "summary": "Update one or more sections of a bounty draft",
+ "tags": [
+ "Organization Bounties - Drafts"
+ ]
+ },
+ "get": {
+ "description": "Returns the current section-keyed state of a bounty draft.",
+ "operationId": "OrganizationBountiesDraftsController_getDraft",
+ "parameters": [
+ {
+ "name": "organizationId",
+ "required": true,
+ "in": "path",
+ "schema": {
+ "example": "org_1234567890",
+ "type": "string"
+ }
+ },
+ {
+ "name": "id",
+ "required": true,
+ "in": "path",
+ "description": "Bounty draft id",
+ "schema": {
+ "example": "bnt_123",
+ "type": "string"
+ }
+ }
+ ],
+ "responses": {
+ "200": {
+ "description": "Draft retrieved",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/BountyDraftResponseDto"
+ }
+ }
+ }
+ }
+ },
+ "security": [
+ {
+ "bearer": []
+ }
+ ],
+ "summary": "Get a bounty draft for resume",
+ "tags": [
+ "Organization Bounties - Drafts"
+ ]
+ }
+ },
+ "/api/organizations/{organizationId}/bounties": {
+ "get": {
+ "description": "Lists bounties for an organization, newest first.",
+ "operationId": "OrganizationBountiesDraftsController_getOrganizationBounties",
+ "parameters": [
+ {
+ "name": "organizationId",
+ "required": true,
+ "in": "path",
+ "schema": {
+ "example": "org_1234567890",
+ "type": "string"
+ }
+ },
+ {
+ "name": "page",
+ "required": true,
+ "in": "query",
+ "schema": {
+ "type": "number"
+ }
+ },
+ {
+ "name": "limit",
+ "required": true,
+ "in": "query",
+ "schema": {
+ "type": "number"
+ }
+ }
+ ],
+ "responses": {
+ "200": {
+ "description": "Bounties retrieved"
+ }
+ },
+ "security": [
+ {
+ "bearer": []
+ }
+ ],
+ "summary": "Get an organization's published bounties",
+ "tags": [
+ "Organization Bounties - Drafts"
+ ]
+ }
+ },
+ "/api/organizations/{organizationId}/bounties/draft": {
+ "post": {
+ "description": "Creates an empty bounty in draft status that organization members can edit section by section through the Configure wizard.",
+ "operationId": "OrganizationBountiesDraftsController_createDraft",
+ "parameters": [
+ {
+ "name": "organizationId",
+ "required": true,
+ "in": "path",
+ "schema": {
+ "example": "org_1234567890",
+ "type": "string"
+ }
+ }
+ ],
+ "responses": {
+ "201": {
+ "description": "Draft created",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/BountyDraftResponseDto"
+ }
+ }
+ }
+ },
+ "400": {
+ "description": "User is not a member of the organization"
+ }
+ },
+ "security": [
+ {
+ "bearer": []
+ }
+ ],
+ "summary": "Create a new bounty draft for an organization",
+ "tags": [
+ "Organization Bounties - Drafts"
+ ]
+ }
+ },
+ "/api/organizations/{organizationId}/bounties/drafts": {
+ "get": {
+ "description": "Lists draft and draft_awaiting_funding bounties for an organization.",
+ "operationId": "OrganizationBountiesDraftsController_getOrganizationDrafts",
+ "parameters": [
+ {
+ "name": "organizationId",
+ "required": true,
+ "in": "path",
+ "schema": {
+ "example": "org_1234567890",
+ "type": "string"
+ }
+ }
+ ],
+ "responses": {
+ "200": {
+ "description": "Drafts retrieved",
+ "content": {
+ "application/json": {
+ "schema": {
+ "type": "array",
+ "items": {
+ "$ref": "#/components/schemas/BountyDraftResponseDto"
+ }
+ }
+ }
+ }
+ }
+ },
+ "security": [
+ {
+ "bearer": []
+ }
+ ],
+ "summary": "Get an organization's bounty drafts",
+ "tags": [
+ "Organization Bounties - Drafts"
+ ]
+ }
+ },
+ "/api/organizations/{organizationId}/bounties/draft/clarify": {
+ "post": {
+ "description": "A cheap pre-draft gate: returns { ready: true } when the brief is specific enough, or 1-3 clarifying questions (mode / winners / deadline) the organizer answers before drafting.",
+ "operationId": "OrganizationBountiesAiController_clarify",
+ "parameters": [
+ {
+ "name": "organizationId",
+ "required": true,
+ "in": "path",
+ "description": "Organization ID",
+ "schema": {
+ "type": "string"
+ }
+ }
+ ],
+ "requestBody": {
+ "required": true,
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/ClarifyBountyBriefDto"
+ }
+ }
+ }
+ },
+ "responses": {
+ "200": {
+ "description": "",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/ClarifyBountyDraftResponseDto"
+ }
+ }
+ }
+ }
+ },
+ "security": [
+ {
+ "bearer": []
+ }
+ ],
+ "summary": "Triage a bounty brief for clarifying questions (Organizer Assist)",
+ "tags": [
+ "Organization Bounties - AI Assist"
+ ]
+ }
+ },
+ "/api/organizations/{organizationId}/bounties/draft/from-brief": {
+ "post": {
+ "description": "Calls the AI service to turn a brief into a structured draft, persists a new bounty draft pre-filled with scope, mode, submission settings, and prize tiers, and returns it together with cost metadata. The organizer reviews, edits, and publishes.",
+ "operationId": "OrganizationBountiesAiController_generateFromBrief",
+ "parameters": [
+ {
+ "name": "organizationId",
+ "required": true,
+ "in": "path",
+ "description": "Organization ID",
+ "schema": {
+ "type": "string"
+ }
+ }
+ ],
+ "requestBody": {
+ "required": true,
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/GenerateBountyDraftFromBriefDto"
+ }
+ }
+ }
+ },
"responses": {
- "200": {
- "description": ""
+ "201": {
+ "description": "Draft generated and pre-filled.",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/GenerateBountyDraftFromBriefResponseDto"
+ }
+ }
+ }
}
},
"security": [
@@ -23111,41 +26109,40 @@
"bearer": []
}
],
- "summary": "Get my project by ID",
- "tags": ["projects"]
+ "summary": "Generate a bounty draft from a brief (Organizer Assist)",
+ "tags": [
+ "Organization Bounties - AI Assist"
+ ]
}
},
- "/api/organizations/{organizationId}/bounties/draft/{id}": {
- "delete": {
- "description": "Deletes an unpublished bounty (draft / draft_awaiting_funding).",
- "operationId": "OrganizationBountiesDraftsController_deleteDraft",
+ "/api/organizations/{organizationId}/bounties/draft/from-brief/stream": {
+ "post": {
+ "description": "Server-Sent Events: `partial` frames carry the draft taking shape for a live reveal, then a `done` frame carries { draftId, draft }. Errors arrive as an `error` frame (or a normal 4xx before the stream opens, e.g. quota).",
+ "operationId": "OrganizationBountiesAiController_generateFromBriefStream",
"parameters": [
{
"name": "organizationId",
"required": true,
"in": "path",
+ "description": "Organization ID",
"schema": {
- "example": "org_1234567890",
- "type": "string"
- }
- },
- {
- "name": "id",
- "required": true,
- "in": "path",
- "description": "Bounty draft id",
- "schema": {
- "example": "bnt_123",
"type": "string"
}
}
],
+ "requestBody": {
+ "required": true,
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/GenerateBountyDraftFromBriefDto"
+ }
+ }
+ }
+ },
"responses": {
- "204": {
- "description": "Draft deleted"
- },
- "400": {
- "description": "Draft not found, not authorized, or not an unpublished draft"
+ "201": {
+ "description": ""
}
},
"security": [
@@ -23153,19 +26150,23 @@
"bearer": []
}
],
- "summary": "Delete a bounty draft",
- "tags": ["Organization Bounties - Drafts"]
- },
- "patch": {
- "description": "Applies any subset of wizard sections in a single PATCH. Send one section for a per-step \"Continue\", or several for \"Save draft\". Each present section is validated and transformed independently, then merged into one write. The reward section replaces the prize tiers.",
- "operationId": "OrganizationBountiesDraftsController_updateDraft",
+ "summary": "Generate a bounty draft from a brief, streaming (Organizer Assist)",
+ "tags": [
+ "Organization Bounties - AI Assist"
+ ]
+ }
+ },
+ "/api/organizations/{organizationId}/bounties/draft/{id}/regenerate-section": {
+ "post": {
+ "description": "Calls the AI service to regenerate a single section (description, submission, or reward) from the current draft and returns the new section for the organizer to accept or discard.",
+ "operationId": "OrganizationBountiesAiController_regenerateSection",
"parameters": [
{
"name": "organizationId",
"required": true,
"in": "path",
+ "description": "Organization ID",
"schema": {
- "example": "org_1234567890",
"type": "string"
}
},
@@ -23173,9 +26174,8 @@
"name": "id",
"required": true,
"in": "path",
- "description": "Bounty draft id",
+ "description": "Bounty draft ID",
"schema": {
- "example": "bnt_123",
"type": "string"
}
}
@@ -23185,62 +26185,21 @@
"content": {
"application/json": {
"schema": {
- "$ref": "#/components/schemas/UpdateBountyDraftDto"
- },
- "examples": {
- "singleSection": {
- "summary": "Update one section (per-step Continue)",
- "value": {
- "scope": {
- "title": "Build a Soroban faucet bot",
- "description": "A Discord bot that drips testnet tokens on request."
- }
- }
- },
- "multipleSections": {
- "summary": "Update several sections (Save draft)",
- "value": {
- "mode": {
- "claimType": "COMPETITION",
- "entryType": "APPLICATION_LIGHT"
- },
- "submission": {
- "submissionDeadline": "2026-12-01T00:00:00Z",
- "applicationWindowCloseAt": "2026-11-01T00:00:00Z",
- "shortlistSize": 3
- },
- "reward": {
- "rewardCurrency": "USDC",
- "prizeTiers": [
- {
- "position": 1,
- "amount": "500"
- },
- {
- "position": 2,
- "amount": "250"
- }
- ]
- }
- }
- }
+ "$ref": "#/components/schemas/RegenerateBountyDraftSectionDto"
}
}
}
},
"responses": {
- "200": {
- "description": "Draft updated",
+ "201": {
+ "description": "Regenerated section returned.",
"content": {
"application/json": {
"schema": {
- "$ref": "#/components/schemas/BountyDraftResponseDto"
+ "$ref": "#/components/schemas/RegenerateBountyDraftSectionResponseDto"
}
}
}
- },
- "400": {
- "description": "Validation failed for one or more sections"
}
},
"security": [
@@ -23248,12 +26207,15 @@
"bearer": []
}
],
- "summary": "Update one or more sections of a bounty draft",
- "tags": ["Organization Bounties - Drafts"]
- },
- "get": {
- "description": "Returns the current section-keyed state of a bounty draft.",
- "operationId": "OrganizationBountiesDraftsController_getDraft",
+ "summary": "Regenerate one section of a bounty draft (Organizer Assist)",
+ "tags": [
+ "Organization Bounties - AI Assist"
+ ]
+ }
+ },
+ "/api/organizations/{organizationId}/bounties/{id}/escrow/funding-otp/request": {
+ "post": {
+ "operationId": "OrganizationBountiesEscrowController_requestFundingOtp",
"parameters": [
{
"name": "organizationId",
@@ -23270,18 +26232,17 @@
"in": "path",
"description": "Bounty draft id",
"schema": {
- "example": "bnt_123",
"type": "string"
}
}
],
"responses": {
"200": {
- "description": "Draft retrieved",
+ "description": "",
"content": {
"application/json": {
"schema": {
- "$ref": "#/components/schemas/BountyDraftResponseDto"
+ "$ref": "#/components/schemas/RequestFundingOtpResponseDto"
}
}
}
@@ -23292,14 +26253,15 @@
"bearer": []
}
],
- "summary": "Get a bounty draft for resume",
- "tags": ["Organization Bounties - Drafts"]
+ "summary": "Request a funding step-up code for a bounty",
+ "tags": [
+ "Organization Bounties - Escrow (v2)"
+ ]
}
},
- "/api/organizations/{organizationId}/bounties": {
- "get": {
- "description": "Lists bounties for an organization, newest first.",
- "operationId": "OrganizationBountiesDraftsController_getOrganizationBounties",
+ "/api/organizations/{organizationId}/bounties/{id}/escrow/funding-otp/verify": {
+ "post": {
+ "operationId": "OrganizationBountiesEscrowController_verifyFundingOtp",
"parameters": [
{
"name": "organizationId",
@@ -23311,25 +26273,35 @@
}
},
{
- "name": "page",
- "required": true,
- "in": "query",
- "schema": {
- "type": "number"
- }
- },
- {
- "name": "limit",
+ "name": "id",
"required": true,
- "in": "query",
+ "in": "path",
+ "description": "Bounty draft id",
"schema": {
- "type": "number"
+ "type": "string"
}
}
],
+ "requestBody": {
+ "required": true,
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/VerifyFundingOtpDto"
+ }
+ }
+ }
+ },
"responses": {
"200": {
- "description": "Bounties retrieved"
+ "description": "",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/VerifyFundingOtpResponseDto"
+ }
+ }
+ }
}
},
"security": [
@@ -23337,14 +26309,16 @@
"bearer": []
}
],
- "summary": "Get an organization's published bounties",
- "tags": ["Organization Bounties - Drafts"]
+ "summary": "Verify a funding step-up code for a bounty",
+ "tags": [
+ "Organization Bounties - Escrow (v2)"
+ ]
}
},
- "/api/organizations/{organizationId}/bounties/draft": {
+ "/api/organizations/{organizationId}/bounties/{id}/escrow/reset-to-draft": {
"post": {
- "description": "Creates an empty bounty in draft status that organization members can edit section by section through the Configure wizard.",
- "operationId": "OrganizationBountiesDraftsController_createDraft",
+ "description": "Resets a bounty stranded in draft_awaiting_funding back to draft so the organizer can republish. Refuses while the publish op may still settle on-chain (PENDING_SUBMIT / PENDING_CONFIRM / COMPLETED).",
+ "operationId": "OrganizationBountiesEscrowController_resetToDraft",
"parameters": [
{
"name": "organizationId",
@@ -23354,60 +26328,20 @@
"example": "org_1234567890",
"type": "string"
}
- }
- ],
- "responses": {
- "201": {
- "description": "Draft created",
- "content": {
- "application/json": {
- "schema": {
- "$ref": "#/components/schemas/BountyDraftResponseDto"
- }
- }
- }
},
- "400": {
- "description": "User is not a member of the organization"
- }
- },
- "security": [
- {
- "bearer": []
- }
- ],
- "summary": "Create a new bounty draft for an organization",
- "tags": ["Organization Bounties - Drafts"]
- }
- },
- "/api/organizations/{organizationId}/bounties/drafts": {
- "get": {
- "description": "Lists draft and draft_awaiting_funding bounties for an organization.",
- "operationId": "OrganizationBountiesDraftsController_getOrganizationDrafts",
- "parameters": [
{
- "name": "organizationId",
+ "name": "id",
"required": true,
"in": "path",
+ "description": "Bounty draft id",
"schema": {
- "example": "org_1234567890",
"type": "string"
}
}
],
"responses": {
"200": {
- "description": "Drafts retrieved",
- "content": {
- "application/json": {
- "schema": {
- "type": "array",
- "items": {
- "$ref": "#/components/schemas/BountyDraftResponseDto"
- }
- }
- }
- }
+ "description": "Bounty reset to draft."
}
},
"security": [
@@ -23415,8 +26349,10 @@
"bearer": []
}
],
- "summary": "Get an organization's bounty drafts",
- "tags": ["Organization Bounties - Drafts"]
+ "summary": "Return a stuck bounty to draft after a failed publish",
+ "tags": [
+ "Organization Bounties - Escrow (v2)"
+ ]
}
},
"/api/organizations/{organizationId}/bounties/{id}/escrow/publish": {
@@ -23475,7 +26411,9 @@
}
],
"summary": "Publish a bounty draft to the events contract",
- "tags": ["Organization Bounties - Escrow (v2)"]
+ "tags": [
+ "Organization Bounties - Escrow (v2)"
+ ]
}
},
"/api/organizations/{organizationId}/bounties/{id}/escrow/cancel": {
@@ -23530,7 +26468,9 @@
}
],
"summary": "Cancel an active bounty",
- "tags": ["Organization Bounties - Escrow (v2)"]
+ "tags": [
+ "Organization Bounties - Escrow (v2)"
+ ]
}
},
"/api/organizations/{organizationId}/bounties/{id}/escrow/select-winners": {
@@ -23585,7 +26525,9 @@
}
],
"summary": "Select winners for a bounty",
- "tags": ["Organization Bounties - Escrow (v2)"]
+ "tags": [
+ "Organization Bounties - Escrow (v2)"
+ ]
}
},
"/api/organizations/{organizationId}/bounties/{id}/escrow/ops/{opRowId}/submit-signed": {
@@ -23647,7 +26589,9 @@
}
],
"summary": "Submit signed XDR for a previously-built bounty escrow op",
- "tags": ["Organization Bounties - Escrow (v2)"]
+ "tags": [
+ "Organization Bounties - Escrow (v2)"
+ ]
}
},
"/api/organizations/{organizationId}/bounties/{id}/escrow/ops/{opRowId}": {
@@ -23699,7 +26643,9 @@
}
],
"summary": "Read the current state of a bounty escrow op",
- "tags": ["Organization Bounties - Escrow (v2)"]
+ "tags": [
+ "Organization Bounties - Escrow (v2)"
+ ]
}
},
"/api/bounties/{id}/escrow/apply": {
@@ -23745,7 +26691,9 @@
}
],
"summary": "Apply to a bounty",
- "tags": ["Bounties - Participant Escrow (v2)"]
+ "tags": [
+ "Bounties - Participant Escrow (v2)"
+ ]
}
},
"/api/bounties/{id}/escrow/withdraw-application": {
@@ -23791,7 +26739,9 @@
}
],
"summary": "Withdraw a bounty application",
- "tags": ["Bounties - Participant Escrow (v2)"]
+ "tags": [
+ "Bounties - Participant Escrow (v2)"
+ ]
}
},
"/api/bounties/{id}/escrow/submit": {
@@ -23837,7 +26787,9 @@
}
],
"summary": "Submit work for a bounty",
- "tags": ["Bounties - Participant Escrow (v2)"]
+ "tags": [
+ "Bounties - Participant Escrow (v2)"
+ ]
}
},
"/api/bounties/{id}/escrow/withdraw-submission": {
@@ -23882,7 +26834,9 @@
}
],
"summary": "Withdraw a bounty submission anchor",
- "tags": ["Bounties - Participant Escrow (v2)"]
+ "tags": [
+ "Bounties - Participant Escrow (v2)"
+ ]
}
},
"/api/bounties/{id}/escrow/contribute": {
@@ -23928,7 +26882,9 @@
}
],
"summary": "Contribute funds to a bounty pool",
- "tags": ["Bounties - Participant Escrow (v2)"]
+ "tags": [
+ "Bounties - Participant Escrow (v2)"
+ ]
}
},
"/api/bounties/{id}/escrow/ops/{opRowId}/submit-signed": {
@@ -23945,10 +26901,310 @@
}
},
{
- "name": "opRowId",
+ "name": "opRowId",
+ "required": true,
+ "in": "path",
+ "description": "EscrowOp uuid",
+ "schema": {
+ "type": "string"
+ }
+ }
+ ],
+ "requestBody": {
+ "required": true,
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/BountySubmitSignedXdrDto"
+ }
+ }
+ }
+ },
+ "responses": {
+ "200": {
+ "description": "",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/BountyEscrowOpResponseDto"
+ }
+ }
+ }
+ }
+ },
+ "security": [
+ {
+ "bearer": []
+ }
+ ],
+ "summary": "Submit signed XDR for a previously-built participant op",
+ "tags": [
+ "Bounties - Participant Escrow (v2)"
+ ]
+ }
+ },
+ "/api/bounties/{id}/escrow/ops/{opRowId}": {
+ "get": {
+ "operationId": "BountyParticipantEscrowController_getOp",
+ "parameters": [
+ {
+ "name": "id",
+ "required": true,
+ "in": "path",
+ "description": "Bounty id",
+ "schema": {
+ "type": "string"
+ }
+ },
+ {
+ "name": "opRowId",
+ "required": true,
+ "in": "path",
+ "description": "EscrowOp uuid",
+ "schema": {
+ "type": "string"
+ }
+ }
+ ],
+ "responses": {
+ "200": {
+ "description": "",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/BountyEscrowOpResponseDto"
+ }
+ }
+ }
+ }
+ },
+ "security": [
+ {
+ "bearer": []
+ }
+ ],
+ "summary": "Read the state of a participant op",
+ "tags": [
+ "Bounties - Participant Escrow (v2)"
+ ]
+ }
+ },
+ "/api/bounties/{bountyId}/v2/applications": {
+ "post": {
+ "operationId": "BountyApplicationController_create",
+ "parameters": [
+ {
+ "name": "bountyId",
+ "required": true,
+ "in": "path",
+ "schema": {
+ "type": "string"
+ }
+ }
+ ],
+ "requestBody": {
+ "required": true,
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/CreateBountyApplicationDto"
+ }
+ }
+ }
+ },
+ "responses": {
+ "201": {
+ "description": ""
+ }
+ },
+ "security": [
+ {
+ "bearer": []
+ }
+ ],
+ "summary": "Submit an application for a application bounty",
+ "tags": [
+ "Bounty v2 - Applications"
+ ]
+ }
+ },
+ "/api/bounties/{bountyId}/v2/applications/me": {
+ "get": {
+ "operationId": "BountyApplicationController_getMine",
+ "parameters": [
+ {
+ "name": "bountyId",
+ "required": true,
+ "in": "path",
+ "schema": {
+ "type": "string"
+ }
+ }
+ ],
+ "responses": {
+ "200": {
+ "description": "The caller's application, or null when they have not applied.",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/BountyApplicationResponseDto"
+ }
+ }
+ }
+ }
+ },
+ "security": [
+ {
+ "bearer": []
+ }
+ ],
+ "summary": "Read the caller's application for this bounty",
+ "tags": [
+ "Bounty v2 - Applications"
+ ]
+ }
+ },
+ "/api/bounties/{bountyId}/v2/applications/{appId}": {
+ "patch": {
+ "operationId": "BountyApplicationController_edit",
+ "parameters": [
+ {
+ "name": "bountyId",
+ "required": true,
+ "in": "path",
+ "schema": {
+ "type": "string"
+ }
+ },
+ {
+ "name": "appId",
+ "required": true,
+ "in": "path",
+ "schema": {
+ "type": "string"
+ }
+ }
+ ],
+ "requestBody": {
+ "required": true,
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/EditBountyApplicationDto"
+ }
+ }
+ }
+ },
+ "responses": {
+ "200": {
+ "description": ""
+ }
+ },
+ "security": [
+ {
+ "bearer": []
+ }
+ ],
+ "summary": "Edit a SUBMITTED application (before shortlist)",
+ "tags": [
+ "Bounty v2 - Applications"
+ ]
+ },
+ "delete": {
+ "operationId": "BountyApplicationController_withdraw",
+ "parameters": [
+ {
+ "name": "bountyId",
+ "required": true,
+ "in": "path",
+ "schema": {
+ "type": "string"
+ }
+ },
+ {
+ "name": "appId",
+ "required": true,
+ "in": "path",
+ "schema": {
+ "type": "string"
+ }
+ }
+ ],
+ "responses": {
+ "200": {
+ "description": ""
+ }
+ },
+ "security": [
+ {
+ "bearer": []
+ }
+ ],
+ "summary": "Withdraw a SUBMITTED application",
+ "tags": [
+ "Bounty v2 - Applications"
+ ]
+ }
+ },
+ "/api/organizations/{organizationId}/bounties/{bountyId}/v2/applications": {
+ "get": {
+ "operationId": "OrganizationBountyShortlistController_list",
+ "parameters": [
+ {
+ "name": "bountyId",
+ "required": true,
+ "in": "path",
+ "schema": {
+ "type": "string"
+ }
+ },
+ {
+ "name": "status",
+ "required": false,
+ "in": "query",
+ "description": "Filter by application status",
+ "schema": {
+ "enum": [
+ "SUBMITTED",
+ "SHORTLISTED",
+ "SELECTED",
+ "DECLINED",
+ "WITHDRAWN"
+ ],
+ "type": "string"
+ }
+ },
+ {
+ "name": "organizationId",
+ "required": true,
+ "in": "path",
+ "schema": {}
+ }
+ ],
+ "responses": {
+ "200": {
+ "description": ""
+ }
+ },
+ "security": [
+ {
+ "bearer": []
+ }
+ ],
+ "summary": "List applications on a bounty",
+ "tags": [
+ "Bounty v2 - Organizer Shortlist"
+ ]
+ }
+ },
+ "/api/organizations/{organizationId}/bounties/{bountyId}/v2/applications/select": {
+ "post": {
+ "operationId": "OrganizationBountyShortlistController_selectForSingleClaim",
+ "parameters": [
+ {
+ "name": "bountyId",
"required": true,
"in": "path",
- "description": "EscrowOp uuid",
"schema": {
"type": "string"
}
@@ -23959,21 +27215,14 @@
"content": {
"application/json": {
"schema": {
- "$ref": "#/components/schemas/BountySubmitSignedXdrDto"
+ "$ref": "#/components/schemas/SelectForSingleClaimDto"
}
}
}
},
"responses": {
"200": {
- "description": "",
- "content": {
- "application/json": {
- "schema": {
- "$ref": "#/components/schemas/BountyEscrowOpResponseDto"
- }
- }
- }
+ "description": ""
}
},
"security": [
@@ -23981,60 +27230,57 @@
"bearer": []
}
],
- "summary": "Submit signed XDR for a previously-built participant op",
- "tags": ["Bounties - Participant Escrow (v2)"]
+ "summary": "Select a single application (application (light) single claim / application (full) single claim)",
+ "tags": [
+ "Bounty v2 - Organizer Shortlist"
+ ]
}
},
- "/api/bounties/{id}/escrow/ops/{opRowId}": {
- "get": {
- "operationId": "BountyParticipantEscrowController_getOp",
+ "/api/organizations/{organizationId}/bounties/{bountyId}/v2/applications/shortlist": {
+ "post": {
+ "operationId": "OrganizationBountyShortlistController_createShortlist",
"parameters": [
{
- "name": "id",
- "required": true,
- "in": "path",
- "description": "Bounty id",
- "schema": {
- "type": "string"
- }
- },
- {
- "name": "opRowId",
+ "name": "bountyId",
"required": true,
"in": "path",
- "description": "EscrowOp uuid",
"schema": {
"type": "string"
}
}
],
- "responses": {
- "200": {
- "description": "",
- "content": {
- "application/json": {
- "schema": {
- "$ref": "#/components/schemas/BountyEscrowOpResponseDto"
- }
+ "requestBody": {
+ "required": true,
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/CreateShortlistDto"
}
}
}
},
+ "responses": {
+ "200": {
+ "description": ""
+ }
+ },
"security": [
{
"bearer": []
}
],
- "summary": "Read the state of a participant op",
- "tags": ["Bounties - Participant Escrow (v2)"]
+ "summary": "Approve a shortlist (application (light) competition / application (full) competition)",
+ "tags": [
+ "Bounty v2 - Organizer Shortlist"
+ ]
}
},
- "/api/bounties/{bountyId}/v2/applications": {
+ "/api/organizations/{organizationId}/bounties/{bountyId}/v2/applications/{appId}/decline": {
"post": {
- "operationId": "BountyApplicationController_create",
+ "operationId": "OrganizationBountyShortlistController_decline",
"parameters": [
{
- "name": "bountyId",
+ "name": "appId",
"required": true,
"in": "path",
"schema": {
@@ -24047,13 +27293,13 @@
"content": {
"application/json": {
"schema": {
- "$ref": "#/components/schemas/CreateBountyApplicationDto"
+ "$ref": "#/components/schemas/DeclineApplicationDto"
}
}
}
},
"responses": {
- "201": {
+ "200": {
"description": ""
}
},
@@ -24062,14 +27308,24 @@
"bearer": []
}
],
- "summary": "Submit an application for a application bounty",
- "tags": ["Bounty v2 - Applications"]
+ "summary": "Decline an application with optional reason",
+ "tags": [
+ "Bounty v2 - Organizer Shortlist"
+ ]
}
},
- "/api/bounties/{bountyId}/v2/applications/me": {
+ "/api/organizations/{organizationId}/bounties/{bountyId}/submissions": {
"get": {
- "operationId": "BountyApplicationController_getMine",
+ "operationId": "OrganizationBountySubmissionsController_list",
"parameters": [
+ {
+ "name": "organizationId",
+ "required": true,
+ "in": "path",
+ "schema": {
+ "type": "string"
+ }
+ },
{
"name": "bountyId",
"required": true,
@@ -24077,15 +27333,38 @@
"schema": {
"type": "string"
}
+ },
+ {
+ "name": "page",
+ "required": false,
+ "in": "query",
+ "schema": {
+ "type": "number"
+ }
+ },
+ {
+ "name": "limit",
+ "required": false,
+ "in": "query",
+ "schema": {
+ "type": "number"
+ }
+ },
+ {
+ "name": "status",
+ "required": false,
+ "in": "query",
+ "description": "Filter by review status (pending/accepted/rejected/disputed)",
+ "schema": {}
}
],
"responses": {
"200": {
- "description": "The caller's application, or null when they have not applied.",
+ "description": "",
"content": {
"application/json": {
"schema": {
- "$ref": "#/components/schemas/BountyApplicationResponseDto"
+ "$ref": "#/components/schemas/OrganizerBountySubmissionListDto"
}
}
}
@@ -24096,14 +27375,24 @@
"bearer": []
}
],
- "summary": "Read the caller's application for this bounty",
- "tags": ["Bounty v2 - Applications"]
+ "summary": "List submitted work on a bounty (organizer)",
+ "tags": [
+ "Bounty v2 - Organizer Submissions"
+ ]
}
},
- "/api/bounties/{bountyId}/v2/applications/{appId}": {
- "patch": {
- "operationId": "BountyApplicationController_edit",
+ "/api/organizations/{organizationId}/bounties/{bountyId}/submissions/{submissionId}": {
+ "get": {
+ "operationId": "OrganizationBountySubmissionsController_get",
"parameters": [
+ {
+ "name": "organizationId",
+ "required": true,
+ "in": "path",
+ "schema": {
+ "type": "string"
+ }
+ },
{
"name": "bountyId",
"required": true,
@@ -24113,7 +27402,7 @@
}
},
{
- "name": "appId",
+ "name": "submissionId",
"required": true,
"in": "path",
"schema": {
@@ -24121,19 +27410,16 @@
}
}
],
- "requestBody": {
- "required": true,
- "content": {
- "application/json": {
- "schema": {
- "$ref": "#/components/schemas/EditBountyApplicationDto"
- }
- }
- }
- },
"responses": {
"200": {
- "description": ""
+ "description": "",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/OrganizerBountySubmissionDto"
+ }
+ }
+ }
}
},
"security": [
@@ -24141,14 +27427,18 @@
"bearer": []
}
],
- "summary": "Edit a SUBMITTED application (before shortlist)",
- "tags": ["Bounty v2 - Applications"]
- },
- "delete": {
- "operationId": "BountyApplicationController_withdraw",
+ "summary": "Read a single submission (organizer)",
+ "tags": [
+ "Bounty v2 - Organizer Submissions"
+ ]
+ }
+ },
+ "/api/organizations/{organizationId}/bounties/{bountyId}/overview": {
+ "get": {
+ "operationId": "OrganizationBountyOverviewController_overview",
"parameters": [
{
- "name": "bountyId",
+ "name": "organizationId",
"required": true,
"in": "path",
"schema": {
@@ -24156,7 +27446,7 @@
}
},
{
- "name": "appId",
+ "name": "bountyId",
"required": true,
"in": "path",
"schema": {
@@ -24166,7 +27456,14 @@
],
"responses": {
"200": {
- "description": ""
+ "description": "",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/BountyOperateOverviewDto"
+ }
+ }
+ }
}
},
"security": [
@@ -24174,16 +27471,18 @@
"bearer": []
}
],
- "summary": "Withdraw a SUBMITTED application",
- "tags": ["Bounty v2 - Applications"]
+ "summary": "Operate dashboard overview + intake stats",
+ "tags": [
+ "Bounty v2 - Organizer Operate"
+ ]
}
},
- "/api/organizations/{organizationId}/bounties/{bountyId}/v2/applications": {
- "get": {
- "operationId": "OrganizationBountyShortlistController_list",
+ "/api/organizations/{organizationId}/bounties/{bountyId}/archive": {
+ "post": {
+ "operationId": "OrganizationBountyArchiveController_archive",
"parameters": [
{
- "name": "bountyId",
+ "name": "organizationId",
"required": true,
"in": "path",
"schema": {
@@ -24191,31 +27490,17 @@
}
},
{
- "name": "status",
- "required": false,
- "in": "query",
- "description": "Filter by application status",
+ "name": "bountyId",
+ "required": true,
+ "in": "path",
"schema": {
- "enum": [
- "SUBMITTED",
- "SHORTLISTED",
- "SELECTED",
- "DECLINED",
- "WITHDRAWN"
- ],
"type": "string"
}
- },
- {
- "name": "organizationId",
- "required": true,
- "in": "path",
- "schema": {}
}
],
"responses": {
"200": {
- "description": ""
+ "description": "Archive state."
}
},
"security": [
@@ -24223,14 +27508,24 @@
"bearer": []
}
],
- "summary": "List applications on a bounty",
- "tags": ["Bounty v2 - Organizer Shortlist"]
+ "summary": "Archive a completed/cancelled bounty",
+ "tags": [
+ "Bounty v2 - Organizer Archive"
+ ]
}
},
- "/api/organizations/{organizationId}/bounties/{bountyId}/v2/applications/select": {
+ "/api/organizations/{organizationId}/bounties/{bountyId}/restore": {
"post": {
- "operationId": "OrganizationBountyShortlistController_selectForSingleClaim",
+ "operationId": "OrganizationBountyArchiveController_restore",
"parameters": [
+ {
+ "name": "organizationId",
+ "required": true,
+ "in": "path",
+ "schema": {
+ "type": "string"
+ }
+ },
{
"name": "bountyId",
"required": true,
@@ -24240,19 +27535,9 @@
}
}
],
- "requestBody": {
- "required": true,
- "content": {
- "application/json": {
- "schema": {
- "$ref": "#/components/schemas/SelectForSingleClaimDto"
- }
- }
- }
- },
"responses": {
"200": {
- "description": ""
+ "description": "Archive state."
}
},
"security": [
@@ -24260,14 +27545,24 @@
"bearer": []
}
],
- "summary": "Select a single application (application (light) single claim / application (full) single claim)",
- "tags": ["Bounty v2 - Organizer Shortlist"]
+ "summary": "Restore an archived bounty",
+ "tags": [
+ "Bounty v2 - Organizer Archive"
+ ]
}
},
- "/api/organizations/{organizationId}/bounties/{bountyId}/v2/applications/shortlist": {
+ "/api/organizations/{organizationId}/bounties/{bountyId}/publish-results": {
"post": {
- "operationId": "OrganizationBountyShortlistController_createShortlist",
+ "operationId": "OrganizationBountyResultsController_publish",
"parameters": [
+ {
+ "name": "organizationId",
+ "required": true,
+ "in": "path",
+ "schema": {
+ "type": "string"
+ }
+ },
{
"name": "bountyId",
"required": true,
@@ -24282,14 +27577,21 @@
"content": {
"application/json": {
"schema": {
- "$ref": "#/components/schemas/CreateShortlistDto"
+ "$ref": "#/components/schemas/PublishBountyResultsDto"
}
}
}
},
"responses": {
"200": {
- "description": ""
+ "description": "",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/BountyAnnouncementDto"
+ }
+ }
+ }
}
},
"security": [
@@ -24297,16 +27599,18 @@
"bearer": []
}
],
- "summary": "Approve a shortlist (application (light) competition / application (full) competition)",
- "tags": ["Bounty v2 - Organizer Shortlist"]
+ "summary": "Publish the results/winner announcement",
+ "tags": [
+ "Bounty v2 - Organizer Results"
+ ]
}
},
- "/api/organizations/{organizationId}/bounties/{bountyId}/v2/applications/{appId}/decline": {
- "post": {
- "operationId": "OrganizationBountyShortlistController_decline",
+ "/api/bounties/{bountyId}/announcement": {
+ "get": {
+ "operationId": "BountyAnnouncementPublicController_get",
"parameters": [
{
- "name": "appId",
+ "name": "bountyId",
"required": true,
"in": "path",
"schema": {
@@ -24314,28 +27618,22 @@
}
}
],
- "requestBody": {
- "required": true,
- "content": {
- "application/json": {
- "schema": {
- "$ref": "#/components/schemas/DeclineApplicationDto"
- }
- }
- }
- },
"responses": {
"200": {
- "description": ""
+ "description": "Null if unpublished.",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/BountyAnnouncementDto"
+ }
+ }
+ }
}
},
- "security": [
- {
- "bearer": []
- }
- ],
- "summary": "Decline an application with optional reason",
- "tags": ["Bounty v2 - Organizer Shortlist"]
+ "summary": "Public results/winner announcement for a bounty",
+ "tags": [
+ "bounties"
+ ]
}
},
"/api/bounties/{bountyId}/v2/competition/join": {
@@ -24372,7 +27670,9 @@
}
],
"summary": "Join an open competition bounty",
- "tags": ["Bounty v2 - open competition"]
+ "tags": [
+ "Bounty v2 - open competition"
+ ]
},
"delete": {
"operationId": "BountyCompetitionJoinController_leave",
@@ -24407,7 +27707,9 @@
}
],
"summary": "Leave an open competition before submitting",
- "tags": ["Bounty v2 - open competition"]
+ "tags": [
+ "Bounty v2 - open competition"
+ ]
}
},
"/api/bounties/me/applications": {
@@ -24464,7 +27766,9 @@
}
],
"summary": "List the caller's applications across all bounties",
- "tags": ["Bounty v2 - Participant dashboard"]
+ "tags": [
+ "Bounty v2 - Participant dashboard"
+ ]
}
},
"/api/bounties/me/submissions": {
@@ -24512,7 +27816,9 @@
}
],
"summary": "List the caller's submissions across all bounties",
- "tags": ["Bounty v2 - Participant dashboard"]
+ "tags": [
+ "Bounty v2 - Participant dashboard"
+ ]
}
},
"/api/bounties/me/submissions/{bountyId}": {
@@ -24546,7 +27852,9 @@
}
],
"summary": "Read the caller's submission for one bounty",
- "tags": ["Bounty v2 - Participant dashboard"]
+ "tags": [
+ "Bounty v2 - Participant dashboard"
+ ]
}
},
"/api/bounties/{id}/results": {
@@ -24580,7 +27888,9 @@
}
],
"summary": "Public results / leaderboard (winners by tier)",
- "tags": ["Bounty v2 - Results"]
+ "tags": [
+ "Bounty v2 - Results"
+ ]
}
},
"/api/bounties/{id}/submissions": {
@@ -24614,7 +27924,9 @@
}
],
"summary": "Submissions the caller may see (respects submissionVisibility)",
- "tags": ["Bounty v2 - Results"]
+ "tags": [
+ "Bounty v2 - Results"
+ ]
}
},
"/api/bounties": {
@@ -24675,7 +27987,9 @@
}
},
"summary": "Public bounty marketplace list",
- "tags": ["bounties"]
+ "tags": [
+ "bounties"
+ ]
}
},
"/api/bounties/{id}": {
@@ -24704,7 +28018,9 @@
}
},
"summary": "Public bounty detail",
- "tags": ["bounties"]
+ "tags": [
+ "bounties"
+ ]
}
},
"/api/organizations/{organizationId}/grants/{id}/escrow/publish": {
@@ -24762,7 +28078,9 @@
}
],
"summary": "Publish a grant draft to the events contract",
- "tags": ["Organization Grants - Escrow (v2)"]
+ "tags": [
+ "Organization Grants - Escrow (v2)"
+ ]
}
},
"/api/organizations/{organizationId}/grants/{id}/escrow/cancel": {
@@ -24814,7 +28132,9 @@
}
],
"summary": "Cancel an active grant",
- "tags": ["Organization Grants - Escrow (v2)"]
+ "tags": [
+ "Organization Grants - Escrow (v2)"
+ ]
}
},
"/api/organizations/{organizationId}/grants/{id}/escrow/select-winners": {
@@ -24867,7 +28187,9 @@
}
],
"summary": "Select grant recipients",
- "tags": ["Organization Grants - Escrow (v2)"]
+ "tags": [
+ "Organization Grants - Escrow (v2)"
+ ]
}
},
"/api/organizations/{organizationId}/grants/{id}/escrow/claim-milestone": {
@@ -24920,7 +28242,9 @@
}
],
"summary": "Pay out a specific milestone for a recipient",
- "tags": ["Organization Grants - Escrow (v2)"]
+ "tags": [
+ "Organization Grants - Escrow (v2)"
+ ]
}
},
"/api/organizations/{organizationId}/grants/{id}/escrow/ops/{opRowId}/submit-signed": {
@@ -24980,7 +28304,9 @@
}
],
"summary": "Submit signed XDR for a grant op",
- "tags": ["Organization Grants - Escrow (v2)"]
+ "tags": [
+ "Organization Grants - Escrow (v2)"
+ ]
}
},
"/api/organizations/{organizationId}/grants/{id}/escrow/ops/{opRowId}": {
@@ -25030,7 +28356,9 @@
}
],
"summary": "Read the state of a grant op",
- "tags": ["Organization Grants - Escrow (v2)"]
+ "tags": [
+ "Organization Grants - Escrow (v2)"
+ ]
}
},
"/api/grants/{id}/escrow/contribute": {
@@ -25076,7 +28404,9 @@
}
],
"summary": "Contribute funds to a grant pool",
- "tags": ["Grants - Contribute (v2)"]
+ "tags": [
+ "Grants - Contribute (v2)"
+ ]
}
},
"/api/grants": {
@@ -25153,7 +28483,9 @@
}
},
"summary": "List published grants",
- "tags": ["Grants"]
+ "tags": [
+ "Grants"
+ ]
}
},
"/api/opportunities": {
@@ -25170,7 +28502,13 @@
"default": "all",
"example": "all",
"type": "string",
- "enum": ["all", "bounty", "hackathon", "grant", "crowdfunding"]
+ "enum": [
+ "all",
+ "bounty",
+ "hackathon",
+ "grant",
+ "crowdfunding"
+ ]
}
},
{
@@ -25212,7 +28550,11 @@
"default": "newest",
"example": "newest",
"type": "string",
- "enum": ["newest", "deadline", "prize_desc"]
+ "enum": [
+ "newest",
+ "deadline",
+ "prize_desc"
+ ]
}
},
{
@@ -25252,7 +28594,9 @@
}
},
"summary": "List opportunities across all pillars",
- "tags": ["Opportunities"]
+ "tags": [
+ "Opportunities"
+ ]
}
},
"/api/newsletter/subscribe": {
@@ -25295,7 +28639,9 @@
}
},
"summary": "Subscribe to the newsletter",
- "tags": ["Newsletter"]
+ "tags": [
+ "Newsletter"
+ ]
}
},
"/api/newsletter/confirm/{token}": {
@@ -25325,7 +28671,9 @@
}
},
"summary": "Confirm newsletter subscription",
- "tags": ["Newsletter"]
+ "tags": [
+ "Newsletter"
+ ]
}
},
"/api/newsletter/unsubscribe/{token}": {
@@ -25352,7 +28700,9 @@
}
},
"summary": "Unsubscribe by token",
- "tags": ["Newsletter"]
+ "tags": [
+ "Newsletter"
+ ]
}
},
"/api/newsletter/unsubscribe": {
@@ -25379,7 +28729,9 @@
}
},
"summary": "Unsubscribe by email",
- "tags": ["Newsletter"]
+ "tags": [
+ "Newsletter"
+ ]
}
},
"/api/newsletter/preferences": {
@@ -25409,7 +28761,9 @@
}
},
"summary": "Update subscription preferences",
- "tags": ["Newsletter"]
+ "tags": [
+ "Newsletter"
+ ]
}
},
"/api/newsletter/tracking/open/{campaignId}/{subscriberId}": {
@@ -25442,7 +28796,9 @@
}
},
"summary": "Track email open",
- "tags": ["Newsletter"]
+ "tags": [
+ "Newsletter"
+ ]
}
},
"/api/newsletter/tracking/click/{campaignId}/{subscriberId}": {
@@ -25485,7 +28841,9 @@
}
},
"summary": "Track email link click",
- "tags": ["Newsletter"]
+ "tags": [
+ "Newsletter"
+ ]
}
},
"/api/newsletter/subscribers": {
@@ -25499,7 +28857,12 @@
"in": "query",
"description": "Filter by status",
"schema": {
- "enum": ["active", "pending", "unsubscribed", "bounced"],
+ "enum": [
+ "active",
+ "pending",
+ "unsubscribed",
+ "bounced"
+ ],
"type": "string"
}
},
@@ -25578,7 +28941,9 @@
}
],
"summary": "List newsletter subscribers",
- "tags": ["Newsletter"]
+ "tags": [
+ "Newsletter"
+ ]
}
},
"/api/newsletter/stats": {
@@ -25627,7 +28992,9 @@
}
],
"summary": "Get newsletter statistics",
- "tags": ["Newsletter"]
+ "tags": [
+ "Newsletter"
+ ]
}
},
"/api/newsletter/export": {
@@ -25641,7 +29008,12 @@
"in": "query",
"description": "Filter by subscriber status",
"schema": {
- "enum": ["active", "pending", "unsubscribed", "bounced"],
+ "enum": [
+ "active",
+ "pending",
+ "unsubscribed",
+ "bounced"
+ ],
"type": "string"
}
},
@@ -25673,7 +29045,9 @@
}
],
"summary": "Export subscribers as CSV",
- "tags": ["Newsletter"]
+ "tags": [
+ "Newsletter"
+ ]
}
},
"/api/newsletter/subscribers/{id}": {
@@ -25717,7 +29091,9 @@
}
],
"summary": "Delete a subscriber",
- "tags": ["Newsletter"]
+ "tags": [
+ "Newsletter"
+ ]
}
},
"/api/newsletter/campaigns": {
@@ -25752,7 +29128,9 @@
}
],
"summary": "Create a new campaign",
- "tags": ["Newsletter"]
+ "tags": [
+ "Newsletter"
+ ]
},
"get": {
"description": "Get a paginated list of newsletter campaigns, ordered by most recent first.",
@@ -25803,7 +29181,9 @@
}
],
"summary": "List newsletter campaigns",
- "tags": ["Newsletter"]
+ "tags": [
+ "Newsletter"
+ ]
}
},
"/api/newsletter/campaigns/{id}": {
@@ -25838,7 +29218,9 @@
}
],
"summary": "Get campaign details",
- "tags": ["Newsletter"]
+ "tags": [
+ "Newsletter"
+ ]
}
},
"/api/newsletter/campaigns/{id}/send": {
@@ -25887,7 +29269,125 @@
}
],
"summary": "Send a campaign",
- "tags": ["Newsletter"]
+ "tags": [
+ "Newsletter"
+ ]
+ }
+ },
+ "/api/discover/landing": {
+ "get": {
+ "description": "Returns curated slices of bounties, hackathons, crowdfunding campaigns, grants, and recent winners in a single response. All queries run in parallel server-side.",
+ "operationId": "DiscoverController_getLanding",
+ "parameters": [
+ {
+ "name": "bountyLimit",
+ "required": false,
+ "in": "query",
+ "description": "Max bounty cards on the landing page.",
+ "schema": {
+ "minimum": 1,
+ "maximum": 20,
+ "default": 3,
+ "type": "number"
+ }
+ },
+ {
+ "name": "hackathonLimit",
+ "required": false,
+ "in": "query",
+ "description": "Max hackathon cards on the landing page.",
+ "schema": {
+ "minimum": 1,
+ "maximum": 20,
+ "default": 5,
+ "type": "number"
+ }
+ },
+ {
+ "name": "crowdfundingLimit",
+ "required": false,
+ "in": "query",
+ "description": "Max crowdfunding cards on the landing page.",
+ "schema": {
+ "minimum": 1,
+ "maximum": 20,
+ "default": 5,
+ "type": "number"
+ }
+ },
+ {
+ "name": "grantLimit",
+ "required": false,
+ "in": "query",
+ "description": "Max grant cards on the landing page.",
+ "schema": {
+ "minimum": 1,
+ "maximum": 20,
+ "default": 3,
+ "type": "number"
+ }
+ },
+ {
+ "name": "winnersLimit",
+ "required": false,
+ "in": "query",
+ "description": "Max recent-winner rows.",
+ "schema": {
+ "minimum": 1,
+ "maximum": 50,
+ "default": 8,
+ "type": "number"
+ }
+ }
+ ],
+ "responses": {
+ "200": {
+ "description": "",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/DiscoverLandingDto"
+ }
+ }
+ }
+ }
+ },
+ "summary": "Discover landing feed",
+ "tags": [
+ "discover"
+ ]
+ }
+ },
+ "/api/discover/recent-winners": {
+ "get": {
+ "operationId": "DiscoverController_getRecentWinners",
+ "parameters": [
+ {
+ "name": "limit",
+ "required": false,
+ "in": "query",
+ "description": "Number of winners to return (default: 8, max: 50)",
+ "schema": {
+ "type": "number"
+ }
+ }
+ ],
+ "responses": {
+ "200": {
+ "description": "",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/RecentWinnersResponseDto"
+ }
+ }
+ }
+ }
+ },
+ "summary": "Recent prize winners across hackathons, bounties, and grants",
+ "tags": [
+ "discover"
+ ]
}
},
"/api/admin/queues/dlq/depth": {
@@ -25905,7 +29405,9 @@
}
],
"summary": "Current DLQ depth (admin only)",
- "tags": ["Admin / Queues"]
+ "tags": [
+ "Admin / Queues"
+ ]
}
},
"/api/admin/queues/dlq": {
@@ -25933,7 +29435,9 @@
}
],
"summary": "List parked DLQ entries (admin only)",
- "tags": ["Admin / Queues"]
+ "tags": [
+ "Admin / Queues"
+ ]
}
},
"/api/admin/queues/dlq/{jobId}": {
@@ -25960,7 +29464,9 @@
}
],
"summary": "Fetch a single parked DLQ entry (admin only)",
- "tags": ["Admin / Queues"]
+ "tags": [
+ "Admin / Queues"
+ ]
}
},
"/api/admin/queues/dlq/{jobId}/replay": {
@@ -25988,12 +29494,16 @@
}
],
"summary": "Re-enqueue a parked DLQ entry on its original queue",
- "tags": ["Admin / Queues"]
+ "tags": [
+ "Admin / Queues"
+ ]
}
},
"/api/auth/sign-in/social": {
"post": {
- "tags": ["Default"],
+ "tags": [
+ "Default"
+ ],
"description": "Sign in with a social provider",
"operationId": "socialSignIn",
"security": [
@@ -26010,66 +29520,109 @@
"type": "object",
"properties": {
"callbackURL": {
- "type": ["string", "null"],
+ "type": [
+ "string",
+ "null"
+ ],
"description": "Callback URL to redirect to after the user has signed in"
},
"newUserCallbackURL": {
- "type": ["string", "null"]
+ "type": [
+ "string",
+ "null"
+ ]
},
"errorCallbackURL": {
- "type": ["string", "null"],
+ "type": [
+ "string",
+ "null"
+ ],
"description": "Callback URL to redirect to if an error happens"
},
"provider": {
"type": "string"
},
"disableRedirect": {
- "type": ["boolean", "null"],
+ "type": [
+ "boolean",
+ "null"
+ ],
"description": "Disable automatic redirection to the provider. Useful for handling the redirection yourself"
},
"idToken": {
- "type": ["object", "null"],
+ "type": [
+ "object",
+ "null"
+ ],
"properties": {
"token": {
"type": "string",
"description": "ID token from the provider"
},
"nonce": {
- "type": ["string", "null"],
+ "type": [
+ "string",
+ "null"
+ ],
"description": "Nonce used to generate the token"
},
"accessToken": {
- "type": ["string", "null"],
+ "type": [
+ "string",
+ "null"
+ ],
"description": "Access token from the provider"
},
"refreshToken": {
- "type": ["string", "null"],
+ "type": [
+ "string",
+ "null"
+ ],
"description": "Refresh token from the provider"
},
"expiresAt": {
- "type": ["number", "null"],
+ "type": [
+ "number",
+ "null"
+ ],
"description": "Expiry date of the token"
}
},
- "required": ["token"]
+ "required": [
+ "token"
+ ]
},
"scopes": {
- "type": ["array", "null"],
+ "type": [
+ "array",
+ "null"
+ ],
"description": "Array of scopes to request from the provider. This will override the default scopes passed."
},
"requestSignUp": {
- "type": ["boolean", "null"],
+ "type": [
+ "boolean",
+ "null"
+ ],
"description": "Explicitly request sign-up. Useful when disableImplicitSignUp is true for this provider"
},
"loginHint": {
- "type": ["string", "null"],
+ "type": [
+ "string",
+ "null"
+ ],
"description": "The login hint to use for the authorization code request"
},
"additionalData": {
- "type": ["string", "null"]
+ "type": [
+ "string",
+ "null"
+ ]
}
},
- "required": ["provider"]
+ "required": [
+ "provider"
+ ]
}
}
}
@@ -26095,10 +29648,16 @@
},
"redirect": {
"type": "boolean",
- "enum": [false]
+ "enum": [
+ false
+ ]
}
},
- "required": ["redirect", "token", "user"]
+ "required": [
+ "redirect",
+ "token",
+ "user"
+ ]
}
}
}
@@ -26113,7 +29672,9 @@
"type": "string"
}
},
- "required": ["message"]
+ "required": [
+ "message"
+ ]
}
}
},
@@ -26129,7 +29690,9 @@
"type": "string"
}
},
- "required": ["message"]
+ "required": [
+ "message"
+ ]
}
}
},
@@ -26200,7 +29763,9 @@
},
"/api/auth/get-session": {
"get": {
- "tags": ["Default"],
+ "tags": [
+ "Default"
+ ],
"description": "Get the current session",
"operationId": "getSession",
"security": [
@@ -26225,7 +29790,10 @@
"$ref": "#/components/schemas/User"
}
},
- "required": ["session", "user"]
+ "required": [
+ "session",
+ "user"
+ ]
}
}
}
@@ -26240,7 +29808,9 @@
"type": "string"
}
},
- "required": ["message"]
+ "required": [
+ "message"
+ ]
}
}
},
@@ -26256,7 +29826,9 @@
"type": "string"
}
},
- "required": ["message"]
+ "required": [
+ "message"
+ ]
}
}
},
@@ -26327,7 +29899,9 @@
},
"/api/auth/sign-out": {
"post": {
- "tags": ["Default"],
+ "tags": [
+ "Default"
+ ],
"description": "Sign out the current user",
"operationId": "signOut",
"security": [
@@ -26372,7 +29946,9 @@
"type": "string"
}
},
- "required": ["message"]
+ "required": [
+ "message"
+ ]
}
}
},
@@ -26388,7 +29964,9 @@
"type": "string"
}
},
- "required": ["message"]
+ "required": [
+ "message"
+ ]
}
}
},
@@ -26459,7 +30037,9 @@
},
"/api/auth/sign-up/email": {
"post": {
- "tags": ["Default"],
+ "tags": [
+ "Default"
+ ],
"description": "Sign up a user using email and password",
"operationId": "signUpWithEmailAndPassword",
"security": [
@@ -26499,7 +30079,11 @@
"description": "If this is false, the session will not be remembered. Default is `true`."
}
},
- "required": ["name", "email", "password"]
+ "required": [
+ "name",
+ "email",
+ "password"
+ ]
}
}
}
@@ -26564,7 +30148,9 @@
]
}
},
- "required": ["user"]
+ "required": [
+ "user"
+ ]
}
}
}
@@ -26579,7 +30165,9 @@
"type": "string"
}
},
- "required": ["message"]
+ "required": [
+ "message"
+ ]
}
}
},
@@ -26595,7 +30183,9 @@
"type": "string"
}
},
- "required": ["message"]
+ "required": [
+ "message"
+ ]
}
}
},
@@ -26681,7 +30271,9 @@
},
"/api/auth/sign-in/email": {
"post": {
- "tags": ["Default"],
+ "tags": [
+ "Default"
+ ],
"description": "Sign in with email and password",
"operationId": "signInEmail",
"security": [
@@ -26706,16 +30298,25 @@
"description": "Password of the user"
},
"callbackURL": {
- "type": ["string", "null"],
+ "type": [
+ "string",
+ "null"
+ ],
"description": "Callback URL to use as a redirect for email verification"
},
"rememberMe": {
- "type": ["boolean", "null"],
+ "type": [
+ "boolean",
+ "null"
+ ],
"description": "If this is false, the session will not be remembered. Default is `true`.",
"default": true
}
},
- "required": ["email", "password"]
+ "required": [
+ "email",
+ "password"
+ ]
}
}
}
@@ -26731,7 +30332,9 @@
"properties": {
"redirect": {
"type": "boolean",
- "enum": [false]
+ "enum": [
+ false
+ ]
},
"token": {
"type": "string",
@@ -26746,7 +30349,11 @@
"$ref": "#/components/schemas/User"
}
},
- "required": ["redirect", "token", "user"]
+ "required": [
+ "redirect",
+ "token",
+ "user"
+ ]
}
}
}
@@ -26761,7 +30368,9 @@
"type": "string"
}
},
- "required": ["message"]
+ "required": [
+ "message"
+ ]
}
}
},
@@ -26777,7 +30386,9 @@
"type": "string"
}
},
- "required": ["message"]
+ "required": [
+ "message"
+ ]
}
}
},
@@ -26848,7 +30459,9 @@
},
"/api/auth/reset-password": {
"post": {
- "tags": ["Default"],
+ "tags": [
+ "Default"
+ ],
"description": "Reset the password for a user",
"operationId": "resetPassword",
"security": [
@@ -26869,11 +30482,16 @@
"description": "The new password to set"
},
"token": {
- "type": ["string", "null"],
+ "type": [
+ "string",
+ "null"
+ ],
"description": "The token to reset the password"
}
},
- "required": ["newPassword"]
+ "required": [
+ "newPassword"
+ ]
}
}
}
@@ -26904,7 +30522,9 @@
"type": "string"
}
},
- "required": ["message"]
+ "required": [
+ "message"
+ ]
}
}
},
@@ -26920,7 +30540,9 @@
"type": "string"
}
},
- "required": ["message"]
+ "required": [
+ "message"
+ ]
}
}
},
@@ -26991,7 +30613,9 @@
},
"/api/auth/verify-password": {
"post": {
- "tags": ["Default"],
+ "tags": [
+ "Default"
+ ],
"description": "Verify the current user's password",
"operationId": "verifyPassword",
"security": [
@@ -27012,7 +30636,9 @@
"description": "The password to verify"
}
},
- "required": ["password"]
+ "required": [
+ "password"
+ ]
}
}
}
@@ -27043,7 +30669,9 @@
"type": "string"
}
},
- "required": ["message"]
+ "required": [
+ "message"
+ ]
}
}
},
@@ -27059,7 +30687,9 @@
"type": "string"
}
},
- "required": ["message"]
+ "required": [
+ "message"
+ ]
}
}
},
@@ -27130,7 +30760,9 @@
},
"/api/auth/verify-email": {
"get": {
- "tags": ["Default"],
+ "tags": [
+ "Default"
+ ],
"description": "Verify the email of the user",
"security": [
{
@@ -27174,7 +30806,10 @@
"description": "Indicates if the email was verified successfully"
}
},
- "required": ["user", "status"]
+ "required": [
+ "user",
+ "status"
+ ]
}
}
}
@@ -27189,7 +30824,9 @@
"type": "string"
}
},
- "required": ["message"]
+ "required": [
+ "message"
+ ]
}
}
},
@@ -27205,7 +30842,9 @@
"type": "string"
}
},
- "required": ["message"]
+ "required": [
+ "message"
+ ]
}
}
},
@@ -27276,7 +30915,9 @@
},
"/api/auth/send-verification-email": {
"post": {
- "tags": ["Default"],
+ "tags": [
+ "Default"
+ ],
"description": "Send a verification email to the user",
"operationId": "sendVerificationEmail",
"security": [
@@ -27303,7 +30944,9 @@
"nullable": true
}
},
- "required": ["email"]
+ "required": [
+ "email"
+ ]
}
}
}
@@ -27353,7 +30996,9 @@
"type": "string"
}
},
- "required": ["message"]
+ "required": [
+ "message"
+ ]
}
}
},
@@ -27424,7 +31069,9 @@
},
"/api/auth/change-email": {
"post": {
- "tags": ["Default"],
+ "tags": [
+ "Default"
+ ],
"operationId": "changeEmail",
"security": [
{
@@ -27444,11 +31091,16 @@
"description": "The new email address to set must be a valid email address"
},
"callbackURL": {
- "type": ["string", "null"],
+ "type": [
+ "string",
+ "null"
+ ],
"description": "The URL to redirect to after email verification"
}
},
- "required": ["newEmail"]
+ "required": [
+ "newEmail"
+ ]
}
}
}
@@ -27471,12 +31123,17 @@
},
"message": {
"type": "string",
- "enum": ["Email updated", "Verification email sent"],
+ "enum": [
+ "Email updated",
+ "Verification email sent"
+ ],
"description": "Status message of the email change process",
"nullable": true
}
},
- "required": ["status"]
+ "required": [
+ "status"
+ ]
}
}
}
@@ -27491,7 +31148,9 @@
"type": "string"
}
},
- "required": ["message"]
+ "required": [
+ "message"
+ ]
}
}
},
@@ -27507,7 +31166,9 @@
"type": "string"
}
},
- "required": ["message"]
+ "required": [
+ "message"
+ ]
}
}
},
@@ -27593,7 +31254,9 @@
},
"/api/auth/change-password": {
"post": {
- "tags": ["Default"],
+ "tags": [
+ "Default"
+ ],
"description": "Change the password of the user",
"operationId": "changePassword",
"security": [
@@ -27618,11 +31281,17 @@
"description": "The current password is required"
},
"revokeOtherSessions": {
- "type": ["boolean", "null"],
+ "type": [
+ "boolean",
+ "null"
+ ],
"description": "Must be a boolean value"
}
},
- "required": ["newPassword", "currentPassword"]
+ "required": [
+ "newPassword",
+ "currentPassword"
+ ]
}
}
}
@@ -27687,7 +31356,9 @@
]
}
},
- "required": ["user"]
+ "required": [
+ "user"
+ ]
}
}
}
@@ -27702,7 +31373,9 @@
"type": "string"
}
},
- "required": ["message"]
+ "required": [
+ "message"
+ ]
}
}
},
@@ -27718,7 +31391,9 @@
"type": "string"
}
},
- "required": ["message"]
+ "required": [
+ "message"
+ ]
}
}
},
@@ -27789,7 +31464,9 @@
},
"/api/auth/update-user": {
"post": {
- "tags": ["Default"],
+ "tags": [
+ "Default"
+ ],
"description": "Update the current user",
"operationId": "updateUser",
"security": [
@@ -27845,7 +31522,9 @@
"type": "string"
}
},
- "required": ["message"]
+ "required": [
+ "message"
+ ]
}
}
},
@@ -27861,7 +31540,9 @@
"type": "string"
}
},
- "required": ["message"]
+ "required": [
+ "message"
+ ]
}
}
},
@@ -27932,7 +31613,9 @@
},
"/api/auth/delete-user": {
"post": {
- "tags": ["Default"],
+ "tags": [
+ "Default"
+ ],
"description": "Delete the user",
"operationId": "deleteUser",
"security": [
@@ -27978,11 +31661,17 @@
},
"message": {
"type": "string",
- "enum": ["User deleted", "Verification email sent"],
+ "enum": [
+ "User deleted",
+ "Verification email sent"
+ ],
"description": "Status message of the deletion process"
}
},
- "required": ["success", "message"]
+ "required": [
+ "success",
+ "message"
+ ]
}
}
}
@@ -27997,7 +31686,9 @@
"type": "string"
}
},
- "required": ["message"]
+ "required": [
+ "message"
+ ]
}
}
},
@@ -28013,7 +31704,9 @@
"type": "string"
}
},
- "required": ["message"]
+ "required": [
+ "message"
+ ]
}
}
},
@@ -28084,7 +31777,9 @@
},
"/api/auth/request-password-reset": {
"post": {
- "tags": ["Default"],
+ "tags": [
+ "Default"
+ ],
"description": "Send a password reset email to the user",
"operationId": "requestPasswordReset",
"security": [
@@ -28105,11 +31800,16 @@
"description": "The email address of the user to send a password reset email to"
},
"redirectTo": {
- "type": ["string", "null"],
+ "type": [
+ "string",
+ "null"
+ ],
"description": "The URL to redirect the user to reset their password. If the token isn't valid or expired, it'll be redirected with a query parameter `?error=INVALID_TOKEN`. If the token is valid, it'll be redirected with a query parameter `?token=VALID_TOKEN"
}
},
- "required": ["email"]
+ "required": [
+ "email"
+ ]
}
}
}
@@ -28143,7 +31843,9 @@
"type": "string"
}
},
- "required": ["message"]
+ "required": [
+ "message"
+ ]
}
}
},
@@ -28159,7 +31861,9 @@
"type": "string"
}
},
- "required": ["message"]
+ "required": [
+ "message"
+ ]
}
}
},
@@ -28230,7 +31934,9 @@
},
"/api/auth/reset-password/{token}": {
"get": {
- "tags": ["Default"],
+ "tags": [
+ "Default"
+ ],
"description": "Redirects the user to the callback URL with the token",
"operationId": "resetPasswordCallback",
"security": [
@@ -28284,7 +31990,9 @@
"type": "string"
}
},
- "required": ["message"]
+ "required": [
+ "message"
+ ]
}
}
},
@@ -28300,7 +32008,9 @@
"type": "string"
}
},
- "required": ["message"]
+ "required": [
+ "message"
+ ]
}
}
},
@@ -28371,7 +32081,9 @@
},
"/api/auth/list-sessions": {
"get": {
- "tags": ["Default"],
+ "tags": [
+ "Default"
+ ],
"description": "List all active sessions for the user",
"operationId": "listUserSessions",
"security": [
@@ -28404,7 +32116,9 @@
"type": "string"
}
},
- "required": ["message"]
+ "required": [
+ "message"
+ ]
}
}
},
@@ -28420,7 +32134,9 @@
"type": "string"
}
},
- "required": ["message"]
+ "required": [
+ "message"
+ ]
}
}
},
@@ -28491,7 +32207,9 @@
},
"/api/auth/revoke-session": {
"post": {
- "tags": ["Default"],
+ "tags": [
+ "Default"
+ ],
"description": "Revoke a single session",
"security": [
{
@@ -28510,7 +32228,9 @@
"description": "The token to revoke"
}
},
- "required": ["token"]
+ "required": [
+ "token"
+ ]
}
}
}
@@ -28528,7 +32248,9 @@
"description": "Indicates if the session was revoked successfully"
}
},
- "required": ["status"]
+ "required": [
+ "status"
+ ]
}
}
}
@@ -28543,7 +32265,9 @@
"type": "string"
}
},
- "required": ["message"]
+ "required": [
+ "message"
+ ]
}
}
},
@@ -28559,7 +32283,9 @@
"type": "string"
}
},
- "required": ["message"]
+ "required": [
+ "message"
+ ]
}
}
},
@@ -28630,7 +32356,9 @@
},
"/api/auth/revoke-sessions": {
"post": {
- "tags": ["Default"],
+ "tags": [
+ "Default"
+ ],
"description": "Revoke all sessions for the user",
"security": [
{
@@ -28661,7 +32389,9 @@
"description": "Indicates if all sessions were revoked successfully"
}
},
- "required": ["status"]
+ "required": [
+ "status"
+ ]
}
}
}
@@ -28676,7 +32406,9 @@
"type": "string"
}
},
- "required": ["message"]
+ "required": [
+ "message"
+ ]
}
}
},
@@ -28692,7 +32424,9 @@
"type": "string"
}
},
- "required": ["message"]
+ "required": [
+ "message"
+ ]
}
}
},
@@ -28763,7 +32497,9 @@
},
"/api/auth/revoke-other-sessions": {
"post": {
- "tags": ["Default"],
+ "tags": [
+ "Default"
+ ],
"description": "Revoke all other sessions for the user except the current one",
"security": [
{
@@ -28794,7 +32530,9 @@
"description": "Indicates if all other sessions were revoked successfully"
}
},
- "required": ["status"]
+ "required": [
+ "status"
+ ]
}
}
}
@@ -28809,7 +32547,9 @@
"type": "string"
}
},
- "required": ["message"]
+ "required": [
+ "message"
+ ]
}
}
},
@@ -28825,7 +32565,9 @@
"type": "string"
}
},
- "required": ["message"]
+ "required": [
+ "message"
+ ]
}
}
},
@@ -28896,7 +32638,9 @@
},
"/api/auth/link-social": {
"post": {
- "tags": ["Default"],
+ "tags": [
+ "Default"
+ ],
"description": "Link a social account to the user",
"operationId": "linkSocialAccount",
"security": [
@@ -28913,53 +32657,90 @@
"type": "object",
"properties": {
"callbackURL": {
- "type": ["string", "null"],
+ "type": [
+ "string",
+ "null"
+ ],
"description": "The URL to redirect to after the user has signed in"
},
"provider": {
"type": "string"
},
"idToken": {
- "type": ["object", "null"],
+ "type": [
+ "object",
+ "null"
+ ],
"properties": {
"token": {
"type": "string"
},
"nonce": {
- "type": ["string", "null"]
+ "type": [
+ "string",
+ "null"
+ ]
},
"accessToken": {
- "type": ["string", "null"]
+ "type": [
+ "string",
+ "null"
+ ]
},
"refreshToken": {
- "type": ["string", "null"]
+ "type": [
+ "string",
+ "null"
+ ]
},
"scopes": {
- "type": ["array", "null"]
+ "type": [
+ "array",
+ "null"
+ ]
}
},
- "required": ["token"]
+ "required": [
+ "token"
+ ]
},
"requestSignUp": {
- "type": ["boolean", "null"]
+ "type": [
+ "boolean",
+ "null"
+ ]
},
"scopes": {
- "type": ["array", "null"],
+ "type": [
+ "array",
+ "null"
+ ],
"description": "Additional scopes to request from the provider"
},
"errorCallbackURL": {
- "type": ["string", "null"],
+ "type": [
+ "string",
+ "null"
+ ],
"description": "The URL to redirect to if there is an error during the link process"
},
"disableRedirect": {
- "type": ["boolean", "null"],
+ "type": [
+ "boolean",
+ "null"
+ ],
"description": "Disable automatic redirection to the provider. Useful for handling the redirection yourself"
},
"additionalData": {
- "type": ["string", "null"]
+ "type": [
+ "string",
+ "null"
+ ]
}
},
- "required": ["provider"]
+ "required": [
+ "provider"
+ ]
}
}
}
@@ -28984,7 +32765,9 @@
"type": "boolean"
}
},
- "required": ["redirect"]
+ "required": [
+ "redirect"
+ ]
}
}
}
@@ -28999,7 +32782,9 @@
"type": "string"
}
},
- "required": ["message"]
+ "required": [
+ "message"
+ ]
}
}
},
@@ -29015,7 +32800,9 @@
"type": "string"
}
},
- "required": ["message"]
+ "required": [
+ "message"
+ ]
}
}
},
@@ -29086,7 +32873,9 @@
},
"/api/auth/list-accounts": {
"get": {
- "tags": ["Default"],
+ "tags": [
+ "Default"
+ ],
"description": "List all accounts linked to the user",
"operationId": "listUserAccounts",
"security": [
@@ -29156,7 +32945,9 @@
"type": "string"
}
},
- "required": ["message"]
+ "required": [
+ "message"
+ ]
}
}
},
@@ -29172,7 +32963,9 @@
"type": "string"
}
},
- "required": ["message"]
+ "required": [
+ "message"
+ ]
}
}
},
@@ -29243,7 +33036,9 @@
},
"/api/auth/delete-user/callback": {
"get": {
- "tags": ["Default"],
+ "tags": [
+ "Default"
+ ],
"description": "Callback to complete user deletion with verification token",
"security": [
{
@@ -29263,7 +33058,10 @@
"name": "callbackURL",
"in": "query",
"schema": {
- "type": ["string", "null"],
+ "type": [
+ "string",
+ "null"
+ ],
"description": "The URL to redirect to after deletion"
}
}
@@ -29282,11 +33080,16 @@
},
"message": {
"type": "string",
- "enum": ["User deleted"],
+ "enum": [
+ "User deleted"
+ ],
"description": "Confirmation message"
}
},
- "required": ["success", "message"]
+ "required": [
+ "success",
+ "message"
+ ]
}
}
}
@@ -29301,7 +33104,9 @@
"type": "string"
}
},
- "required": ["message"]
+ "required": [
+ "message"
+ ]
}
}
},
@@ -29317,7 +33122,9 @@
"type": "string"
}
},
- "required": ["message"]
+ "required": [
+ "message"
+ ]
}
}
},
@@ -29388,7 +33195,9 @@
},
"/api/auth/unlink-account": {
"post": {
- "tags": ["Default"],
+ "tags": [
+ "Default"
+ ],
"description": "Unlink an account",
"security": [
{
@@ -29407,10 +33216,15 @@
"type": "string"
},
"accountId": {
- "type": ["string", "null"]
+ "type": [
+ "string",
+ "null"
+ ]
}
},
- "required": ["providerId"]
+ "required": [
+ "providerId"
+ ]
}
}
}
@@ -29441,7 +33255,9 @@
"type": "string"
}
},
- "required": ["message"]
+ "required": [
+ "message"
+ ]
}
}
},
@@ -29457,7 +33273,9 @@
"type": "string"
}
},
- "required": ["message"]
+ "required": [
+ "message"
+ ]
}
}
},
@@ -29528,7 +33346,9 @@
},
"/api/auth/refresh-token": {
"post": {
- "tags": ["Default"],
+ "tags": [
+ "Default"
+ ],
"description": "Refresh the access token using a refresh token",
"security": [
{
@@ -29548,15 +33368,23 @@
"description": "The provider ID for the OAuth provider"
},
"accountId": {
- "type": ["string", "null"],
+ "type": [
+ "string",
+ "null"
+ ],
"description": "The account ID associated with the refresh token"
},
"userId": {
- "type": ["string", "null"],
+ "type": [
+ "string",
+ "null"
+ ],
"description": "The user ID associated with the account"
}
},
- "required": ["providerId"]
+ "required": [
+ "providerId"
+ ]
}
}
}
@@ -29607,7 +33435,9 @@
"type": "string"
}
},
- "required": ["message"]
+ "required": [
+ "message"
+ ]
}
}
},
@@ -29678,7 +33508,9 @@
},
"/api/auth/get-access-token": {
"post": {
- "tags": ["Default"],
+ "tags": [
+ "Default"
+ ],
"description": "Get a valid access token, doing a refresh if needed",
"security": [
{
@@ -29698,15 +33530,23 @@
"description": "The provider ID for the OAuth provider"
},
"accountId": {
- "type": ["string", "null"],
+ "type": [
+ "string",
+ "null"
+ ],
"description": "The account ID associated with the refresh token"
},
"userId": {
- "type": ["string", "null"],
+ "type": [
+ "string",
+ "null"
+ ],
"description": "The user ID associated with the account"
}
},
- "required": ["providerId"]
+ "required": [
+ "providerId"
+ ]
}
}
}
@@ -29750,7 +33590,9 @@
"type": "string"
}
},
- "required": ["message"]
+ "required": [
+ "message"
+ ]
}
}
},
@@ -29821,7 +33663,9 @@
},
"/api/auth/account-info": {
"get": {
- "tags": ["Default"],
+ "tags": [
+ "Default"
+ ],
"description": "Get the account info provided by the provider",
"security": [
{
@@ -29856,7 +33700,10 @@
"type": "boolean"
}
},
- "required": ["id", "emailVerified"]
+ "required": [
+ "id",
+ "emailVerified"
+ ]
},
"data": {
"type": "object",
@@ -29864,7 +33711,10 @@
"additionalProperties": true
}
},
- "required": ["user", "data"],
+ "required": [
+ "user",
+ "data"
+ ],
"additionalProperties": false
}
}
@@ -29880,7 +33730,9 @@
"type": "string"
}
},
- "required": ["message"]
+ "required": [
+ "message"
+ ]
}
}
},
@@ -29896,7 +33748,9 @@
"type": "string"
}
},
- "required": ["message"]
+ "required": [
+ "message"
+ ]
}
}
},
@@ -29967,7 +33821,9 @@
},
"/api/auth/ok": {
"get": {
- "tags": ["Default"],
+ "tags": [
+ "Default"
+ ],
"description": "Check if the API is working",
"security": [
{
@@ -29988,7 +33844,9 @@
"description": "Indicates if the API is working"
}
},
- "required": ["ok"]
+ "required": [
+ "ok"
+ ]
}
}
}
@@ -30003,7 +33861,9 @@
"type": "string"
}
},
- "required": ["message"]
+ "required": [
+ "message"
+ ]
}
}
},
@@ -30019,7 +33879,9 @@
"type": "string"
}
},
- "required": ["message"]
+ "required": [
+ "message"
+ ]
}
}
},
@@ -30090,7 +33952,9 @@
},
"/api/auth/error": {
"get": {
- "tags": ["Default"],
+ "tags": [
+ "Default"
+ ],
"description": "Displays an error page",
"security": [
{
@@ -30120,7 +33984,9 @@
"type": "string"
}
},
- "required": ["message"]
+ "required": [
+ "message"
+ ]
}
}
},
@@ -30136,7 +34002,9 @@
"type": "string"
}
},
- "required": ["message"]
+ "required": [
+ "message"
+ ]
}
}
},
@@ -30207,7 +34075,9 @@
},
"/api/auth/sign-in/username": {
"post": {
- "tags": ["Username"],
+ "tags": [
+ "Username"
+ ],
"description": "Sign in with username",
"security": [
{
@@ -30231,15 +34101,24 @@
"description": "The password of the user"
},
"rememberMe": {
- "type": ["boolean", "null"],
+ "type": [
+ "boolean",
+ "null"
+ ],
"description": "Remember the user session"
},
"callbackURL": {
- "type": ["string", "null"],
+ "type": [
+ "string",
+ "null"
+ ],
"description": "The URL to redirect to after email verification"
}
},
- "required": ["username", "password"]
+ "required": [
+ "username",
+ "password"
+ ]
}
}
}
@@ -30260,7 +34139,10 @@
"$ref": "#/components/schemas/User"
}
},
- "required": ["token", "user"]
+ "required": [
+ "token",
+ "user"
+ ]
}
}
}
@@ -30275,7 +34157,9 @@
"type": "string"
}
},
- "required": ["message"]
+ "required": [
+ "message"
+ ]
}
}
},
@@ -30291,7 +34175,9 @@
"type": "string"
}
},
- "required": ["message"]
+ "required": [
+ "message"
+ ]
}
}
},
@@ -30377,7 +34263,9 @@
},
"/api/auth/is-username-available": {
"post": {
- "tags": ["Username"],
+ "tags": [
+ "Username"
+ ],
"security": [
{
"bearerAuth": []
@@ -30396,7 +34284,9 @@
"description": "The username to check"
}
},
- "required": ["username"]
+ "required": [
+ "username"
+ ]
}
}
}
@@ -30412,7 +34302,9 @@
"type": "string"
}
},
- "required": ["message"]
+ "required": [
+ "message"
+ ]
}
}
},
@@ -30428,7 +34320,9 @@
"type": "string"
}
},
- "required": ["message"]
+ "required": [
+ "message"
+ ]
}
}
},
@@ -30499,7 +34393,9 @@
},
"/api/auth/two-factor/get-totp-uri": {
"post": {
- "tags": ["Two-factor"],
+ "tags": [
+ "Two-factor"
+ ],
"description": "Use this endpoint to get the TOTP URI",
"security": [
{
@@ -30519,7 +34415,9 @@
"description": "User password"
}
},
- "required": ["password"]
+ "required": [
+ "password"
+ ]
}
}
}
@@ -30550,7 +34448,9 @@
"type": "string"
}
},
- "required": ["message"]
+ "required": [
+ "message"
+ ]
}
}
},
@@ -30566,7 +34466,9 @@
"type": "string"
}
},
- "required": ["message"]
+ "required": [
+ "message"
+ ]
}
}
},
@@ -30637,7 +34539,9 @@
},
"/api/auth/two-factor/verify-totp": {
"post": {
- "tags": ["Two-factor"],
+ "tags": [
+ "Two-factor"
+ ],
"description": "Verify two factor TOTP",
"security": [
{
@@ -30657,11 +34561,16 @@
"description": "The otp code to verify. Eg: \"012345\""
},
"trustDevice": {
- "type": ["boolean", "null"],
+ "type": [
+ "boolean",
+ "null"
+ ],
"description": "If true, the device will be trusted for 30 days. It'll be refreshed on every sign in request within this time. Eg: true"
}
},
- "required": ["code"]
+ "required": [
+ "code"
+ ]
}
}
}
@@ -30692,7 +34601,9 @@
"type": "string"
}
},
- "required": ["message"]
+ "required": [
+ "message"
+ ]
}
}
},
@@ -30708,7 +34619,9 @@
"type": "string"
}
},
- "required": ["message"]
+ "required": [
+ "message"
+ ]
}
}
},
@@ -30779,7 +34692,9 @@
},
"/api/auth/two-factor/send-otp": {
"post": {
- "tags": ["Two-factor"],
+ "tags": [
+ "Two-factor"
+ ],
"description": "Send two factor OTP to the user",
"security": [
{
@@ -30813,7 +34728,9 @@
"type": "string"
}
},
- "required": ["message"]
+ "required": [
+ "message"
+ ]
}
}
},
@@ -30829,7 +34746,9 @@
"type": "string"
}
},
- "required": ["message"]
+ "required": [
+ "message"
+ ]
}
}
},
@@ -30900,7 +34819,9 @@
},
"/api/auth/two-factor/verify-otp": {
"post": {
- "tags": ["Two-factor"],
+ "tags": [
+ "Two-factor"
+ ],
"description": "Verify two factor OTP",
"security": [
{
@@ -30920,10 +34841,15 @@
"description": "The otp code to verify. Eg: \"012345\""
},
"trustDevice": {
- "type": ["boolean", "null"]
+ "type": [
+ "boolean",
+ "null"
+ ]
}
},
- "required": ["code"]
+ "required": [
+ "code"
+ ]
}
}
}
@@ -30980,11 +34906,18 @@
"description": "Timestamp when the user was last updated"
}
},
- "required": ["id", "createdAt", "updatedAt"],
+ "required": [
+ "id",
+ "createdAt",
+ "updatedAt"
+ ],
"description": "The authenticated user object"
}
},
- "required": ["token", "user"]
+ "required": [
+ "token",
+ "user"
+ ]
}
}
}
@@ -30999,7 +34932,9 @@
"type": "string"
}
},
- "required": ["message"]
+ "required": [
+ "message"
+ ]
}
}
},
@@ -31015,7 +34950,9 @@
"type": "string"
}
},
- "required": ["message"]
+ "required": [
+ "message"
+ ]
}
}
},
@@ -31086,7 +35023,9 @@
},
"/api/auth/two-factor/verify-backup-code": {
"post": {
- "tags": ["Two-factor"],
+ "tags": [
+ "Two-factor"
+ ],
"description": "Verify a backup code for two-factor authentication",
"security": [
{
@@ -31106,15 +35045,23 @@
"description": "A backup code to verify. Eg: \"123456\""
},
"disableSession": {
- "type": ["boolean", "null"],
+ "type": [
+ "boolean",
+ "null"
+ ],
"description": "If true, the session cookie will not be set."
},
"trustDevice": {
- "type": ["boolean", "null"],
+ "type": [
+ "boolean",
+ "null"
+ ],
"description": "If true, the device will be trusted for 30 days. It'll be refreshed on every sign in request within this time. Eg: true"
}
},
- "required": ["code"]
+ "required": [
+ "code"
+ ]
}
}
}
@@ -31201,11 +35148,19 @@
"description": "Timestamp when the session expires"
}
},
- "required": ["token", "userId", "createdAt", "expiresAt"],
+ "required": [
+ "token",
+ "userId",
+ "createdAt",
+ "expiresAt"
+ ],
"description": "The current session object, included unless disableSession is true"
}
},
- "required": ["user", "session"]
+ "required": [
+ "user",
+ "session"
+ ]
}
}
}
@@ -31220,7 +35175,9 @@
"type": "string"
}
},
- "required": ["message"]
+ "required": [
+ "message"
+ ]
}
}
},
@@ -31236,7 +35193,9 @@
"type": "string"
}
},
- "required": ["message"]
+ "required": [
+ "message"
+ ]
}
}
},
@@ -31307,7 +35266,9 @@
},
"/api/auth/two-factor/generate-backup-codes": {
"post": {
- "tags": ["Two-factor"],
+ "tags": [
+ "Two-factor"
+ ],
"description": "Generate new backup codes for two-factor authentication",
"security": [
{
@@ -31327,7 +35288,9 @@
"description": "The users password."
}
},
- "required": ["password"]
+ "required": [
+ "password"
+ ]
}
}
}
@@ -31343,7 +35306,9 @@
"status": {
"type": "boolean",
"description": "Indicates if the backup codes were generated successfully",
- "enum": [true]
+ "enum": [
+ true
+ ]
},
"backupCodes": {
"type": "array",
@@ -31353,7 +35318,10 @@
"description": "Array of generated backup codes in plain text"
}
},
- "required": ["status", "backupCodes"]
+ "required": [
+ "status",
+ "backupCodes"
+ ]
}
}
}
@@ -31368,7 +35336,9 @@
"type": "string"
}
},
- "required": ["message"]
+ "required": [
+ "message"
+ ]
}
}
},
@@ -31384,7 +35354,9 @@
"type": "string"
}
},
- "required": ["message"]
+ "required": [
+ "message"
+ ]
}
}
},
@@ -31455,7 +35427,9 @@
},
"/api/auth/two-factor/enable": {
"post": {
- "tags": ["Two-factor"],
+ "tags": [
+ "Two-factor"
+ ],
"description": "Use this endpoint to enable two factor authentication. This will generate a TOTP URI and backup codes. Once the user verifies the TOTP URI, the two factor authentication will be enabled.",
"security": [
{
@@ -31475,11 +35449,16 @@
"description": "User password"
},
"issuer": {
- "type": ["string", "null"],
+ "type": [
+ "string",
+ "null"
+ ],
"description": "Custom issuer for the TOTP URI"
}
},
- "required": ["password"]
+ "required": [
+ "password"
+ ]
}
}
}
@@ -31518,7 +35497,9 @@
"type": "string"
}
},
- "required": ["message"]
+ "required": [
+ "message"
+ ]
}
}
},
@@ -31534,7 +35515,9 @@
"type": "string"
}
},
- "required": ["message"]
+ "required": [
+ "message"
+ ]
}
}
},
@@ -31605,7 +35588,9 @@
},
"/api/auth/two-factor/disable": {
"post": {
- "tags": ["Two-factor"],
+ "tags": [
+ "Two-factor"
+ ],
"description": "Use this endpoint to disable two factor authentication.",
"security": [
{
@@ -31625,7 +35610,9 @@
"description": "User password"
}
},
- "required": ["password"]
+ "required": [
+ "password"
+ ]
}
}
}
@@ -31656,7 +35643,9 @@
"type": "string"
}
},
- "required": ["message"]
+ "required": [
+ "message"
+ ]
}
}
},
@@ -31672,7 +35661,9 @@
"type": "string"
}
},
- "required": ["message"]
+ "required": [
+ "message"
+ ]
}
}
},
@@ -31743,7 +35734,9 @@
},
"/api/auth/one-tap/callback": {
"post": {
- "tags": ["One-tap"],
+ "tags": [
+ "One-tap"
+ ],
"description": "Use this endpoint to authenticate with Google One Tap",
"security": [
{
@@ -31763,7 +35756,9 @@
"description": "Google ID token, which the client obtains from the One Tap API"
}
},
- "required": ["idToken"]
+ "required": [
+ "idToken"
+ ]
}
}
}
@@ -31800,7 +35795,9 @@
"type": "string"
}
},
- "required": ["message"]
+ "required": [
+ "message"
+ ]
}
}
},
@@ -31871,7 +35868,9 @@
},
"/api/auth/email-otp/send-verification-otp": {
"post": {
- "tags": ["Email-otp"],
+ "tags": [
+ "Email-otp"
+ ],
"description": "Send a verification OTP to an email",
"operationId": "sendEmailVerificationOTP",
"security": [
@@ -31896,7 +35895,10 @@
"description": "Type of the OTP"
}
},
- "required": ["email", "type"]
+ "required": [
+ "email",
+ "type"
+ ]
}
}
}
@@ -31927,7 +35929,9 @@
"type": "string"
}
},
- "required": ["message"]
+ "required": [
+ "message"
+ ]
}
}
},
@@ -31943,7 +35947,9 @@
"type": "string"
}
},
- "required": ["message"]
+ "required": [
+ "message"
+ ]
}
}
},
@@ -32014,7 +36020,9 @@
},
"/api/auth/email-otp/check-verification-otp": {
"post": {
- "tags": ["Email-otp"],
+ "tags": [
+ "Email-otp"
+ ],
"description": "Verify an email with an OTP",
"operationId": "verifyEmailWithOTP",
"security": [
@@ -32043,7 +36051,11 @@
"description": "OTP to verify"
}
},
- "required": ["email", "type", "otp"]
+ "required": [
+ "email",
+ "type",
+ "otp"
+ ]
}
}
}
@@ -32074,7 +36086,9 @@
"type": "string"
}
},
- "required": ["message"]
+ "required": [
+ "message"
+ ]
}
}
},
@@ -32090,7 +36104,9 @@
"type": "string"
}
},
- "required": ["message"]
+ "required": [
+ "message"
+ ]
}
}
},
@@ -32161,7 +36177,9 @@
},
"/api/auth/email-otp/verify-email": {
"post": {
- "tags": ["Email-otp"],
+ "tags": [
+ "Email-otp"
+ ],
"description": "Verify email with OTP",
"security": [
{
@@ -32185,7 +36203,10 @@
"description": "OTP to verify"
}
},
- "required": ["email", "otp"]
+ "required": [
+ "email",
+ "otp"
+ ]
}
}
}
@@ -32201,7 +36222,9 @@
"status": {
"type": "boolean",
"description": "Indicates if the verification was successful",
- "enum": [true]
+ "enum": [
+ true
+ ]
},
"token": {
"type": "string",
@@ -32212,7 +36235,11 @@
"$ref": "#/components/schemas/User"
}
},
- "required": ["status", "token", "user"]
+ "required": [
+ "status",
+ "token",
+ "user"
+ ]
}
}
}
@@ -32227,7 +36254,9 @@
"type": "string"
}
},
- "required": ["message"]
+ "required": [
+ "message"
+ ]
}
}
},
@@ -32243,7 +36272,9 @@
"type": "string"
}
},
- "required": ["message"]
+ "required": [
+ "message"
+ ]
}
}
},
@@ -32314,7 +36345,9 @@
},
"/api/auth/sign-in/email-otp": {
"post": {
- "tags": ["Email-otp"],
+ "tags": [
+ "Email-otp"
+ ],
"description": "Sign in with email and OTP",
"operationId": "signInWithEmailOTP",
"security": [
@@ -32339,7 +36372,10 @@
"description": "OTP sent to the email"
}
},
- "required": ["email", "otp"]
+ "required": [
+ "email",
+ "otp"
+ ]
}
}
}
@@ -32360,7 +36396,10 @@
"$ref": "#/components/schemas/User"
}
},
- "required": ["token", "user"]
+ "required": [
+ "token",
+ "user"
+ ]
}
}
}
@@ -32375,7 +36414,9 @@
"type": "string"
}
},
- "required": ["message"]
+ "required": [
+ "message"
+ ]
}
}
},
@@ -32391,7 +36432,9 @@
"type": "string"
}
},
- "required": ["message"]
+ "required": [
+ "message"
+ ]
}
}
},
@@ -32462,7 +36505,9 @@
},
"/api/auth/email-otp/request-password-reset": {
"post": {
- "tags": ["Email-otp"],
+ "tags": [
+ "Email-otp"
+ ],
"description": "Request password reset with email and OTP",
"operationId": "requestPasswordResetWithEmailOTP",
"security": [
@@ -32483,7 +36528,9 @@
"description": "Email address to send the OTP"
}
},
- "required": ["email"]
+ "required": [
+ "email"
+ ]
}
}
}
@@ -32515,7 +36562,9 @@
"type": "string"
}
},
- "required": ["message"]
+ "required": [
+ "message"
+ ]
}
}
},
@@ -32531,7 +36580,9 @@
"type": "string"
}
},
- "required": ["message"]
+ "required": [
+ "message"
+ ]
}
}
},
@@ -32602,7 +36653,9 @@
},
"/api/auth/forget-password/email-otp": {
"post": {
- "tags": ["Email-otp"],
+ "tags": [
+ "Email-otp"
+ ],
"description": "Deprecated: Use /email-otp/request-password-reset instead.",
"operationId": "forgetPasswordWithEmailOTP",
"security": [
@@ -32623,7 +36676,9 @@
"description": "Email address to send the OTP"
}
},
- "required": ["email"]
+ "required": [
+ "email"
+ ]
}
}
}
@@ -32655,7 +36710,9 @@
"type": "string"
}
},
- "required": ["message"]
+ "required": [
+ "message"
+ ]
}
}
},
@@ -32671,7 +36728,9 @@
"type": "string"
}
},
- "required": ["message"]
+ "required": [
+ "message"
+ ]
}
}
},
@@ -32742,7 +36801,9 @@
},
"/api/auth/email-otp/reset-password": {
"post": {
- "tags": ["Email-otp"],
+ "tags": [
+ "Email-otp"
+ ],
"description": "Reset password with email and OTP",
"operationId": "resetPasswordWithEmailOTP",
"security": [
@@ -32771,7 +36832,11 @@
"description": "New password"
}
},
- "required": ["email", "otp", "password"]
+ "required": [
+ "email",
+ "otp",
+ "password"
+ ]
}
}
}
@@ -32802,7 +36867,9 @@
"type": "string"
}
},
- "required": ["message"]
+ "required": [
+ "message"
+ ]
}
}
},
@@ -32818,7 +36885,9 @@
"type": "string"
}
},
- "required": ["message"]
+ "required": [
+ "message"
+ ]
}
}
},
@@ -32889,7 +36958,9 @@
},
"/api/auth/organization/create": {
"post": {
- "tags": ["Organization"],
+ "tags": [
+ "Organization"
+ ],
"description": "Create an organization",
"security": [
{
@@ -32913,23 +36984,38 @@
"description": "The slug of the organization"
},
"userId": {
- "type": ["string", "null"],
+ "type": [
+ "string",
+ "null"
+ ],
"description": "The user id of the organization creator. If not provided, the current user will be used. Should only be used by admins or when called by the server. server-only. Eg: \"user-id\""
},
"logo": {
- "type": ["string", "null"],
+ "type": [
+ "string",
+ "null"
+ ],
"description": "The logo of the organization"
},
"metadata": {
- "type": ["string", "null"],
+ "type": [
+ "string",
+ "null"
+ ],
"description": "The metadata of the organization"
},
"keepCurrentActiveOrganization": {
- "type": ["boolean", "null"],
+ "type": [
+ "boolean",
+ "null"
+ ],
"description": "Whether to keep the current active organization active after creating a new one. Eg: true"
}
},
- "required": ["name", "slug"]
+ "required": [
+ "name",
+ "slug"
+ ]
}
}
}
@@ -32957,7 +37043,9 @@
"type": "string"
}
},
- "required": ["message"]
+ "required": [
+ "message"
+ ]
}
}
},
@@ -32973,7 +37061,9 @@
"type": "string"
}
},
- "required": ["message"]
+ "required": [
+ "message"
+ ]
}
}
},
@@ -33044,7 +37134,9 @@
},
"/api/auth/organization/update": {
"post": {
- "tags": ["Organization"],
+ "tags": [
+ "Organization"
+ ],
"description": "Update an organization",
"security": [
{
@@ -33063,29 +37155,46 @@
"type": "object",
"properties": {
"name": {
- "type": ["string", "null"],
+ "type": [
+ "string",
+ "null"
+ ],
"description": "The name of the organization"
},
"slug": {
- "type": ["string", "null"],
+ "type": [
+ "string",
+ "null"
+ ],
"description": "The slug of the organization"
},
"logo": {
- "type": ["string", "null"],
+ "type": [
+ "string",
+ "null"
+ ],
"description": "The logo of the organization"
},
"metadata": {
- "type": ["string", "null"],
+ "type": [
+ "string",
+ "null"
+ ],
"description": "The metadata of the organization"
}
}
},
"organizationId": {
- "type": ["string", "null"],
+ "type": [
+ "string",
+ "null"
+ ],
"description": "The organization ID. Eg: \"org-id\""
}
},
- "required": ["data"]
+ "required": [
+ "data"
+ ]
}
}
}
@@ -33113,7 +37222,9 @@
"type": "string"
}
},
- "required": ["message"]
+ "required": [
+ "message"
+ ]
}
}
},
@@ -33129,7 +37240,9 @@
"type": "string"
}
},
- "required": ["message"]
+ "required": [
+ "message"
+ ]
}
}
},
@@ -33200,7 +37313,9 @@
},
"/api/auth/organization/delete": {
"post": {
- "tags": ["Organization"],
+ "tags": [
+ "Organization"
+ ],
"description": "Delete an organization",
"security": [
{
@@ -33220,7 +37335,9 @@
"description": "The organization id to delete"
}
},
- "required": ["organizationId"]
+ "required": [
+ "organizationId"
+ ]
}
}
}
@@ -33247,7 +37364,9 @@
"type": "string"
}
},
- "required": ["message"]
+ "required": [
+ "message"
+ ]
}
}
},
@@ -33263,7 +37382,9 @@
"type": "string"
}
},
- "required": ["message"]
+ "required": [
+ "message"
+ ]
}
}
},
@@ -33334,7 +37455,9 @@
},
"/api/auth/organization/set-active": {
"post": {
- "tags": ["Organization"],
+ "tags": [
+ "Organization"
+ ],
"description": "Set the active organization",
"operationId": "setActiveOrganization",
"security": [
@@ -33351,10 +37474,16 @@
"type": "object",
"properties": {
"organizationId": {
- "type": ["string", "null"]
+ "type": [
+ "string",
+ "null"
+ ]
},
"organizationSlug": {
- "type": ["string", "null"],
+ "type": [
+ "string",
+ "null"
+ ],
"description": "The organization slug to set as active. It can be null to unset the active organization if organizationId is not provided. Eg: \"org-slug\""
}
},
@@ -33386,7 +37515,9 @@
"type": "string"
}
},
- "required": ["message"]
+ "required": [
+ "message"
+ ]
}
}
},
@@ -33402,7 +37533,9 @@
"type": "string"
}
},
- "required": ["message"]
+ "required": [
+ "message"
+ ]
}
}
},
@@ -33473,7 +37606,9 @@
},
"/api/auth/organization/get-full-organization": {
"get": {
- "tags": ["Organization"],
+ "tags": [
+ "Organization"
+ ],
"description": "Get the full organization",
"operationId": "getOrganization",
"security": [
@@ -33505,7 +37640,9 @@
"type": "string"
}
},
- "required": ["message"]
+ "required": [
+ "message"
+ ]
}
}
},
@@ -33521,7 +37658,9 @@
"type": "string"
}
},
- "required": ["message"]
+ "required": [
+ "message"
+ ]
}
}
},
@@ -33592,7 +37731,9 @@
},
"/api/auth/organization/list": {
"get": {
- "tags": ["Organization"],
+ "tags": [
+ "Organization"
+ ],
"description": "List all organizations",
"security": [
{
@@ -33624,7 +37765,9 @@
"type": "string"
}
},
- "required": ["message"]
+ "required": [
+ "message"
+ ]
}
}
},
@@ -33640,7 +37783,9 @@
"type": "string"
}
},
- "required": ["message"]
+ "required": [
+ "message"
+ ]
}
}
},
@@ -33711,7 +37856,9 @@
},
"/api/auth/organization/invite-member": {
"post": {
- "tags": ["Organization"],
+ "tags": [
+ "Organization"
+ ],
"description": "Create an invitation to an organization",
"operationId": "createOrganizationInvitation",
"security": [
@@ -33736,18 +37883,28 @@
"description": "The role(s) to assign to the user. It can be `admin`, `member`, owner. Eg: \"member\""
},
"organizationId": {
- "type": ["string", "null"],
+ "type": [
+ "string",
+ "null"
+ ],
"description": "The organization ID to invite the user to"
},
"resend": {
- "type": ["boolean", "null"],
+ "type": [
+ "boolean",
+ "null"
+ ],
"description": "Resend the invitation email, if the user is already invited. Eg: true"
},
"teamId": {
"type": "string"
}
},
- "required": ["email", "role", "teamId"]
+ "required": [
+ "email",
+ "role",
+ "teamId"
+ ]
}
}
}
@@ -33809,7 +37966,9 @@
"type": "string"
}
},
- "required": ["message"]
+ "required": [
+ "message"
+ ]
}
}
},
@@ -33825,7 +37984,9 @@
"type": "string"
}
},
- "required": ["message"]
+ "required": [
+ "message"
+ ]
}
}
},
@@ -33896,7 +38057,9 @@
},
"/api/auth/organization/cancel-invitation": {
"post": {
- "tags": ["Organization"],
+ "tags": [
+ "Organization"
+ ],
"security": [
{
"bearerAuth": []
@@ -33915,7 +38078,9 @@
"description": "The ID of the invitation to cancel"
}
},
- "required": ["invitationId"]
+ "required": [
+ "invitationId"
+ ]
}
}
}
@@ -33931,7 +38096,9 @@
"type": "string"
}
},
- "required": ["message"]
+ "required": [
+ "message"
+ ]
}
}
},
@@ -33947,7 +38114,9 @@
"type": "string"
}
},
- "required": ["message"]
+ "required": [
+ "message"
+ ]
}
}
},
@@ -34018,7 +38187,9 @@
},
"/api/auth/organization/accept-invitation": {
"post": {
- "tags": ["Organization"],
+ "tags": [
+ "Organization"
+ ],
"description": "Accept an invitation to an organization",
"security": [
{
@@ -34038,7 +38209,9 @@
"description": "The ID of the invitation to accept"
}
},
- "required": ["invitationId"]
+ "required": [
+ "invitationId"
+ ]
}
}
}
@@ -34072,7 +38245,9 @@
"type": "string"
}
},
- "required": ["message"]
+ "required": [
+ "message"
+ ]
}
}
},
@@ -34088,7 +38263,9 @@
"type": "string"
}
},
- "required": ["message"]
+ "required": [
+ "message"
+ ]
}
}
},
@@ -34159,7 +38336,9 @@
},
"/api/auth/organization/get-invitation": {
"get": {
- "tags": ["Organization"],
+ "tags": [
+ "Organization"
+ ],
"description": "Get an invitation by ID",
"security": [
{
@@ -34241,7 +38420,9 @@
"type": "string"
}
},
- "required": ["message"]
+ "required": [
+ "message"
+ ]
}
}
},
@@ -34257,7 +38438,9 @@
"type": "string"
}
},
- "required": ["message"]
+ "required": [
+ "message"
+ ]
}
}
},
@@ -34328,7 +38511,9 @@
},
"/api/auth/organization/reject-invitation": {
"post": {
- "tags": ["Organization"],
+ "tags": [
+ "Organization"
+ ],
"description": "Reject an invitation to an organization",
"security": [
{
@@ -34348,7 +38533,9 @@
"description": "The ID of the invitation to reject"
}
},
- "required": ["invitationId"]
+ "required": [
+ "invitationId"
+ ]
}
}
}
@@ -34383,7 +38570,9 @@
"type": "string"
}
},
- "required": ["message"]
+ "required": [
+ "message"
+ ]
}
}
},
@@ -34399,7 +38588,9 @@
"type": "string"
}
},
- "required": ["message"]
+ "required": [
+ "message"
+ ]
}
}
},
@@ -34470,7 +38661,9 @@
},
"/api/auth/organization/list-invitations": {
"get": {
- "tags": ["Organization"],
+ "tags": [
+ "Organization"
+ ],
"security": [
{
"bearerAuth": []
@@ -34488,7 +38681,9 @@
"type": "string"
}
},
- "required": ["message"]
+ "required": [
+ "message"
+ ]
}
}
},
@@ -34504,7 +38699,9 @@
"type": "string"
}
},
- "required": ["message"]
+ "required": [
+ "message"
+ ]
}
}
},
@@ -34575,7 +38772,9 @@
},
"/api/auth/organization/get-active-member": {
"get": {
- "tags": ["Organization"],
+ "tags": [
+ "Organization"
+ ],
"description": "Get the member details of the active organization",
"security": [
{
@@ -34604,7 +38803,12 @@
"type": "string"
}
},
- "required": ["id", "userId", "organizationId", "role"]
+ "required": [
+ "id",
+ "userId",
+ "organizationId",
+ "role"
+ ]
}
}
}
@@ -34619,7 +38823,9 @@
"type": "string"
}
},
- "required": ["message"]
+ "required": [
+ "message"
+ ]
}
}
},
@@ -34635,7 +38841,9 @@
"type": "string"
}
},
- "required": ["message"]
+ "required": [
+ "message"
+ ]
}
}
},
@@ -34706,7 +38914,9 @@
},
"/api/auth/organization/check-slug": {
"post": {
- "tags": ["Organization"],
+ "tags": [
+ "Organization"
+ ],
"security": [
{
"bearerAuth": []
@@ -34725,7 +38935,9 @@
"description": "The organization slug to check. Eg: \"my-org\""
}
},
- "required": ["slug"]
+ "required": [
+ "slug"
+ ]
}
}
}
@@ -34741,7 +38953,9 @@
"type": "string"
}
},
- "required": ["message"]
+ "required": [
+ "message"
+ ]
}
}
},
@@ -34757,7 +38971,9 @@
"type": "string"
}
},
- "required": ["message"]
+ "required": [
+ "message"
+ ]
}
}
},
@@ -34828,7 +39044,9 @@
},
"/api/auth/organization/remove-member": {
"post": {
- "tags": ["Organization"],
+ "tags": [
+ "Organization"
+ ],
"description": "Remove a member from an organization",
"security": [
{
@@ -34848,11 +39066,16 @@
"description": "The ID or email of the member to remove"
},
"organizationId": {
- "type": ["string", "null"],
+ "type": [
+ "string",
+ "null"
+ ],
"description": "The ID of the organization to remove the member from. If not provided, the active organization will be used. Eg: \"org-id\""
}
},
- "required": ["memberIdOrEmail"]
+ "required": [
+ "memberIdOrEmail"
+ ]
}
}
}
@@ -34881,10 +39104,17 @@
"type": "string"
}
},
- "required": ["id", "userId", "organizationId", "role"]
+ "required": [
+ "id",
+ "userId",
+ "organizationId",
+ "role"
+ ]
}
},
- "required": ["member"]
+ "required": [
+ "member"
+ ]
}
}
}
@@ -34899,7 +39129,9 @@
"type": "string"
}
},
- "required": ["message"]
+ "required": [
+ "message"
+ ]
}
}
},
@@ -34915,7 +39147,9 @@
"type": "string"
}
},
- "required": ["message"]
+ "required": [
+ "message"
+ ]
}
}
},
@@ -34986,7 +39220,9 @@
},
"/api/auth/organization/update-member-role": {
"post": {
- "tags": ["Organization"],
+ "tags": [
+ "Organization"
+ ],
"description": "Update the role of a member in an organization",
"operationId": "updateOrganizationMemberRole",
"security": [
@@ -35011,11 +39247,17 @@
"description": "The member id to apply the role update to. Eg: \"member-id\""
},
"organizationId": {
- "type": ["string", "null"],
+ "type": [
+ "string",
+ "null"
+ ],
"description": "An optional organization ID which the member is a part of to apply the role update. If not provided, you must provide session headers to get the active organization. Eg: \"organization-id\""
}
},
- "required": ["role", "memberId"]
+ "required": [
+ "role",
+ "memberId"
+ ]
}
}
}
@@ -35044,10 +39286,17 @@
"type": "string"
}
},
- "required": ["id", "userId", "organizationId", "role"]
+ "required": [
+ "id",
+ "userId",
+ "organizationId",
+ "role"
+ ]
}
},
- "required": ["member"]
+ "required": [
+ "member"
+ ]
}
}
}
@@ -35062,7 +39311,9 @@
"type": "string"
}
},
- "required": ["message"]
+ "required": [
+ "message"
+ ]
}
}
},
@@ -35078,7 +39329,9 @@
"type": "string"
}
},
- "required": ["message"]
+ "required": [
+ "message"
+ ]
}
}
},
@@ -35149,7 +39402,9 @@
},
"/api/auth/organization/leave": {
"post": {
- "tags": ["Organization"],
+ "tags": [
+ "Organization"
+ ],
"security": [
{
"bearerAuth": []
@@ -35168,7 +39423,9 @@
"description": "The organization Id for the member to leave. Eg: \"organization-id\""
}
},
- "required": ["organizationId"]
+ "required": [
+ "organizationId"
+ ]
}
}
}
@@ -35184,7 +39441,9 @@
"type": "string"
}
},
- "required": ["message"]
+ "required": [
+ "message"
+ ]
}
}
},
@@ -35200,7 +39459,9 @@
"type": "string"
}
},
- "required": ["message"]
+ "required": [
+ "message"
+ ]
}
}
},
@@ -35271,7 +39532,9 @@
},
"/api/auth/organization/list-user-invitations": {
"get": {
- "tags": ["Organization"],
+ "tags": [
+ "Organization"
+ ],
"description": "List all invitations a user has received",
"security": [
{
@@ -35349,7 +39612,9 @@
"type": "string"
}
},
- "required": ["message"]
+ "required": [
+ "message"
+ ]
}
}
},
@@ -35365,7 +39630,9 @@
"type": "string"
}
},
- "required": ["message"]
+ "required": [
+ "message"
+ ]
}
}
},
@@ -35436,7 +39703,9 @@
},
"/api/auth/organization/list-members": {
"get": {
- "tags": ["Organization"],
+ "tags": [
+ "Organization"
+ ],
"security": [
{
"bearerAuth": []
@@ -35454,7 +39723,9 @@
"type": "string"
}
},
- "required": ["message"]
+ "required": [
+ "message"
+ ]
}
}
},
@@ -35470,7 +39741,9 @@
"type": "string"
}
},
- "required": ["message"]
+ "required": [
+ "message"
+ ]
}
}
},
@@ -35541,7 +39814,9 @@
},
"/api/auth/organization/get-active-member-role": {
"get": {
- "tags": ["Organization"],
+ "tags": [
+ "Organization"
+ ],
"security": [
{
"bearerAuth": []
@@ -35559,7 +39834,9 @@
"type": "string"
}
},
- "required": ["message"]
+ "required": [
+ "message"
+ ]
}
}
},
@@ -35575,7 +39852,9 @@
"type": "string"
}
},
- "required": ["message"]
+ "required": [
+ "message"
+ ]
}
}
},
@@ -35646,7 +39925,9 @@
},
"/api/auth/organization/has-permission": {
"post": {
- "tags": ["Organization"],
+ "tags": [
+ "Organization"
+ ],
"description": "Check if the user has permission",
"security": [
{
@@ -35670,7 +39951,9 @@
"description": "The permission to check"
}
},
- "required": ["permissions"]
+ "required": [
+ "permissions"
+ ]
}
}
}
@@ -35690,7 +39973,9 @@
"type": "boolean"
}
},
- "required": ["success"]
+ "required": [
+ "success"
+ ]
}
}
}
@@ -35705,7 +39990,9 @@
"type": "string"
}
},
- "required": ["message"]
+ "required": [
+ "message"
+ ]
}
}
},
@@ -35721,7 +40008,9 @@
"type": "string"
}
},
- "required": ["message"]
+ "required": [
+ "message"
+ ]
}
}
},
@@ -35792,7 +40081,9 @@
},
"/api/auth/admin/set-role": {
"post": {
- "tags": ["Admin"],
+ "tags": [
+ "Admin"
+ ],
"description": "Set the role of a user",
"operationId": "setUserRole",
"security": [
@@ -35817,7 +40108,10 @@
"description": "The role to set, this can be a string or an array of strings. Eg: `admin` or `[admin, user]`"
}
},
- "required": ["userId", "role"]
+ "required": [
+ "userId",
+ "role"
+ ]
}
}
}
@@ -35848,7 +40142,9 @@
"type": "string"
}
},
- "required": ["message"]
+ "required": [
+ "message"
+ ]
}
}
},
@@ -35864,7 +40160,9 @@
"type": "string"
}
},
- "required": ["message"]
+ "required": [
+ "message"
+ ]
}
}
},
@@ -35935,7 +40233,9 @@
},
"/api/auth/admin/get-user": {
"get": {
- "tags": ["Admin"],
+ "tags": [
+ "Admin"
+ ],
"description": "Get an existing user",
"operationId": "getUser",
"security": [
@@ -35979,7 +40279,9 @@
"type": "string"
}
},
- "required": ["message"]
+ "required": [
+ "message"
+ ]
}
}
},
@@ -35995,7 +40297,9 @@
"type": "string"
}
},
- "required": ["message"]
+ "required": [
+ "message"
+ ]
}
}
},
@@ -36066,7 +40370,9 @@
},
"/api/auth/admin/create-user": {
"post": {
- "tags": ["Admin"],
+ "tags": [
+ "Admin"
+ ],
"description": "Create a new user",
"operationId": "createUser",
"security": [
@@ -36087,20 +40393,32 @@
"description": "The email of the user"
},
"password": {
- "type": ["string", "null"]
+ "type": [
+ "string",
+ "null"
+ ]
},
"name": {
"type": "string",
"description": "The name of the user"
},
"role": {
- "type": ["string", "null"]
+ "type": [
+ "string",
+ "null"
+ ]
},
"data": {
- "type": ["string", "null"]
+ "type": [
+ "string",
+ "null"
+ ]
}
},
- "required": ["email", "name"]
+ "required": [
+ "email",
+ "name"
+ ]
}
}
}
@@ -36131,7 +40449,9 @@
"type": "string"
}
},
- "required": ["message"]
+ "required": [
+ "message"
+ ]
}
}
},
@@ -36147,7 +40467,9 @@
"type": "string"
}
},
- "required": ["message"]
+ "required": [
+ "message"
+ ]
}
}
},
@@ -36218,7 +40540,9 @@
},
"/api/auth/admin/update-user": {
"post": {
- "tags": ["Admin"],
+ "tags": [
+ "Admin"
+ ],
"description": "Update a user's details",
"operationId": "updateUser",
"security": [
@@ -36243,7 +40567,10 @@
"description": "The user data to update"
}
},
- "required": ["userId", "data"]
+ "required": [
+ "userId",
+ "data"
+ ]
}
}
}
@@ -36274,7 +40601,9 @@
"type": "string"
}
},
- "required": ["message"]
+ "required": [
+ "message"
+ ]
}
}
},
@@ -36290,7 +40619,9 @@
"type": "string"
}
},
- "required": ["message"]
+ "required": [
+ "message"
+ ]
}
}
},
@@ -36361,7 +40692,9 @@
},
"/api/auth/admin/list-users": {
"get": {
- "tags": ["Admin"],
+ "tags": [
+ "Admin"
+ ],
"description": "List users",
"operationId": "listUsers",
"security": [
@@ -36374,14 +40707,20 @@
"name": "searchValue",
"in": "query",
"schema": {
- "type": ["string", "null"]
+ "type": [
+ "string",
+ "null"
+ ]
}
},
{
"name": "searchField",
"in": "query",
"schema": {
- "type": ["string", "null"],
+ "type": [
+ "string",
+ "null"
+ ],
"description": "The field to search in, defaults to email. Can be `email` or `name`. Eg: \"name\""
}
},
@@ -36389,7 +40728,10 @@
"name": "searchOperator",
"in": "query",
"schema": {
- "type": ["string", "null"],
+ "type": [
+ "string",
+ "null"
+ ],
"description": "The operator to use for the search. Can be `contains`, `starts_with` or `ends_with`. Eg: \"contains\""
}
},
@@ -36397,21 +40739,30 @@
"name": "limit",
"in": "query",
"schema": {
- "type": ["string", "null"]
+ "type": [
+ "string",
+ "null"
+ ]
}
},
{
"name": "offset",
"in": "query",
"schema": {
- "type": ["string", "null"]
+ "type": [
+ "string",
+ "null"
+ ]
}
},
{
"name": "sortBy",
"in": "query",
"schema": {
- "type": ["string", "null"],
+ "type": [
+ "string",
+ "null"
+ ],
"description": "The field to sort by"
}
},
@@ -36419,7 +40770,10 @@
"name": "sortDirection",
"in": "query",
"schema": {
- "type": ["string", "null"],
+ "type": [
+ "string",
+ "null"
+ ],
"description": "The direction to sort by"
}
},
@@ -36427,7 +40781,10 @@
"name": "filterField",
"in": "query",
"schema": {
- "type": ["string", "null"],
+ "type": [
+ "string",
+ "null"
+ ],
"description": "The field to filter by"
}
},
@@ -36435,14 +40792,20 @@
"name": "filterValue",
"in": "query",
"schema": {
- "type": ["string", "null"]
+ "type": [
+ "string",
+ "null"
+ ]
}
},
{
"name": "filterOperator",
"in": "query",
"schema": {
- "type": ["string", "null"],
+ "type": [
+ "string",
+ "null"
+ ],
"description": "The operator to use for the filter"
}
}
@@ -36471,7 +40834,10 @@
"type": "number"
}
},
- "required": ["users", "total"]
+ "required": [
+ "users",
+ "total"
+ ]
}
}
}
@@ -36486,7 +40852,9 @@
"type": "string"
}
},
- "required": ["message"]
+ "required": [
+ "message"
+ ]
}
}
},
@@ -36502,7 +40870,9 @@
"type": "string"
}
},
- "required": ["message"]
+ "required": [
+ "message"
+ ]
}
}
},
@@ -36573,7 +40943,9 @@
},
"/api/auth/admin/list-user-sessions": {
"post": {
- "tags": ["Admin"],
+ "tags": [
+ "Admin"
+ ],
"description": "List user sessions",
"operationId": "listUserSessions",
"security": [
@@ -36594,7 +40966,9 @@
"description": "The user id"
}
},
- "required": ["userId"]
+ "required": [
+ "userId"
+ ]
}
}
}
@@ -36628,7 +41002,9 @@
"type": "string"
}
},
- "required": ["message"]
+ "required": [
+ "message"
+ ]
}
}
},
@@ -36644,7 +41020,9 @@
"type": "string"
}
},
- "required": ["message"]
+ "required": [
+ "message"
+ ]
}
}
},
@@ -36715,7 +41093,9 @@
},
"/api/auth/admin/unban-user": {
"post": {
- "tags": ["Admin"],
+ "tags": [
+ "Admin"
+ ],
"description": "Unban a user",
"operationId": "unbanUser",
"security": [
@@ -36736,7 +41116,9 @@
"description": "The user id"
}
},
- "required": ["userId"]
+ "required": [
+ "userId"
+ ]
}
}
}
@@ -36767,7 +41149,9 @@
"type": "string"
}
},
- "required": ["message"]
+ "required": [
+ "message"
+ ]
}
}
},
@@ -36783,7 +41167,9 @@
"type": "string"
}
},
- "required": ["message"]
+ "required": [
+ "message"
+ ]
}
}
},
@@ -36854,7 +41240,9 @@
},
"/api/auth/admin/ban-user": {
"post": {
- "tags": ["Admin"],
+ "tags": [
+ "Admin"
+ ],
"description": "Ban a user",
"operationId": "banUser",
"security": [
@@ -36875,15 +41263,23 @@
"description": "The user id"
},
"banReason": {
- "type": ["string", "null"],
+ "type": [
+ "string",
+ "null"
+ ],
"description": "The reason for the ban"
},
"banExpiresIn": {
- "type": ["number", "null"],
+ "type": [
+ "number",
+ "null"
+ ],
"description": "The number of seconds until the ban expires"
}
},
- "required": ["userId"]
+ "required": [
+ "userId"
+ ]
}
}
}
@@ -36914,7 +41310,9 @@
"type": "string"
}
},
- "required": ["message"]
+ "required": [
+ "message"
+ ]
}
}
},
@@ -36930,7 +41328,9 @@
"type": "string"
}
},
- "required": ["message"]
+ "required": [
+ "message"
+ ]
}
}
},
@@ -37001,7 +41401,9 @@
},
"/api/auth/admin/impersonate-user": {
"post": {
- "tags": ["Admin"],
+ "tags": [
+ "Admin"
+ ],
"description": "Impersonate a user",
"operationId": "impersonateUser",
"security": [
@@ -37022,7 +41424,9 @@
"description": "The user id"
}
},
- "required": ["userId"]
+ "required": [
+ "userId"
+ ]
}
}
}
@@ -37056,7 +41460,9 @@
"type": "string"
}
},
- "required": ["message"]
+ "required": [
+ "message"
+ ]
}
}
},
@@ -37072,7 +41478,9 @@
"type": "string"
}
},
- "required": ["message"]
+ "required": [
+ "message"
+ ]
}
}
},
@@ -37143,7 +41551,9 @@
},
"/api/auth/admin/stop-impersonating": {
"post": {
- "tags": ["Admin"],
+ "tags": [
+ "Admin"
+ ],
"security": [
{
"bearerAuth": []
@@ -37161,7 +41571,9 @@
"type": "string"
}
},
- "required": ["message"]
+ "required": [
+ "message"
+ ]
}
}
},
@@ -37177,7 +41589,9 @@
"type": "string"
}
},
- "required": ["message"]
+ "required": [
+ "message"
+ ]
}
}
},
@@ -37248,7 +41662,9 @@
},
"/api/auth/admin/revoke-user-session": {
"post": {
- "tags": ["Admin"],
+ "tags": [
+ "Admin"
+ ],
"description": "Revoke a user session",
"operationId": "revokeUserSession",
"security": [
@@ -37269,7 +41685,9 @@
"description": "The session token"
}
},
- "required": ["sessionToken"]
+ "required": [
+ "sessionToken"
+ ]
}
}
}
@@ -37300,7 +41718,9 @@
"type": "string"
}
},
- "required": ["message"]
+ "required": [
+ "message"
+ ]
}
}
},
@@ -37316,7 +41736,9 @@
"type": "string"
}
},
- "required": ["message"]
+ "required": [
+ "message"
+ ]
}
}
},
@@ -37387,7 +41809,9 @@
},
"/api/auth/admin/revoke-user-sessions": {
"post": {
- "tags": ["Admin"],
+ "tags": [
+ "Admin"
+ ],
"description": "Revoke all user sessions",
"operationId": "revokeUserSessions",
"security": [
@@ -37408,7 +41832,9 @@
"description": "The user id"
}
},
- "required": ["userId"]
+ "required": [
+ "userId"
+ ]
}
}
}
@@ -37439,7 +41865,9 @@
"type": "string"
}
},
- "required": ["message"]
+ "required": [
+ "message"
+ ]
}
}
},
@@ -37455,7 +41883,9 @@
"type": "string"
}
},
- "required": ["message"]
+ "required": [
+ "message"
+ ]
}
}
},
@@ -37526,7 +41956,9 @@
},
"/api/auth/admin/remove-user": {
"post": {
- "tags": ["Admin"],
+ "tags": [
+ "Admin"
+ ],
"description": "Delete a user and all their sessions and accounts. Cannot be undone.",
"operationId": "removeUser",
"security": [
@@ -37547,7 +41979,9 @@
"description": "The user id"
}
},
- "required": ["userId"]
+ "required": [
+ "userId"
+ ]
}
}
}
@@ -37578,7 +42012,9 @@
"type": "string"
}
},
- "required": ["message"]
+ "required": [
+ "message"
+ ]
}
}
},
@@ -37594,7 +42030,9 @@
"type": "string"
}
},
- "required": ["message"]
+ "required": [
+ "message"
+ ]
}
}
},
@@ -37665,7 +42103,9 @@
},
"/api/auth/admin/set-user-password": {
"post": {
- "tags": ["Admin"],
+ "tags": [
+ "Admin"
+ ],
"description": "Set a user's password",
"operationId": "setUserPassword",
"security": [
@@ -37690,7 +42130,10 @@
"description": "The user id"
}
},
- "required": ["newPassword", "userId"]
+ "required": [
+ "newPassword",
+ "userId"
+ ]
}
}
}
@@ -37721,7 +42164,9 @@
"type": "string"
}
},
- "required": ["message"]
+ "required": [
+ "message"
+ ]
}
}
},
@@ -37737,7 +42182,9 @@
"type": "string"
}
},
- "required": ["message"]
+ "required": [
+ "message"
+ ]
}
}
},
@@ -37808,7 +42255,9 @@
},
"/api/auth/admin/has-permission": {
"post": {
- "tags": ["Admin"],
+ "tags": [
+ "Admin"
+ ],
"description": "Check if the user has permission",
"security": [
{
@@ -37832,7 +42281,9 @@
"description": "The permission to check"
}
},
- "required": ["permissions"]
+ "required": [
+ "permissions"
+ ]
}
}
}
@@ -37852,7 +42303,9 @@
"type": "boolean"
}
},
- "required": ["success"]
+ "required": [
+ "success"
+ ]
}
}
}
@@ -37867,7 +42320,9 @@
"type": "string"
}
},
- "required": ["message"]
+ "required": [
+ "message"
+ ]
}
}
},
@@ -37883,7 +42338,9 @@
"type": "string"
}
},
- "required": ["message"]
+ "required": [
+ "message"
+ ]
}
}
},
@@ -37954,7 +42411,9 @@
},
"/api/auth/passkey/generate-register-options": {
"get": {
- "tags": ["Passkey"],
+ "tags": [
+ "Passkey"
+ ],
"description": "Generate registration options for a new passkey",
"operationId": "generatePasskeyRegistrationOptions",
"security": [
@@ -38083,7 +42542,9 @@
"type": "string"
}
},
- "required": ["message"]
+ "required": [
+ "message"
+ ]
}
}
},
@@ -38099,7 +42560,9 @@
"type": "string"
}
},
- "required": ["message"]
+ "required": [
+ "message"
+ ]
}
}
},
@@ -38170,7 +42633,9 @@
},
"/api/auth/passkey/generate-authenticate-options": {
"get": {
- "tags": ["Passkey"],
+ "tags": [
+ "Passkey"
+ ],
"description": "Generate authentication options for a passkey",
"operationId": "passkeyGenerateAuthenticateOptions",
"security": [
@@ -38273,7 +42738,9 @@
"type": "string"
}
},
- "required": ["message"]
+ "required": [
+ "message"
+ ]
}
}
},
@@ -38289,7 +42756,9 @@
"type": "string"
}
},
- "required": ["message"]
+ "required": [
+ "message"
+ ]
}
}
},
@@ -38360,7 +42829,9 @@
},
"/api/auth/passkey/verify-registration": {
"post": {
- "tags": ["Passkey"],
+ "tags": [
+ "Passkey"
+ ],
"description": "Verify registration of a new passkey",
"operationId": "passkeyVerifyRegistration",
"security": [
@@ -38380,11 +42851,16 @@
"type": "string"
},
"name": {
- "type": ["string", "null"],
+ "type": [
+ "string",
+ "null"
+ ],
"description": "Name of the passkey"
}
},
- "required": ["response"]
+ "required": [
+ "response"
+ ]
}
}
}
@@ -38413,7 +42889,9 @@
"type": "string"
}
},
- "required": ["message"]
+ "required": [
+ "message"
+ ]
}
}
},
@@ -38484,7 +42962,9 @@
},
"/api/auth/passkey/verify-authentication": {
"post": {
- "tags": ["Passkey"],
+ "tags": [
+ "Passkey"
+ ],
"description": "Verify authentication of a passkey",
"operationId": "passkeyVerifyAuthentication",
"security": [
@@ -38504,7 +42984,9 @@
"type": "string"
}
},
- "required": ["response"]
+ "required": [
+ "response"
+ ]
}
}
}
@@ -38538,7 +43020,9 @@
"type": "string"
}
},
- "required": ["message"]
+ "required": [
+ "message"
+ ]
}
}
},
@@ -38554,7 +43038,9 @@
"type": "string"
}
},
- "required": ["message"]
+ "required": [
+ "message"
+ ]
}
}
},
@@ -38625,7 +43111,9 @@
},
"/api/auth/passkey/list-user-passkeys": {
"get": {
- "tags": ["Passkey"],
+ "tags": [
+ "Passkey"
+ ],
"description": "List all passkeys for the authenticated user",
"security": [
{
@@ -38665,7 +43153,9 @@
"type": "string"
}
},
- "required": ["message"]
+ "required": [
+ "message"
+ ]
}
}
},
@@ -38681,7 +43171,9 @@
"type": "string"
}
},
- "required": ["message"]
+ "required": [
+ "message"
+ ]
}
}
},
@@ -38752,7 +43244,9 @@
},
"/api/auth/passkey/delete-passkey": {
"post": {
- "tags": ["Passkey"],
+ "tags": [
+ "Passkey"
+ ],
"description": "Delete a specific passkey",
"security": [
{
@@ -38772,7 +43266,9 @@
"description": "The ID of the passkey to delete. Eg: \"some-passkey-id\""
}
},
- "required": ["id"]
+ "required": [
+ "id"
+ ]
}
}
}
@@ -38790,7 +43286,9 @@
"description": "Indicates whether the deletion was successful"
}
},
- "required": ["status"]
+ "required": [
+ "status"
+ ]
}
}
}
@@ -38805,7 +43303,9 @@
"type": "string"
}
},
- "required": ["message"]
+ "required": [
+ "message"
+ ]
}
}
},
@@ -38821,7 +43321,9 @@
"type": "string"
}
},
- "required": ["message"]
+ "required": [
+ "message"
+ ]
}
}
},
@@ -38892,7 +43394,9 @@
},
"/api/auth/passkey/update-passkey": {
"post": {
- "tags": ["Passkey"],
+ "tags": [
+ "Passkey"
+ ],
"description": "Update a specific passkey's name",
"security": [
{
@@ -38916,7 +43420,10 @@
"description": "The new name which the passkey will be updated to. Eg: \"my-new-passkey-name\""
}
},
- "required": ["id", "name"]
+ "required": [
+ "id",
+ "name"
+ ]
}
}
}
@@ -38933,7 +43440,9 @@
"$ref": "#/components/schemas/Passkey"
}
},
- "required": ["passkey"]
+ "required": [
+ "passkey"
+ ]
}
}
}
@@ -38948,7 +43457,9 @@
"type": "string"
}
},
- "required": ["message"]
+ "required": [
+ "message"
+ ]
}
}
},
@@ -38964,7 +43475,9 @@
"type": "string"
}
},
- "required": ["message"]
+ "required": [
+ "message"
+ ]
}
}
},
@@ -39035,7 +43548,9 @@
},
"/api/auth/sign-in/magic-link": {
"post": {
- "tags": ["Magic-link"],
+ "tags": [
+ "Magic-link"
+ ],
"description": "Sign in with magic link",
"operationId": "signInWithMagicLink",
"security": [
@@ -39056,23 +43571,37 @@
"description": "Email address to send the magic link"
},
"name": {
- "type": ["string", "null"],
+ "type": [
+ "string",
+ "null"
+ ],
"description": "User display name. Only used if the user is registering for the first time. Eg: \"my-name\""
},
"callbackURL": {
- "type": ["string", "null"],
+ "type": [
+ "string",
+ "null"
+ ],
"description": "URL to redirect after magic link verification"
},
"newUserCallbackURL": {
- "type": ["string", "null"],
+ "type": [
+ "string",
+ "null"
+ ],
"description": "URL to redirect after new user signup. Only used if the user is registering for the first time."
},
"errorCallbackURL": {
- "type": ["string", "null"],
+ "type": [
+ "string",
+ "null"
+ ],
"description": "URL to redirect after error."
}
},
- "required": ["email"]
+ "required": [
+ "email"
+ ]
}
}
}
@@ -39103,7 +43632,9 @@
"type": "string"
}
},
- "required": ["message"]
+ "required": [
+ "message"
+ ]
}
}
},
@@ -39119,7 +43650,9 @@
"type": "string"
}
},
- "required": ["message"]
+ "required": [
+ "message"
+ ]
}
}
},
@@ -39190,7 +43723,9 @@
},
"/api/auth/magic-link/verify": {
"get": {
- "tags": ["Magic-link"],
+ "tags": [
+ "Magic-link"
+ ],
"description": "Verify magic link",
"operationId": "verifyMagicLink",
"security": [
@@ -39211,7 +43746,10 @@
"name": "callbackURL",
"in": "query",
"schema": {
- "type": ["string", "null"],
+ "type": [
+ "string",
+ "null"
+ ],
"description": "URL to redirect after magic link verification, if not provided the user will be redirected to the root URL. Eg: \"/dashboard\""
}
},
@@ -39219,7 +43757,10 @@
"name": "errorCallbackURL",
"in": "query",
"schema": {
- "type": ["string", "null"],
+ "type": [
+ "string",
+ "null"
+ ],
"description": "URL to redirect after error."
}
},
@@ -39227,7 +43768,10 @@
"name": "newUserCallbackURL",
"in": "query",
"schema": {
- "type": ["string", "null"],
+ "type": [
+ "string",
+ "null"
+ ],
"description": "URL to redirect after new user signup. Only used if the user is registering for the first time."
}
}
@@ -39261,7 +43805,9 @@
"type": "string"
}
},
- "required": ["message"]
+ "required": [
+ "message"
+ ]
}
}
},
@@ -39277,7 +43823,9 @@
"type": "string"
}
},
- "required": ["message"]
+ "required": [
+ "message"
+ ]
}
}
},
@@ -39446,10 +43994,16 @@
"type": "string",
"description": "Theme",
"example": "light",
- "enum": ["light", "dark", "auto"]
+ "enum": [
+ "light",
+ "dark",
+ "auto"
+ ]
}
},
- "required": ["theme"]
+ "required": [
+ "theme"
+ ]
},
"PublicEarningsSummaryDto": {
"type": "object",
@@ -39460,7 +44014,9 @@
"example": 50000
}
},
- "required": ["totalEarned"]
+ "required": [
+ "totalEarned"
+ ]
},
"EarningsBreakdownDto": {
"type": "object",
@@ -39486,7 +44042,12 @@
"example": 5000
}
},
- "required": ["hackathons", "grants", "crowdfunding", "bounties"]
+ "required": [
+ "hackathons",
+ "grants",
+ "crowdfunding",
+ "bounties"
+ ]
},
"PublicEarningActivityDto": {
"type": "object",
@@ -39498,7 +44059,12 @@
"source": {
"type": "string",
"description": "Earnings source category",
- "enum": ["hackathons", "grants", "crowdfunding", "bounties"]
+ "enum": [
+ "hackathons",
+ "grants",
+ "crowdfunding",
+ "bounties"
+ ]
},
"title": {
"type": "string",
@@ -39547,7 +44113,11 @@
}
}
},
- "required": ["summary", "breakdown", "activities"]
+ "required": [
+ "summary",
+ "breakdown",
+ "activities"
+ ]
},
"EarningsSummaryDto": {
"type": "object",
@@ -39568,7 +44138,11 @@
"example": 40000
}
},
- "required": ["totalEarned", "pendingWithdrawal", "completedWithdrawal"]
+ "required": [
+ "totalEarned",
+ "pendingWithdrawal",
+ "completedWithdrawal"
+ ]
},
"EarningActivityDto": {
"type": "object",
@@ -39580,7 +44154,12 @@
"source": {
"type": "string",
"description": "Earnings source category",
- "enum": ["hackathons", "grants", "crowdfunding", "bounties"]
+ "enum": [
+ "hackathons",
+ "grants",
+ "crowdfunding",
+ "bounties"
+ ]
},
"title": {
"type": "string",
@@ -39600,7 +44179,11 @@
"status": {
"type": "string",
"description": "Activity status",
- "enum": ["pending", "claimable", "completed"]
+ "enum": [
+ "pending",
+ "claimable",
+ "completed"
+ ]
},
"occurredAt": {
"type": "string",
@@ -39643,7 +44226,172 @@
}
}
},
- "required": ["summary", "breakdown", "activities"]
+ "required": [
+ "summary",
+ "breakdown",
+ "activities"
+ ]
+ },
+ "ProfileDetailsDto": {
+ "type": "object",
+ "properties": {
+ "bio": {
+ "type": "string",
+ "nullable": true
+ },
+ "website": {
+ "type": "string",
+ "nullable": true
+ },
+ "location": {
+ "type": "string",
+ "nullable": true
+ },
+ "company": {
+ "type": "string",
+ "nullable": true
+ },
+ "skills": {
+ "type": "array",
+ "items": {
+ "type": "string"
+ }
+ },
+ "socialLinks": {
+ "type": "object",
+ "nullable": true,
+ "additionalProperties": true,
+ "description": "Social links keyed by platform."
+ }
+ },
+ "required": [
+ "bio",
+ "website",
+ "location",
+ "company",
+ "skills",
+ "socialLinks"
+ ]
+ },
+ "ProfileResponseDto": {
+ "type": "object",
+ "properties": {
+ "id": {
+ "type": "string"
+ },
+ "name": {
+ "type": "string",
+ "nullable": true
+ },
+ "email": {
+ "type": "string"
+ },
+ "username": {
+ "type": "string",
+ "nullable": true
+ },
+ "displayUsername": {
+ "type": "string",
+ "nullable": true
+ },
+ "image": {
+ "type": "string",
+ "nullable": true
+ },
+ "emailVerified": {
+ "type": "boolean"
+ },
+ "persona": {
+ "type": "string",
+ "nullable": true,
+ "description": "contributor | host (onboarding persona)"
+ },
+ "onboardingCompletedAt": {
+ "type": "string",
+ "nullable": true,
+ "description": "When onboarding was completed; null if not done."
+ },
+ "createdAt": {
+ "format": "date-time",
+ "type": "string"
+ },
+ "updatedAt": {
+ "format": "date-time",
+ "type": "string"
+ },
+ "profile": {
+ "$ref": "#/components/schemas/ProfileDetailsDto"
+ }
+ },
+ "required": [
+ "id",
+ "name",
+ "email",
+ "username",
+ "displayUsername",
+ "image",
+ "emailVerified",
+ "persona",
+ "onboardingCompletedAt",
+ "createdAt",
+ "updatedAt",
+ "profile"
+ ]
+ },
+ "ProfileSocialLinksDto": {
+ "type": "object",
+ "properties": {
+ "github": {
+ "type": "string",
+ "description": "GitHub profile or repository URL"
+ },
+ "twitter": {
+ "type": "string",
+ "description": "Twitter/X profile URL"
+ },
+ "linkedin": {
+ "type": "string",
+ "description": "LinkedIn profile URL"
+ },
+ "discord": {
+ "type": "string",
+ "description": "Discord profile or server URL"
+ }
+ }
+ },
+ "UpdateProfileDto": {
+ "type": "object",
+ "properties": {
+ "bio": {
+ "type": "string",
+ "description": "Short bio",
+ "maxLength": 500
+ },
+ "website": {
+ "type": "string",
+ "description": "Personal or project website URL"
+ },
+ "location": {
+ "type": "string",
+ "description": "Country or location",
+ "maxLength": 50
+ },
+ "company": {
+ "type": "string",
+ "description": "Company or organization",
+ "maxLength": 100
+ },
+ "skills": {
+ "description": "Skill tags",
+ "type": "array",
+ "items": {
+ "type": "string"
+ }
+ },
+ "socialLinks": {
+ "$ref": "#/components/schemas/ProfileSocialLinksDto"
+ }
+ }
},
"DashboardUserStatsDto": {
"type": "object",
@@ -39655,7 +44403,10 @@
"type": "number"
}
},
- "required": ["followers", "following"]
+ "required": [
+ "followers",
+ "following"
+ ]
},
"DashboardUserDto": {
"type": "object",
@@ -39704,6 +44455,22 @@
"createdAt"
]
},
+ "CurrentUserDto": {
+ "type": "object",
+ "properties": {
+ "user": {
+ "description": "Current user",
+ "allOf": [
+ {
+ "$ref": "#/components/schemas/DashboardUserDto"
+ }
+ ]
+ }
+ },
+ "required": [
+ "user"
+ ]
+ },
"UserStatsDto": {
"type": "object",
"properties": {
@@ -39767,7 +44534,10 @@
"description": "Count for that date"
}
},
- "required": ["date", "count"]
+ "required": [
+ "date",
+ "count"
+ ]
},
"ChartDto": {
"type": "object",
@@ -39779,7 +44549,9 @@
}
}
},
- "required": ["data"]
+ "required": [
+ "data"
+ ]
},
"ActivitiesGraphDto": {
"type": "object",
@@ -39791,7 +44563,9 @@
}
}
},
- "required": ["data"]
+ "required": [
+ "data"
+ ]
},
"ActivityProjectDto": {
"type": "object",
@@ -39811,7 +44585,10 @@
"nullable": true
}
},
- "required": ["id", "title"]
+ "required": [
+ "id",
+ "title"
+ ]
},
"ActivityOrganizationDto": {
"type": "object",
@@ -39823,7 +44600,10 @@
"type": "string"
}
},
- "required": ["id", "name"]
+ "required": [
+ "id",
+ "name"
+ ]
},
"RecentActivityDto": {
"type": "object",
@@ -39856,7 +44636,12 @@
"$ref": "#/components/schemas/ActivityOrganizationDto"
}
},
- "required": ["id", "type", "userId", "createdAt"]
+ "required": [
+ "id",
+ "type",
+ "userId",
+ "createdAt"
+ ]
},
"DashboardDto": {
"type": "object",
@@ -39894,9 +44679,39 @@
"recentActivities"
]
},
- "UpdateProfileDto": {
+ "CompleteOnboardingDto": {
"type": "object",
- "properties": {}
+ "properties": {
+ "persona": {
+ "type": "string",
+ "enum": [
+ "contributor",
+ "host"
+ ],
+ "description": "How the user plans to use Boundless."
+ },
+ "referralSource": {
+ "type": "string",
+ "description": "How the user heard about Boundless."
+ },
+ "skills": {
+ "description": "Skill tags.",
+ "type": "array",
+ "items": {
+ "type": "string"
+ }
+ },
+ "goals": {
+ "description": "What the user wants to use Boundless for.",
+ "type": "array",
+ "items": {
+ "type": "string"
+ }
+ }
+ },
+ "required": [
+ "persona"
+ ]
},
"UpdateUserDto": {
"type": "object",
@@ -39954,7 +44769,9 @@
"description": "User ID of the other participant"
}
},
- "required": ["otherUserId"]
+ "required": [
+ "otherUserId"
+ ]
},
"CreateMessageDto": {
"type": "object",
@@ -39965,7 +44782,155 @@
"maxLength": 10000
}
},
- "required": ["body"]
+ "required": [
+ "body"
+ ]
+ },
+ "CreditTier": {
+ "type": "string",
+ "enum": [
+ "BRONZE",
+ "SILVER",
+ "GOLD",
+ "PLATINUM"
+ ]
+ },
+ "CreditSummaryDto": {
+ "type": "object",
+ "properties": {
+ "balance": {
+ "type": "number",
+ "example": 6,
+ "description": "Current credit balance."
+ },
+ "cap": {
+ "type": "number",
+ "example": 12,
+ "description": "Hard ceiling on the balance."
+ },
+ "tier": {
+ "example": "BRONZE",
+ "allOf": [
+ {
+ "$ref": "#/components/schemas/CreditTier"
+ }
+ ]
+ },
+ "refillAmount": {
+ "type": "number",
+ "example": 3,
+ "description": "Credits this user resets to on the next refill."
+ },
+ "usedThisMonth": {
+ "type": "number",
+ "example": 8,
+ "description": "Credits spent so far this calendar month."
+ },
+ "nextRefillAt": {
+ "type": "string",
+ "format": "date-time",
+ "description": "When the next monthly refill applies."
+ }
+ },
+ "required": [
+ "balance",
+ "cap",
+ "tier",
+ "refillAmount",
+ "usedThisMonth",
+ "nextRefillAt"
+ ]
+ },
+ "CreditLedgerReason": {
+ "type": "string",
+ "enum": [
+ "WELCOME",
+ "REFILL",
+ "SPEND",
+ "REFUND",
+ "SPAM_FORFEIT",
+ "ADMIN_GRANT",
+ "PURCHASE"
+ ]
+ },
+ "CreditLedgerEntryDto": {
+ "type": "object",
+ "properties": {
+ "id": {
+ "type": "string"
+ },
+ "delta": {
+ "type": "number",
+ "example": -1,
+ "description": "Signed change to the balance."
+ },
+ "balanceAfter": {
+ "type": "number",
+ "example": 5,
+ "description": "Balance after this entry."
+ },
+ "reason": {
+ "allOf": [
+ {
+ "$ref": "#/components/schemas/CreditLedgerReason"
+ }
+ ]
+ },
+ "refType": {
+ "type": "object",
+ "nullable": true,
+ "example": "BOUNTY_APPLICATION"
+ },
+ "refId": {
+ "type": "object",
+ "nullable": true
+ },
+ "period": {
+ "type": "object",
+ "nullable": true,
+ "example": "2026-06"
+ },
+ "createdAt": {
+ "type": "string",
+ "format": "date-time"
+ }
+ },
+ "required": [
+ "id",
+ "delta",
+ "balanceAfter",
+ "reason",
+ "refType",
+ "refId",
+ "period",
+ "createdAt"
+ ]
+ },
+ "CreditHistoryDto": {
+ "type": "object",
+ "properties": {
+ "rows": {
+ "type": "array",
+ "items": {
+ "$ref": "#/components/schemas/CreditLedgerEntryDto"
+ }
+ },
+ "total": {
+ "type": "number"
+ },
+ "page": {
+ "type": "number"
+ },
+ "limit": {
+ "type": "number"
+ }
+ },
+ "required": [
+ "rows",
+ "total",
+ "page",
+ "limit"
+ ]
},
"ContactDto": {
"type": "object",
@@ -40118,7 +45083,9 @@
"example": "Stellar Analytics Dashboard"
}
},
- "required": ["title"]
+ "required": [
+ "title"
+ ]
},
"UpdateCampaignDto": {
"type": "object",
@@ -40256,7 +45223,10 @@
"description": "The role of the team member in the campaign"
}
},
- "required": ["email", "role"]
+ "required": [
+ "email",
+ "role"
+ ]
},
"ValidateMilestoneSubmissionDto": {
"type": "object",
@@ -40290,7 +45260,10 @@
"example": "Successfully deployed the MVP with all core features implemented and tested."
}
},
- "required": ["proofOfWorkFiles", "proofOfWorkLinks"]
+ "required": [
+ "proofOfWorkFiles",
+ "proofOfWorkLinks"
+ ]
},
"UpdateMilestoneDto": {
"type": "object",
@@ -40315,7 +45288,10 @@
"minLength": 10
}
},
- "required": ["proofOfWorkFiles", "proofOfWorkLinks"]
+ "required": [
+ "proofOfWorkFiles",
+ "proofOfWorkLinks"
+ ]
},
"PublishCrowdfundingEscrowDto": {
"type": "object",
@@ -40377,7 +45353,10 @@
"walletOrigin": {
"type": "string",
"description": "Wallet origin: BOUNDLESS uses the managed signer; EXTERNAL returns an unsigned XDR for the connected wallet (D9).",
- "enum": ["BOUNDLESS", "EXTERNAL"],
+ "enum": [
+ "BOUNDLESS",
+ "EXTERNAL"
+ ],
"example": "BOUNDLESS"
},
"amount": {
@@ -40395,7 +45374,11 @@
"default": false
}
},
- "required": ["contributorAddress", "walletOrigin", "amount"]
+ "required": [
+ "contributorAddress",
+ "walletOrigin",
+ "amount"
+ ]
},
"CrowdfundingSubmitSignedXdrDto": {
"type": "object",
@@ -40405,7 +45388,9 @@
"description": "Signed transaction XDR returned by the wallet."
}
},
- "required": ["signedXdr"]
+ "required": [
+ "signedXdr"
+ ]
},
"CastCrowdfundingVoteDto": {
"type": "object",
@@ -40413,11 +45398,16 @@
"choice": {
"type": "string",
"description": "UP supports the campaign, DOWN opposes it.",
- "enum": ["UP", "DOWN"],
+ "enum": [
+ "UP",
+ "DOWN"
+ ],
"example": "UP"
}
},
- "required": ["choice"]
+ "required": [
+ "choice"
+ ]
},
"ApproveCrowdfundingCampaignDto": {
"type": "object",
@@ -40439,7 +45429,9 @@
"example": false
}
},
- "required": ["delegatedReviewerId"]
+ "required": [
+ "delegatedReviewerId"
+ ]
},
"RejectCrowdfundingCampaignDto": {
"type": "object",
@@ -40459,7 +45451,9 @@
"example": "2026-08-01T00:00:00.000Z"
}
},
- "required": ["fundingEndDate"]
+ "required": [
+ "fundingEndDate"
+ ]
},
"PauseCrowdfundingCampaignDto": {
"type": "object",
@@ -40486,7 +45480,9 @@
"description": "Deadline by which the builder must resubmit (ISO 8601)."
}
},
- "required": ["rejectionFeedback"]
+ "required": [
+ "rejectionFeedback"
+ ]
},
"FileDisputeDto": {
"type": "object",
@@ -40527,7 +45523,10 @@
}
}
},
- "required": ["reason", "description"]
+ "required": [
+ "reason",
+ "description"
+ ]
},
"DisputeResponseDto": {
"type": "object",
@@ -40566,6 +45565,60 @@
"createdAt"
]
},
+ "WalletSummaryAssetDto": {
+ "type": "object",
+ "properties": {
+ "assetCode": {
+ "type": "string",
+ "example": "USDC"
+ },
+ "balance": {
+ "type": "string",
+ "example": "125.0000000",
+ "description": "Raw asset amount."
+ },
+ "usdValue": {
+ "type": "object",
+ "nullable": true,
+ "example": 125
+ }
+ },
+ "required": [
+ "assetCode",
+ "balance",
+ "usdValue"
+ ]
+ },
+ "WalletSummaryDto": {
+ "type": "object",
+ "properties": {
+ "address": {
+ "type": "object",
+ "nullable": true,
+ "description": "Wallet G-address."
+ },
+ "isActivated": {
+ "type": "boolean"
+ },
+ "totalUsd": {
+ "type": "number",
+ "example": 125,
+ "description": "Total USD across all assets."
+ },
+ "assets": {
+ "type": "array",
+ "items": {
+ "$ref": "#/components/schemas/WalletSummaryAssetDto"
+ }
+ }
+ },
+ "required": [
+ "address",
+ "isActivated",
+ "totalUsd",
+ "assets"
+ ]
+ },
"ReclaimDormantDto": {
"type": "object",
"properties": {
@@ -40601,7 +45654,9 @@
"maxLength": 12
}
},
- "required": ["assetCode"]
+ "required": [
+ "assetCode"
+ ]
},
"UserSendDto": {
"type": "object",
@@ -40634,49 +45689,11 @@
"description": "Idempotency key to prevent duplicate sends"
}
},
- "required": ["destinationPublicKey", "amount", "currency"]
- },
- "SendPayoutDto": {
- "type": "object",
- "properties": {
- "destinationPublicKey": {
- "type": "string",
- "description": "Stellar destination public key (G...)",
- "example": "GABCD..."
- },
- "amount": {
- "type": "number",
- "description": "Amount to send (positive number)",
- "example": 100.5
- },
- "currency": {
- "type": "string",
- "description": "Asset code (XLM, USDC, EURC, etc. – must be supported on network)",
- "example": "USDC"
- },
- "memo": {
- "type": "string",
- "description": "Memo (required by some exchanges). Max 28 bytes UTF-8."
- },
- "memoType": {
- "type": "string",
- "description": "Memo type",
- "enum": ["text", "id"]
- },
- "memoRequired": {
- "type": "boolean",
- "description": "If true, request fails when memo is missing (e.g. exchange requires it)"
- },
- "idempotencyKey": {
- "type": "string",
- "description": "Idempotency key to prevent duplicate payouts"
- },
- "reference": {
- "type": "string",
- "description": "Reference for audit (e.g. earnings-payout-123)"
- }
- },
- "required": ["destinationPublicKey", "amount", "currency"]
+ "required": [
+ "destinationPublicKey",
+ "amount",
+ "currency"
+ ]
},
"CreateCommentDto": {
"type": "object",
@@ -40714,7 +45731,11 @@
"example": "cm12345abcde"
}
},
- "required": ["content", "entityType", "entityId"]
+ "required": [
+ "content",
+ "entityType",
+ "entityId"
+ ]
},
"UpdateCommentDto": {
"type": "object",
@@ -40739,7 +45760,9 @@
"example": "LIKE"
}
},
- "required": ["reactionType"]
+ "required": [
+ "reactionType"
+ ]
},
"ReportCommentDto": {
"type": "object",
@@ -40764,7 +45787,9 @@
"maxLength": 500
}
},
- "required": ["reason"]
+ "required": [
+ "reason"
+ ]
},
"ResolveReportDto": {
"type": "object",
@@ -40772,7 +45797,12 @@
"status": {
"type": "string",
"description": "Resolution status for the report",
- "enum": ["PENDING", "REVIEWED", "RESOLVED", "DISMISSED"],
+ "enum": [
+ "PENDING",
+ "REVIEWED",
+ "RESOLVED",
+ "DISMISSED"
+ ],
"example": "RESOLVED"
},
"resolution": {
@@ -40782,7 +45812,9 @@
"maxLength": 500
}
},
- "required": ["status"]
+ "required": [
+ "status"
+ ]
},
"HackathonsListResponseDto": {
"type": "object",
@@ -40843,7 +45875,9 @@
"description": "Avatar URL of the participant"
}
},
- "required": ["username"]
+ "required": [
+ "username"
+ ]
},
"HackathonWinnerDto": {
"type": "object",
@@ -40903,7 +45937,10 @@
}
}
},
- "required": ["hackathonId", "winners"]
+ "required": [
+ "hackathonId",
+ "winners"
+ ]
},
"PublicAggregatedJudgingResultDto": {
"type": "object",
@@ -41071,7 +46108,10 @@
"type": "string"
}
},
- "required": ["id", "name"]
+ "required": [
+ "id",
+ "name"
+ ]
},
"OrganizationRelationDto": {
"type": "object",
@@ -41089,7 +46129,10 @@
"type": "string"
}
},
- "required": ["id", "name"]
+ "required": [
+ "id",
+ "name"
+ ]
},
"HackathonResponseDto": {
"type": "object",
@@ -41101,7 +46144,9 @@
"$ref": "#/components/schemas/OrganizationRelationDto"
}
},
- "required": ["createdBy"]
+ "required": [
+ "createdBy"
+ ]
},
"VerifyHackathonAccessDto": {
"type": "object",
@@ -41111,7 +46156,9 @@
"description": "The access password for a private hackathon"
}
},
- "required": ["password"]
+ "required": [
+ "password"
+ ]
},
"HackathonAccessTokenResponseDto": {
"type": "object",
@@ -41120,7 +46167,9 @@
"type": "string"
}
},
- "required": ["accessToken"]
+ "required": [
+ "accessToken"
+ ]
},
"JoinHackathonDto": {
"type": "object",
@@ -41152,7 +46201,9 @@
}
}
},
- "required": ["participants"]
+ "required": [
+ "participants"
+ ]
},
"TeamMemberDto": {
"type": "object",
@@ -41183,7 +46234,11 @@
"example": "https://example.com/avatar.png"
}
},
- "required": ["userId", "name", "role"]
+ "required": [
+ "userId",
+ "name",
+ "role"
+ ]
},
"SubmissionLinkDto": {
"type": "object",
@@ -41212,7 +46267,10 @@
"example": "Main repository with source code"
}
},
- "required": ["type", "url"]
+ "required": [
+ "type",
+ "url"
+ ]
},
"SocialLinksDto": {
"type": "object",
@@ -41259,7 +46317,10 @@
},
"participationType": {
"type": "string",
- "enum": ["INDIVIDUAL", "TEAM"]
+ "enum": [
+ "INDIVIDUAL",
+ "TEAM"
+ ]
},
"teamId": {
"type": "string"
@@ -41388,7 +46449,10 @@
"participationType": {
"type": "string",
"description": "Type of participation",
- "enum": ["INDIVIDUAL", "TEAM"],
+ "enum": [
+ "INDIVIDUAL",
+ "TEAM"
+ ],
"example": "INDIVIDUAL"
},
"teamId": {
@@ -41463,7 +46527,10 @@
},
"trackIds": {
"description": "Optional list of track ids to enter. Only allowed when the hackathon has prizeStructure != OVERALL_ONLY. Capped at Hackathon.tracksMaxPerSubmission.",
- "example": ["trk_abc", "trk_def"],
+ "example": [
+ "trk_abc",
+ "trk_def"
+ ],
"type": "array",
"items": {
"type": "string"
@@ -41489,7 +46556,10 @@
"description": "Answers to hackathon-level SUBMISSION-scope custom questions. Keyed by question id; each value is a string (or string[] for multi-select). Validated against the question set.",
"example": {
"cq_audience": "Freelancers",
- "cq_stack": ["Web", "AI"]
+ "cq_stack": [
+ "Web",
+ "AI"
+ ]
}
},
"tagline": {
@@ -41499,7 +46569,12 @@
},
"builtWith": {
"description": "Free-form tech-stack tags. Max 20 entries, 40 chars each.",
- "example": ["Soroban", "Stellar SDK", "Next.js", "Rust"],
+ "example": [
+ "Soroban",
+ "Stellar SDK",
+ "Next.js",
+ "Rust"
+ ],
"type": "array",
"items": {
"type": "string"
@@ -41614,7 +46689,10 @@
"description": "Answers to hackathon-level SUBMISSION-scope custom questions. Keyed by question id; each value is a string (or string[] for multi-select). Replaces the stored answers when provided.",
"example": {
"cq_audience": "Freelancers",
- "cq_stack": ["Web", "AI"]
+ "cq_stack": [
+ "Web",
+ "AI"
+ ]
}
},
"tagline": {
@@ -41676,7 +46754,13 @@
"description": "When the member joined the team (ISO string)"
}
},
- "required": ["userId", "username", "name", "role", "joinedAt"]
+ "required": [
+ "userId",
+ "username",
+ "name",
+ "role",
+ "joinedAt"
+ ]
},
"LookingForRoleDto": {
"type": "object",
@@ -41688,14 +46772,19 @@
},
"skills": {
"description": "Optional free-form skills associated with this role",
- "example": ["React", "TypeScript"],
+ "example": [
+ "React",
+ "TypeScript"
+ ],
"type": "array",
"items": {
"type": "array"
}
}
},
- "required": ["role"]
+ "required": [
+ "role"
+ ]
},
"TeamRoleResponseDto": {
"type": "object",
@@ -41709,7 +46798,10 @@
"description": "Whether this role has been filled"
}
},
- "required": ["skill", "hired"]
+ "required": [
+ "skill",
+ "hired"
+ ]
},
"TeamResponseDto": {
"type": "object",
@@ -41814,7 +46906,10 @@
"description": "Pagination metadata"
}
},
- "required": ["teams", "pagination"]
+ "required": [
+ "teams",
+ "pagination"
+ ]
},
"CreateTeamDto": {
"type": "object",
@@ -41849,7 +46944,10 @@
}
}
},
- "required": ["teamName", "description"]
+ "required": [
+ "teamName",
+ "description"
+ ]
},
"UpdateTeamDto": {
"type": "object",
@@ -41895,7 +46993,9 @@
"maxLength": 500
}
},
- "required": ["inviteeIdentifier"]
+ "required": [
+ "inviteeIdentifier"
+ ]
},
"TeamInvitationResponseDto": {
"type": "object",
@@ -41926,7 +47026,12 @@
"type": "string",
"description": "Invitation status",
"example": "pending",
- "enum": ["pending", "accepted", "rejected", "expired"]
+ "enum": [
+ "pending",
+ "accepted",
+ "rejected",
+ "expired"
+ ]
},
"message": {
"type": "object",
@@ -41984,7 +47089,10 @@
"example": 5
}
},
- "required": ["invitations", "total"]
+ "required": [
+ "invitations",
+ "total"
+ ]
},
"InvitationActionResponseDto": {
"type": "object",
@@ -42008,7 +47116,11 @@
]
}
},
- "required": ["message", "teamId", "invitation"]
+ "required": [
+ "message",
+ "teamId",
+ "invitation"
+ ]
},
"ToggleRoleHiredDto": {
"type": "object",
@@ -42019,7 +47131,9 @@
"example": "Rust Developer"
}
},
- "required": ["skill"]
+ "required": [
+ "skill"
+ ]
},
"TransferLeadershipDto": {
"type": "object",
@@ -42036,7 +47150,9 @@
"maxLength": 500
}
},
- "required": ["newLeaderId"]
+ "required": [
+ "newLeaderId"
+ ]
},
"LeadershipTransferResponseDto": {
"type": "object",
@@ -42155,7 +47271,10 @@
"venueType": {
"type": "string",
"description": "Venue type",
- "enum": ["virtual", "physical"]
+ "enum": [
+ "virtual",
+ "physical"
+ ]
},
"tagline": {
"type": "string",
@@ -42210,7 +47329,11 @@
"type": "string"
}
},
- "required": ["name", "startDate", "endDate"]
+ "required": [
+ "name",
+ "startDate",
+ "endDate"
+ ]
},
"TimelineFormData": {
"type": "object",
@@ -42252,14 +47375,22 @@
"description": "Read-only: timestamp the submission deadline was last extended"
}
},
- "required": ["startDate", "submissionDeadline", "timezone"]
+ "required": [
+ "startDate",
+ "submissionDeadline",
+ "timezone"
+ ]
},
"ParticipantFormData": {
"type": "object",
"properties": {
"participantType": {
"type": "string",
- "enum": ["individual", "team", "team_or_individual"]
+ "enum": [
+ "individual",
+ "team",
+ "team_or_individual"
+ ]
},
"teamMin": {
"type": "number",
@@ -42317,14 +47448,23 @@
},
"submissionVisibility": {
"type": "string",
- "enum": ["PUBLIC", "PARTICIPANTS_ONLY"]
+ "enum": [
+ "PUBLIC",
+ "PARTICIPANTS_ONLY"
+ ]
},
"submissionStatusVisibility": {
"type": "string",
- "enum": ["ALL", "ACCEPTED_SHORTLISTED", "HIDDEN_UNTIL_RESULTS"]
+ "enum": [
+ "ALL",
+ "ACCEPTED_SHORTLISTED",
+ "HIDDEN_UNTIL_RESULTS"
+ ]
}
},
- "required": ["participantType"]
+ "required": [
+ "participantType"
+ ]
},
"HackathonDraftTracksDto": {
"type": "object",
@@ -42363,13 +47503,21 @@
},
"kind": {
"type": "string",
- "enum": ["OVERALL", "TRACK"]
+ "enum": [
+ "OVERALL",
+ "TRACK"
+ ]
},
"trackId": {
"type": "string"
}
},
- "required": ["id", "place", "prizeAmount", "passMark"]
+ "required": [
+ "id",
+ "place",
+ "prizeAmount",
+ "passMark"
+ ]
},
"PrizePlacementWriteDto": {
"type": "object",
@@ -42394,7 +47542,10 @@
"maximum": 100
}
},
- "required": ["position", "amount"]
+ "required": [
+ "position",
+ "amount"
+ ]
},
"PrizeWriteDto": {
"type": "object",
@@ -42420,7 +47571,11 @@
}
}
},
- "required": ["name", "trackIds", "placements"]
+ "required": [
+ "name",
+ "trackIds",
+ "placements"
+ ]
},
"WinnerOverrideDto": {
"type": "object",
@@ -42440,7 +47595,9 @@
"type": "string"
}
},
- "required": ["submissionId"]
+ "required": [
+ "submissionId"
+ ]
},
"RewardsFormData": {
"type": "object",
@@ -42465,7 +47622,11 @@
},
"prizeStructure": {
"type": "string",
- "enum": ["OVERALL_ONLY", "OVERALL_AND_TRACKS", "TRACKS_ONLY"]
+ "enum": [
+ "OVERALL_ONLY",
+ "OVERALL_AND_TRACKS",
+ "TRACKS_ONLY"
+ ]
},
"tracksMaxPerSubmission": {
"type": "number",
@@ -42503,7 +47664,9 @@
}
}
},
- "required": ["id"]
+ "required": [
+ "id"
+ ]
},
"ResourcesFormData": {
"type": "object",
@@ -42515,7 +47678,9 @@
}
}
},
- "required": ["resources"]
+ "required": [
+ "resources"
+ ]
},
"CriterionDto": {
"type": "object",
@@ -42537,7 +47702,11 @@
"type": "string"
}
},
- "required": ["id", "name", "weight"]
+ "required": [
+ "id",
+ "name",
+ "weight"
+ ]
},
"JudgingFormData": {
"type": "object",
@@ -42549,7 +47718,9 @@
}
}
},
- "required": ["criteria"]
+ "required": [
+ "criteria"
+ ]
},
"SponsorPartnerDto": {
"type": "object",
@@ -42568,7 +47739,9 @@
"type": "string"
}
},
- "required": ["id"]
+ "required": [
+ "id"
+ ]
},
"CollaborationFormData": {
"type": "object",
@@ -42596,7 +47769,9 @@
}
}
},
- "required": ["contactEmail"]
+ "required": [
+ "contactEmail"
+ ]
},
"HackathonDraftDataDto": {
"type": "object",
@@ -42627,15 +47802,52 @@
}
}
},
+ "HackathonDraftAssumptionDto": {
+ "type": "object",
+ "properties": {
+ "section": {
+ "type": "string",
+ "description": "Wizard section the assumption belongs to."
+ },
+ "field": {
+ "type": "string",
+ "description": "Field within the section."
+ },
+ "note": {
+ "type": "string",
+ "description": "One-line plain reason for the choice."
+ }
+ },
+ "required": [
+ "section",
+ "field",
+ "note"
+ ]
+ },
"HackathonDraftAiGenerationDto": {
"type": "object",
"properties": {
"generationId": {
"type": "string",
"description": "AI generationId that produced or last-updated this draft."
+ },
+ "assumptions": {
+ "description": "Non-obvious choices the AI made, for review.",
+ "type": "array",
+ "items": {
+ "$ref": "#/components/schemas/HackathonDraftAssumptionDto"
+ }
+ },
+ "brief": {
+ "type": "string",
+ "nullable": true,
+ "description": "The brief that produced this draft (shown beside the draft)."
}
},
- "required": ["generationId"]
+ "required": [
+ "generationId",
+ "assumptions"
+ ]
},
"HackathonDraftPrizePlacementDto": {
"type": "object",
@@ -42663,7 +47875,13 @@
"description": "Minimum score (0-100) to win this placement"
}
},
- "required": ["id", "position", "amount", "currency", "passMark"]
+ "required": [
+ "id",
+ "position",
+ "amount",
+ "currency",
+ "passMark"
+ ]
},
"HackathonDraftPrizeDto": {
"type": "object",
@@ -42695,7 +47913,13 @@
}
}
},
- "required": ["id", "name", "displayOrder", "trackIds", "placements"]
+ "required": [
+ "id",
+ "name",
+ "displayOrder",
+ "trackIds",
+ "placements"
+ ]
},
"HackathonDraftResponseDto": {
"type": "object",
@@ -42806,6 +48030,77 @@
}
}
},
+ "ClarifyHackathonBriefDto": {
+ "type": "object",
+ "properties": {
+ "brief": {
+ "type": "string",
+ "description": "Free-text brief to triage for clarifying questions.",
+ "minLength": 10,
+ "maxLength": 2000
+ }
+ },
+ "required": [
+ "brief"
+ ]
+ },
+ "ClarifyHackathonQuestionOptionDto": {
+ "type": "object",
+ "properties": {
+ "value": {
+ "type": "string"
+ },
+ "label": {
+ "type": "string"
+ }
+ },
+ "required": [
+ "value",
+ "label"
+ ]
+ },
+ "ClarifyHackathonQuestionDto": {
+ "type": "object",
+ "properties": {
+ "id": {
+ "type": "string",
+ "description": "Axis key, e.g. \"duration\" | \"structure\" | \"participation\"."
+ },
+ "question": {
+ "type": "string"
+ },
+ "options": {
+ "type": "array",
+ "items": {
+ "$ref": "#/components/schemas/ClarifyHackathonQuestionOptionDto"
+ }
+ }
+ },
+ "required": [
+ "id",
+ "question",
+ "options"
+ ]
+ },
+ "ClarifyHackathonDraftResponseDto": {
+ "type": "object",
+ "properties": {
+ "ready": {
+ "type": "boolean",
+ "description": "True when the brief is specific enough to draft immediately."
+ },
+ "questions": {
+ "type": "array",
+ "items": {
+ "$ref": "#/components/schemas/ClarifyHackathonQuestionDto"
+ }
+ }
+ },
+ "required": [
+ "ready",
+ "questions"
+ ]
+ },
"GenerateDraftFromBriefDto": {
"type": "object",
"properties": {
@@ -42835,7 +48130,11 @@
}
}
},
- "required": ["brief", "budgetCapUsdc", "earliestStart"]
+ "required": [
+ "brief",
+ "budgetCapUsdc",
+ "earliestStart"
+ ]
},
"AiGenerationMetaDto": {
"type": "object",
@@ -42854,7 +48153,12 @@
"description": "Cost in USD as a decimal string (never a float)."
}
},
- "required": ["generationId", "model", "promptVersion", "costUsd"]
+ "required": [
+ "generationId",
+ "model",
+ "promptVersion",
+ "costUsd"
+ ]
},
"GenerateDraftFromBriefResponseDto": {
"type": "object",
@@ -42870,14 +48174,24 @@
"$ref": "#/components/schemas/AiGenerationMetaDto"
}
},
- "required": ["draftId", "draft", "generation"]
+ "required": [
+ "draftId",
+ "draft",
+ "generation"
+ ]
},
"RegenerateDraftSectionDto": {
"type": "object",
"properties": {
"section": {
"type": "string",
- "enum": ["criteria", "prizes", "tracks", "timeline", "description"]
+ "enum": [
+ "criteria",
+ "prizes",
+ "tracks",
+ "timeline",
+ "description"
+ ]
},
"instructions": {
"type": "string",
@@ -42885,14 +48199,22 @@
"maxLength": 1000
}
},
- "required": ["section"]
+ "required": [
+ "section"
+ ]
},
"RegenerateDraftSectionResponseDto": {
"type": "object",
"properties": {
"section": {
"type": "string",
- "enum": ["criteria", "prizes", "tracks", "timeline", "description"]
+ "enum": [
+ "criteria",
+ "prizes",
+ "tracks",
+ "timeline",
+ "description"
+ ]
},
"data": {
"type": "object",
@@ -42903,7 +48225,11 @@
"$ref": "#/components/schemas/AiGenerationMetaDto"
}
},
- "required": ["section", "data", "generation"]
+ "required": [
+ "section",
+ "data",
+ "generation"
+ ]
},
"UpdateVisibilitySettingsDto": {
"type": "object",
@@ -42911,13 +48237,20 @@
"submissionVisibility": {
"type": "string",
"description": "Who can view hackathon submissions",
- "enum": ["PUBLIC", "PARTICIPANTS_ONLY"],
+ "enum": [
+ "PUBLIC",
+ "PARTICIPANTS_ONLY"
+ ],
"example": "PUBLIC"
},
"submissionStatusVisibility": {
"type": "string",
"description": "Which submission statuses are visible to others. ALL exposes SUBMITTED and SHORTLISTED. ACCEPTED_SHORTLISTED exposes only SHORTLISTED. HIDDEN_UNTIL_RESULTS hides every submission from non-owners and non-organizers until the hackathon results are published, then exposes only SHORTLISTED. DISQUALIFIED is never visible to anyone other than the owner or an organizer.",
- "enum": ["ALL", "ACCEPTED_SHORTLISTED", "HIDDEN_UNTIL_RESULTS"],
+ "enum": [
+ "ALL",
+ "ACCEPTED_SHORTLISTED",
+ "HIDDEN_UNTIL_RESULTS"
+ ],
"example": "ACCEPTED_SHORTLISTED"
}
}
@@ -42934,7 +48267,10 @@
"type": "string",
"description": "Review action",
"example": "SHORTLISTED",
- "enum": ["SHORTLISTED", "SUBMITTED"]
+ "enum": [
+ "SHORTLISTED",
+ "SUBMITTED"
+ ]
},
"notes": {
"type": "string",
@@ -42953,7 +48289,10 @@
"default": false
}
},
- "required": ["judgeId", "status"]
+ "required": [
+ "judgeId",
+ "status"
+ ]
},
"OrganizationHackathonParticipantsResponseDto": {
"type": "object",
@@ -42970,14 +48309,19 @@
"maxLength": 500
}
},
- "required": ["disqualificationReason"]
+ "required": [
+ "disqualificationReason"
+ ]
},
"BulkSubmissionActionDto": {
"type": "object",
"properties": {
"submissionIds": {
"description": "Array of submission IDs",
- "example": ["sub_1234567890", "sub_0987654321"],
+ "example": [
+ "sub_1234567890",
+ "sub_0987654321"
+ ],
"type": "array",
"items": {
"type": "string"
@@ -42987,7 +48331,11 @@
"type": "string",
"description": "Action to perform",
"example": "SHORTLISTED",
- "enum": ["SHORTLISTED", "SUBMITTED", "DISQUALIFIED"]
+ "enum": [
+ "SHORTLISTED",
+ "SUBMITTED",
+ "DISQUALIFIED"
+ ]
},
"reason": {
"type": "string",
@@ -42995,7 +48343,10 @@
"example": "Does not meet requirements"
}
},
- "required": ["submissionIds", "action"]
+ "required": [
+ "submissionIds",
+ "action"
+ ]
},
"SummaryMetricsDto": {
"type": "object",
@@ -43036,7 +48387,10 @@
"example": 5
}
},
- "required": ["date", "count"]
+ "required": [
+ "date",
+ "count"
+ ]
},
"TrendsDto": {
"type": "object",
@@ -43054,7 +48408,10 @@
}
}
},
- "required": ["submissionsOverTime", "participantSignupsOverTime"]
+ "required": [
+ "submissionsOverTime",
+ "participantSignupsOverTime"
+ ]
},
"TimelinePhaseDto": {
"type": "object",
@@ -43073,10 +48430,19 @@
},
"status": {
"type": "string",
- "enum": ["upcoming", "ongoing", "completed"]
+ "enum": [
+ "upcoming",
+ "ongoing",
+ "completed"
+ ]
}
},
- "required": ["phase", "description", "date", "status"]
+ "required": [
+ "phase",
+ "description",
+ "date",
+ "status"
+ ]
},
"HackathonAnalyticsResponseDto": {
"type": "object",
@@ -43098,7 +48464,12 @@
}
}
},
- "required": ["hackathonId", "summary", "trends", "timeline"]
+ "required": [
+ "hackathonId",
+ "summary",
+ "trends",
+ "timeline"
+ ]
},
"AnnouncementAuthorDto": {
"type": "object",
@@ -43116,7 +48487,10 @@
"type": "string"
}
},
- "required": ["id", "name"]
+ "required": [
+ "id",
+ "name"
+ ]
},
"AnnouncementResponseDto": {
"type": "object",
@@ -43195,7 +48569,10 @@
"default": false
}
},
- "required": ["title", "content"]
+ "required": [
+ "title",
+ "content"
+ ]
},
"UpdateAnnouncementDto": {
"type": "object",
@@ -43243,7 +48620,10 @@
"example": "Great technical implementation"
}
},
- "required": ["criterionId", "score"]
+ "required": [
+ "criterionId",
+ "score"
+ ]
},
"ScoreSubmissionDto": {
"type": "object",
@@ -43276,7 +48656,10 @@
"default": false
}
},
- "required": ["submissionId", "criteriaScores"]
+ "required": [
+ "submissionId",
+ "criteriaScores"
+ ]
},
"UserDetailsDto": {
"type": "object",
@@ -43297,7 +48680,12 @@
"type": "string"
}
},
- "required": ["id", "email", "name", "username"]
+ "required": [
+ "id",
+ "email",
+ "name",
+ "username"
+ ]
},
"JudgingSubmissionParticipantDto": {
"type": "object",
@@ -43327,7 +48715,12 @@
}
}
},
- "required": ["id", "userId", "user", "participationType"]
+ "required": [
+ "id",
+ "userId",
+ "user",
+ "participationType"
+ ]
},
"JudgingSubmissionDataDto": {
"type": "object",
@@ -43433,7 +48826,12 @@
"type": "number"
}
},
- "required": ["participant", "submission", "averageScore", "judgeCount"]
+ "required": [
+ "participant",
+ "submission",
+ "averageScore",
+ "judgeCount"
+ ]
},
"JudgingPaginationDto": {
"type": "object",
@@ -43451,7 +48849,12 @@
"type": "number"
}
},
- "required": ["page", "limit", "total", "totalPages"]
+ "required": [
+ "page",
+ "limit",
+ "total",
+ "totalPages"
+ ]
},
"JudgingSubmissionsResponseDto": {
"type": "object",
@@ -43476,7 +48879,11 @@
"description": "Number of submissions in this hackathon that the calling judge has already scored. Independent of pagination so the progress strip is accurate even when the user is on page 2."
}
},
- "required": ["submissions", "criteria", "pagination"]
+ "required": [
+ "submissions",
+ "criteria",
+ "pagination"
+ ]
},
"AddJudgeDto": {
"type": "object",
@@ -43487,7 +48894,9 @@
"example": "judge@example.com"
}
},
- "required": ["email"]
+ "required": [
+ "email"
+ ]
},
"JudgeResponseDto": {
"type": "object",
@@ -43505,7 +48914,11 @@
"type": "object"
}
},
- "required": ["id", "userId", "name"]
+ "required": [
+ "id",
+ "userId",
+ "name"
+ ]
},
"IndividualScoreDto": {
"type": "object",
@@ -43520,7 +48933,11 @@
"type": "number"
}
},
- "required": ["judgeId", "judgeName", "score"]
+ "required": [
+ "judgeId",
+ "judgeName",
+ "score"
+ ]
},
"ScoreRangeDto": {
"type": "object",
@@ -43532,7 +48949,10 @@
"type": "number"
}
},
- "required": ["min", "max"]
+ "required": [
+ "min",
+ "max"
+ ]
},
"CriteriaBreakdownDto": {
"type": "object",
@@ -43553,7 +48973,13 @@
"type": "number"
}
},
- "required": ["criterionId", "averageScore", "min", "max", "variance"]
+ "required": [
+ "criterionId",
+ "averageScore",
+ "min",
+ "max",
+ "variance"
+ ]
},
"AggregatedJudgingResultDto": {
"type": "object",
@@ -43732,7 +49158,9 @@
"description": "The submission to award this placement to."
}
},
- "required": ["submissionId"]
+ "required": [
+ "submissionId"
+ ]
},
"InviteJudgeDto": {
"type": "object",
@@ -43760,7 +49188,9 @@
"maximum": 60
}
},
- "required": ["email"]
+ "required": [
+ "email"
+ ]
},
"BulkInviteJudgesDto": {
"type": "object",
@@ -43773,7 +49203,9 @@
}
}
},
- "required": ["invites"]
+ "required": [
+ "invites"
+ ]
},
"BulkInviteRowResultDto": {
"type": "object",
@@ -43783,7 +49215,10 @@
},
"status": {
"type": "string",
- "enum": ["invited", "failed"],
+ "enum": [
+ "invited",
+ "failed"
+ ],
"description": "'invited' = sent; 'failed' = skipped with a reason."
},
"reason": {
@@ -43791,7 +49226,10 @@
"description": "Failure reason when status is failed."
}
},
- "required": ["email", "status"]
+ "required": [
+ "email",
+ "status"
+ ]
},
"BulkInviteResultDto": {
"type": "object",
@@ -43811,7 +49249,11 @@
"description": "Count of rows that failed / were skipped."
}
},
- "required": ["results", "invited", "failed"]
+ "required": [
+ "results",
+ "invited",
+ "failed"
+ ]
},
"RecommendationThresholdDto": {
"type": "object",
@@ -43832,7 +49274,11 @@
"description": "Top percent (0-100)."
}
},
- "required": ["id", "hackathonId", "topPercent"]
+ "required": [
+ "id",
+ "hackathonId",
+ "topPercent"
+ ]
},
"SetRecommendationThresholdDto": {
"type": "object",
@@ -43849,7 +49295,9 @@
"example": 10
}
},
- "required": ["topPercent"]
+ "required": [
+ "topPercent"
+ ]
},
"RecommendationComputeDiagnosticsDto": {
"type": "object",
@@ -43918,7 +49366,11 @@
]
}
},
- "required": ["overallRecommended", "tracks", "diagnostics"]
+ "required": [
+ "overallRecommended",
+ "tracks",
+ "diagnostics"
+ ]
},
"AcceptJudgeInvitationDto": {
"type": "object",
@@ -43970,7 +49422,10 @@
},
"venueType": {
"type": "string",
- "enum": ["virtual", "physical"],
+ "enum": [
+ "virtual",
+ "physical"
+ ],
"example": "virtual"
},
"tagline": {
@@ -44032,7 +49487,9 @@
"example": "https://stellar.org"
}
},
- "required": ["id"]
+ "required": [
+ "id"
+ ]
},
"PublishedCollaborationFormDataDto": {
"type": "object",
@@ -44050,7 +49507,9 @@
"example": "boundless-hackathon"
},
"socialLinks": {
- "example": ["https://x.com/boundless"],
+ "example": [
+ "https://x.com/boundless"
+ ],
"type": "array",
"items": {
"type": "string"
@@ -44063,7 +49522,11 @@
}
}
},
- "required": ["contactEmail", "socialLinks", "sponsorsPartners"]
+ "required": [
+ "contactEmail",
+ "socialLinks",
+ "sponsorsPartners"
+ ]
},
"UpdatePublishedHackathonContentDto": {
"type": "object",
@@ -44096,7 +49559,11 @@
"example": "Core build phase for teams"
}
},
- "required": ["name", "startDate", "endDate"]
+ "required": [
+ "name",
+ "startDate",
+ "endDate"
+ ]
},
"PublishedTimelineFormDataDto": {
"type": "object",
@@ -44136,7 +49603,11 @@
"properties": {
"participantType": {
"type": "string",
- "enum": ["individual", "team", "team_or_individual"]
+ "enum": [
+ "individual",
+ "team",
+ "team_or_individual"
+ ]
},
"teamMin": {
"type": "number",
@@ -44199,7 +49670,9 @@
"type": "boolean"
}
},
- "required": ["participantType"]
+ "required": [
+ "participantType"
+ ]
},
"UpdatePublishedHackathonScheduleDto": {
"type": "object",
@@ -44249,14 +49722,22 @@
},
"kind": {
"type": "string",
- "enum": ["OVERALL", "TRACK"]
+ "enum": [
+ "OVERALL",
+ "TRACK"
+ ]
},
"trackId": {
"type": "string",
"description": "Required when kind=TRACK. References a HackathonTrack id."
}
},
- "required": ["id", "place", "prizeAmount", "passMark"]
+ "required": [
+ "id",
+ "place",
+ "prizeAmount",
+ "passMark"
+ ]
},
"PublishedRewardsFormDataDto": {
"type": "object",
@@ -44286,7 +49767,11 @@
},
"prizeStructure": {
"type": "string",
- "enum": ["OVERALL_ONLY", "OVERALL_AND_TRACKS", "TRACKS_ONLY"]
+ "enum": [
+ "OVERALL_ONLY",
+ "OVERALL_AND_TRACKS",
+ "TRACKS_ONLY"
+ ]
},
"tracksMaxPerSubmission": {
"type": "number",
@@ -44305,7 +49790,9 @@
"$ref": "#/components/schemas/PublishedRewardsFormDataDto"
}
},
- "required": ["rewards"]
+ "required": [
+ "rewards"
+ ]
},
"AdvancedSettingsFormDataDto": {
"type": "object",
@@ -44364,21 +49851,28 @@
"$ref": "#/components/schemas/AdvancedSettingsFormDataDto"
}
},
- "required": ["advancedSettings"]
+ "required": [
+ "advancedSettings"
+ ]
},
"SetHackathonAccessDto": {
"type": "object",
"properties": {
"visibility": {
"type": "string",
- "enum": ["PUBLIC", "PRIVATE"]
+ "enum": [
+ "PUBLIC",
+ "PRIVATE"
+ ]
},
"password": {
"type": "string",
"description": "Access password. Required when first making a hackathon private; ignored (cleared) when visibility is PUBLIC."
}
},
- "required": ["visibility"]
+ "required": [
+ "visibility"
+ ]
},
"InvitePartnerDto": {
"type": "object",
@@ -44419,7 +49913,11 @@
"default": true
}
},
- "required": ["partnerEmail", "partnerName", "pledgedAmount"]
+ "required": [
+ "partnerEmail",
+ "partnerName",
+ "pledgedAmount"
+ ]
},
"AllocationTargetDto": {
"type": "object",
@@ -44433,7 +49931,10 @@
"description": "Net amount (USDC) to add to the placement"
}
},
- "required": ["placementId", "amount"]
+ "required": [
+ "placementId",
+ "amount"
+ ]
},
"AllocateContributionDto": {
"type": "object",
@@ -44446,7 +49947,9 @@
}
}
},
- "required": ["targets"]
+ "required": [
+ "targets"
+ ]
},
"PrepareFundTransactionDto": {
"type": "object",
@@ -44456,7 +49959,9 @@
"description": "Stellar address of the partner wallet that will sign the transaction"
}
},
- "required": ["signerAddress"]
+ "required": [
+ "signerAddress"
+ ]
},
"SubmitSignedTransactionDto": {
"type": "object",
@@ -44466,7 +49971,9 @@
"description": "Signed transaction XDR returned by the partner wallet"
}
},
- "required": ["signedXdr"]
+ "required": [
+ "signedXdr"
+ ]
},
"TrackCustomQuestionDto": {
"type": "object",
@@ -44481,7 +49988,11 @@
},
"type": {
"type": "string",
- "enum": ["short", "long", "url"],
+ "enum": [
+ "short",
+ "long",
+ "url"
+ ],
"description": "Input type. 'short' = single-line, 'long' = textarea, 'url' = URL field."
},
"maxLength": {
@@ -44493,7 +50004,11 @@
"description": "Whether an answer is required."
}
},
- "required": ["id", "label", "type"]
+ "required": [
+ "id",
+ "label",
+ "type"
+ ]
},
"TrackRequiredArtifactDto": {
"type": "object",
@@ -44508,7 +50023,13 @@
},
"type": {
"type": "string",
- "enum": ["figma", "github", "video", "pdf", "url"],
+ "enum": [
+ "figma",
+ "github",
+ "video",
+ "pdf",
+ "url"
+ ],
"description": "Artifact type — drives the placeholder + light hint UI."
},
"required": {
@@ -44516,7 +50037,11 @@
"description": "Whether submitting this artifact is required."
}
},
- "required": ["id", "label", "type"]
+ "required": [
+ "id",
+ "label",
+ "type"
+ ]
},
"TrackResponseDto": {
"type": "object",
@@ -44541,7 +50066,10 @@
},
"eligibility": {
"type": "string",
- "enum": ["OPT_IN", "OPEN"]
+ "enum": [
+ "OPT_IN",
+ "OPEN"
+ ]
},
"displayOrder": {
"type": "number"
@@ -44602,7 +50130,10 @@
},
"scope": {
"type": "string",
- "enum": ["REGISTRATION", "SUBMISSION"]
+ "enum": [
+ "REGISTRATION",
+ "SUBMISSION"
+ ]
},
"label": {
"type": "string"
@@ -44687,7 +50218,10 @@
"eligibility": {
"type": "string",
"description": "OPT_IN (default): submitters explicitly enter. OPEN: every submission auto-eligible.",
- "enum": ["OPT_IN", "OPEN"],
+ "enum": [
+ "OPT_IN",
+ "OPEN"
+ ],
"default": "OPT_IN"
},
"displayOrder": {
@@ -44713,7 +50247,9 @@
}
}
},
- "required": ["name"]
+ "required": [
+ "name"
+ ]
},
"UpdateTrackDto": {
"type": "object",
@@ -44732,7 +50268,10 @@
},
"eligibility": {
"type": "string",
- "enum": ["OPT_IN", "OPEN"]
+ "enum": [
+ "OPT_IN",
+ "OPEN"
+ ]
},
"displayOrder": {
"type": "number"
@@ -44764,7 +50303,10 @@
"properties": {
"scope": {
"type": "string",
- "enum": ["REGISTRATION", "SUBMISSION"]
+ "enum": [
+ "REGISTRATION",
+ "SUBMISSION"
+ ]
},
"label": {
"type": "string",
@@ -44806,7 +50348,11 @@
"description": "Sort order; lower renders first."
}
},
- "required": ["scope", "label", "type"]
+ "required": [
+ "scope",
+ "label",
+ "type"
+ ]
},
"UpsertCustomQuestionsDto": {
"type": "object",
@@ -44818,7 +50364,9 @@
}
}
},
- "required": ["questions"]
+ "required": [
+ "questions"
+ ]
},
"RequestFundingOtpResponseDto": {
"type": "object",
@@ -44840,7 +50388,12 @@
"description": "Seconds until the emailed code expires (0 when none sent)"
}
},
- "required": ["required", "alreadyVerified", "sent", "expiresInSeconds"]
+ "required": [
+ "required",
+ "alreadyVerified",
+ "sent",
+ "expiresInSeconds"
+ ]
},
"VerifyFundingOtpDto": {
"type": "object",
@@ -44851,7 +50404,9 @@
"example": "123456"
}
},
- "required": ["code"]
+ "required": [
+ "code"
+ ]
},
"VerifyFundingOtpResponseDto": {
"type": "object",
@@ -44865,7 +50420,10 @@
"description": "Seconds the funding authorization remains valid"
}
},
- "required": ["verified", "expiresInSeconds"]
+ "required": [
+ "verified",
+ "expiresInSeconds"
+ ]
},
"WinnerDistributionEntryDto": {
"type": "object",
@@ -44883,7 +50441,10 @@
"minimum": 1
}
},
- "required": ["position", "percent"]
+ "required": [
+ "position",
+ "percent"
+ ]
},
"PublishHackathonEscrowDto": {
"type": "object",
@@ -44919,7 +50480,10 @@
"fundingMode": {
"type": "string",
"description": "Signing path. Defaults to EXTERNAL (return unsigned XDR for the caller to sign). Set to MANAGED to have the backend sign + submit using the caller user's managed wallet; the response carries the op in PENDING_CONFIRM with a txHash.",
- "enum": ["EXTERNAL", "MANAGED"],
+ "enum": [
+ "EXTERNAL",
+ "MANAGED"
+ ],
"default": "EXTERNAL",
"example": "MANAGED"
},
@@ -44928,7 +50492,11 @@
"description": "For MANAGED funding, the organization treasury wallet to fund from. When set, the backend signs with that treasury (managed) wallet instead of the caller's personal wallet; ownerAddress must match the treasury wallet address. Omit to fund from the personal managed wallet."
}
},
- "required": ["ownerAddress", "tokenAddress", "budget"]
+ "required": [
+ "ownerAddress",
+ "tokenAddress",
+ "budget"
+ ]
},
"HackathonEscrowOpResponseDto": {
"type": "object",
@@ -45042,7 +50610,10 @@
"fundingMode": {
"type": "string",
"description": "Signing path. EXTERNAL (default) returns unsigned XDR; MANAGED signs server-side with the caller's platform-held wallet.",
- "enum": ["EXTERNAL", "MANAGED"],
+ "enum": [
+ "EXTERNAL",
+ "MANAGED"
+ ],
"default": "EXTERNAL"
},
"sourceWalletId": {
@@ -45050,7 +50621,9 @@
"description": "For MANAGED, the organization treasury wallet to sign with (the event contract-auth identity). ownerAddress must match it. Omit to use the caller's personal managed wallet."
}
},
- "required": ["ownerAddress"]
+ "required": [
+ "ownerAddress"
+ ]
},
"HackathonWinnerSelectionDto": {
"type": "object",
@@ -45066,13 +50639,6 @@
"example": 1,
"minimum": 1
},
- "creditEarn": {
- "type": "number",
- "description": "Override the platform default credit_earn for this position. Defaults to 20/10/5 for positions 1/2/3 and 3 for the rest. Capped at 100 by the contract.",
- "minimum": 0,
- "maximum": 100,
- "example": 20
- },
"reputationBump": {
"type": "number",
"description": "Override the platform default reputation_bump for this position. Defaults to 50/25/10 for positions 1/2/3 and 5 for the rest.",
@@ -45080,7 +50646,10 @@
"example": 50
}
},
- "required": ["submissionId", "position"]
+ "required": [
+ "submissionId",
+ "position"
+ ]
},
"SelectHackathonWinnersDto": {
"type": "object",
@@ -45100,7 +50669,10 @@
"fundingMode": {
"type": "string",
"description": "Signing path. EXTERNAL (default) returns unsigned XDR; MANAGED signs server-side.",
- "enum": ["EXTERNAL", "MANAGED"],
+ "enum": [
+ "EXTERNAL",
+ "MANAGED"
+ ],
"default": "EXTERNAL"
},
"sourceWalletId": {
@@ -45108,7 +50680,9 @@
"description": "For MANAGED, the organization treasury wallet to sign with (the event contract-auth identity). ownerAddress must match it. Omit to use the caller's personal managed wallet."
}
},
- "required": ["selections"]
+ "required": [
+ "selections"
+ ]
},
"HackathonSubmitSignedXdrDto": {
"type": "object",
@@ -45119,7 +50693,9 @@
"example": "AAAAAgAAAACdiamX7q...truncated..."
}
},
- "required": ["signedXdr"]
+ "required": [
+ "signedXdr"
+ ]
},
"SubmitHackathonDto": {
"type": "object",
@@ -45132,7 +50708,10 @@
"fundingMode": {
"type": "string",
"description": "Signing path. EXTERNAL (default) returns unsigned XDR. MANAGED signs server-side with the caller's platform-held wallet.",
- "enum": ["EXTERNAL", "MANAGED"],
+ "enum": [
+ "EXTERNAL",
+ "MANAGED"
+ ],
"default": "EXTERNAL"
},
"contentUri": {
@@ -45143,7 +50722,10 @@
"maxLength": 1024
}
},
- "required": ["applicantAddress", "contentUri"]
+ "required": [
+ "applicantAddress",
+ "contentUri"
+ ]
},
"WithdrawHackathonSubmissionDto": {
"type": "object",
@@ -45156,11 +50738,16 @@
"fundingMode": {
"type": "string",
"description": "Signing path. EXTERNAL (default) returns unsigned XDR. MANAGED signs server-side with the caller's platform-held wallet.",
- "enum": ["EXTERNAL", "MANAGED"],
+ "enum": [
+ "EXTERNAL",
+ "MANAGED"
+ ],
"default": "EXTERNAL"
}
},
- "required": ["applicantAddress"]
+ "required": [
+ "applicantAddress"
+ ]
},
"ContributeHackathonDto": {
"type": "object",
@@ -45173,7 +50760,10 @@
"fundingMode": {
"type": "string",
"description": "Signing path. EXTERNAL (default) returns unsigned XDR. MANAGED signs server-side with the caller's platform-held wallet.",
- "enum": ["EXTERNAL", "MANAGED"],
+ "enum": [
+ "EXTERNAL",
+ "MANAGED"
+ ],
"default": "EXTERNAL"
},
"amount": {
@@ -45182,7 +50772,10 @@
"example": "30"
}
},
- "required": ["applicantAddress", "amount"]
+ "required": [
+ "applicantAddress",
+ "amount"
+ ]
},
"CreateOrganizationDto": {
"type": "object",
@@ -45256,7 +50849,14 @@
]
}
},
- "required": ["id", "name", "slug", "logoUrl", "description", "stats"]
+ "required": [
+ "id",
+ "name",
+ "slug",
+ "logoUrl",
+ "description",
+ "stats"
+ ]
},
"UpdateOrganizationDto": {
"type": "object",
@@ -45281,7 +50881,10 @@
},
"kind": {
"type": "string",
- "enum": ["MANAGED", "CONNECTED"]
+ "enum": [
+ "MANAGED",
+ "CONNECTED"
+ ]
},
"publicKey": {
"type": "string"
@@ -45294,7 +50897,11 @@
},
"status": {
"type": "string",
- "enum": ["ACTIVE", "ARCHIVED", "NEEDS_REVIEW"]
+ "enum": [
+ "ACTIVE",
+ "ARCHIVED",
+ "NEEDS_REVIEW"
+ ]
},
"isMultisig": {
"type": "boolean"
@@ -45343,7 +50950,9 @@
"example": "Main treasury"
}
},
- "required": ["label"]
+ "required": [
+ "label"
+ ]
},
"RegisterConnectedWalletDto": {
"type": "object",
@@ -45370,7 +50979,11 @@
]
}
},
- "required": ["publicKey", "label", "connectionMethod"]
+ "required": [
+ "publicKey",
+ "label",
+ "connectionMethod"
+ ]
},
"UpdateTreasuryWalletDto": {
"type": "object",
@@ -45400,7 +51013,11 @@
"description": "XLM balance (fee float)"
}
},
- "required": ["publicKey", "usdc", "xlm"]
+ "required": [
+ "publicKey",
+ "usdc",
+ "xlm"
+ ]
},
"TreasuryPolicyRuleDto": {
"type": "object",
@@ -45419,14 +51036,21 @@
"example": 1
},
"approver_roles": {
- "example": ["owner", "admin"],
+ "example": [
+ "owner",
+ "admin"
+ ],
"type": "array",
"items": {
"type": "string"
}
}
},
- "required": ["min_usdc", "required_approvals", "approver_roles"]
+ "required": [
+ "min_usdc",
+ "required_approvals",
+ "approver_roles"
+ ]
},
"TreasuryPolicyResponseDto": {
"type": "object",
@@ -45475,7 +51099,9 @@
"description": "Default source wallet id"
}
},
- "required": ["rules"]
+ "required": [
+ "rules"
+ ]
},
"InitiateSpendDto": {
"type": "object",
@@ -45500,13 +51126,22 @@
},
"referenceType": {
"type": "string",
- "enum": ["hackathon", "bounty", "grant"]
+ "enum": [
+ "hackathon",
+ "bounty",
+ "grant"
+ ]
},
"referenceId": {
"type": "string"
}
},
- "required": ["sourceWalletId", "destination", "amount", "purpose"]
+ "required": [
+ "sourceWalletId",
+ "destination",
+ "amount",
+ "purpose"
+ ]
},
"SpendRequestResponseDto": {
"type": "object",
@@ -45609,7 +51244,11 @@
"example": "Contributor payout"
}
},
- "required": ["sourceWalletId", "destination", "amount"]
+ "required": [
+ "sourceWalletId",
+ "destination",
+ "amount"
+ ]
},
"SendDestinationReadinessDto": {
"type": "object",
@@ -45623,7 +51262,10 @@
"description": "Whether the recipient has a USDC trustline (so it can receive USDC)"
}
},
- "required": ["exists", "hasUsdcTrustline"]
+ "required": [
+ "exists",
+ "hasUsdcTrustline"
+ ]
},
"SpendDecisionDto": {
"type": "object",
@@ -45645,7 +51287,10 @@
"$ref": "#/components/schemas/SpendRequestResponseDto"
}
},
- "required": ["unsignedXdr", "request"]
+ "required": [
+ "unsignedXdr",
+ "request"
+ ]
},
"SubmitSpendSignedXdrDto": {
"type": "object",
@@ -45655,7 +51300,9 @@
"description": "The browser-signed transaction XDR"
}
},
- "required": ["signedXdr"]
+ "required": [
+ "signedXdr"
+ ]
},
"TreasuryActorDto": {
"type": "object",
@@ -45672,7 +51319,11 @@
"nullable": true
}
},
- "required": ["id", "name", "image"]
+ "required": [
+ "id",
+ "name",
+ "image"
+ ]
},
"TreasuryAuditEntryDto": {
"type": "object",
@@ -45747,7 +51398,12 @@
"type": "number"
}
},
- "required": ["data", "total", "page", "limit"]
+ "required": [
+ "data",
+ "total",
+ "page",
+ "limit"
+ ]
},
"ReceiptResponseDto": {
"type": "object",
@@ -45872,7 +51528,12 @@
"type": "number"
}
},
- "required": ["data", "total", "page", "limit"]
+ "required": [
+ "data",
+ "total",
+ "page",
+ "limit"
+ ]
},
"SendReceiptDto": {
"type": "object",
@@ -45911,7 +51572,10 @@
},
"voteType": {
"type": "string",
- "enum": ["UPVOTE", "DOWNVOTE"],
+ "enum": [
+ "UPVOTE",
+ "DOWNVOTE"
+ ],
"default": "UPVOTE",
"description": "Type of vote (UPVOTE or DOWNVOTE)"
},
@@ -45921,7 +51585,10 @@
"description": "Weight of the vote"
}
},
- "required": ["projectId", "entityType"]
+ "required": [
+ "projectId",
+ "entityType"
+ ]
},
"CreateBlogPostDto": {
"type": "object",
@@ -45953,13 +51620,22 @@
"status": {
"type": "string",
"description": "Post status",
- "enum": ["DRAFT", "PUBLISHED", "ARCHIVED", "SCHEDULED"],
+ "enum": [
+ "DRAFT",
+ "PUBLISHED",
+ "ARCHIVED",
+ "SCHEDULED"
+ ],
"example": "DRAFT",
"default": "DRAFT"
},
"tags": {
"description": "Post tags",
- "example": ["smart-contracts", "soroban", "tutorial"],
+ "example": [
+ "smart-contracts",
+ "soroban",
+ "tutorial"
+ ],
"type": "array",
"items": {
"type": "string"
@@ -45967,7 +51643,9 @@
},
"categories": {
"description": "Post categories",
- "example": ["tutorials"],
+ "example": [
+ "tutorials"
+ ],
"type": "array",
"items": {
"type": "string"
@@ -46002,7 +51680,11 @@
},
"seoKeywords": {
"description": "SEO keywords",
- "example": ["stellar", "blockchain", "smart contracts"],
+ "example": [
+ "stellar",
+ "blockchain",
+ "smart contracts"
+ ],
"type": "array",
"items": {
"type": "string"
@@ -46020,7 +51702,10 @@
"default": false
}
},
- "required": ["title", "content"]
+ "required": [
+ "title",
+ "content"
+ ]
},
"UpdateBlogPostDto": {
"type": "object",
@@ -46041,7 +51726,11 @@
},
"changeType": {
"type": "string",
- "enum": ["positive", "negative", "neutral"],
+ "enum": [
+ "positive",
+ "negative",
+ "neutral"
+ ],
"description": "Type of change",
"example": "positive"
},
@@ -46056,7 +51745,12 @@
"example": "Active users in the platform"
}
},
- "required": ["value", "change", "changeType", "label"]
+ "required": [
+ "value",
+ "change",
+ "changeType",
+ "label"
+ ]
},
"HackathonMetricDataDto": {
"type": "object",
@@ -46073,7 +51767,11 @@
},
"changeType": {
"type": "string",
- "enum": ["positive", "negative", "neutral"],
+ "enum": [
+ "positive",
+ "negative",
+ "neutral"
+ ],
"description": "Type of change",
"example": "positive"
},
@@ -46093,7 +51791,12 @@
"example": "3 active, 7 upcoming"
}
},
- "required": ["value", "change", "changeType", "label"]
+ "required": [
+ "value",
+ "change",
+ "changeType",
+ "label"
+ ]
},
"OverviewMetricsDto": {
"type": "object",
@@ -46111,7 +51814,12 @@
"$ref": "#/components/schemas/HackathonMetricDataDto"
}
},
- "required": ["totalUsers", "organizations", "projects", "hackathons"]
+ "required": [
+ "totalUsers",
+ "organizations",
+ "projects",
+ "hackathons"
+ ]
},
"OverviewChartDataDto": {
"type": "object",
@@ -46124,12 +51832,19 @@
},
"timeRange": {
"type": "string",
- "enum": ["7d", "30d", "90d"],
+ "enum": [
+ "7d",
+ "30d",
+ "90d"
+ ],
"description": "Time range for the chart",
"example": "7d"
}
},
- "required": ["data", "timeRange"]
+ "required": [
+ "data",
+ "timeRange"
+ ]
},
"AdminOverviewResponseDto": {
"type": "object",
@@ -46146,7 +51861,11 @@
"example": "2025-12-26T10:30:00Z"
}
},
- "required": ["metrics", "chart", "lastUpdated"]
+ "required": [
+ "metrics",
+ "chart",
+ "lastUpdated"
+ ]
},
"AdminCrowdfundingRejectDto": {
"type": "object",
@@ -46168,14 +51887,19 @@
},
"reasons": {
"description": "Optional structured reasons",
- "example": ["incomplete_description", "missing_team_info"],
+ "example": [
+ "incomplete_description",
+ "missing_team_info"
+ ],
"type": "array",
"items": {
"type": "string"
}
}
},
- "required": ["message"]
+ "required": [
+ "message"
+ ]
},
"AdminCrowdfundingNoteDto": {
"type": "object",
@@ -46186,7 +51910,9 @@
"example": "Reviewed initial submission"
}
},
- "required": ["note"]
+ "required": [
+ "note"
+ ]
},
"AdminCrowdfundingAssignDto": {
"type": "object",
@@ -46197,7 +51923,9 @@
"example": "550e8400-e29b-41d4-a716-446655440000"
}
},
- "required": ["reviewerId"]
+ "required": [
+ "reviewerId"
+ ]
},
"ApproveMilestoneDto": {
"type": "object",
@@ -46212,18 +51940,26 @@
"RejectMilestoneDto": {
"type": "object",
"properties": {
- "rejectionFeedback": {
+ "reason": {
"type": "string",
- "description": "Feedback shown to the builder; what needs to change.",
- "minLength": 3,
- "maxLength": 1000
+ "description": "Rejection reason",
+ "example": "Incomplete deliverables"
+ },
+ "feedback": {
+ "type": "string",
+ "description": "Detailed feedback for rejection",
+ "example": "The submitted work does not meet the project requirements. Please revise and resubmit."
},
"resubmissionDeadline": {
"type": "string",
- "description": "Optional ISO date by which the builder must resubmit."
+ "description": "Deadline for resubmission",
+ "example": "2025-02-01"
}
},
- "required": ["rejectionFeedback"]
+ "required": [
+ "reason",
+ "feedback"
+ ]
},
"RequestMilestoneResubmissionDto": {
"type": "object",
@@ -46239,7 +51975,10 @@
"example": "2025-02-15"
}
},
- "required": ["feedback", "resubmissionDeadline"]
+ "required": [
+ "feedback",
+ "resubmissionDeadline"
+ ]
},
"AddMilestoneReviewNoteDto": {
"type": "object",
@@ -46250,14 +51989,21 @@
"example": "Reviewed the code quality and found it satisfactory"
}
},
- "required": ["note"]
+ "required": [
+ "note"
+ ]
},
"ManualEscrowActionDto": {
"type": "object",
"properties": {
"action": {
"type": "string",
- "enum": ["RELEASE", "REFUND", "PAUSE", "RESUME"],
+ "enum": [
+ "RELEASE",
+ "REFUND",
+ "PAUSE",
+ "RESUME"
+ ],
"description": "Type of escrow action to execute",
"example": "RELEASE"
},
@@ -46277,18 +52023,22 @@
"example": "GAXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX"
}
},
- "required": ["action"]
+ "required": [
+ "action"
+ ]
},
"AssignDisputeDto": {
"type": "object",
"properties": {
- "assignedToStaffId": {
+ "adminId": {
"type": "string",
- "nullable": true,
- "description": "staff_users id to assign the dispute to, or null to unassign."
+ "description": "Admin user ID to assign dispute to",
+ "example": "550e8400-e29b-41d4-a716-446655440000"
}
},
- "required": ["assignedToStaffId"]
+ "required": [
+ "adminId"
+ ]
},
"AddDisputeNoteDto": {
"type": "object",
@@ -46304,7 +52054,9 @@
"example": false
}
},
- "required": ["message"]
+ "required": [
+ "message"
+ ]
},
"ResolveDisputeDto": {
"type": "object",
@@ -46319,28 +52071,32 @@
"DISMISSED",
"ARBITRATION"
],
- "description": "Resolution outcome recorded on the dispute."
+ "description": "Resolution type",
+ "example": "APPROVED_WITH_CONDITIONS"
},
"resolutionNotes": {
"type": "string",
- "description": "Resolution notes shown to the reporter and campaign creator.",
- "minLength": 3,
- "maxLength": 1000
+ "description": "Detailed notes explaining the resolution",
+ "example": "Approved with condition that milestone is completed by next week"
}
},
- "required": ["resolution", "resolutionNotes"]
+ "required": [
+ "resolution",
+ "resolutionNotes"
+ ]
},
"EscalateDisputeDto": {
"type": "object",
"properties": {
"reason": {
"type": "string",
- "description": "Why this dispute is being escalated to arbitration. Recorded in the audit log.",
- "minLength": 3,
- "maxLength": 500
+ "description": "Reason for escalation to arbitration",
+ "example": "Parties cannot agree on resolution terms"
}
},
- "required": ["reason"]
+ "required": [
+ "reason"
+ ]
},
"RejectManualProjectDto": {
"type": "object",
@@ -46367,7 +52123,11 @@
"$ref": "#/components/schemas/MetricDataDto"
}
},
- "required": ["totalWallets", "activatedWallets", "inactiveWallets"]
+ "required": [
+ "totalWallets",
+ "activatedWallets",
+ "inactiveWallets"
+ ]
},
"AdminWalletUserDto": {
"type": "object",
@@ -46388,7 +52148,11 @@
"type": "string"
}
},
- "required": ["id", "name", "email"]
+ "required": [
+ "id",
+ "name",
+ "email"
+ ]
},
"AdminWalletListItemDto": {
"type": "object",
@@ -46413,7 +52177,13 @@
}
}
},
- "required": ["id", "publicKey", "isActivated", "createdAt", "users"]
+ "required": [
+ "id",
+ "publicKey",
+ "isActivated",
+ "createdAt",
+ "users"
+ ]
},
"AdminWalletListResponseDto": {
"type": "object",
@@ -46437,7 +52207,13 @@
"type": "number"
}
},
- "required": ["wallets", "total", "page", "limit", "totalPages"]
+ "required": [
+ "wallets",
+ "total",
+ "page",
+ "limit",
+ "totalPages"
+ ]
},
"AdminWalletBalanceDto": {
"type": "object",
@@ -46455,7 +52231,11 @@
"type": "string"
}
},
- "required": ["balance", "assetCode", "assetType"]
+ "required": [
+ "balance",
+ "assetCode",
+ "assetType"
+ ]
},
"AdminWalletDetailsDto": {
"type": "object",
@@ -46530,7 +52310,9 @@
"example": true
}
},
- "required": ["canRetry"]
+ "required": [
+ "canRetry"
+ ]
},
"VerificationStatusDto": {
"type": "object",
@@ -46581,7 +52363,11 @@
]
}
},
- "required": ["state", "canStartNew", "message"]
+ "required": [
+ "state",
+ "canStartNew",
+ "message"
+ ]
},
"PricingPreviewResponseDto": {
"type": "object",
@@ -46615,6 +52401,46 @@
"reason"
]
},
+ "AiUsageResponseDto": {
+ "type": "object",
+ "properties": {
+ "tier": {
+ "type": "string",
+ "description": "Subscription tier (FREE | PRO | BYOK | ENTERPRISE)."
+ },
+ "limit": {
+ "type": "number",
+ "nullable": true,
+ "description": "Monthly billable-call limit, or null for unlimited tiers."
+ },
+ "used": {
+ "type": "number",
+ "description": "Billable calls used this month."
+ },
+ "remaining": {
+ "type": "number",
+ "nullable": true,
+ "description": "Remaining billable calls, or null for unlimited."
+ },
+ "resetAt": {
+ "type": "string",
+ "format": "date-time",
+ "description": "Window reset (UTC)."
+ },
+ "costUsdThisMonth": {
+ "type": "string",
+ "description": "Total spend this month as a decimal string (incl. clarify)."
+ }
+ },
+ "required": [
+ "tier",
+ "limit",
+ "used",
+ "remaining",
+ "resetAt",
+ "costUsdThisMonth"
+ ]
+ },
"StaffPrincipalDto": {
"type": "object",
"properties": {
@@ -46656,7 +52482,9 @@
"$ref": "#/components/schemas/StaffPrincipalDto"
}
},
- "required": ["staff"]
+ "required": [
+ "staff"
+ ]
},
"AnalyticsTotalsDto": {
"type": "object",
@@ -46702,7 +52530,12 @@
"type": "number"
}
},
- "required": ["hackathons", "bounties", "grants", "crowdfunding"]
+ "required": [
+ "hackathons",
+ "bounties",
+ "grants",
+ "crowdfunding"
+ ]
},
"AnalyticsBucketDto": {
"type": "object",
@@ -46714,7 +52547,10 @@
"type": "number"
}
},
- "required": ["label", "count"]
+ "required": [
+ "label",
+ "count"
+ ]
},
"AnalyticsTrendPointDto": {
"type": "object",
@@ -46727,7 +52563,10 @@
"type": "number"
}
},
- "required": ["date", "count"]
+ "required": [
+ "date",
+ "count"
+ ]
},
"AnalyticsDto": {
"type": "object",
@@ -46826,7 +52665,10 @@
},
"status": {
"type": "string",
- "enum": ["active", "banned"]
+ "enum": [
+ "active",
+ "banned"
+ ]
},
"joined": {
"type": "string",
@@ -46866,7 +52708,13 @@
"type": "number"
}
},
- "required": ["items", "page", "limit", "total", "totalPages"]
+ "required": [
+ "items",
+ "page",
+ "limit",
+ "total",
+ "totalPages"
+ ]
},
"AdminUserDetailDto": {
"type": "object",
@@ -46895,7 +52743,10 @@
},
"status": {
"type": "string",
- "enum": ["active", "banned"]
+ "enum": [
+ "active",
+ "banned"
+ ]
},
"banReason": {
"type": "string",
@@ -46958,7 +52809,13 @@
"description": "ISO timestamp the user joined the organization"
}
},
- "required": ["id", "name", "slug", "role", "joinedAt"]
+ "required": [
+ "id",
+ "name",
+ "slug",
+ "role",
+ "joinedAt"
+ ]
},
"AdminUserWalletBalanceDto": {
"type": "object",
@@ -47043,7 +52900,9 @@
"description": "Reason for the ban (recorded in the audit log)"
}
},
- "required": ["banned"]
+ "required": [
+ "banned"
+ ]
},
"BanUserResponseDto": {
"type": "object",
@@ -47055,7 +52914,10 @@
"type": "boolean"
}
},
- "required": ["id", "banned"]
+ "required": [
+ "id",
+ "banned"
+ ]
},
"AdminOrgListItemDto": {
"type": "object",
@@ -47120,7 +52982,13 @@
"type": "number"
}
},
- "required": ["items", "page", "limit", "total", "totalPages"]
+ "required": [
+ "items",
+ "page",
+ "limit",
+ "total",
+ "totalPages"
+ ]
},
"AdminOrgDetailDto": {
"type": "object",
@@ -47217,7 +53085,12 @@
"type": "boolean"
}
},
- "required": ["id", "name", "slug", "announcementsEnabled"]
+ "required": [
+ "id",
+ "name",
+ "slug",
+ "announcementsEnabled"
+ ]
},
"SuspendOrgDto": {
"type": "object",
@@ -47229,7 +53102,9 @@
"maxLength": 500
}
},
- "required": ["reason"]
+ "required": [
+ "reason"
+ ]
},
"OrgSuspensionResponseDto": {
"type": "object",
@@ -47254,7 +53129,13 @@
"nullable": true
}
},
- "required": ["id", "name", "slug", "suspendedAt", "suspensionReason"]
+ "required": [
+ "id",
+ "name",
+ "slug",
+ "suspendedAt",
+ "suspensionReason"
+ ]
},
"ReinstateOrgDto": {
"type": "object",
@@ -47274,7 +53155,12 @@
},
"type": {
"type": "string",
- "enum": ["hackathon", "bounty", "grant", "crowdfunding"]
+ "enum": [
+ "hackathon",
+ "bounty",
+ "grant",
+ "crowdfunding"
+ ]
},
"title": {
"type": "string"
@@ -47329,7 +53215,13 @@
"type": "number"
}
},
- "required": ["items", "page", "limit", "total", "totalPages"]
+ "required": [
+ "items",
+ "page",
+ "limit",
+ "total",
+ "totalPages"
+ ]
},
"AdminProgramDetailDto": {
"type": "object",
@@ -47339,7 +53231,12 @@
},
"type": {
"type": "string",
- "enum": ["hackathon", "bounty", "grant", "crowdfunding"]
+ "enum": [
+ "hackathon",
+ "bounty",
+ "grant",
+ "crowdfunding"
+ ]
},
"title": {
"type": "string"
@@ -47375,7 +53272,12 @@
"properties": {
"type": {
"type": "string",
- "enum": ["hackathon", "bounty", "grant", "crowdfunding"],
+ "enum": [
+ "hackathon",
+ "bounty",
+ "grant",
+ "crowdfunding"
+ ],
"description": "Which pillar the id is in."
},
"featured": {
@@ -47383,7 +53285,10 @@
"description": "Feature (true) or unfeature (false) the program."
}
},
- "required": ["type", "featured"]
+ "required": [
+ "type",
+ "featured"
+ ]
},
"ProgramActionResponseDto": {
"type": "object",
@@ -47393,7 +53298,12 @@
},
"type": {
"type": "string",
- "enum": ["hackathon", "bounty", "grant", "crowdfunding"]
+ "enum": [
+ "hackathon",
+ "bounty",
+ "grant",
+ "crowdfunding"
+ ]
},
"status": {
"type": "string",
@@ -47404,14 +53314,24 @@
"description": "Whether the program is featured (false if unsupported)"
}
},
- "required": ["id", "type", "status", "isFeatured"]
+ "required": [
+ "id",
+ "type",
+ "status",
+ "isFeatured"
+ ]
},
"SetProgramStatusDto": {
"type": "object",
"properties": {
"type": {
"type": "string",
- "enum": ["hackathon", "bounty", "grant", "crowdfunding"],
+ "enum": [
+ "hackathon",
+ "bounty",
+ "grant",
+ "crowdfunding"
+ ],
"description": "Which pillar the id is in."
},
"status": {
@@ -47419,7 +53339,10 @@
"description": "Target lifecycle status. Must be one of the admin-settable states for the pillar (archive/suspend/cancel-type)."
}
},
- "required": ["type", "status"]
+ "required": [
+ "type",
+ "status"
+ ]
},
"AdminDisputeListItemDto": {
"type": "object",
@@ -47487,7 +53410,13 @@
"type": "number"
}
},
- "required": ["items", "page", "limit", "total", "totalPages"]
+ "required": [
+ "items",
+ "page",
+ "limit",
+ "total",
+ "totalPages"
+ ]
},
"AdminDisputeDetailDto": {
"type": "object",
@@ -47572,6 +53501,19 @@
"created"
]
},
+ "AdminV2AssignDisputeDto": {
+ "type": "object",
+ "properties": {
+ "assignedToStaffId": {
+ "type": "string",
+ "nullable": true,
+ "description": "staff_users id to assign the dispute to, or null to unassign."
+ }
+ },
+ "required": [
+ "assignedToStaffId"
+ ]
+ },
"DisputeAssignmentResponseDto": {
"type": "object",
"properties": {
@@ -47588,7 +53530,11 @@
"nullable": true
}
},
- "required": ["id", "assignedTo", "assignedAt"]
+ "required": [
+ "id",
+ "assignedTo",
+ "assignedAt"
+ ]
},
"NoteDisputeDto": {
"type": "object",
@@ -47600,7 +53546,9 @@
"maxLength": 2000
}
},
- "required": ["note"]
+ "required": [
+ "note"
+ ]
},
"DisputeNoteResponseDto": {
"type": "object",
@@ -47616,7 +53564,38 @@
"description": "ISO timestamp the note was recorded"
}
},
- "required": ["id", "note", "createdAt"]
+ "required": [
+ "id",
+ "note",
+ "createdAt"
+ ]
+ },
+ "AdminV2ResolveDisputeDto": {
+ "type": "object",
+ "properties": {
+ "resolution": {
+ "type": "string",
+ "enum": [
+ "APPROVED_WITH_CONDITIONS",
+ "REQUIRE_RESUBMISSION",
+ "PARTIAL_REFUND",
+ "FULL_REFUND",
+ "DISMISSED",
+ "ARBITRATION"
+ ],
+ "description": "Resolution outcome recorded on the dispute."
+ },
+ "resolutionNotes": {
+ "type": "string",
+ "description": "Resolution notes shown to the reporter and campaign creator.",
+ "minLength": 3,
+ "maxLength": 1000
+ }
+ },
+ "required": [
+ "resolution",
+ "resolutionNotes"
+ ]
},
"DisputeActionResponseDto": {
"type": "object",
@@ -47638,7 +53617,26 @@
"description": "Whether the dispute is escalated to arbitration"
}
},
- "required": ["id", "status", "resolution", "escalatedToArbitration"]
+ "required": [
+ "id",
+ "status",
+ "resolution",
+ "escalatedToArbitration"
+ ]
+ },
+ "AdminV2EscalateDisputeDto": {
+ "type": "object",
+ "properties": {
+ "reason": {
+ "type": "string",
+ "description": "Why this dispute is being escalated to arbitration. Recorded in the audit log.",
+ "minLength": 3,
+ "maxLength": 500
+ }
+ },
+ "required": [
+ "reason"
+ ]
},
"AdminMoneyEntryDto": {
"type": "object",
@@ -47648,7 +53646,10 @@
},
"kind": {
"type": "string",
- "enum": ["escrow", "payout"]
+ "enum": [
+ "escrow",
+ "payout"
+ ]
},
"reference": {
"type": "string",
@@ -47709,7 +53710,13 @@
"type": "number"
}
},
- "required": ["items", "page", "limit", "total", "totalPages"]
+ "required": [
+ "items",
+ "page",
+ "limit",
+ "total",
+ "totalPages"
+ ]
},
"EscrowRequestDto": {
"type": "object",
@@ -47719,7 +53726,10 @@
},
"kind": {
"type": "string",
- "enum": ["release", "refund"]
+ "enum": [
+ "release",
+ "refund"
+ ]
},
"campaignId": {
"type": "string"
@@ -47811,14 +53821,19 @@
}
}
},
- "required": ["items"]
+ "required": [
+ "items"
+ ]
},
"ProposeEscrowRequestDto": {
"type": "object",
"properties": {
"kind": {
"type": "string",
- "enum": ["release", "refund"]
+ "enum": [
+ "release",
+ "refund"
+ ]
},
"campaignId": {
"type": "string",
@@ -47845,21 +53860,30 @@
"description": "Why the funds are being moved"
}
},
- "required": ["kind", "campaignId", "amount"]
+ "required": [
+ "kind",
+ "campaignId",
+ "amount"
+ ]
},
"DecideEscrowRequestDto": {
"type": "object",
"properties": {
"decision": {
"type": "string",
- "enum": ["approve", "reject"]
+ "enum": [
+ "approve",
+ "reject"
+ ]
},
"note": {
"type": "string",
"description": "Note recorded with the decision"
}
},
- "required": ["decision"]
+ "required": [
+ "decision"
+ ]
},
"ExecuteEscrowRequestDto": {
"type": "object",
@@ -47869,7 +53893,9 @@
"description": "Hash of the settled, offline-signed release/refund tx"
}
},
- "required": ["txHash"]
+ "required": [
+ "txHash"
+ ]
},
"PayoutRequestDto": {
"type": "object",
@@ -47978,7 +54004,9 @@
}
}
},
- "required": ["items"]
+ "required": [
+ "items"
+ ]
},
"ProposePayoutRequestDto": {
"type": "object",
@@ -48005,28 +54033,39 @@
},
"memoType": {
"type": "string",
- "enum": ["text", "id"]
+ "enum": [
+ "text",
+ "id"
+ ]
},
"reason": {
"type": "string",
"description": "Why the payout is being sent"
}
},
- "required": ["destinationPublicKey", "amount"]
+ "required": [
+ "destinationPublicKey",
+ "amount"
+ ]
},
"DecidePayoutRequestDto": {
"type": "object",
"properties": {
"decision": {
"type": "string",
- "enum": ["approve", "reject"]
+ "enum": [
+ "approve",
+ "reject"
+ ]
},
"note": {
"type": "string",
"description": "Note recorded with the decision"
}
},
- "required": ["decision"]
+ "required": [
+ "decision"
+ ]
},
"BuildXdrResponseDto": {
"type": "object",
@@ -48038,7 +54077,10 @@
"network": {
"type": "string",
"description": "Network the transaction targets.",
- "enum": ["public", "testnet"]
+ "enum": [
+ "public",
+ "testnet"
+ ]
},
"passphrase": {
"type": "string",
@@ -48053,7 +54095,13 @@
"description": "Deep-link to the Stellar Lab Sign Transaction page. Paste the copied XDR there."
}
},
- "required": ["unsignedXdr", "network", "passphrase", "source", "labUrl"]
+ "required": [
+ "unsignedXdr",
+ "network",
+ "passphrase",
+ "source",
+ "labUrl"
+ ]
},
"SubmitPayoutSignedXdrDto": {
"type": "object",
@@ -48063,7 +54111,9 @@
"description": "Fully-signed payout XDR returned by the wallet / multisig coordinator. Verified against the built unsigned XDR before broadcast."
}
},
- "required": ["signedXdr"]
+ "required": [
+ "signedXdr"
+ ]
},
"ExecutePayoutRequestDto": {
"type": "object",
@@ -48073,7 +54123,9 @@
"description": "Hash of the settled, offline-signed payout tx"
}
},
- "required": ["txHash"]
+ "required": [
+ "txHash"
+ ]
},
"AdminContentListItemDto": {
"type": "object",
@@ -48141,7 +54193,13 @@
"type": "number"
}
},
- "required": ["items", "page", "limit", "total", "totalPages"]
+ "required": [
+ "items",
+ "page",
+ "limit",
+ "total",
+ "totalPages"
+ ]
},
"AdminContentDetailDto": {
"type": "object",
@@ -48256,7 +54314,11 @@
"description": "Publishing status"
}
},
- "required": ["id", "slug", "status"]
+ "required": [
+ "id",
+ "slug",
+ "status"
+ ]
},
"UpdateContentDto": {
"type": "object",
@@ -48288,13 +54350,22 @@
"status": {
"type": "string",
"description": "Post status",
- "enum": ["DRAFT", "PUBLISHED", "ARCHIVED", "SCHEDULED"],
+ "enum": [
+ "DRAFT",
+ "PUBLISHED",
+ "ARCHIVED",
+ "SCHEDULED"
+ ],
"example": "DRAFT",
"default": "DRAFT"
},
"tags": {
"description": "Post tags",
- "example": ["smart-contracts", "soroban", "tutorial"],
+ "example": [
+ "smart-contracts",
+ "soroban",
+ "tutorial"
+ ],
"type": "array",
"items": {
"type": "string"
@@ -48302,7 +54373,9 @@
},
"categories": {
"description": "Post categories",
- "example": ["tutorials"],
+ "example": [
+ "tutorials"
+ ],
"type": "array",
"items": {
"type": "string"
@@ -48337,7 +54410,11 @@
},
"seoKeywords": {
"description": "SEO keywords",
- "example": ["stellar", "blockchain", "smart contracts"],
+ "example": [
+ "stellar",
+ "blockchain",
+ "smart contracts"
+ ],
"type": "array",
"items": {
"type": "string"
@@ -48364,7 +54441,9 @@
"description": "true publishes the post; false unpublishes (back to draft)."
}
},
- "required": ["published"]
+ "required": [
+ "published"
+ ]
},
"ContentActionResponseDto": {
"type": "object",
@@ -48385,7 +54464,12 @@
"description": "Whether the post is archived (soft-deleted)"
}
},
- "required": ["id", "status", "published", "archived"]
+ "required": [
+ "id",
+ "status",
+ "published",
+ "archived"
+ ]
},
"ArchiveContentDto": {
"type": "object",
@@ -48422,7 +54506,13 @@
"description": "Position in the list"
}
},
- "required": ["id", "label", "description", "required", "orderIndex"]
+ "required": [
+ "id",
+ "label",
+ "description",
+ "required",
+ "orderIndex"
+ ]
},
"CreateChecklistItemDto": {
"type": "object",
@@ -48441,7 +54531,9 @@
"default": false
}
},
- "required": ["label"]
+ "required": [
+ "label"
+ ]
},
"ReorderChecklistDto": {
"type": "object",
@@ -48454,7 +54546,9 @@
}
}
},
- "required": ["orderedIds"]
+ "required": [
+ "orderedIds"
+ ]
},
"UpdateChecklistItemDto": {
"type": "object",
@@ -48539,7 +54633,13 @@
"type": "number"
}
},
- "required": ["items", "page", "limit", "total", "totalPages"]
+ "required": [
+ "items",
+ "page",
+ "limit",
+ "total",
+ "totalPages"
+ ]
},
"AdminCrowdfundingProjectDto": {
"type": "object",
@@ -48979,7 +55079,9 @@
"default": false
}
},
- "required": ["delegatedReviewerId"]
+ "required": [
+ "delegatedReviewerId"
+ ]
},
"CrowdfundingActionResponseDto": {
"type": "object",
@@ -48992,7 +55094,10 @@
"description": "New v2 lifecycle status"
}
},
- "required": ["id", "status"]
+ "required": [
+ "id",
+ "status"
+ ]
},
"RejectCampaignDto": {
"type": "object",
@@ -49014,7 +55119,9 @@
"maxLength": 1000
}
},
- "required": ["reason"]
+ "required": [
+ "reason"
+ ]
},
"TotpEnrollResponseDto": {
"type": "object",
@@ -49028,7 +55135,10 @@
"description": "otpauth:// URI for QR enrollment"
}
},
- "required": ["secret", "otpauthUri"]
+ "required": [
+ "secret",
+ "otpauthUri"
+ ]
},
"TotpCodeDto": {
"type": "object",
@@ -49038,7 +55148,9 @@
"description": "Six-digit code from the authenticator app"
}
},
- "required": ["code"]
+ "required": [
+ "code"
+ ]
},
"OkResponseDto": {
"type": "object",
@@ -49048,7 +55160,9 @@
"default": true
}
},
- "required": ["ok"]
+ "required": [
+ "ok"
+ ]
},
"AdminAuditListItemDto": {
"type": "object",
@@ -49115,7 +55229,13 @@
"type": "number"
}
},
- "required": ["items", "page", "limit", "total", "totalPages"]
+ "required": [
+ "items",
+ "page",
+ "limit",
+ "total",
+ "totalPages"
+ ]
},
"FeatureFlagDto": {
"type": "object",
@@ -49136,7 +55256,12 @@
"description": "ISO timestamp the flag was last changed"
}
},
- "required": ["key", "description", "enabled", "updated"]
+ "required": [
+ "key",
+ "description",
+ "enabled",
+ "updated"
+ ]
},
"FeatureFlagsResponseDto": {
"type": "object",
@@ -49148,7 +55273,9 @@
}
}
},
- "required": ["items"]
+ "required": [
+ "items"
+ ]
},
"ToggleFeatureFlagDto": {
"type": "object",
@@ -49158,7 +55285,9 @@
"description": "Desired enabled state"
}
},
- "required": ["enabled"]
+ "required": [
+ "enabled"
+ ]
},
"StaffListItemDto": {
"type": "object",
@@ -49209,7 +55338,9 @@
}
}
},
- "required": ["items"]
+ "required": [
+ "items"
+ ]
},
"SetRoleDto": {
"type": "object",
@@ -49227,7 +55358,9 @@
"description": "The role to assign"
}
},
- "required": ["role"]
+ "required": [
+ "role"
+ ]
},
"GovernanceProposalDto": {
"type": "object",
@@ -49321,7 +55454,9 @@
}
}
},
- "required": ["items"]
+ "required": [
+ "items"
+ ]
},
"CreateProposalDto": {
"type": "object",
@@ -49345,31 +55480,248 @@
"additionalProperties": true
}
},
- "required": ["title", "contract", "action"]
+ "required": [
+ "title",
+ "contract",
+ "action"
+ ]
+ },
+ "DecideProposalDto": {
+ "type": "object",
+ "properties": {
+ "decision": {
+ "type": "string",
+ "enum": [
+ "approve",
+ "reject"
+ ]
+ },
+ "note": {
+ "type": "string",
+ "description": "Note recorded with the decision"
+ }
+ },
+ "required": [
+ "decision"
+ ]
+ },
+ "ExecuteProposalDto": {
+ "type": "object",
+ "properties": {
+ "txHash": {
+ "type": "string",
+ "description": "Hash of the offline-signed, executed transaction"
+ }
+ },
+ "required": [
+ "txHash"
+ ]
+ },
+ "SupportedTokenDto": {
+ "type": "object",
+ "properties": {
+ "id": {
+ "type": "string"
+ },
+ "address": {
+ "type": "string"
+ },
+ "symbol": {
+ "type": "string",
+ "nullable": true
+ },
+ "label": {
+ "type": "string",
+ "nullable": true
+ },
+ "logoUrl": {
+ "type": "string",
+ "nullable": true
+ },
+ "lastKnownOnChain": {
+ "type": "boolean",
+ "description": "Last observed on-chain whitelist state."
+ },
+ "createdAt": {
+ "type": "string"
+ }
+ },
+ "required": [
+ "id",
+ "address",
+ "symbol",
+ "label",
+ "logoUrl",
+ "lastKnownOnChain",
+ "createdAt"
+ ]
+ },
+ "SyncTokensResultDto": {
+ "type": "object",
+ "properties": {
+ "applied": {
+ "type": "number",
+ "description": "Number of token rows created or updated."
+ },
+ "total": {
+ "type": "number",
+ "description": "Tokens seen on-chain (whitelist size for state sync, events scanned for the events fallback)."
+ },
+ "source": {
+ "type": "string",
+ "enum": [
+ "state",
+ "events"
+ ],
+ "description": "Which mechanism ran: authoritative state enumeration, or the events fallback when the contract predates the enumerable index."
+ }
+ },
+ "required": [
+ "applied",
+ "total",
+ "source"
+ ]
+ },
+ "RegisterTokenDto": {
+ "type": "object",
+ "properties": {
+ "token": {
+ "type": "string",
+ "description": "Stellar Asset Contract (C...) address of the token to whitelist as an escrow denomination."
+ },
+ "symbol": {
+ "type": "string",
+ "description": "Display symbol, e.g. \"USDC\"."
+ },
+ "label": {
+ "type": "string",
+ "description": "Human label shown in the portal."
+ },
+ "logoUrl": {
+ "type": "string",
+ "description": "Hosted logo image URL, shown next to the token on consumer surfaces."
+ }
+ },
+ "required": [
+ "token"
+ ]
+ },
+ "PauseStateDto": {
+ "type": "object",
+ "properties": {
+ "paused": {
+ "type": "boolean",
+ "description": "Live on-chain pause flag for the events contract."
+ }
+ },
+ "required": [
+ "paused"
+ ]
+ },
+ "ContractOpXdrDto": {
+ "type": "object",
+ "properties": {
+ "opId": {
+ "type": "string",
+ "description": "AdminContractOp row id tracking this op."
+ },
+ "intent": {
+ "type": "string",
+ "enum": [
+ "REGISTER_TOKEN",
+ "DEREGISTER_TOKEN",
+ "PAUSE",
+ "UNPAUSE"
+ ]
+ },
+ "source": {
+ "type": "string",
+ "description": "On-chain contract admin G-address. This is the transaction source and the account that must sign at the Lab."
+ },
+ "unsignedXdr": {
+ "type": "string",
+ "description": "Unsigned transaction XDR for the admin to sign."
+ },
+ "labUrl": {
+ "type": "string",
+ "description": "Stellar Lab \"Sign Transaction\" deep link."
+ },
+ "network": {
+ "type": "string",
+ "enum": [
+ "public",
+ "testnet"
+ ]
+ },
+ "passphrase": {
+ "type": "string",
+ "description": "Network passphrase the signer must use."
+ }
+ },
+ "required": [
+ "opId",
+ "intent",
+ "source",
+ "unsignedXdr",
+ "labUrl",
+ "network",
+ "passphrase"
+ ]
+ },
+ "DeregisterTokenDto": {
+ "type": "object",
+ "properties": {
+ "token": {
+ "type": "string",
+ "description": "Stellar Asset Contract (C...) address to deregister."
+ }
+ },
+ "required": [
+ "token"
+ ]
},
- "DecideProposalDto": {
+ "SubmitSignedContractOpDto": {
"type": "object",
"properties": {
- "decision": {
- "type": "string",
- "enum": ["approve", "reject"]
- },
- "note": {
+ "signedXdr": {
"type": "string",
- "description": "Note recorded with the decision"
+ "description": "Base64 transaction XDR signed offline by the admin at the Stellar Lab. Must be the exact transaction returned by build-xdr (hash-checked)."
}
},
- "required": ["decision"]
+ "required": [
+ "signedXdr"
+ ]
},
- "ExecuteProposalDto": {
+ "ContractOpResultDto": {
"type": "object",
"properties": {
+ "opId": {
+ "type": "string"
+ },
+ "intent": {
+ "type": "string",
+ "enum": [
+ "REGISTER_TOKEN",
+ "DEREGISTER_TOKEN",
+ "PAUSE",
+ "UNPAUSE"
+ ]
+ },
+ "status": {
+ "type": "string",
+ "description": "AdminContractOp status after submission."
+ },
"txHash": {
"type": "string",
- "description": "Hash of the offline-signed, executed transaction"
+ "nullable": true
}
},
- "required": ["txHash"]
+ "required": [
+ "opId",
+ "intent",
+ "status",
+ "txHash"
+ ]
},
"AdminKycListItemDto": {
"type": "object",
@@ -49386,7 +55738,11 @@
},
"status": {
"type": "string",
- "enum": ["in_review", "approved", "declined"]
+ "enum": [
+ "in_review",
+ "approved",
+ "declined"
+ ]
},
"declineReason": {
"type": "string",
@@ -49435,7 +55791,13 @@
"type": "number"
}
},
- "required": ["items", "page", "limit", "total", "totalPages"]
+ "required": [
+ "items",
+ "page",
+ "limit",
+ "total",
+ "totalPages"
+ ]
},
"DiditConnectionDto": {
"type": "object",
@@ -49457,7 +55819,12 @@
"description": "API key + workflow present: live calls (sync, re-trigger) work"
}
},
- "required": ["apiKey", "workflowId", "webhookSecret", "connected"]
+ "required": [
+ "apiKey",
+ "workflowId",
+ "webhookSecret",
+ "connected"
+ ]
},
"KycSyncResponseDto": {
"type": "object",
@@ -49478,7 +55845,12 @@
"description": "False if no Boundless user could be linked to the session"
}
},
- "required": ["userId", "status", "changed", "userResolved"]
+ "required": [
+ "userId",
+ "status",
+ "changed",
+ "userResolved"
+ ]
},
"KycRetriggerResponseDto": {
"type": "object",
@@ -49516,7 +55888,10 @@
"properties": {
"decision": {
"type": "string",
- "enum": ["approved", "declined"],
+ "enum": [
+ "approved",
+ "declined"
+ ],
"description": "The decision to force onto the user record."
},
"reason": {
@@ -49526,7 +55901,10 @@
"maxLength": 500
}
},
- "required": ["decision", "reason"]
+ "required": [
+ "decision",
+ "reason"
+ ]
},
"KycOverrideResponseDto": {
"type": "object",
@@ -49536,11 +55914,17 @@
},
"status": {
"type": "string",
- "enum": ["approved", "declined"],
+ "enum": [
+ "approved",
+ "declined"
+ ],
"description": "The resulting normalized state"
}
},
- "required": ["userId", "status"]
+ "required": [
+ "userId",
+ "status"
+ ]
},
"AdminMilestoneListItemDto": {
"type": "object",
@@ -49550,7 +55934,10 @@
},
"type": {
"type": "string",
- "enum": ["crowdfunding", "grant"]
+ "enum": [
+ "crowdfunding",
+ "grant"
+ ]
},
"program": {
"type": "string",
@@ -49576,7 +55963,12 @@
"releaseStatus": {
"type": "string",
"nullable": true,
- "enum": ["NOT_RELEASED", "RELEASING", "RELEASED", "FAILED"],
+ "enum": [
+ "NOT_RELEASED",
+ "RELEASING",
+ "RELEASED",
+ "FAILED"
+ ],
"description": "Crowdfunding only: on-chain payout release state (derived from the escrow anchor status). Null for grant milestones."
}
},
@@ -49613,7 +56005,13 @@
"type": "number"
}
},
- "required": ["items", "page", "limit", "total", "totalPages"]
+ "required": [
+ "items",
+ "page",
+ "limit",
+ "total",
+ "totalPages"
+ ]
},
"AdminMilestoneDetailDto": {
"type": "object",
@@ -49735,7 +56133,28 @@
"description": "New milestone review status"
}
},
- "required": ["id", "status"]
+ "required": [
+ "id",
+ "status"
+ ]
+ },
+ "AdminV2RejectMilestoneDto": {
+ "type": "object",
+ "properties": {
+ "rejectionFeedback": {
+ "type": "string",
+ "description": "Feedback shown to the builder; what needs to change.",
+ "minLength": 3,
+ "maxLength": 1000
+ },
+ "resubmissionDeadline": {
+ "type": "string",
+ "description": "Optional ISO date by which the builder must resubmit."
+ }
+ },
+ "required": [
+ "rejectionFeedback"
+ ]
},
"MilestoneReleaseXdrDto": {
"type": "object",
@@ -49761,7 +56180,10 @@
},
"network": {
"type": "string",
- "enum": ["public", "testnet"]
+ "enum": [
+ "public",
+ "testnet"
+ ]
},
"passphrase": {
"type": "string",
@@ -49786,7 +56208,9 @@
"description": "Base64 transaction XDR signed offline by the admin at the Stellar Lab. Must be the exact transaction returned by build-xdr (hash-checked)."
}
},
- "required": ["signedXdr"]
+ "required": [
+ "signedXdr"
+ ]
},
"MilestoneReleaseResultDto": {
"type": "object",
@@ -49806,7 +56230,12 @@
"nullable": true
}
},
- "required": ["opId", "milestoneId", "status", "txHash"]
+ "required": [
+ "opId",
+ "milestoneId",
+ "status",
+ "txHash"
+ ]
},
"AdminWalletUserPreviewDto": {
"type": "object",
@@ -49823,7 +56252,11 @@
"description": "Profile photo URL, when set"
}
},
- "required": ["id", "name", "image"]
+ "required": [
+ "id",
+ "name",
+ "image"
+ ]
},
"AdminWalletRowDto": {
"type": "object",
@@ -49837,7 +56270,10 @@
},
"status": {
"type": "string",
- "enum": ["active", "inactive"],
+ "enum": [
+ "active",
+ "inactive"
+ ],
"description": "Activation state"
},
"users": {
@@ -49858,36 +56294,641 @@
},
"required": [
"id",
- "address",
- "status",
- "users",
- "userPreviews",
- "created"
+ "address",
+ "status",
+ "users",
+ "userPreviews",
+ "created"
+ ]
+ },
+ "PaginatedWalletsDto": {
+ "type": "object",
+ "properties": {
+ "items": {
+ "type": "array",
+ "items": {
+ "$ref": "#/components/schemas/AdminWalletRowDto"
+ }
+ },
+ "page": {
+ "type": "number"
+ },
+ "limit": {
+ "type": "number"
+ },
+ "total": {
+ "type": "number"
+ },
+ "totalPages": {
+ "type": "number"
+ }
+ },
+ "required": [
+ "items",
+ "page",
+ "limit",
+ "total",
+ "totalPages"
+ ]
+ },
+ "HackathonBriefTemplateDto": {
+ "type": "object",
+ "properties": {
+ "id": {
+ "type": "string"
+ },
+ "name": {
+ "type": "string"
+ },
+ "description": {
+ "type": "string"
+ },
+ "category": {
+ "type": "string"
+ },
+ "brief": {
+ "type": "string"
+ },
+ "isActive": {
+ "type": "boolean"
+ },
+ "sortOrder": {
+ "type": "number"
+ },
+ "createdAt": {
+ "type": "string"
+ },
+ "updatedAt": {
+ "type": "string"
+ }
+ },
+ "required": [
+ "id",
+ "name",
+ "description",
+ "category",
+ "brief",
+ "isActive",
+ "sortOrder",
+ "createdAt",
+ "updatedAt"
+ ]
+ },
+ "HackathonBriefTemplatesResponseDto": {
+ "type": "object",
+ "properties": {
+ "items": {
+ "type": "array",
+ "items": {
+ "$ref": "#/components/schemas/HackathonBriefTemplateDto"
+ }
+ }
+ },
+ "required": [
+ "items"
+ ]
+ },
+ "CreateHackathonBriefTemplateDto": {
+ "type": "object",
+ "properties": {
+ "name": {
+ "type": "string",
+ "minLength": 2,
+ "maxLength": 80
+ },
+ "description": {
+ "type": "string",
+ "maxLength": 200
+ },
+ "category": {
+ "type": "string",
+ "maxLength": 80
+ },
+ "brief": {
+ "type": "string",
+ "minLength": 20,
+ "maxLength": 2000
+ },
+ "isActive": {
+ "type": "boolean",
+ "default": true
+ },
+ "sortOrder": {
+ "type": "number",
+ "default": 0
+ }
+ },
+ "required": [
+ "name",
+ "description",
+ "category",
+ "brief"
+ ]
+ },
+ "UpdateHackathonBriefTemplateDto": {
+ "type": "object",
+ "properties": {
+ "name": {
+ "type": "string",
+ "minLength": 2,
+ "maxLength": 80
+ },
+ "description": {
+ "type": "string",
+ "maxLength": 200
+ },
+ "category": {
+ "type": "string",
+ "maxLength": 80
+ },
+ "brief": {
+ "type": "string",
+ "minLength": 20,
+ "maxLength": 2000
+ },
+ "isActive": {
+ "type": "boolean"
+ },
+ "sortOrder": {
+ "type": "number"
+ }
+ }
+ },
+ "MarketingTemplateDto": {
+ "type": "object",
+ "properties": {
+ "id": {
+ "type": "string"
+ },
+ "name": {
+ "type": "string"
+ },
+ "subject": {
+ "type": "string"
+ },
+ "body": {
+ "type": "string"
+ },
+ "variables": {
+ "type": "array",
+ "items": {
+ "type": "string"
+ }
+ },
+ "isActive": {
+ "type": "boolean"
+ },
+ "sortOrder": {
+ "type": "number"
+ },
+ "createdAt": {
+ "type": "string"
+ },
+ "updatedAt": {
+ "type": "string"
+ }
+ },
+ "required": [
+ "id",
+ "name",
+ "subject",
+ "body",
+ "variables",
+ "isActive",
+ "sortOrder",
+ "createdAt",
+ "updatedAt"
+ ]
+ },
+ "MarketingTemplatesResponseDto": {
+ "type": "object",
+ "properties": {
+ "items": {
+ "type": "array",
+ "items": {
+ "$ref": "#/components/schemas/MarketingTemplateDto"
+ }
+ }
+ },
+ "required": [
+ "items"
+ ]
+ },
+ "CreateMarketingTemplateDto": {
+ "type": "object",
+ "properties": {
+ "name": {
+ "type": "string"
+ },
+ "subject": {
+ "type": "string"
+ },
+ "body": {
+ "type": "string"
+ },
+ "variables": {
+ "type": "array",
+ "items": {
+ "type": "string"
+ }
+ },
+ "isActive": {
+ "type": "boolean"
+ },
+ "sortOrder": {
+ "type": "number"
+ }
+ },
+ "required": [
+ "name",
+ "subject",
+ "body"
+ ]
+ },
+ "UpdateMarketingTemplateDto": {
+ "type": "object",
+ "properties": {
+ "name": {
+ "type": "string"
+ },
+ "subject": {
+ "type": "string"
+ },
+ "body": {
+ "type": "string"
+ },
+ "variables": {
+ "type": "array",
+ "items": {
+ "type": "string"
+ }
+ },
+ "isActive": {
+ "type": "boolean"
+ },
+ "sortOrder": {
+ "type": "number"
+ }
+ }
+ },
+ "AudienceFilterDto": {
+ "type": "object",
+ "properties": {
+ "type": {
+ "type": "string",
+ "enum": [
+ "all",
+ "skills_match",
+ "participated_in",
+ "location",
+ "never_applied"
+ ]
+ },
+ "skills": {
+ "type": "array",
+ "items": {
+ "type": "string"
+ }
+ },
+ "programType": {
+ "type": "string",
+ "enum": [
+ "hackathon",
+ "bounty",
+ "grant"
+ ]
+ },
+ "location": {
+ "type": "string"
+ }
+ },
+ "required": [
+ "type"
+ ]
+ },
+ "MarketingCampaignDto": {
+ "type": "object",
+ "properties": {
+ "id": {
+ "type": "string"
+ },
+ "name": {
+ "type": "string"
+ },
+ "subject": {
+ "type": "string"
+ },
+ "body": {
+ "type": "string"
+ },
+ "audience": {
+ "$ref": "#/components/schemas/AudienceFilterDto"
+ },
+ "templateId": {
+ "type": "object"
+ },
+ "status": {
+ "type": "string"
+ },
+ "scheduledAt": {
+ "type": "object"
+ },
+ "sentAt": {
+ "type": "object"
+ },
+ "sentCount": {
+ "type": "number"
+ },
+ "variables": {
+ "type": "object",
+ "additionalProperties": {
+ "type": "string"
+ },
+ "description": "Custom substitution vars for {{key}} placeholders"
+ },
+ "createdById": {
+ "type": "string"
+ },
+ "createdByEmail": {
+ "type": "string"
+ },
+ "createdAt": {
+ "type": "string"
+ },
+ "updatedAt": {
+ "type": "string"
+ }
+ },
+ "required": [
+ "id",
+ "name",
+ "subject",
+ "body",
+ "audience",
+ "status",
+ "sentCount",
+ "variables",
+ "createdById",
+ "createdByEmail",
+ "createdAt",
+ "updatedAt"
+ ]
+ },
+ "MarketingCampaignsResponseDto": {
+ "type": "object",
+ "properties": {
+ "items": {
+ "type": "array",
+ "items": {
+ "$ref": "#/components/schemas/MarketingCampaignDto"
+ }
+ }
+ },
+ "required": [
+ "items"
+ ]
+ },
+ "CreateMarketingCampaignDto": {
+ "type": "object",
+ "properties": {
+ "name": {
+ "type": "string"
+ },
+ "subject": {
+ "type": "string"
+ },
+ "body": {
+ "type": "string"
+ },
+ "audience": {
+ "$ref": "#/components/schemas/AudienceFilterDto"
+ },
+ "templateId": {
+ "type": "string"
+ },
+ "scheduledAt": {
+ "type": "string"
+ },
+ "variables": {
+ "type": "object",
+ "description": "Key-value pairs substituted into {{key}} placeholders in subject/body",
+ "additionalProperties": {
+ "type": "string"
+ }
+ }
+ },
+ "required": [
+ "name",
+ "subject",
+ "body",
+ "audience"
+ ]
+ },
+ "UpdateMarketingCampaignDto": {
+ "type": "object",
+ "properties": {
+ "name": {
+ "type": "string"
+ },
+ "subject": {
+ "type": "string"
+ },
+ "body": {
+ "type": "string"
+ },
+ "audience": {
+ "$ref": "#/components/schemas/AudienceFilterDto"
+ },
+ "templateId": {
+ "type": "string"
+ },
+ "scheduledAt": {
+ "type": "string"
+ },
+ "variables": {
+ "type": "object",
+ "additionalProperties": {
+ "type": "string"
+ }
+ }
+ }
+ },
+ "PreviewCampaignAudienceDto": {
+ "type": "object",
+ "properties": {
+ "audience": {
+ "$ref": "#/components/schemas/AudienceFilterDto"
+ }
+ },
+ "required": [
+ "audience"
+ ]
+ },
+ "CampaignAudienceSizeDto": {
+ "type": "object",
+ "properties": {
+ "count": {
+ "type": "number"
+ }
+ },
+ "required": [
+ "count"
+ ]
+ },
+ "AutomationConditionsDto": {
+ "type": "object",
+ "properties": {
+ "cooldownHours": {
+ "type": "number",
+ "description": "Min hours before re-sending to same user"
+ }
+ }
+ },
+ "MarketingAutomationDto": {
+ "type": "object",
+ "properties": {
+ "id": {
+ "type": "string"
+ },
+ "name": {
+ "type": "string"
+ },
+ "trigger": {
+ "type": "string"
+ },
+ "audience": {
+ "$ref": "#/components/schemas/AudienceFilterDto"
+ },
+ "templateId": {
+ "type": "string"
+ },
+ "templateName": {
+ "type": "string"
+ },
+ "conditions": {
+ "$ref": "#/components/schemas/AutomationConditionsDto"
+ },
+ "isActive": {
+ "type": "boolean"
+ },
+ "lastFiredAt": {
+ "type": "object"
+ },
+ "fireCount": {
+ "type": "number"
+ },
+ "createdById": {
+ "type": "string"
+ },
+ "createdByEmail": {
+ "type": "string"
+ },
+ "createdAt": {
+ "type": "string"
+ },
+ "updatedAt": {
+ "type": "string"
+ }
+ },
+ "required": [
+ "id",
+ "name",
+ "trigger",
+ "audience",
+ "templateId",
+ "templateName",
+ "conditions",
+ "isActive",
+ "fireCount",
+ "createdById",
+ "createdByEmail",
+ "createdAt",
+ "updatedAt"
]
},
- "PaginatedWalletsDto": {
+ "MarketingAutomationsResponseDto": {
"type": "object",
"properties": {
"items": {
"type": "array",
"items": {
- "$ref": "#/components/schemas/AdminWalletRowDto"
+ "$ref": "#/components/schemas/MarketingAutomationDto"
}
+ }
+ },
+ "required": [
+ "items"
+ ]
+ },
+ "CreateMarketingAutomationDto": {
+ "type": "object",
+ "properties": {
+ "name": {
+ "type": "string"
},
- "page": {
- "type": "number"
+ "trigger": {
+ "type": "string",
+ "enum": [
+ "new_hackathon_published",
+ "new_bounty_published",
+ "new_grant_published",
+ "new_crowdfunding_launched",
+ "hackathon_deadline_3d",
+ "hackathon_deadline_7d",
+ "bounty_deadline_3d",
+ "grant_deadline_3d",
+ "user_signup",
+ "user_inactive"
+ ]
},
- "limit": {
- "type": "number"
+ "audience": {
+ "$ref": "#/components/schemas/AudienceFilterDto"
},
- "total": {
- "type": "number"
+ "templateId": {
+ "type": "string"
},
- "totalPages": {
- "type": "number"
+ "conditions": {
+ "$ref": "#/components/schemas/AutomationConditionsDto"
}
},
- "required": ["items", "page", "limit", "total", "totalPages"]
+ "required": [
+ "name",
+ "trigger",
+ "audience",
+ "templateId"
+ ]
+ },
+ "UpdateMarketingAutomationDto": {
+ "type": "object",
+ "properties": {
+ "name": {
+ "type": "string"
+ },
+ "trigger": {
+ "type": "string",
+ "enum": [
+ "new_hackathon_published",
+ "new_bounty_published",
+ "new_grant_published",
+ "new_crowdfunding_launched",
+ "hackathon_deadline_3d",
+ "hackathon_deadline_7d",
+ "bounty_deadline_3d",
+ "grant_deadline_3d",
+ "user_signup",
+ "user_inactive"
+ ]
+ },
+ "audience": {
+ "$ref": "#/components/schemas/AudienceFilterDto"
+ },
+ "templateId": {
+ "type": "string"
+ },
+ "conditions": {
+ "$ref": "#/components/schemas/AutomationConditionsDto"
+ }
+ }
},
"Function": {
"type": "object",
@@ -49908,7 +56949,13 @@
},
"category": {
"type": "string",
- "enum": ["DESIGN", "DEVELOPMENT", "CONTENT", "GROWTH", "COMMUNITY"],
+ "enum": [
+ "DESIGN",
+ "DEVELOPMENT",
+ "CONTENT",
+ "GROWTH",
+ "COMMUNITY"
+ ],
"description": "Discipline the bounty falls under. DEVELOPMENT requires githubIssueUrl."
},
"country": {
@@ -49931,21 +56978,34 @@
"nullable": true
}
},
- "required": ["title", "description"]
+ "required": [
+ "title",
+ "description"
+ ]
},
"BountyModeSectionDto": {
"type": "object",
"properties": {
"claimType": {
"type": "string",
- "enum": ["SINGLE_CLAIM", "COMPETITION"]
+ "enum": [
+ "SINGLE_CLAIM",
+ "COMPETITION"
+ ]
},
"entryType": {
"type": "string",
- "enum": ["OPEN", "APPLICATION_LIGHT", "APPLICATION_FULL"]
+ "enum": [
+ "OPEN",
+ "APPLICATION_LIGHT",
+ "APPLICATION_FULL"
+ ]
}
},
- "required": ["claimType", "entryType"]
+ "required": [
+ "claimType",
+ "entryType"
+ ]
},
"BountySubmissionSectionDto": {
"type": "object",
@@ -49976,7 +57036,10 @@
},
"submissionVisibility": {
"type": "string",
- "enum": ["ORGANIZER_ONLY", "HIDDEN_UNTIL_DEADLINE"]
+ "enum": [
+ "ORGANIZER_ONLY",
+ "HIDDEN_UNTIL_DEADLINE"
+ ]
},
"requireDocumentation": {
"type": "boolean",
@@ -50002,7 +57065,9 @@
"description": "Credits required to apply (anti-spam). Supplied to the contract at publish via PublishBountyEscrowDto; not a Bounty column."
}
},
- "required": ["submissionDeadline"]
+ "required": [
+ "submissionDeadline"
+ ]
},
"BountyPrizeTierInputDto": {
"type": "object",
@@ -50023,7 +57088,10 @@
"maximum": 100
}
},
- "required": ["position", "amount"]
+ "required": [
+ "position",
+ "amount"
+ ]
},
"BountyRewardSectionDto": {
"type": "object",
@@ -50040,7 +57108,10 @@
}
}
},
- "required": ["rewardCurrency", "prizeTiers"]
+ "required": [
+ "rewardCurrency",
+ "prizeTiers"
+ ]
},
"BountyResourceItemDto": {
"type": "object",
@@ -50068,7 +57139,9 @@
}
}
},
- "required": ["id"]
+ "required": [
+ "id"
+ ]
},
"BountyResourcesSectionDto": {
"type": "object",
@@ -50080,7 +57153,9 @@
}
}
},
- "required": ["resources"]
+ "required": [
+ "resources"
+ ]
},
"BountyDraftDataDto": {
"type": "object",
@@ -50117,7 +57192,81 @@
"nullable": true
}
},
- "required": ["position", "amount"]
+ "required": [
+ "position",
+ "amount"
+ ]
+ },
+ "BountyDraftAssumptionDto": {
+ "type": "object",
+ "properties": {
+ "section": {
+ "type": "string",
+ "description": "Wizard section the assumption belongs to."
+ },
+ "field": {
+ "type": "string",
+ "description": "Field within the section."
+ },
+ "note": {
+ "type": "string",
+ "description": "One-line plain reason for the choice."
+ }
+ },
+ "required": [
+ "section",
+ "field",
+ "note"
+ ]
+ },
+ "BountyDraftGeneratedModeDto": {
+ "type": "object",
+ "properties": {
+ "entryType": {
+ "type": "string"
+ },
+ "claimType": {
+ "type": "string"
+ }
+ },
+ "required": [
+ "entryType",
+ "claimType"
+ ]
+ },
+ "BountyDraftAiGenerationDto": {
+ "type": "object",
+ "properties": {
+ "generationId": {
+ "type": "string",
+ "description": "AI generationId that produced this draft."
+ },
+ "assumptions": {
+ "description": "Non-obvious choices the AI made, for review.",
+ "type": "array",
+ "items": {
+ "$ref": "#/components/schemas/BountyDraftAssumptionDto"
+ }
+ },
+ "brief": {
+ "type": "string",
+ "nullable": true,
+ "description": "The brief that produced this draft (shown beside the draft)."
+ },
+ "generatedMode": {
+ "nullable": true,
+ "description": "The mode the AI generated for (to detect a later mode change).",
+ "allOf": [
+ {
+ "$ref": "#/components/schemas/BountyDraftGeneratedModeDto"
+ }
+ ]
+ }
+ },
+ "required": [
+ "generationId",
+ "assumptions"
+ ]
},
"BountyDraftResponseDto": {
"type": "object",
@@ -50167,6 +57316,14 @@
},
"description": "Per-section validation messages, keyed by step"
},
+ "aiGeneration": {
+ "description": "Present when the draft was generated with Organizer Assist; enables per-section AI regenerate in the wizard.",
+ "allOf": [
+ {
+ "$ref": "#/components/schemas/BountyDraftAiGenerationDto"
+ }
+ ]
+ },
"createdAt": {
"type": "string",
"format": "date-time"
@@ -50213,6 +57370,203 @@
}
}
},
+ "ClarifyBountyBriefDto": {
+ "type": "object",
+ "properties": {
+ "brief": {
+ "type": "string",
+ "description": "Free-text brief to triage for clarifying questions.",
+ "minLength": 10,
+ "maxLength": 2000
+ }
+ },
+ "required": [
+ "brief"
+ ]
+ },
+ "ClarifyQuestionOptionDto": {
+ "type": "object",
+ "properties": {
+ "value": {
+ "type": "string"
+ },
+ "label": {
+ "type": "string"
+ }
+ },
+ "required": [
+ "value",
+ "label"
+ ]
+ },
+ "ClarifyQuestionDto": {
+ "type": "object",
+ "properties": {
+ "id": {
+ "type": "string",
+ "description": "Axis key, e.g. \"winners\" | \"entry\" | \"deadline\"."
+ },
+ "question": {
+ "type": "string"
+ },
+ "options": {
+ "type": "array",
+ "items": {
+ "$ref": "#/components/schemas/ClarifyQuestionOptionDto"
+ }
+ }
+ },
+ "required": [
+ "id",
+ "question",
+ "options"
+ ]
+ },
+ "ClarifyBountyDraftResponseDto": {
+ "type": "object",
+ "properties": {
+ "ready": {
+ "type": "boolean",
+ "description": "True when the brief is specific enough to draft immediately."
+ },
+ "questions": {
+ "type": "array",
+ "items": {
+ "$ref": "#/components/schemas/ClarifyQuestionDto"
+ }
+ }
+ },
+ "required": [
+ "ready",
+ "questions"
+ ]
+ },
+ "GenerateBountyDraftFromBriefDto": {
+ "type": "object",
+ "properties": {
+ "brief": {
+ "type": "string",
+ "description": "Free-text brief describing the bounty to generate.",
+ "minLength": 10,
+ "maxLength": 2000,
+ "example": "A one-week bounty to design three onboarding illustrations for a Stellar wallet, paid to the best entry."
+ },
+ "budgetCapUsdc": {
+ "type": "string",
+ "description": "Total reward budget in USDC, as a decimal string.",
+ "example": "500"
+ },
+ "earliestStart": {
+ "type": "string",
+ "description": "Earliest the bounty may start (YYYY-MM-DD).",
+ "example": "2026-07-01"
+ },
+ "examples": {
+ "description": "Up to 3 example briefs to steer style.",
+ "maxItems": 3,
+ "type": "array",
+ "items": {
+ "type": "string"
+ }
+ }
+ },
+ "required": [
+ "brief",
+ "budgetCapUsdc",
+ "earliestStart"
+ ]
+ },
+ "BountyAiGenerationMetaDto": {
+ "type": "object",
+ "properties": {
+ "generationId": {
+ "type": "string"
+ },
+ "model": {
+ "type": "string"
+ },
+ "promptVersion": {
+ "type": "string"
+ },
+ "costUsd": {
+ "type": "string",
+ "description": "Cost in USD as a decimal string (never a float)."
+ }
+ },
+ "required": [
+ "generationId",
+ "model",
+ "promptVersion",
+ "costUsd"
+ ]
+ },
+ "GenerateBountyDraftFromBriefResponseDto": {
+ "type": "object",
+ "properties": {
+ "draftId": {
+ "type": "string",
+ "description": "Id of the created draft."
+ },
+ "draft": {
+ "$ref": "#/components/schemas/BountyDraftResponseDto"
+ },
+ "generation": {
+ "$ref": "#/components/schemas/BountyAiGenerationMetaDto"
+ }
+ },
+ "required": [
+ "draftId",
+ "draft",
+ "generation"
+ ]
+ },
+ "RegenerateBountyDraftSectionDto": {
+ "type": "object",
+ "properties": {
+ "section": {
+ "type": "string",
+ "enum": [
+ "description",
+ "submission",
+ "reward"
+ ]
+ },
+ "instructions": {
+ "type": "string",
+ "description": "Optional steering instructions for the regeneration.",
+ "maxLength": 1000
+ }
+ },
+ "required": [
+ "section"
+ ]
+ },
+ "RegenerateBountyDraftSectionResponseDto": {
+ "type": "object",
+ "properties": {
+ "section": {
+ "type": "string",
+ "enum": [
+ "description",
+ "submission",
+ "reward"
+ ]
+ },
+ "data": {
+ "type": "object",
+ "additionalProperties": true,
+ "description": "Regenerated values in the wizard section shape."
+ },
+ "generation": {
+ "$ref": "#/components/schemas/BountyAiGenerationMetaDto"
+ }
+ },
+ "required": [
+ "section",
+ "data",
+ "generation"
+ ]
+ },
"BountyWinnerDistributionEntryDto": {
"type": "object",
"properties": {
@@ -50227,7 +57581,10 @@
"example": 100
}
},
- "required": ["position", "percent"]
+ "required": [
+ "position",
+ "percent"
+ ]
},
"PublishBountyEscrowDto": {
"type": "object",
@@ -50253,14 +57610,6 @@
"example": 1804383600,
"nullable": true
},
- "applicationCreditCost": {
- "type": "number",
- "description": "Credits required to apply. Defaults to 1; raise on high-value bounties to deter spam. Max 100 (enforced by the contract).",
- "example": 1,
- "default": 1,
- "minimum": 0,
- "maximum": 100
- },
"winnerDistribution": {
"description": "Override for the winner distribution. Defaults to 100% to position 1.",
"type": "array",
@@ -50276,7 +57625,10 @@
"fundingMode": {
"type": "string",
"description": "Signing path. EXTERNAL (default) returns unsigned XDR for the wallet or multisig coordinator to sign. MANAGED has the backend sign and submit using the caller's platform-held wallet; the response is PENDING_CONFIRM with a txHash.",
- "enum": ["EXTERNAL", "MANAGED"],
+ "enum": [
+ "EXTERNAL",
+ "MANAGED"
+ ],
"default": "EXTERNAL",
"example": "MANAGED"
},
@@ -50370,11 +57722,16 @@
"fundingMode": {
"type": "string",
"description": "Signing path. EXTERNAL (default) returns unsigned XDR; MANAGED signs server-side with the caller's platform-held wallet and submits.",
- "enum": ["EXTERNAL", "MANAGED"],
+ "enum": [
+ "EXTERNAL",
+ "MANAGED"
+ ],
"default": "EXTERNAL"
}
},
- "required": ["ownerAddress"]
+ "required": [
+ "ownerAddress"
+ ]
},
"BountyWinnerSelectionDto": {
"type": "object",
@@ -50390,13 +57747,6 @@
"example": 1,
"minimum": 1
},
- "creditEarn": {
- "type": "number",
- "description": "Override the platform default credit_earn for this position. Defaults to 20/10/5 for positions 1/2/3 and 3 for the rest. Capped at 100 by the contract.",
- "example": 20,
- "minimum": 0,
- "maximum": 100
- },
"reputationBump": {
"type": "number",
"description": "Override the platform default reputation_bump for this position. Defaults to 50/25/10 for positions 1/2/3 and 5 for the rest.",
@@ -50404,7 +57754,10 @@
"minimum": 0
}
},
- "required": ["applicantAddress", "position"]
+ "required": [
+ "applicantAddress",
+ "position"
+ ]
},
"SelectBountyWinnersDto": {
"type": "object",
@@ -50424,11 +57777,17 @@
"fundingMode": {
"type": "string",
"description": "Signing path. EXTERNAL (default) returns unsigned XDR; MANAGED signs server-side with the caller's platform-held wallet and submits.",
- "enum": ["EXTERNAL", "MANAGED"],
+ "enum": [
+ "EXTERNAL",
+ "MANAGED"
+ ],
"default": "EXTERNAL"
}
},
- "required": ["ownerAddress", "selections"]
+ "required": [
+ "ownerAddress",
+ "selections"
+ ]
},
"BountySubmitSignedXdrDto": {
"type": "object",
@@ -50438,7 +57797,9 @@
"description": "Fully-signed XDR returned by the wallet or coordinator."
}
},
- "required": ["signedXdr"]
+ "required": [
+ "signedXdr"
+ ]
},
"ApplyBountyDto": {
"type": "object",
@@ -50451,11 +57812,16 @@
"fundingMode": {
"type": "string",
"description": "EXTERNAL (default) returns unsigned XDR for the caller to sign. MANAGED signs server-side using the caller's platform-held wallet and submits immediately. Identical semantics to the publish flow.",
- "enum": ["EXTERNAL", "MANAGED"],
+ "enum": [
+ "EXTERNAL",
+ "MANAGED"
+ ],
"default": "EXTERNAL"
}
},
- "required": ["applicantAddress"]
+ "required": [
+ "applicantAddress"
+ ]
},
"WithdrawApplicationDto": {
"type": "object",
@@ -50468,11 +57834,16 @@
"fundingMode": {
"type": "string",
"description": "EXTERNAL (default) returns unsigned XDR for the caller to sign. MANAGED signs server-side using the caller's platform-held wallet and submits immediately. Identical semantics to the publish flow.",
- "enum": ["EXTERNAL", "MANAGED"],
+ "enum": [
+ "EXTERNAL",
+ "MANAGED"
+ ],
"default": "EXTERNAL"
}
},
- "required": ["applicantAddress"]
+ "required": [
+ "applicantAddress"
+ ]
},
"SubmitBountyDto": {
"type": "object",
@@ -50485,7 +57856,10 @@
"fundingMode": {
"type": "string",
"description": "EXTERNAL (default) returns unsigned XDR for the caller to sign. MANAGED signs server-side using the caller's platform-held wallet and submits immediately. Identical semantics to the publish flow.",
- "enum": ["EXTERNAL", "MANAGED"],
+ "enum": [
+ "EXTERNAL",
+ "MANAGED"
+ ],
"default": "EXTERNAL"
},
"contentUri": {
@@ -50518,7 +57892,10 @@
}
}
},
- "required": ["applicantAddress", "contentUri"]
+ "required": [
+ "applicantAddress",
+ "contentUri"
+ ]
},
"WithdrawSubmissionDto": {
"type": "object",
@@ -50531,11 +57908,16 @@
"fundingMode": {
"type": "string",
"description": "EXTERNAL (default) returns unsigned XDR for the caller to sign. MANAGED signs server-side using the caller's platform-held wallet and submits immediately. Identical semantics to the publish flow.",
- "enum": ["EXTERNAL", "MANAGED"],
+ "enum": [
+ "EXTERNAL",
+ "MANAGED"
+ ],
"default": "EXTERNAL"
}
},
- "required": ["applicantAddress"]
+ "required": [
+ "applicantAddress"
+ ]
},
"ContributeBountyDto": {
"type": "object",
@@ -50548,7 +57930,10 @@
"fundingMode": {
"type": "string",
"description": "EXTERNAL (default) returns unsigned XDR for the caller to sign. MANAGED signs server-side using the caller's platform-held wallet and submits immediately. Identical semantics to the publish flow.",
- "enum": ["EXTERNAL", "MANAGED"],
+ "enum": [
+ "EXTERNAL",
+ "MANAGED"
+ ],
"default": "EXTERNAL"
},
"amount": {
@@ -50557,7 +57942,10 @@
"example": "30"
}
},
- "required": ["applicantAddress", "amount"]
+ "required": [
+ "applicantAddress",
+ "amount"
+ ]
},
"CreateBountyApplicationDto": {
"type": "object",
@@ -50595,9 +57983,196 @@
"description": "Optional video intro URL (APPLICATION_FULL)."
}
},
- "required": ["applicantAddress"]
+ "required": [
+ "applicantAddress"
+ ]
+ },
+ "BountyApplicationResponseDto": {
+ "type": "object",
+ "properties": {
+ "id": {
+ "type": "string"
+ },
+ "bountyId": {
+ "type": "string"
+ },
+ "applicantAddress": {
+ "type": "string",
+ "description": "G-address that receives payout if selected."
+ },
+ "status": {
+ "type": "string",
+ "description": "Escrow lifecycle: pending_confirm | active | withdrawn | failed."
+ },
+ "applicationStatus": {
+ "type": "string",
+ "enum": [
+ "SUBMITTED",
+ "SHORTLISTED",
+ "SELECTED",
+ "DECLINED",
+ "WITHDRAWN"
+ ],
+ "nullable": true,
+ "description": "Application lifecycle (SUBMITTED/SHORTLISTED/SELECTED/DECLINED/WITHDRAWN). Null for legacy OPEN + SINGLE_CLAIM rows."
+ },
+ "proposalShort": {
+ "type": "string",
+ "nullable": true
+ },
+ "proposalFull": {
+ "type": "string",
+ "nullable": true
+ },
+ "portfolioLinks": {
+ "type": "array",
+ "items": {
+ "type": "string"
+ }
+ },
+ "estimatedDays": {
+ "type": "number",
+ "nullable": true
+ },
+ "qualifications": {
+ "type": "string",
+ "nullable": true
+ },
+ "videoIntroUrl": {
+ "type": "string",
+ "nullable": true
+ },
+ "declineReason": {
+ "type": "string",
+ "nullable": true
+ },
+ "shortlistedAt": {
+ "type": "string",
+ "format": "date-time",
+ "nullable": true
+ },
+ "selectedAt": {
+ "type": "string",
+ "format": "date-time",
+ "nullable": true
+ },
+ "declinedAt": {
+ "type": "string",
+ "format": "date-time",
+ "nullable": true
+ },
+ "withdrawnAt": {
+ "type": "string",
+ "format": "date-time",
+ "nullable": true
+ },
+ "createdAt": {
+ "type": "string",
+ "format": "date-time"
+ },
+ "updatedAt": {
+ "type": "string",
+ "format": "date-time"
+ }
+ },
+ "required": [
+ "id",
+ "bountyId",
+ "applicantAddress",
+ "status",
+ "portfolioLinks",
+ "createdAt",
+ "updatedAt"
+ ]
+ },
+ "EditBountyApplicationDto": {
+ "type": "object",
+ "properties": {
+ "proposalShort": {
+ "type": "string",
+ "description": "Light proposal text."
+ },
+ "proposalFull": {
+ "type": "string",
+ "description": "Full proposal text."
+ },
+ "portfolioLinks": {
+ "type": "array",
+ "items": {
+ "type": "string"
+ }
+ },
+ "estimatedDays": {
+ "type": "number"
+ },
+ "qualifications": {
+ "type": "string"
+ },
+ "videoIntroUrl": {
+ "type": "string"
+ }
+ }
+ },
+ "SelectForSingleClaimDto": {
+ "type": "object",
+ "properties": {
+ "applicationId": {
+ "type": "string",
+ "description": "Application id to select as the single winner."
+ }
+ },
+ "required": [
+ "applicationId"
+ ]
+ },
+ "CreateShortlistDto": {
+ "type": "object",
+ "properties": {
+ "applicationIds": {
+ "description": "Application ids to include in the shortlist.",
+ "type": "array",
+ "items": {
+ "type": "string"
+ }
+ }
+ },
+ "required": [
+ "applicationIds"
+ ]
+ },
+ "DeclineApplicationDto": {
+ "type": "object",
+ "properties": {
+ "reason": {
+ "type": "string",
+ "description": "Reason for decline (surfaced to builder)."
+ }
+ }
+ },
+ "OrganizerSubmissionUserDto": {
+ "type": "object",
+ "properties": {
+ "id": {
+ "type": "string"
+ },
+ "name": {
+ "type": "string"
+ },
+ "username": {
+ "type": "string",
+ "nullable": true
+ },
+ "avatarUrl": {
+ "type": "string",
+ "nullable": true
+ }
+ },
+ "required": [
+ "id",
+ "name"
+ ]
},
- "BountyApplicationResponseDto": {
+ "OrganizerBountySubmissionDto": {
"type": "object",
"properties": {
"id": {
@@ -50606,74 +58181,56 @@
"bountyId": {
"type": "string"
},
+ "submittedBy": {
+ "$ref": "#/components/schemas/OrganizerSubmissionUserDto"
+ },
"applicantAddress": {
"type": "string",
- "description": "G-address that receives payout if selected."
+ "nullable": true,
+ "description": "G-address that receives payout if this submission wins."
},
- "status": {
+ "contentUri": {
"type": "string",
- "description": "Escrow lifecycle: pending_confirm | active | withdrawn | failed."
+ "nullable": true,
+ "description": "Primary submission link (anchored on-chain)."
},
- "applicationStatus": {
+ "documentationUrl": {
"type": "string",
- "enum": [
- "SUBMITTED",
- "SHORTLISTED",
- "SELECTED",
- "DECLINED",
- "WITHDRAWN"
- ],
- "nullable": true,
- "description": "Application lifecycle (SUBMITTED/SHORTLISTED/SELECTED/DECLINED/WITHDRAWN). Null for legacy OPEN + SINGLE_CLAIM rows."
+ "nullable": true
},
- "proposalShort": {
+ "tweetUrl": {
"type": "string",
"nullable": true
},
- "proposalFull": {
+ "demoVideoUrl": {
"type": "string",
"nullable": true
},
- "portfolioLinks": {
+ "mediaUrls": {
"type": "array",
"items": {
"type": "string"
}
},
- "estimatedDays": {
- "type": "number",
- "nullable": true
- },
- "qualifications": {
- "type": "string",
- "nullable": true
- },
- "videoIntroUrl": {
- "type": "string",
- "nullable": true
- },
- "declineReason": {
+ "status": {
"type": "string",
- "nullable": true
+ "description": "Review status: pending | accepted | rejected | disputed."
},
- "shortlistedAt": {
+ "escrowAnchorStatus": {
"type": "string",
- "format": "date-time",
- "nullable": true
+ "nullable": true,
+ "description": "Escrow anchor: pending_confirm | active | withdrawn | failed."
},
- "selectedAt": {
- "type": "string",
- "format": "date-time",
+ "tierPosition": {
+ "type": "number",
"nullable": true
},
- "declinedAt": {
+ "tierAmount": {
"type": "string",
- "format": "date-time",
"nullable": true
},
- "withdrawnAt": {
+ "reviewComments": {
"type": "string",
- "format": "date-time",
"nullable": true
},
"createdAt": {
@@ -50688,72 +58245,288 @@
"required": [
"id",
"bountyId",
- "applicantAddress",
+ "submittedBy",
+ "mediaUrls",
"status",
- "portfolioLinks",
"createdAt",
"updatedAt"
]
},
- "EditBountyApplicationDto": {
+ "OrganizerBountySubmissionListDto": {
"type": "object",
"properties": {
- "proposalShort": {
- "type": "string",
- "description": "Light proposal text."
- },
- "proposalFull": {
- "type": "string",
- "description": "Full proposal text."
- },
- "portfolioLinks": {
+ "items": {
"type": "array",
"items": {
- "type": "string"
+ "$ref": "#/components/schemas/OrganizerBountySubmissionDto"
}
},
- "estimatedDays": {
+ "total": {
"type": "number"
},
- "qualifications": {
- "type": "string"
+ "page": {
+ "type": "number"
},
- "videoIntroUrl": {
+ "limit": {
+ "type": "number"
+ }
+ },
+ "required": [
+ "items",
+ "total",
+ "page",
+ "limit"
+ ]
+ },
+ "BountyOverviewPrizeTierDto": {
+ "type": "object",
+ "properties": {
+ "position": {
+ "type": "number"
+ },
+ "amount": {
"type": "string"
+ },
+ "passMark": {
+ "type": "number",
+ "nullable": true
}
- }
+ },
+ "required": [
+ "position",
+ "amount"
+ ]
},
- "SelectForSingleClaimDto": {
+ "BountyApplicationStatsDto": {
"type": "object",
"properties": {
- "applicationId": {
+ "submitted": {
+ "type": "number"
+ },
+ "shortlisted": {
+ "type": "number"
+ },
+ "selected": {
+ "type": "number"
+ },
+ "declined": {
+ "type": "number"
+ },
+ "withdrawn": {
+ "type": "number"
+ },
+ "total": {
+ "type": "number",
+ "description": "All application rows on the bounty."
+ }
+ },
+ "required": [
+ "submitted",
+ "shortlisted",
+ "selected",
+ "declined",
+ "withdrawn",
+ "total"
+ ]
+ },
+ "BountySubmissionStatsDto": {
+ "type": "object",
+ "properties": {
+ "pending": {
+ "type": "number"
+ },
+ "accepted": {
+ "type": "number"
+ },
+ "rejected": {
+ "type": "number"
+ },
+ "disputed": {
+ "type": "number"
+ },
+ "total": {
+ "type": "number",
+ "description": "All submission rows on the bounty."
+ }
+ },
+ "required": [
+ "pending",
+ "accepted",
+ "rejected",
+ "disputed",
+ "total"
+ ]
+ },
+ "BountyContributionStatsDto": {
+ "type": "object",
+ "properties": {
+ "count": {
+ "type": "number",
+ "description": "Count of confirmed contributions."
+ },
+ "total": {
"type": "string",
- "description": "Application id to select as the single winner."
+ "description": "Sum of confirmed contribution amounts."
}
},
- "required": ["applicationId"]
+ "required": [
+ "count",
+ "total"
+ ]
},
- "CreateShortlistDto": {
+ "BountyOperateIntakeDto": {
"type": "object",
"properties": {
- "applicationIds": {
- "description": "Application ids to include in the shortlist.",
+ "applications": {
+ "$ref": "#/components/schemas/BountyApplicationStatsDto"
+ },
+ "submissions": {
+ "$ref": "#/components/schemas/BountySubmissionStatsDto"
+ },
+ "contributions": {
+ "$ref": "#/components/schemas/BountyContributionStatsDto"
+ }
+ },
+ "required": [
+ "applications",
+ "submissions",
+ "contributions"
+ ]
+ },
+ "BountyOperateOverviewDto": {
+ "type": "object",
+ "properties": {
+ "id": {
+ "type": "string"
+ },
+ "title": {
+ "type": "string"
+ },
+ "status": {
+ "type": "string",
+ "description": "Lifecycle status (lowercase)."
+ },
+ "entryType": {
+ "type": "string",
+ "enum": [
+ "OPEN",
+ "APPLICATION_LIGHT",
+ "APPLICATION_FULL"
+ ],
+ "nullable": true
+ },
+ "claimType": {
+ "type": "string",
+ "enum": [
+ "SINGLE_CLAIM",
+ "COMPETITION"
+ ],
+ "nullable": true
+ },
+ "submissionVisibility": {
+ "type": "string",
+ "enum": [
+ "ORGANIZER_ONLY",
+ "HIDDEN_UNTIL_DEADLINE"
+ ]
+ },
+ "applicationWindowCloseAt": {
+ "type": "string",
+ "format": "date-time",
+ "nullable": true
+ },
+ "submissionDeadline": {
+ "type": "string",
+ "format": "date-time",
+ "nullable": true
+ },
+ "maxApplicants": {
+ "type": "number",
+ "nullable": true
+ },
+ "shortlistSize": {
+ "type": "number",
+ "nullable": true
+ },
+ "rewardCurrency": {
+ "type": "string"
+ },
+ "rewardAmount": {
+ "type": "number"
+ },
+ "prizeTiers": {
"type": "array",
"items": {
- "type": "string"
+ "$ref": "#/components/schemas/BountyOverviewPrizeTierDto"
}
+ },
+ "escrowEventId": {
+ "type": "string",
+ "nullable": true,
+ "description": "On-chain event id once published; null while in draft."
+ },
+ "createdAt": {
+ "type": "string",
+ "format": "date-time"
+ },
+ "intake": {
+ "$ref": "#/components/schemas/BountyOperateIntakeDto"
}
},
- "required": ["applicationIds"]
+ "required": [
+ "id",
+ "title",
+ "status",
+ "submissionVisibility",
+ "rewardCurrency",
+ "rewardAmount",
+ "prizeTiers",
+ "createdAt",
+ "intake"
+ ]
},
- "DeclineApplicationDto": {
+ "PublishBountyResultsDto": {
"type": "object",
"properties": {
- "reason": {
+ "message": {
"type": "string",
- "description": "Reason for decline (surfaced to builder)."
+ "description": "Announcement message shown on the results page.",
+ "minLength": 1,
+ "maxLength": 5000
}
- }
+ },
+ "required": [
+ "message"
+ ]
+ },
+ "BountyAnnouncementDto": {
+ "type": "object",
+ "properties": {
+ "id": {
+ "type": "string"
+ },
+ "bountyId": {
+ "type": "string"
+ },
+ "message": {
+ "type": "string"
+ },
+ "publishedBy": {
+ "type": "string",
+ "description": "User id of the organizer who published it."
+ },
+ "publishedAt": {
+ "type": "string",
+ "format": "date-time"
+ }
+ },
+ "required": [
+ "id",
+ "bountyId",
+ "message",
+ "publishedBy",
+ "publishedAt"
+ ]
},
"JoinCompetitionDto": {
"type": "object",
@@ -50764,7 +58537,9 @@
"example": "GBXNQFDSBDPOIA3Q4LYIWBOJFFPCCV6IEDHBSJZEAYFKIKZVUO4QEDVS"
}
},
- "required": ["applicantAddress"]
+ "required": [
+ "applicantAddress"
+ ]
},
"BountySummaryDto": {
"type": "object",
@@ -50781,12 +58556,19 @@
},
"entryType": {
"type": "string",
- "enum": ["OPEN", "APPLICATION_LIGHT", "APPLICATION_FULL"],
+ "enum": [
+ "OPEN",
+ "APPLICATION_LIGHT",
+ "APPLICATION_FULL"
+ ],
"nullable": true
},
"claimType": {
"type": "string",
- "enum": ["SINGLE_CLAIM", "COMPETITION"],
+ "enum": [
+ "SINGLE_CLAIM",
+ "COMPETITION"
+ ],
"nullable": true
},
"rewardCurrency": {
@@ -50799,7 +58581,12 @@
"description": "Work/submission deadline (published value, falling back to the draft)."
}
},
- "required": ["id", "title", "status", "rewardCurrency"]
+ "required": [
+ "id",
+ "title",
+ "status",
+ "rewardCurrency"
+ ]
},
"MyBountyApplicationRowDto": {
"type": "object",
@@ -50835,7 +58622,13 @@
"$ref": "#/components/schemas/BountySummaryDto"
}
},
- "required": ["id", "status", "createdAt", "updatedAt", "bounty"]
+ "required": [
+ "id",
+ "status",
+ "createdAt",
+ "updatedAt",
+ "bounty"
+ ]
},
"MyBountyApplicationListDto": {
"type": "object",
@@ -50856,7 +58649,12 @@
"type": "number"
}
},
- "required": ["items", "total", "page", "limit"]
+ "required": [
+ "items",
+ "total",
+ "page",
+ "limit"
+ ]
},
"MyBountySubmissionRowDto": {
"type": "object",
@@ -50906,7 +58704,13 @@
"$ref": "#/components/schemas/BountySummaryDto"
}
},
- "required": ["id", "status", "createdAt", "updatedAt", "bounty"]
+ "required": [
+ "id",
+ "status",
+ "createdAt",
+ "updatedAt",
+ "bounty"
+ ]
},
"MyBountySubmissionListDto": {
"type": "object",
@@ -50927,7 +58731,12 @@
"type": "number"
}
},
- "required": ["items", "total", "page", "limit"]
+ "required": [
+ "items",
+ "total",
+ "page",
+ "limit"
+ ]
},
"BountyWinnerDto": {
"type": "object",
@@ -51055,7 +58864,13 @@
"format": "date-time"
}
},
- "required": ["id", "submittedBy", "isOwn", "status", "createdAt"]
+ "required": [
+ "id",
+ "submittedBy",
+ "isOwn",
+ "status",
+ "createdAt"
+ ]
},
"BountySubmissionListDto": {
"type": "object",
@@ -51068,14 +58883,21 @@
},
"visibility": {
"type": "string",
- "enum": ["ORGANIZER_ONLY", "HIDDEN_UNTIL_DEADLINE"]
+ "enum": [
+ "ORGANIZER_ONLY",
+ "HIDDEN_UNTIL_DEADLINE"
+ ]
},
"peersVisible": {
"type": "boolean",
"description": "Whether peer submissions are visible to the caller (organizer, or HIDDEN_UNTIL_DEADLINE past the deadline). When false, only the caller’s own submission is returned."
}
},
- "required": ["items", "visibility", "peersVisible"]
+ "required": [
+ "items",
+ "visibility",
+ "peersVisible"
+ ]
},
"BountyPrizeTierPublicDto": {
"type": "object",
@@ -51093,7 +58915,10 @@
"description": "Optional minimum quality bar."
}
},
- "required": ["position", "amount"]
+ "required": [
+ "position",
+ "amount"
+ ]
},
"BountyOrganizationPublicDto": {
"type": "object",
@@ -51113,7 +58938,10 @@
"nullable": true
}
},
- "required": ["id", "name"]
+ "required": [
+ "id",
+ "name"
+ ]
},
"BountySubmissionRequirementsDto": {
"type": "object",
@@ -51131,7 +58959,12 @@
"type": "boolean"
}
},
- "required": ["documentation", "tweet", "demoVideo", "media"]
+ "required": [
+ "documentation",
+ "tweet",
+ "demoVideo",
+ "media"
+ ]
},
"BountyClaimantPublicDto": {
"type": "object",
@@ -51149,7 +58982,10 @@
"nullable": true
}
},
- "required": ["username", "address"]
+ "required": [
+ "username",
+ "address"
+ ]
},
"BountyPublicDto": {
"type": "object",
@@ -51178,15 +59014,25 @@
},
"entryType": {
"type": "string",
- "enum": ["OPEN", "APPLICATION_LIGHT", "APPLICATION_FULL"]
+ "enum": [
+ "OPEN",
+ "APPLICATION_LIGHT",
+ "APPLICATION_FULL"
+ ]
},
"claimType": {
"type": "string",
- "enum": ["SINGLE_CLAIM", "COMPETITION"]
+ "enum": [
+ "SINGLE_CLAIM",
+ "COMPETITION"
+ ]
},
"submissionVisibility": {
"type": "string",
- "enum": ["ORGANIZER_ONLY", "HIDDEN_UNTIL_DEADLINE"]
+ "enum": [
+ "ORGANIZER_ONLY",
+ "HIDDEN_UNTIL_DEADLINE"
+ ]
},
"applicationWindowCloseAt": {
"type": "string",
@@ -51290,7 +59136,12 @@
"type": "number"
}
},
- "required": ["bounties", "total", "page", "limit"]
+ "required": [
+ "bounties",
+ "total",
+ "page",
+ "limit"
+ ]
},
"GrantWinnerDistributionEntryDto": {
"type": "object",
@@ -51306,7 +59157,10 @@
"example": 100
}
},
- "required": ["position", "percent"]
+ "required": [
+ "position",
+ "percent"
+ ]
},
"PublishGrantEscrowDto": {
"type": "object",
@@ -51353,11 +59207,19 @@
"fundingMode": {
"type": "string",
"description": "Signing path. EXTERNAL (default) or MANAGED.",
- "enum": ["EXTERNAL", "MANAGED"],
+ "enum": [
+ "EXTERNAL",
+ "MANAGED"
+ ],
"default": "EXTERNAL"
}
},
- "required": ["ownerAddress", "tokenAddress", "budget", "nMilestones"]
+ "required": [
+ "ownerAddress",
+ "tokenAddress",
+ "budget",
+ "nMilestones"
+ ]
},
"GrantEscrowOpResponseDto": {
"type": "object",
@@ -51425,11 +59287,16 @@
},
"fundingMode": {
"type": "string",
- "enum": ["EXTERNAL", "MANAGED"],
+ "enum": [
+ "EXTERNAL",
+ "MANAGED"
+ ],
"default": "EXTERNAL"
}
},
- "required": ["ownerAddress"]
+ "required": [
+ "ownerAddress"
+ ]
},
"GrantWinnerSelectionDto": {
"type": "object",
@@ -51444,19 +59311,16 @@
"minimum": 1,
"example": 1
},
- "creditEarn": {
- "type": "number",
- "minimum": 0,
- "maximum": 100,
- "example": 20
- },
"reputationBump": {
"type": "number",
"minimum": 0,
"example": 50
}
},
- "required": ["grantApplicationId", "position"]
+ "required": [
+ "grantApplicationId",
+ "position"
+ ]
},
"SelectGrantWinnersDto": {
"type": "object",
@@ -51472,11 +59336,17 @@
},
"fundingMode": {
"type": "string",
- "enum": ["EXTERNAL", "MANAGED"],
+ "enum": [
+ "EXTERNAL",
+ "MANAGED"
+ ],
"default": "EXTERNAL"
}
},
- "required": ["ownerAddress", "selections"]
+ "required": [
+ "ownerAddress",
+ "selections"
+ ]
},
"ClaimGrantMilestoneDto": {
"type": "object",
@@ -51490,11 +59360,17 @@
},
"fundingMode": {
"type": "string",
- "enum": ["EXTERNAL", "MANAGED"],
+ "enum": [
+ "EXTERNAL",
+ "MANAGED"
+ ],
"default": "EXTERNAL"
}
},
- "required": ["ownerAddress", "grantMilestoneId"]
+ "required": [
+ "ownerAddress",
+ "grantMilestoneId"
+ ]
},
"GrantSubmitSignedXdrDto": {
"type": "object",
@@ -51503,7 +59379,9 @@
"type": "string"
}
},
- "required": ["signedXdr"]
+ "required": [
+ "signedXdr"
+ ]
},
"ContributeGrantDto": {
"type": "object",
@@ -51519,11 +59397,17 @@
},
"fundingMode": {
"type": "string",
- "enum": ["EXTERNAL", "MANAGED"],
+ "enum": [
+ "EXTERNAL",
+ "MANAGED"
+ ],
"default": "EXTERNAL"
}
},
- "required": ["applicantAddress", "amount"]
+ "required": [
+ "applicantAddress",
+ "amount"
+ ]
},
"GrantPublicListItemDto": {
"type": "object",
@@ -51635,11 +59519,21 @@
"example": 20
}
},
- "required": ["items", "total", "page", "limit"]
+ "required": [
+ "items",
+ "total",
+ "page",
+ "limit"
+ ]
},
"OpportunityType": {
"type": "string",
- "enum": ["BOUNTY", "HACKATHON", "GRANT", "CROWDFUNDING"],
+ "enum": [
+ "BOUNTY",
+ "HACKATHON",
+ "GRANT",
+ "CROWDFUNDING"
+ ],
"description": "The pillar this opportunity belongs to."
},
"OpportunityListItemDto": {
@@ -51741,7 +59635,10 @@
},
"tags": {
"description": "Pillar-defined tags. Empty array for pillars without a tag field; never null.",
- "example": ["stellar", "defi"],
+ "example": [
+ "stellar",
+ "defi"
+ ],
"type": "array",
"items": {
"type": "string"
@@ -51802,7 +59699,11 @@
"example": 137
}
},
- "required": ["items", "nextCursor", "total"]
+ "required": [
+ "items",
+ "nextCursor",
+ "total"
+ ]
},
"SubscribeDto": {
"type": "object",
@@ -51824,14 +59725,19 @@
},
"tags": {
"description": "Topic tags for subscription preferences",
- "example": ["updates", "hackathons"],
+ "example": [
+ "updates",
+ "hackathons"
+ ],
"type": "array",
"items": {
"type": "string"
}
}
},
- "required": ["email"]
+ "required": [
+ "email"
+ ]
},
"UnsubscribeDto": {
"type": "object",
@@ -51842,7 +59748,9 @@
"example": "user@example.com"
}
},
- "required": ["email"]
+ "required": [
+ "email"
+ ]
},
"UpdatePreferencesDto": {
"type": "object",
@@ -51854,14 +59762,20 @@
},
"tags": {
"description": "Topic tags to subscribe to. Valid: bounties, hackathons, grants, updates",
- "example": ["updates", "hackathons"],
+ "example": [
+ "updates",
+ "hackathons"
+ ],
"type": "array",
"items": {
"type": "string"
}
}
},
- "required": ["email", "tags"]
+ "required": [
+ "email",
+ "tags"
+ ]
},
"CreateNewsletterCampaignDto": {
"type": "object",
@@ -51883,14 +59797,159 @@
},
"tags": {
"description": "Target subscriber tags — only subscribers with matching tags receive the campaign",
- "example": ["hackathons", "updates"],
+ "example": [
+ "hackathons",
+ "updates"
+ ],
"type": "array",
"items": {
"type": "string"
}
}
},
- "required": ["subject", "content"]
+ "required": [
+ "subject",
+ "content"
+ ]
+ },
+ "DiscoverPillarDto": {
+ "type": "object",
+ "properties": {
+ "items": {
+ "type": "array",
+ "items": {
+ "$ref": "#/components/schemas/OpportunityListItemDto"
+ }
+ },
+ "total": {
+ "type": "number",
+ "description": "Total matching records in the pillar (unpaged)."
+ }
+ },
+ "required": [
+ "items",
+ "total"
+ ]
+ },
+ "RecentWinnerUserDto": {
+ "type": "object",
+ "properties": {
+ "name": {
+ "type": "string"
+ },
+ "avatarUrl": {
+ "type": "string"
+ }
+ },
+ "required": [
+ "name"
+ ]
+ },
+ "RecentWinnerPrizeDto": {
+ "type": "object",
+ "properties": {
+ "amount": {
+ "type": "number"
+ },
+ "currency": {
+ "type": "string",
+ "example": "USDC"
+ }
+ },
+ "required": [
+ "amount",
+ "currency"
+ ]
+ },
+ "RecentWinnerDto": {
+ "type": "object",
+ "properties": {
+ "id": {
+ "type": "string"
+ },
+ "user": {
+ "$ref": "#/components/schemas/RecentWinnerUserDto"
+ },
+ "projectTitle": {
+ "type": "string"
+ },
+ "category": {
+ "type": "string",
+ "enum": [
+ "hackathon",
+ "bounty",
+ "grant"
+ ]
+ },
+ "prize": {
+ "$ref": "#/components/schemas/RecentWinnerPrizeDto"
+ },
+ "occurredAt": {
+ "type": "string",
+ "description": "ISO-8601 timestamp of the win event"
+ },
+ "totalApplications": {
+ "type": "number"
+ },
+ "boundlessWins": {
+ "type": "number",
+ "description": "Total wins for this user across all pillars"
+ }
+ },
+ "required": [
+ "id",
+ "user",
+ "projectTitle",
+ "category",
+ "prize",
+ "occurredAt",
+ "totalApplications",
+ "boundlessWins"
+ ]
+ },
+ "DiscoverLandingDto": {
+ "type": "object",
+ "properties": {
+ "bounties": {
+ "$ref": "#/components/schemas/DiscoverPillarDto"
+ },
+ "hackathons": {
+ "$ref": "#/components/schemas/DiscoverPillarDto"
+ },
+ "crowdfunding": {
+ "$ref": "#/components/schemas/DiscoverPillarDto"
+ },
+ "grants": {
+ "$ref": "#/components/schemas/DiscoverPillarDto"
+ },
+ "recentWinners": {
+ "type": "array",
+ "items": {
+ "$ref": "#/components/schemas/RecentWinnerDto"
+ }
+ }
+ },
+ "required": [
+ "bounties",
+ "hackathons",
+ "crowdfunding",
+ "grants",
+ "recentWinners"
+ ]
+ },
+ "RecentWinnersResponseDto": {
+ "type": "object",
+ "properties": {
+ "items": {
+ "type": "array",
+ "items": {
+ "$ref": "#/components/schemas/RecentWinnerDto"
+ }
+ }
+ },
+ "required": [
+ "items"
+ ]
},
"User": {
"type": "object",
@@ -51956,7 +60015,12 @@
"readOnly": true
}
},
- "required": ["name", "email", "createdAt", "updatedAt"]
+ "required": [
+ "name",
+ "email",
+ "createdAt",
+ "updatedAt"
+ ]
},
"Session": {
"type": "object",
@@ -51996,7 +60060,13 @@
"type": "string"
}
},
- "required": ["expiresAt", "token", "createdAt", "updatedAt", "userId"]
+ "required": [
+ "expiresAt",
+ "token",
+ "createdAt",
+ "updatedAt",
+ "userId"
+ ]
},
"Account": {
"type": "object",
@@ -52105,7 +60175,11 @@
"type": "string"
}
},
- "required": ["secret", "backupCodes", "userId"]
+ "required": [
+ "secret",
+ "backupCodes",
+ "userId"
+ ]
},
"Organization": {
"type": "object",
@@ -52130,7 +60204,11 @@
"type": "string"
}
},
- "required": ["name", "slug", "createdAt"]
+ "required": [
+ "name",
+ "slug",
+ "createdAt"
+ ]
},
"Member": {
"type": "object",
@@ -52153,7 +60231,12 @@
"format": "date-time"
}
},
- "required": ["organizationId", "userId", "role", "createdAt"]
+ "required": [
+ "organizationId",
+ "userId",
+ "role",
+ "createdAt"
+ ]
},
"Invitation": {
"type": "object",