openapi: 3.0.3 info: title: Duvo Public Agent Folders Organizations API description: Public API for programmatic access to Duvo. Authenticate with API keys created in the Duvo dashboard. version: 1.0.0 servers: - url: https://api.duvo.ai description: Production server tags: - name: Organizations description: Inspect organizations you belong to and the teams within them paths: /v2/organizations/{orgId}/clarity/hierarchy/proposed-processes: post: operationId: proposeClarityLandscapeProcess tags: - Organizations description: Create a manual process in the organization's Process Landscape, either as an unassigned proposal or atomically assigned to an eligible team. requestBody: required: true content: application/json: schema: type: object properties: name: type: string minLength: 1 maxLength: 200 description: description: 'One short paragraph (1-3 sentences) saying why this process belongs in the landscape. Use only what you saw in the captures. Say what the process is (don''t just repeat the name), show proof it really happens, and name where you heard it - be as specific as the captures allow, like "a warehouse lead said so in their interview" or "it came up in two returns recordings". Use only facts from the captures: never make up sources, people, dates, quotes, or numbers, and don''t stretch what was said. If you have no real proof the process happens, don''t propose it.' nullable: true type: string maxLength: 5000 parentId: default: null nullable: true type: string format: uuid teamId: default: null nullable: true type: string format: uuid required: - name parameters: - schema: type: string format: uuid in: path name: orgId required: true security: - bearerAuth: [] responses: '201': description: Default Response content: application/json: schema: type: object properties: id: type: string format: uuid parentId: nullable: true type: string format: uuid processId: nullable: true type: string format: uuid name: type: string ownerLabel: nullable: true type: string sortOrder: type: number existence: type: string enum: - proposed - active contentConfirmedAt: nullable: true type: string existenceConfirmedAt: nullable: true type: string source: type: string enum: - ai - human createdAt: type: string updatedAt: type: string team: nullable: true type: object properties: id: type: string format: uuid name: type: string required: - id - name additionalProperties: false required: - id - parentId - processId - name - ownerLabel - sortOrder - existence - contentConfirmedAt - existenceConfirmedAt - source - createdAt - updatedAt - team additionalProperties: false '400': description: Default Response content: application/json: schema: type: object properties: error: type: string message: type: string required: - error additionalProperties: false '401': description: Default Response content: application/json: schema: type: object properties: error: type: string message: type: string required: - error additionalProperties: false '403': description: Default Response content: application/json: schema: type: object properties: error: type: string message: type: string required: - error additionalProperties: false '404': description: Default Response content: application/json: schema: type: object properties: error: type: string message: type: string required: - error additionalProperties: false '422': description: Default Response content: application/json: schema: type: object properties: error: type: string message: type: string required: - error additionalProperties: false '500': description: Default Response content: application/json: schema: type: object properties: error: type: string message: type: string required: - error additionalProperties: false summary: Propose Clarity Landscape Process /v2/organizations/{orgId}/members: post: operationId: inviteOrgMember tags: - Organizations description: Invite a person to an organization you administer, optionally assigning them to a team in that organization. Requires an organization Admin, Executive, or Owner role. You cannot grant a role higher than your own. requestBody: required: true content: application/json: schema: type: object properties: email: type: string format: email role: type: string enum: - organization:executive - organization:owner - organization:admin - organization:member frontendUrl: type: string format: uri teamId: type: string format: uuid required: - email - role parameters: - schema: type: string format: uuid in: path name: orgId required: true description: Organization ID security: - bearerAuth: [] responses: '201': description: Default Response content: application/json: schema: type: object properties: success: type: boolean invitationId: type: string format: uuid emailSent: type: boolean required: - success - invitationId - emailSent additionalProperties: false '400': description: Default Response content: application/json: schema: type: object properties: error: type: string message: type: string required: - error additionalProperties: false '401': description: Default Response content: application/json: schema: type: object properties: error: type: string message: type: string required: - error additionalProperties: false '403': description: Default Response content: application/json: schema: type: object properties: error: type: string message: type: string required: - error additionalProperties: false '404': description: Default Response content: application/json: schema: type: object properties: error: type: string message: type: string required: - error additionalProperties: false '500': description: Default Response content: application/json: schema: type: object properties: error: type: string message: type: string required: - error additionalProperties: false summary: Invite Org Member /v2/organizations/{orgId}/teams: get: operationId: listOrgTeams tags: - Organizations description: List teams belonging to an organization you are a member of, including your membership and role in each. parameters: - schema: default: 50 type: number minimum: 1 maximum: 100 in: query name: limit required: false description: Number of teams per page (1-100, default 50) - schema: type: number minimum: 0 in: query name: offset required: false description: Number of teams to skip - schema: type: string format: uuid in: path name: orgId required: true description: Organization ID security: - bearerAuth: [] responses: '200': description: Default Response content: application/json: schema: type: object properties: teams: type: array items: type: object properties: id: type: string format: uuid name: type: string createdAt: type: string discoveryMode: type: string enum: - request - auto memberCount: type: number pendingInvitationCount: type: number pendingJoinRequestCount: type: number userIsMember: type: boolean userRole: nullable: true type: string userHasPendingJoinRequest: type: boolean assignmentCount: type: number jobCount: type: number scheduledJobCount: type: number required: - id - name - createdAt - discoveryMode - memberCount - pendingInvitationCount - pendingJoinRequestCount - userIsMember - userRole - userHasPendingJoinRequest - assignmentCount - jobCount - scheduledJobCount additionalProperties: false total: type: number required: - teams - total additionalProperties: false '400': description: Default Response content: application/json: schema: type: object properties: error: type: string message: type: string required: - error additionalProperties: false '401': description: Default Response content: application/json: schema: type: object properties: error: type: string message: type: string required: - error additionalProperties: false '403': description: Default Response content: application/json: schema: type: object properties: error: type: string message: type: string required: - error additionalProperties: false '404': description: Default Response content: application/json: schema: type: object properties: error: type: string message: type: string required: - error additionalProperties: false '500': description: Default Response content: application/json: schema: type: object properties: error: type: string message: type: string required: - error additionalProperties: false summary: List Org Teams post: operationId: createOrgTeam tags: - Organizations description: Create a new team under an organization you administer. Requires an organization Admin, Executive, or Owner role. requestBody: required: true content: application/json: schema: type: object properties: name: type: string minLength: 1 required: - name parameters: - schema: type: string format: uuid in: path name: orgId required: true description: Organization ID security: - bearerAuth: [] responses: '201': description: Default Response content: application/json: schema: type: object properties: id: type: string format: uuid name: type: string required: - id - name additionalProperties: false '400': description: Default Response content: application/json: schema: type: object properties: error: type: string message: type: string required: - error additionalProperties: false '401': description: Default Response content: application/json: schema: type: object properties: error: type: string message: type: string required: - error additionalProperties: false '403': description: Default Response content: application/json: schema: type: object properties: error: type: string message: type: string required: - error additionalProperties: false '404': description: Default Response content: application/json: schema: type: object properties: error: type: string message: type: string required: - error additionalProperties: false '500': description: Default Response content: application/json: schema: type: object properties: error: type: string message: type: string required: - error additionalProperties: false summary: Create Org Team /v2/organizations/{orgId}/insights/headline: get: operationId: getOrgInsightsHeadline tags: - Organizations description: Get org-wide headline insight KPIs (run totals, success rate, distinct active agents and users) aggregated across every team in the organization. Requires an organization Admin, Executive, or Owner role. parameters: - schema: type: string format: date-time in: query name: startDate required: false description: Start of the aggregation window (ISO 8601 datetime). Defaults to 30 days ago; clamped to at most 365 days ago. - schema: type: string format: date-time in: query name: endDate required: false description: End of the aggregation window (ISO 8601 datetime, exclusive). Defaults to now; clamped to now. - schema: type: string format: uuid in: path name: orgId required: true description: The organization's unique identifier security: - bearerAuth: [] responses: '200': description: Default Response content: application/json: schema: type: object properties: headline: type: object properties: total_runs: type: number description: Total runs started in the window across all org teams completed_runs: type: number description: Runs that finished with completed status failed_runs: type: number description: Runs that finished with failed status success_rate: nullable: true description: completed_runs / (completed_runs + failed_runs), null when no runs finished in the window type: number active_agents: type: number description: Distinct agents with at least one run in the window (org-wide, includes since-deleted agents so totals reconcile with run counts) active_users: type: number description: Distinct users who started at least one run in the window, deduplicated across teams start_date: type: string description: Effective window start after clamping (ISO 8601) end_date: type: string description: Effective window end after clamping (ISO 8601) truncated: type: boolean description: True when the org has more teams than the aggregation limit — figures cover only the first teams up to the cap aggregated_teams: type: number description: Number of teams actually included in the aggregation total_teams: type: number description: Actual team count on the org, even when truncated required: - total_runs - completed_runs - failed_runs - success_rate - active_agents - active_users - start_date - end_date - truncated - aggregated_teams - total_teams additionalProperties: false required: - headline additionalProperties: false '400': description: Default Response content: application/json: schema: type: object properties: error: type: string message: type: string required: - error additionalProperties: false '401': description: Default Response content: application/json: schema: type: object properties: error: type: string message: type: string required: - error additionalProperties: false '403': description: Default Response content: application/json: schema: type: object properties: error: type: string message: type: string required: - error additionalProperties: false '500': description: Default Response content: application/json: schema: type: object properties: error: type: string message: type: string required: - error additionalProperties: false summary: Get Org Insights Headline /v2/organizations/{orgId}/insights/metrics: get: operationId: getOrgInsightsMetrics tags: - Organizations description: Get org-level insights metrics (runs, assignments, schedules) broken down per team across the organization. Requires an organization Admin, Executive, or Owner role. parameters: - schema: type: string format: date-time in: query name: startDate required: false description: Start of the aggregation window (ISO 8601 datetime). Defaults to 7 days ago; clamped to at most 365 days ago. - schema: type: string format: date-time in: query name: endDate required: false description: End of the aggregation window (ISO 8601 datetime). Defaults to now; clamped to now. - schema: type: string format: uuid in: path name: orgId required: true description: The organization's unique identifier security: - bearerAuth: [] responses: '200': description: Default Response content: application/json: schema: type: object properties: teams: type: array items: type: object properties: team_id: type: string format: uuid description: Team's unique identifier team_name: type: string description: Team name is_deleted: type: boolean description: Whether the team is soft-deleted member_count: type: number description: Number of members on the team assignment_count: type: number description: Number of (non-deleted) agents on the team scheduled_job_count: type: number description: Number of enabled schedules on the team's agents total_jobs: type: number description: Scheduled runs in the window (source = scheduling) completed_jobs: type: number description: Scheduled runs that completed failed_jobs: type: number description: Scheduled runs that failed total_runs: type: number description: All runs in the window across sources required: - team_id - team_name - is_deleted - member_count - assignment_count - scheduled_job_count - total_jobs - completed_jobs - failed_jobs - total_runs additionalProperties: false description: Per-team metric breakdown start_date: type: string description: Effective window start after clamping (ISO 8601) end_date: type: string description: Effective window end after clamping (ISO 8601) truncated: type: boolean description: True when the org has more teams than the aggregation limit — the team list is partial total_teams: type: number description: Actual team count on the org, even when truncated org_member_count: type: number description: Distinct organization members (not the sum of per-team memberships) required: - teams - start_date - end_date - truncated - total_teams - org_member_count additionalProperties: false '400': description: Default Response content: application/json: schema: type: object properties: error: type: string message: type: string required: - error additionalProperties: false '401': description: Default Response content: application/json: schema: type: object properties: error: type: string message: type: string required: - error additionalProperties: false '403': description: Default Response content: application/json: schema: type: object properties: error: type: string message: type: string required: - error additionalProperties: false '500': description: Default Response content: application/json: schema: type: object properties: error: type: string message: type: string required: - error additionalProperties: false summary: Get Org Insights Metrics /v2/organizations/{orgId}/insights/usage-chart: get: operationId: getOrgInsightsUsageChart tags: - Organizations description: Get org-level run-volume buckets (scheduled vs on-demand) at day/week/month granularity across the organization. Requires an organization Admin, Executive, or Owner role. parameters: - schema: type: string format: date-time in: query name: startDate required: true description: Start of the chart window (ISO 8601 datetime). Clamped to at most 365 days ago. - schema: type: string format: date-time in: query name: endDate required: true description: End of the chart window (ISO 8601 datetime). Clamped to now. - schema: type: string enum: - day - week - month in: query name: granularity required: true description: 'Bucket size: day, week, or month' - schema: type: string maxLength: 64 pattern: ^[A-Za-z_]+(?:\/[A-Za-z_\-+0-9]+){0,2}$ in: query name: timezone required: false description: IANA timezone for bucket boundaries (e.g. America/New_York). Defaults to UTC. - schema: type: string format: uuid in: path name: orgId required: true description: The organization's unique identifier security: - bearerAuth: [] responses: '200': description: Default Response content: application/json: schema: type: object properties: buckets: type: array items: type: object properties: period: type: string description: Bucket label (YYYY-MM-DD for day/week, YYYY-MM for month) total_runs: type: number description: Total runs in the bucket scheduled_runs: type: number description: Runs started by a schedule (source = scheduling) on_demand_runs: type: number description: Runs started on demand (any non-scheduling source) required: - period - total_runs - scheduled_runs - on_demand_runs additionalProperties: false description: Time buckets ordered ascending by period granularity: type: string enum: - day - week - month description: Bucket size used truncated: type: boolean description: True when the org has more teams than the aggregation limit — buckets cover a partial team set total_teams: type: number description: Actual team count on the org, even when truncated required: - buckets - granularity - truncated - total_teams additionalProperties: false '400': description: Default Response content: application/json: schema: type: object properties: error: type: string message: type: string required: - error additionalProperties: false '401': description: Default Response content: application/json: schema: type: object properties: error: type: string message: type: string required: - error additionalProperties: false '403': description: Default Response content: application/json: schema: type: object properties: error: type: string message: type: string required: - error additionalProperties: false '500': description: Default Response content: application/json: schema: type: object properties: error: type: string message: type: string required: - error additionalProperties: false summary: Get Org Insights Usage Chart /v2/organizations/{orgId}/clarity/hierarchy/landscape: get: operationId: getClarityProcessLandscape tags: - Organizations description: 'Fetch the organization''s process landscape: hierarchy nodes joined to lean process summaries and team assignments, with page-level stats' parameters: - schema: type: string format: uuid in: query name: rootId required: false - schema: type: string format: uuid in: path name: orgId required: true security: - bearerAuth: [] responses: '200': description: Default Response content: application/json: schema: type: object properties: nodes: type: array items: type: object properties: id: type: string format: uuid parentId: nullable: true type: string format: uuid processId: nullable: true type: string format: uuid name: type: string ownerLabel: nullable: true type: string sortOrder: type: number depth: type: number existence: type: string enum: - proposed - active contentConfirmedAt: nullable: true type: string existenceConfirmedAt: nullable: true type: string source: type: string enum: - ai - human createdAt: type: string updatedAt: type: string process: nullable: true type: object properties: id: type: string format: uuid name: type: string status: type: string enum: - draft - collecting - generating - generating-current-process - generating-transformation-proposal - review - complete - generation_failed version: anyOf: - type: number enum: - 1 - type: number enum: - 2 summary: nullable: true type: string captureCount: type: number captureCounts: type: object properties: video: type: number interview: type: number document: type: number required: - video - interview - document additionalProperties: false contributors: type: array items: type: object properties: userId: type: string userName: type: string required: - userId - userName additionalProperties: false people: default: [] type: array items: type: object properties: id: type: string userId: nullable: true type: string email: nullable: true type: string name: type: string required: - id - userId - email - name additionalProperties: false updatedAt: type: string format: date-time required: - id - name - status - version - summary - captureCount - captureCounts - contributors - people - updatedAt additionalProperties: false proposedSummary: nullable: true type: string teamId: nullable: true type: string format: uuid teamName: nullable: true type: string assignedTeam: nullable: true type: object properties: id: type: string format: uuid name: type: string required: - id - name additionalProperties: false teamAssignmentSuggestions: default: [] type: array items: type: object properties: id: type: string format: uuid suggestedTeamId: nullable: true type: string format: uuid suggestedTeamName: type: string confidence: type: number minimum: 0 maximum: 1 rationale: type: string status: type: string enum: - pending - accepted - dismissed createdAt: type: string required: - id - suggestedTeamId - suggestedTeamName - confidence - rationale - status - createdAt additionalProperties: false captureSuggestions: default: [] type: array items: type: object properties: id: type: string format: uuid suggestedUserId: nullable: true type: string format: uuid suggestedUserName: nullable: true type: string suggestedTeamId: nullable: true type: string format: uuid suggestedTeamName: nullable: true type: string gap: type: string minLength: 1 suggestedPrompt: nullable: true type: string confidence: type: number minimum: 0 maximum: 1 rationale: type: string minLength: 1 status: type: string enum: - pending - accepted - dismissed createdAt: type: string required: - id - suggestedUserId - suggestedUserName - suggestedTeamId - suggestedTeamName - gap - suggestedPrompt - confidence - rationale - status - createdAt additionalProperties: false captureRequests: default: [] type: array items: type: object properties: id: type: string format: uuid requestedUserId: nullable: true type: string format: uuid requestedUserName: nullable: true type: string assignedByUserId: nullable: true type: string format: uuid requestedTeamId: nullable: true type: string format: uuid requestedTeamName: nullable: true type: string gap: type: string minLength: 1 prompt: nullable: true type: string status: type: string enum: - open - completed - cancelled createdAt: type: string required: - id - requestedUserId - requestedUserName - requestedTeamId - requestedTeamName - gap - prompt - status - createdAt additionalProperties: false labels: default: [] type: array items: type: object properties: id: type: string format: uuid value: type: string colorHue: type: integer minimum: 0 maximum: 360 source: type: string enum: - human - agent required: - id - value - colorHue - source additionalProperties: false required: - id - parentId - processId - name - ownerLabel - sortOrder - depth - existence - contentConfirmedAt - existenceConfirmedAt - source - createdAt - updatedAt - process - proposedSummary - labels additionalProperties: false links: type: array items: type: object properties: id: type: string format: uuid sourceNodeId: type: string format: uuid targetNodeId: type: string format: uuid type: type: string enum: - hands_off_to - shares_step_with - variant_of state: type: string enum: - suggested - confirmed confidence: nullable: true type: number rationale: default: null nullable: true type: string required: - id - sourceNodeId - targetNodeId - type - state - confidence - rationale additionalProperties: false unlinkedProcesses: type: array items: type: object properties: id: type: string format: uuid name: type: string status: type: string enum: - draft - collecting - generating - generating-current-process - generating-transformation-proposal - review - complete - generation_failed version: anyOf: - type: number enum: - 1 - type: number enum: - 2 summary: nullable: true type: string captureCount: type: number captureCounts: type: object properties: video: type: number interview: type: number document: type: number required: - video - interview - document additionalProperties: false contributors: type: array items: type: object properties: userId: type: string userName: type: string required: - userId - userName additionalProperties: false people: default: [] type: array items: type: object properties: id: type: string userId: nullable: true type: string email: nullable: true type: string name: type: string required: - id - userId - email - name additionalProperties: false updatedAt: type: string format: date-time teamId: type: string format: uuid teamName: nullable: true type: string labels: default: [] type: array items: type: object properties: id: type: string format: uuid value: type: string colorHue: type: integer minimum: 0 maximum: 360 source: type: string enum: - human - agent required: - id - value - colorHue - source additionalProperties: false required: - id - name - status - version - summary - captureCount - captureCounts - contributors - people - updatedAt - teamId - teamName - labels additionalProperties: false stats: type: object properties: totalNodes: type: number processNodes: type: number proposedNodes: type: number unsortedProcesses: type: number latestUpdatedAt: nullable: true type: string required: - totalNodes - processNodes - proposedNodes - unsortedProcesses - latestUpdatedAt additionalProperties: false generation: type: object properties: eligibleCaptureCount: type: integer minimum: 0 maximum: 9007199254740991 eligibleProcessCount: type: integer minimum: 0 maximum: 9007199254740991 status: type: string enum: - idle - starting - running - completed - failed required: - eligibleCaptureCount - eligibleProcessCount - status additionalProperties: false truncated: type: boolean required: - nodes - links - unlinkedProcesses - stats - generation - truncated additionalProperties: false summary: Get Clarity Process Landscape /v2/organizations/{orgId}/clarity/hierarchy/captures: get: operationId: listClarityLandscapeCaptures tags: - Organizations description: List the organization's eligible Process Landscape captures (completed interview/document transcripts not yet tied to a process) so they can seed new process proposals. parameters: - schema: default: 100 type: integer minimum: 1 maximum: 200 in: query name: limit required: false description: Number of captures to return (1-200, default 100) - schema: default: 'false' type: string enum: - 'true' - 'false' in: query name: includeTranscripts required: false description: Include full capture transcripts (large); off by default. Pass the literal string 'true' or 'false' (z.coerce.boolean treats any non-empty value, including 'false', as true). - schema: type: string format: uuid in: path name: orgId required: true security: - bearerAuth: [] responses: '200': description: Default Response content: application/json: schema: type: object properties: captures: type: array items: type: object properties: id: type: string format: uuid description: Unique capture identifier scope: type: string enum: - team - organization description: Whether the capture is owned by a team or the organization type: type: string enum: - interview - document description: 'Capture source: a voice interview or an uploaded document' title: type: string description: Human-readable capture title organizationId: nullable: true description: Owning organization id, when org-scoped type: string format: uuid organizationName: nullable: true description: Owning organization name, when available type: string teamId: nullable: true description: Owning team id, when team-scoped type: string format: uuid teamName: nullable: true description: Owning team name, when available type: string processNodeId: nullable: true description: Hierarchy node the capture is filed under, when any type: string format: uuid createdAt: type: string description: ISO 8601 creation timestamp transcriptMessageCount: type: integer minimum: -9007199254740991 maximum: 9007199254740991 description: Number of messages in the capture transcript transcript: description: Full capture transcript, included only when requested type: array items: type: object properties: source: type: string enum: - ai - user - interviewer speakerName: type: string message: type: string timestamp: type: number required: - source - message additionalProperties: false required: - id - scope - type - title - organizationId - organizationName - teamId - teamName - processNodeId - createdAt - transcriptMessageCount additionalProperties: false description: Eligible Process Landscape captures, newest first total: type: integer minimum: -9007199254740991 maximum: 9007199254740991 description: Total eligible captures in the organization truncated: type: boolean description: True when more captures exist than were returned required: - captures - total - truncated additionalProperties: false '400': description: Default Response content: application/json: schema: type: object properties: error: type: string message: type: string required: - error additionalProperties: false '401': description: Default Response content: application/json: schema: type: object properties: error: type: string message: type: string required: - error additionalProperties: false '403': description: Default Response content: application/json: schema: type: object properties: error: type: string message: type: string required: - error additionalProperties: false '404': description: Default Response content: application/json: schema: type: object properties: error: type: string message: type: string required: - error additionalProperties: false '500': description: Default Response content: application/json: schema: type: object properties: error: type: string message: type: string required: - error additionalProperties: false summary: List Clarity Landscape Captures /v2/organizations/{orgId}/clarity/hierarchy/landscape/generate: post: operationId: generateClarityProcessLandscape tags: - Organizations description: Start a process-landscape generation run for the organization from its eligible Clarity captures (organization executives and owners) parameters: - schema: type: string format: uuid in: path name: orgId required: true security: - bearerAuth: [] responses: '202': description: Default Response content: application/json: schema: type: object properties: started: type: boolean enum: - true generationId: type: string format: uuid eligibleCaptureCount: type: integer minimum: 0 maximum: 9007199254740991 eligibleProcessCount: type: integer minimum: 0 maximum: 9007199254740991 required: - started - generationId - eligibleCaptureCount - eligibleProcessCount additionalProperties: false '401': description: Default Response content: application/json: schema: type: object properties: error: type: string message: type: string required: - error additionalProperties: false '403': description: Default Response content: application/json: schema: type: object properties: error: type: string message: type: string required: - error additionalProperties: false '404': description: Default Response content: application/json: schema: type: object properties: error: type: string message: type: string required: - error additionalProperties: false '422': description: Default Response content: application/json: schema: type: object properties: error: type: string message: type: string required: - error additionalProperties: false '500': description: Default Response content: application/json: schema: type: object properties: error: type: string message: type: string required: - error additionalProperties: false summary: Generate Clarity Process Landscape /v2/organizations/mine: get: operationId: listMyOrganizations tags: - Organizations description: List the organizations the current user belongs to, with their role (organization:member, organization:admin, organization:owner, or organization:executive) and member count in each. Use this to check whether the user has an admin-or-above role before calling organization-scoped endpoints, which reject lower roles with 403. security: - bearerAuth: [] responses: '200': description: Default Response content: application/json: schema: type: object properties: memberships: type: array items: type: object properties: organization: type: object properties: id: type: string format: uuid name: type: string discoveryMode: type: string createdAt: type: string required: - id - name - discoveryMode - createdAt additionalProperties: false role: type: string memberCount: type: number required: - organization - role - memberCount additionalProperties: false required: - memberships additionalProperties: false '401': description: Default Response content: application/json: schema: type: object properties: error: type: string message: type: string required: - error additionalProperties: false '500': description: Default Response content: application/json: schema: type: object properties: error: type: string message: type: string required: - error additionalProperties: false summary: List My Organizations components: securitySchemes: bearerAuth: type: http scheme: bearer description: API key authentication. Get your API key from the Duvo dashboard.