components:
  schemas:
    ACULimitResponse:
      properties:
        cycle_acu_limit:
          title: Cycle Acu Limit
          type: integer
        org_id:
          anyOf:
            - type: string
            - type: 'null'
          title: Org Id
        scope:
          enum:
            - enterprise
            - org
            - user
          title: Scope
          type: string
        user_id:
          anyOf:
            - type: string
            - type: 'null'
          title: User Id
      required:
        - cycle_acu_limit
        - scope
      title: ACULimitResponse
      type: object
    ActiveUserMetricsListResponse:
      description: >-
        Validated list of active user metrics with ascending order and no
        overlapping periods.
      items:
        $ref: '#/components/schemas/ActiveUserMetricsResponse'
      title: ActiveUserMetricsListResponse
      type: array
    ActiveUserMetricsResponse:
      description: Single entry for active users over time.
      properties:
        active_users:
          title: Active Users
          type: integer
        end_time:
          title: End Time
          type: integer
        start_time:
          title: Start Time
          type: integer
      required:
        - start_time
        - end_time
        - active_users
      title: ActiveUserMetricsResponse
      type: object
    AcusByProduct:
      properties:
        cascade:
          title: Cascade
          type: number
        devin:
          title: Devin
          type: number
        review:
          anyOf:
            - type: number
            - type: 'null'
          title: Review
        terminal:
          title: Terminal
          type: number
      required:
        - devin
        - cascade
        - terminal
      title: AcusByProduct
      type: object
    ApiKeyResponse:
      description: >-
        Shared response model for API key details (used by both PAT and service
        user endpoints).
      properties:
        api_key_id:
          title: Api Key Id
          type: string
        api_key_name:
          title: Api Key Name
          type: string
        created_at:
          title: Created At
          type: integer
        expires_at:
          anyOf:
            - type: integer
            - type: 'null'
          title: Expires At
        is_active:
          title: Is Active
          type: boolean
        last_used_at:
          anyOf:
            - type: integer
            - type: 'null'
          title: Last Used At
        revoked_at:
          anyOf:
            - type: integer
            - type: 'null'
          title: Revoked At
      required:
        - api_key_id
        - api_key_name
        - created_at
        - expires_at
        - revoked_at
        - last_used_at
        - is_active
      title: ApiKeyResponse
      type: object
    ApiKeyWithTokenResponse:
      description: >-
        Shared response model for API key creation/rotation (includes one-time
        token).
      properties:
        api_key_id:
          title: Api Key Id
          type: string
        api_key_name:
          title: Api Key Name
          type: string
        token:
          description: >-
            The raw API token. This is only shown once at creation/rotation
            time.
          title: Token
          type: string
      required:
        - api_key_id
        - api_key_name
        - token
      title: ApiKeyWithTokenResponse
      type: object
    AttachmentResponse:
      properties:
        attachment_id:
          title: Attachment Id
          type: string
        name:
          title: Name
          type: string
        url:
          title: Url
          type: string
      required:
        - attachment_id
        - name
        - url
      title: AttachmentResponse
      type: object
    AuditLogAction:
      enum:
        - login
        - create_org
        - update_org
        - delete_org
        - revoke_all_enterprise_api_keys
        - add_enterprise_member
        - delete_member
        - add_member
        - assign_roles
        - update_role
        - create_role
        - delete_role
        - add_group_membership
        - update_group_membership
        - delete_group_membership
        - create_knowledge
        - edit_knowledge
        - delete_knowledge
        - create_folder
        - update_folder
        - delete_folder
        - create_session
        - sleep_session
        - terminate_session
        - archive_session
        - unarchive_session
        - send_message
        - expose_port
        - create_service_api_key
        - revoke_enterprise_api_key
        - create_gitlab_integration
        - update_gitlab_integration
        - reconnect_gitlab_integration
        - delete_gitlab_integration
        - create_gitlab_app_config
        - delete_gitlab_app_config
        - create_azure_devops_integration
        - reconnect_azure_devops_integration
        - delete_azure_devops_integration
        - remove_repo_from_devin
        - update_enterprise_hypervisor_settings
        - update_enterprise_settings
        - update_webhook_ip_access_list
        - update_org_settings
        - update_code_snippet_telemetry
        - update_local_controls
        - update_local_enterprise_config
        - update_local_org_config
        - ai_guardrail_violation
        - update_ai_guardrail
        - approve_deploy
        - approve_test_app
        - permission_response
        - search_query
        - create_org_api_key
        - create_user_api_key
        - view_org_api_key
        - view_user_api_key
        - create_secret
        - update_secret
        - delete_secret
        - create_playbook
        - update_playbook
        - delete_playbook
        - enable_persona
        - disable_persona
        - delete_persona
        - start_repo_setup
        - delete_repo_setup
        - finish_repo_setup
        - github_integration_deleted
        - create_github_integration
        - update_github_owned_public_repos_in_automations
        - delete_github_integration
        - refresh_github_integration
        - create_bitbucket_integration
        - delete_bitbucket_integration
        - mcp_server_install
        - mcp_server_update
        - mcp_server_enable
        - mcp_server_disable
        - mcp_server_delete
        - mcp_server_secret_link
        - mcp_server_secret_unlink
        - mcp_server_oauth_initiate
        - mcp_server_oauth_tokens_granted
        - mcp_server_oauth_tokens_revoked
        - mcp_enterprise_server_targets_update
        - mcp_enterprise_server_credential_set
        - mcp_enterprise_server_credential_delete
        - customer_network_ca_bundle_set
        - customer_network_ca_bundle_delete
        - create_mcp_validation_session
        - mcp_server_tools_list_secrets_resolved
        - set_account_managed_plugins
        - set_org_managed_plugins
        - set_user_managed_plugins
        - set_managed_plugin_bundle
        - delete_managed_plugin_bundle
        - secure_mode_profile_created
        - secure_mode_profile_updated
        - secure_mode_binding_created
        - secure_mode_binding_updated
        - secure_mode_binding_deleted
        - create_service_user
        - update_service_user
        - delete_service_user
        - assign_service_user_role
        - remove_service_user_role
        - create_git_permission
        - delete_git_permission
        - update_git_permission
        - create_maintenance_task
        - update_maintenance_task
        - delete_maintenance_task
        - create_snapshot_script
        - schedule_snapshot_script
        - execute_snapshot_script
        - update_repo_setup_steering_knowledge
        - delete_repo_setup_steering_knowledge
        - set_org_group_limits
        - create_join_request
        - approve_join_request
        - automatic_join_event
        - reject_join_request
        - create_seat_request
        - approve_seat_request
        - decline_seat_request
        - create_service_user_api_key
        - revoke_service_user_api_key
        - rotate_service_user_api_key
        - create_pat
        - revoke_pat
        - rotate_pat
        - update_pat_policy
        - bulk_revoke_pats
        - policy_revoke_pat
        - create_blueprint
        - create_blueprint_version
        - rollback_blueprint_version
        - delete_blueprint
        - reorder_blueprints
        - create_enterprise_blueprint
        - create_enterprise_blueprint_version
        - rollback_enterprise_blueprint_version
        - delete_enterprise_blueprint
        - accept_skill_pr
        - trigger_blueprint_build
        - cancel_blueprint_build
        - upload_blueprint_file
        - delete_blueprint_file
        - sync_repo_blueprints
        - detach_blueprint_from_git
        - create_blueprint_pr
        - pin_build
        - unpin_build
        - delete_build
        - trigger_automation
        - create_automation
        - update_automation
        - delete_automation
        - reset_automation_monitor
        - update_automation_scratch
        - regenerate_automation_webhook_secret
        - acknowledge_session_hard_cap
        - create_audit_log_export
        - update_audit_log_export
        - delete_audit_log_export
        - start_code_scan
        - create_outpost_pool
        - update_outpost_pool
        - delete_outpost_pool
        - claim_outpost_session
        - release_outpost_session
        - update_review_comment_language
      title: AuditLogAction
      type: string
    AuditLogResponse:
      properties:
        action:
          $ref: '#/components/schemas/AuditLogAction'
        audit_log_id:
          title: Audit Log Id
          type: string
        created_at:
          title: Created At
          type: integer
        data:
          additionalProperties: true
          title: Data
          type: object
        org_id:
          anyOf:
            - type: string
            - type: 'null'
          title: Org Id
        service_user_id:
          anyOf:
            - type: string
            - type: 'null'
          title: Service User Id
        service_user_name:
          anyOf:
            - type: string
            - type: 'null'
          title: Service User Name
        user_email:
          anyOf:
            - type: string
            - type: 'null'
          title: User Email
        user_id:
          anyOf:
            - type: string
            - type: 'null'
          title: User Id
      required:
        - audit_log_id
        - action
        - created_at
        - org_id
        - user_id
        - user_email
        - service_user_id
        - service_user_name
        - data
      title: AuditLogResponse
      type: object
    Blueprint:
      description: |-
        Public ``Blueprint`` resource shape.

        Note: the ``type`` enum may grow in the future; clients MUST gracefully
        handle unknown values.  YAML contents are fetched separately via
        ``GET /blueprints/{id}/contents``.
      properties:
        blueprint_id:
          title: Blueprint Id
          type: string
        created_at:
          title: Created At
          type: integer
        repo_name:
          anyOf:
            - type: string
            - type: 'null'
          title: Repo Name
        type:
          enum:
            - enterprise
            - org
            - repo
          title: Type
          type: string
        updated_at:
          title: Updated At
          type: integer
      required:
        - blueprint_id
        - type
        - repo_name
        - created_at
        - updated_at
      title: Blueprint
      type: object
    BlueprintFile:
      description: Public ``BlueprintFile`` resource shape.
      properties:
        blueprint_id:
          title: Blueprint Id
          type: string
        created_at:
          title: Created At
          type: integer
        env_var_name:
          title: Env Var Name
          type: string
        file_id:
          title: File Id
          type: string
        name:
          title: Name
          type: string
        size_bytes:
          title: Size Bytes
          type: integer
        updated_at:
          title: Updated At
          type: integer
      required:
        - file_id
        - blueprint_id
        - name
        - env_var_name
        - size_bytes
        - created_at
        - updated_at
      title: BlueprintFile
      type: object
    BlueprintFileList:
      description: List envelope for blueprint files.
      properties:
        data:
          items:
            $ref: '#/components/schemas/BlueprintFile'
          title: Data
          type: array
      required:
        - data
      title: BlueprintFileList
      type: object
    BlueprintList:
      description: List envelope for blueprints (returned in execution order).
      properties:
        data:
          items:
            $ref: '#/components/schemas/Blueprint'
          title: Data
          type: array
      required:
        - data
      title: BlueprintList
      type: object
    Body_handle_upload_attachment_v3_organizations__org_id__attachments_post:
      properties:
        file:
          contentMediaType: application/octet-stream
          title: File
          type: string
      required:
        - file
      title: Body_handle_upload_attachment_v3_organizations__org_id__attachments_post
      type: object
    Body_upload_enterprise_blueprint_file_endpoint_v3beta1_enterprise_snapshot_setup_blueprints__blueprint_id__files_post:
      properties:
        file:
          contentMediaType: application/octet-stream
          title: File
          type: string
      required:
        - file
      title: >-
        Body_upload_enterprise_blueprint_file_endpoint_v3beta1_enterprise_snapshot_setup_blueprints__blueprint_id__files_post
      type: object
    Body_upload_org_blueprint_file_v3beta1_organizations__org_id__snapshot_setup_blueprints__blueprint_id__files_post:
      properties:
        file:
          contentMediaType: application/octet-stream
          title: File
          type: string
      required:
        - file
      title: >-
        Body_upload_org_blueprint_file_v3beta1_organizations__org_id__snapshot_setup_blueprints__blueprint_id__files_post
      type: object
    Build:
      description: |-
        Public ``Build`` resource shape — opaque "did this succeed yet?" view.

        Per spec, no platform/snapshot/per-job introspection is exposed.  Future
        additions (``triggered_by_repo``, build metadata, etc.) are additive.
      properties:
        build_id:
          title: Build Id
          type: string
        completed_at:
          anyOf:
            - type: integer
            - type: 'null'
          title: Completed At
        created_at:
          title: Created At
          type: integer
        pinned:
          title: Pinned
          type: boolean
        started_at:
          anyOf:
            - type: integer
            - type: 'null'
          title: Started At
        status:
          enum:
            - pending
            - running
            - succeeded
            - failed
            - cancelled
          title: Status
          type: string
        trigger:
          anyOf:
            - enum:
                - manual
                - auto
              type: string
            - type: 'null'
          title: Trigger
        triggered_by_user_id:
          anyOf:
            - type: string
            - type: 'null'
          title: Triggered By User Id
        updated_at:
          title: Updated At
          type: integer
      required:
        - build_id
        - status
        - trigger
        - triggered_by_user_id
        - pinned
        - started_at
        - completed_at
        - created_at
        - updated_at
      title: Build
      type: object
    BulkIndexRepositoriesRequest:
      properties:
        repositories:
          items:
            $ref: '#/components/schemas/RepositoryIndexingItem'
          maxItems: 100
          minItems: 1
          title: Repositories
          type: array
      required:
        - repositories
      title: BulkIndexRepositoriesRequest
      type: object
    CategoryMetrics:
      properties:
        acus:
          title: Acus
          type: number
        category:
          title: Category
          type: string
        sessions_count:
          title: Sessions Count
          type: integer
        subcategories:
          items:
            $ref: '#/components/schemas/SubcategoryMetrics'
          title: Subcategories
          type: array
      required:
        - category
        - sessions_count
        - acus
        - subcategories
      title: CategoryMetrics
      type: object
    CodeScanCreateRequest:
      description: Request body for starting a new code scan.
      properties:
        commit_sha:
          anyOf:
            - type: string
            - type: 'null'
          description: Commit to check out before scanning.
          title: Commit Sha
        host:
          anyOf:
            - type: string
            - type: 'null'
          description: Git host of the repository, if known.
          title: Host
        profile_id:
          anyOf:
            - type: string
            - type: 'null'
          description: Scan profile to apply to the scan.
          title: Profile Id
        repo_name:
          description: Full name of the repository to scan.
          title: Repo Name
          type: string
      required:
        - repo_name
      title: CodeScanCreateRequest
      type: object
    CodeScanFindingResponse:
      description: A single code scan finding.
      properties:
        category:
          anyOf:
            - type: string
            - type: 'null'
          description: Category (rule name) the finding was classified under, if any.
          title: Category
        code_owners:
          description: Code owners associated with the affected code.
          items:
            type: string
          title: Code Owners
          type: array
        created_at:
          description: When the finding was created (unix seconds).
          title: Created At
          type: integer
        description:
          anyOf:
            - type: string
            - type: 'null'
          description: Detailed description of the vulnerability, if any.
          title: Description
        finding_id:
          description: Unique identifier for the finding.
          title: Finding Id
          type: string
        note:
          anyOf:
            - type: string
            - type: 'null'
          description: Additional note attached to the finding, if any.
          title: Note
        orchestrator_session_id:
          anyOf:
            - type: string
            - type: 'null'
          description: >-
            Orchestrator session that ran the scan that produced the finding
            (the scan's Devin session), if any.
          title: Orchestrator Session Id
        pr_url:
          anyOf:
            - type: string
            - type: 'null'
          description: URL of the remediation PR opened for this finding, if any.
          title: Pr Url
        recommendation:
          anyOf:
            - type: string
            - type: 'null'
          description: Suggested remediation for the finding, if any.
          title: Recommendation
        reference_snippets:
          description: Code snippets referenced by the finding as supporting evidence.
          items:
            $ref: '#/components/schemas/CodeScanReferenceSnippetResponse'
          title: Reference Snippets
          type: array
        related_finding_ids:
          description: >-
            Finding IDs of the other links in a realized attack chain. Set only
            on the chain's sink finding.
          items:
            type: string
          title: Related Finding Ids
          type: array
        repo_name:
          description: Repository the finding was reported in.
          title: Repo Name
          type: string
        scan_id:
          description: Identifier of the scan that produced the finding.
          title: Scan Id
          type: string
        session_id:
          anyOf:
            - type: string
            - type: 'null'
          description: Session that remediated the finding (and opened the PR), if any.
          title: Session Id
        severity:
          description: 'Severity of the finding: critical, high, medium, or low.'
          enum:
            - critical
            - high
            - medium
            - low
          title: Severity
          type: string
        status:
          description: 'Finding status: open, dismissed, or resolved.'
          enum:
            - open
            - dismissed
            - resolved
          title: Status
          type: string
        title:
          anyOf:
            - type: string
            - type: 'null'
          description: Title of the finding, if any.
          title: Title
      required:
        - finding_id
        - title
        - description
        - recommendation
        - note
        - code_owners
        - reference_snippets
        - severity
        - category
        - repo_name
        - pr_url
        - scan_id
        - session_id
        - orchestrator_session_id
        - status
        - created_at
      title: CodeScanFindingResponse
      type: object
    CodeScanMetricsResponse:
      description: |-
        Response model for code scan metrics.

        All metrics are scoped to code scans created within the specified time
        range: findings and remediation PRs are attributed to the scan that
        produced them.
      properties:
        avg_pr_open_duration_seconds:
          anyOf:
            - type: number
            - type: 'null'
          description: >-
            Average time a PR is (or was) open, in seconds: creation to
            merge/close for finished PRs, creation to now for open PRs. Null
            when no PRs were created.
          title: Avg Pr Open Duration Seconds
        avg_pr_time_to_merge_seconds:
          anyOf:
            - type: number
            - type: 'null'
          description: >-
            Average time from PR creation to merge, in seconds. Null when no PRs
            have been merged.
          title: Avg Pr Time To Merge Seconds
        open_critical_findings_count:
          description: Number of open findings with critical severity.
          title: Open Critical Findings Count
          type: integer
        open_high_findings_count:
          description: Number of open findings with high severity.
          title: Open High Findings Count
          type: integer
        open_low_findings_count:
          description: Number of open findings with low severity.
          title: Open Low Findings Count
          type: integer
        open_medium_findings_count:
          description: Number of open findings with medium severity.
          title: Open Medium Findings Count
          type: integer
        prs_closed_count:
          description: Number of remediation PRs closed without being merged.
          title: Prs Closed Count
          type: integer
        prs_created_count:
          description: Number of PRs created by the scans' remediation sessions.
          title: Prs Created Count
          type: integer
        prs_merged_count:
          description: Number of remediation PRs merged.
          title: Prs Merged Count
          type: integer
        prs_open_count:
          description: Number of remediation PRs currently in the open state.
          title: Prs Open Count
          type: integer
        repos_scanned_count:
          description: Number of distinct repositories scanned.
          title: Repos Scanned Count
          type: integer
        scans_count:
          description: Number of code scans created within the specified time range.
          title: Scans Count
          type: integer
      required:
        - scans_count
        - repos_scanned_count
        - prs_created_count
        - prs_open_count
        - prs_merged_count
        - prs_closed_count
        - avg_pr_time_to_merge_seconds
        - avg_pr_open_duration_seconds
        - open_critical_findings_count
        - open_high_findings_count
        - open_medium_findings_count
        - open_low_findings_count
      title: CodeScanMetricsResponse
      type: object
    CodeScanProfileDetailResponse:
      description: Full details of a code scan profile, including its guidance.
      properties:
        created_at:
          description: When the profile was created (unix seconds).
          title: Created At
          type: integer
        description:
          anyOf:
            - type: string
            - type: 'null'
          description: Description of the profile, if any.
          title: Description
        exclude_globs:
          anyOf:
            - items:
                type: string
              type: array
            - type: 'null'
          description: Glob patterns of files to exclude from the scan, if any.
          title: Exclude Globs
        include_globs:
          anyOf:
            - items:
                type: string
              type: array
            - type: 'null'
          description: Glob patterns of files to include in the scan, if any.
          title: Include Globs
        ingestion_source_guidance:
          anyOf:
            - type: string
            - type: 'null'
          description: Guidance describing the ingestion source, if any.
          title: Ingestion Source Guidance
        investigation_guidance:
          anyOf:
            - type: string
            - type: 'null'
          description: Guidance for the investigation phase, if any.
          title: Investigation Guidance
        mode:
          description: 'Profile mode: discover or ingest.'
          enum:
            - discover
            - ingest
          title: Mode
          type: string
        name:
          description: Name of the profile.
          title: Name
          type: string
        org_id:
          anyOf:
            - type: string
            - type: 'null'
          description: >-
            Organization that owns the profile. Null when the profile is shared
            account-wide.
          title: Org Id
        post_ingestion_guidance:
          anyOf:
            - type: string
            - type: 'null'
          description: Guidance for the post-ingestion phase, if any.
          title: Post Ingestion Guidance
        profile_id:
          description: Unique identifier for the profile.
          title: Profile Id
          type: string
        remediation_guidance:
          anyOf:
            - type: string
            - type: 'null'
          description: Guidance for the remediation phase, if any.
          title: Remediation Guidance
        report_guidance:
          anyOf:
            - type: string
            - type: 'null'
          description: Guidance for the report phase, if any.
          title: Report Guidance
        scan_type:
          description: Type of scan the profile configures.
          enum:
            - security
            - performance
            - db-queries
            - test-coverage
            - dead-code
            - general
          title: Scan Type
          type: string
        threat_model_guidance:
          anyOf:
            - type: string
            - type: 'null'
          description: Guidance describing the threat model, if any.
          title: Threat Model Guidance
        triage_guidance:
          anyOf:
            - type: string
            - type: 'null'
          description: Guidance for the triage phase, if any.
          title: Triage Guidance
        validation_guidance:
          anyOf:
            - type: string
            - type: 'null'
          description: Guidance for the validation phase, if any.
          title: Validation Guidance
        visibility:
          description: >-
            Whether the profile is owned by a single organization or shared
            across the whole account.
          enum:
            - org
            - account
          title: Visibility
          type: string
      required:
        - profile_id
        - name
        - description
        - visibility
        - org_id
        - scan_type
        - mode
        - include_globs
        - exclude_globs
        - threat_model_guidance
        - investigation_guidance
        - triage_guidance
        - validation_guidance
        - report_guidance
        - remediation_guidance
        - ingestion_source_guidance
        - post_ingestion_guidance
        - created_at
      title: CodeScanProfileDetailResponse
      type: object
    CodeScanProfileResponse:
      description: Summary of the profile a scan ran under.
      properties:
        name:
          description: Name of the profile.
          title: Name
          type: string
        profile_id:
          description: Unique identifier for the profile.
          title: Profile Id
          type: string
      required:
        - profile_id
        - name
      title: CodeScanProfileResponse
      type: object
    CodeScanProfileSummaryResponse:
      description: Summary of a code scan profile, without its guidance.
      properties:
        created_at:
          description: When the profile was created (unix seconds).
          title: Created At
          type: integer
        description:
          anyOf:
            - type: string
            - type: 'null'
          description: Description of the profile, if any.
          title: Description
        mode:
          description: 'Profile mode: discover or ingest.'
          enum:
            - discover
            - ingest
          title: Mode
          type: string
        name:
          description: Name of the profile.
          title: Name
          type: string
        org_id:
          anyOf:
            - type: string
            - type: 'null'
          description: >-
            Organization that owns the profile. Null when the profile is shared
            account-wide.
          title: Org Id
        profile_id:
          description: Unique identifier for the profile.
          title: Profile Id
          type: string
        scan_type:
          description: Type of scan the profile configures.
          enum:
            - security
            - performance
            - db-queries
            - test-coverage
            - dead-code
            - general
          title: Scan Type
          type: string
        visibility:
          description: >-
            Whether the profile is owned by a single organization or shared
            across the whole account.
          enum:
            - org
            - account
          title: Visibility
          type: string
      required:
        - profile_id
        - name
        - description
        - visibility
        - org_id
        - scan_type
        - mode
        - created_at
      title: CodeScanProfileSummaryResponse
      type: object
    CodeScanReferenceSnippetResponse:
      description: A code snippet referenced by a finding as supporting evidence.
      properties:
        code:
          anyOf:
            - type: string
            - type: 'null'
          description: The referenced source code, if captured.
          title: Code
        commentary:
          description: Explanation of why this snippet is relevant to the finding.
          title: Commentary
          type: string
        end_line:
          description: Last line of the referenced range.
          title: End Line
          type: integer
        file_path:
          description: Path to the referenced file.
          title: File Path
          type: string
        start_line:
          description: First line of the referenced range.
          title: Start Line
          type: integer
      required:
        - file_path
        - start_line
        - end_line
        - commentary
      title: CodeScanReferenceSnippetResponse
      type: object
    CodeScanResponse:
      description: A single code scan.
      properties:
        created_at:
          description: When the scan was created (unix seconds).
          title: Created At
          type: integer
        host:
          anyOf:
            - type: string
            - type: 'null'
          description: Git host of the repository, if known.
          title: Host
        org_id:
          description: Organization the scan belongs to.
          title: Org Id
          type: string
        profile:
          anyOf:
            - $ref: '#/components/schemas/CodeScanProfileResponse'
            - type: 'null'
          description: Profile the scan ran under, if any.
        repo_name:
          description: >-
            Primary repository of the scan. Multi-repo scans cover additional
            repositories not listed here.
          title: Repo Name
          type: string
        scan_id:
          description: Unique identifier for the scan.
          title: Scan Id
          type: string
        status:
          description: >-
            Scan status: waiting, pending, running, awaiting_user_input,
            completed, failed, or cancelled.
          enum:
            - waiting
            - pending
            - running
            - awaiting_user_input
            - completed
            - failed
            - cancelled
          title: Status
          type: string
      required:
        - scan_id
        - org_id
        - repo_name
        - host
        - status
        - profile
        - created_at
      title: CodeScanResponse
      type: object
    ConsumptionByDateResponse:
      properties:
        acus:
          title: Acus
          type: number
        acus_by_product:
          $ref: '#/components/schemas/AcusByProduct'
        date:
          title: Date
          type: integer
      required:
        - date
        - acus
        - acus_by_product
      title: ConsumptionByDateResponse
      type: object
    ConsumptionCycle:
      properties:
        after:
          title: After
          type: integer
        before:
          title: Before
          type: integer
      required:
        - before
        - after
      title: ConsumptionCycle
      type: object
    ConsumptionResponse:
      properties:
        consumption_by_date:
          items:
            $ref: '#/components/schemas/ConsumptionByDateResponse'
          title: Consumption By Date
          type: array
        total_acus:
          title: Total Acus
          type: number
      required:
        - total_acus
        - consumption_by_date
      title: ConsumptionResponse
      type: object
    CreateApiKeyRequest:
      properties:
        expires_at:
          anyOf:
            - type: integer
            - type: 'null'
          description: >-
            Optional expiration as a UNIX timestamp in seconds. Must be in the
            future if provided.
          title: Expires At
        name:
          maxLength: 256
          minLength: 1
          title: Name
          type: string
      required:
        - name
      title: CreateApiKeyRequest
      type: object
    CreateEnterpriseBlueprintBody:
      properties:
        contents:
          anyOf:
            - type: string
            - type: 'null'
          description: YAML body for the new blueprint. Omit to create an empty blueprint.
          title: Contents
      title: CreateEnterpriseBlueprintBody
      type: object
    CreateOrgBlueprintBody:
      properties:
        contents:
          anyOf:
            - type: string
            - type: 'null'
          description: Optional initial YAML body for the blueprint.
          title: Contents
        repo_name:
          anyOf:
            - type: string
            - type: 'null'
          description: >-
            If set, creates a repo-tier blueprint for that repository. If
            omitted, creates an org-wide (org-tier) blueprint.
          title: Repo Name
      title: CreateOrgBlueprintBody
      type: object
    CursorPaginationParams:
      properties:
        after:
          anyOf:
            - type: string
            - type: 'null'
          title: After
        first:
          default: 100
          maximum: 200
          minimum: 1
          title: First
          type: integer
      title: CursorPaginationParams
      type: object
    DefaultTagRequest:
      properties:
        tag:
          title: Tag
          type: string
      required:
        - tag
      title: DefaultTagRequest
      type: object
    DefaultTagResponse:
      properties:
        default_tag:
          anyOf:
            - type: string
            - type: 'null'
          title: Default Tag
      required:
        - default_tag
      title: DefaultTagResponse
      type: object
    DevinBrainUserSelf:
      description: Identity information for an authenticated Devin brain session.
      properties:
        creator_service_user_id:
          anyOf:
            - type: string
            - type: 'null'
          title: Creator Service User Id
        devin_id:
          title: Devin Id
          type: string
        org_id:
          title: Org Id
          type: string
        principal_type:
          const: devin_brain
          title: Principal Type
          type: string
        user_id:
          title: User Id
          type: string
      required:
        - principal_type
        - devin_id
        - org_id
        - user_id
      title: DevinBrainUserSelf
      type: object
    EnterpriseUser:
      properties:
        email:
          anyOf:
            - type: string
            - type: 'null'
          title: Email
        enterprise_joined_at:
          anyOf:
            - type: integer
            - type: 'null'
          description: When the user was added to this enterprise.
          title: Enterprise Joined At
        name:
          anyOf:
            - type: string
            - type: 'null'
          title: Name
        role_assignments:
          items:
            $ref: '#/components/schemas/RoleAssignment'
          title: Role Assignments
          type: array
        user_id:
          title: User Id
          type: string
      required:
        - user_id
        - email
        - name
        - role_assignments
      title: EnterpriseUser
      type: object
    EnterpriseUserWithIdpRoles:
      properties:
        email:
          anyOf:
            - type: string
            - type: 'null'
          title: Email
        enterprise_joined_at:
          anyOf:
            - type: integer
            - type: 'null'
          description: When the user was added to this enterprise.
          title: Enterprise Joined At
        idp_role_assignments:
          items:
            $ref: '#/components/schemas/IdpRoleAssignment'
          title: Idp Role Assignments
          type: array
        name:
          anyOf:
            - type: string
            - type: 'null'
          title: Name
        role_assignments:
          items:
            $ref: '#/components/schemas/RoleAssignment'
          title: Role Assignments
          type: array
        user_id:
          title: User Id
          type: string
      required:
        - user_id
        - email
        - name
        - role_assignments
      title: EnterpriseUserWithIdpRoles
      type: object
    FolderSummary:
      description: One folder in the knowledge folder tree.
      properties:
        folder_id:
          title: Folder Id
          type: string
        name:
          title: Name
          type: string
        note_count:
          title: Note Count
          type: integer
        parent_folder_id:
          anyOf:
            - type: string
            - type: 'null'
          title: Parent Folder Id
        path:
          title: Path
          type: string
      required:
        - folder_id
        - name
        - path
        - note_count
      title: FolderSummary
      type: object
    FolderTreeResponse:
      description: Response for the folder-structure endpoint.
      properties:
        folders:
          items:
            $ref: '#/components/schemas/FolderSummary'
          title: Folders
          type: array
        root_note_count:
          title: Root Note Count
          type: integer
      required:
        - folders
        - root_note_count
      title: FolderTreeResponse
      type: object
    GitConnectionRepositoryResponse:
      properties:
        git_connection_host:
          title: Git Connection Host
          type: string
        git_connection_id:
          title: Git Connection Id
          type: string
        last_updated_at:
          anyOf:
            - type: integer
            - type: 'null'
          title: Last Updated At
        provider_repository_id:
          title: Provider Repository Id
          type: string
        repo_description:
          anyOf:
            - type: string
            - type: 'null'
          title: Repo Description
        repo_language:
          anyOf:
            - type: string
            - type: 'null'
          title: Repo Language
        repo_name:
          title: Repo Name
          type: string
        repo_path:
          title: Repo Path
          type: string
      required:
        - provider_repository_id
        - git_connection_id
        - git_connection_host
        - repo_name
        - repo_path
        - repo_description
        - last_updated_at
        - repo_language
      title: GitConnectionRepositoryResponse
      type: object
    GitConnectionResponse:
      properties:
        created_at:
          title: Created At
          type: integer
        git_connection_id:
          title: Git Connection Id
          type: string
        git_provider_type:
          enum:
            - github_token
            - github_individual_token
            - github_app
            - gitlab_token
            - gitlab_oauth
            - azure_devops_oauth
            - bitbucket_oauth
            - bitbucket_token
          title: Git Provider Type
          type: string
        host:
          title: Host
          type: string
        name:
          anyOf:
            - type: string
            - type: 'null'
          title: Name
      required:
        - git_connection_id
        - git_provider_type
        - name
        - host
        - created_at
      title: GitConnectionResponse
      type: object
    GitPermissionBulkCreateRequest:
      properties:
        permissions:
          items:
            $ref: '#/components/schemas/GitPermissionCreateRequest'
          maxItems: 200
          title: Permissions
          type: array
      required:
        - permissions
      title: GitPermissionBulkCreateRequest
      type: object
    GitPermissionCreateRequest:
      properties:
        git_connection_id:
          title: Git Connection Id
          type: string
        group_prefix:
          anyOf:
            - type: string
            - type: 'null'
          title: Group Prefix
        prefix_path:
          anyOf:
            - type: string
            - type: 'null'
          title: Prefix Path
        read_only:
          default: false
          title: Read Only
          type: boolean
        repo_path:
          anyOf:
            - type: string
            - type: 'null'
          title: Repo Path
      required:
        - git_connection_id
      title: GitPermissionCreateRequest
      type: object
    GitPermissionResponse:
      properties:
        created_at:
          anyOf:
            - type: integer
            - type: 'null'
          title: Created At
        git_connection_id:
          title: Git Connection Id
          type: string
        git_permission_id:
          title: Git Permission Id
          type: string
        group_prefix:
          anyOf:
            - type: string
            - type: 'null'
          title: Group Prefix
        prefix_path:
          anyOf:
            - type: string
            - type: 'null'
          title: Prefix Path
        read_only:
          default: false
          title: Read Only
          type: boolean
        repo_path:
          anyOf:
            - type: string
            - type: 'null'
          title: Repo Path
      required:
        - git_permission_id
        - git_connection_id
      title: GitPermissionResponse
      type: object
    GitPermissionUpdateRequest:
      properties:
        read_only:
          anyOf:
            - type: boolean
            - type: 'null'
          title: Read Only
      title: GitPermissionUpdateRequest
      type: object
    GuardrailViolationResponse:
      properties:
        action_taken:
          title: Action Taken
          type: string
        confidence_score:
          title: Confidence Score
          type: number
        created_at:
          title: Created At
          type: integer
        event_id:
          title: Event Id
          type: string
        guardrail_id:
          title: Guardrail Id
          type: string
        guardrail_name:
          title: Guardrail Name
          type: string
        org_id:
          title: Org Id
          type: string
        reasoning:
          title: Reasoning
          type: string
        session_id:
          anyOf:
            - type: string
            - type: 'null'
          title: Session Id
        user_message:
          title: User Message
          type: string
        violation_id:
          title: Violation Id
          type: integer
      required:
        - violation_id
        - org_id
        - session_id
        - event_id
        - guardrail_id
        - guardrail_name
        - confidence_score
        - action_taken
        - reasoning
        - user_message
        - created_at
      title: GuardrailViolationResponse
      type: object
    HypervisorResponse:
      properties:
        cloud_provider_instance_id:
          anyOf:
            - type: string
            - type: 'null'
          title: Cloud Provider Instance Id
        created_at:
          anyOf:
            - type: integer
            - type: 'null'
          title: Created At
        hypervisor_id:
          title: Hypervisor Id
          type: string
        last_heartbeat:
          anyOf:
            - type: integer
            - type: 'null'
          title: Last Heartbeat
        status:
          title: Status
          type: string
        utilization_percentage:
          title: Utilization Percentage
          type: number
      required:
        - hypervisor_id
        - status
        - utilization_percentage
        - created_at
        - last_heartbeat
        - cloud_provider_instance_id
      title: HypervisorResponse
      type: object
    IdpGroup:
      properties:
        idp_group_name:
          title: Idp Group Name
          type: string
        role_assignments:
          items:
            $ref: '#/components/schemas/RoleAssignment'
          title: Role Assignments
          type: array
      required:
        - idp_group_name
        - role_assignments
      title: IdpGroup
      type: object
    IdpGroupResponse:
      properties:
        idp_group_name:
          title: Idp Group Name
          type: string
      required:
        - idp_group_name
      title: IdpGroupResponse
      type: object
    IdpGroupUpdateRoleRequest:
      properties:
        role_id:
          title: Role Id
          type: string
      required:
        - role_id
      title: IdpGroupUpdateRoleRequest
      type: object
    IdpGroupUser:
      description: A user whose membership is derived from IDP group assignments.
      properties:
        email:
          anyOf:
            - type: string
            - type: 'null'
          title: Email
        idp_role_assignments:
          items:
            $ref: '#/components/schemas/IdpRoleAssignment'
          title: Idp Role Assignments
          type: array
        name:
          anyOf:
            - type: string
            - type: 'null'
          title: Name
        user_id:
          title: User Id
          type: string
      required:
        - user_id
        - email
        - name
        - idp_role_assignments
      title: IdpGroupUser
      type: object
    IdpGroupsBulkCreateRequest:
      properties:
        idp_group_names:
          items:
            type: string
          maxItems: 100
          minItems: 1
          title: Idp Group Names
          type: array
      required:
        - idp_group_names
      title: IdpGroupsBulkCreateRequest
      type: object
    IdpRoleAssignment:
      description: A role assignment inherited via IDP group membership.
      properties:
        idp_group_name:
          title: Idp Group Name
          type: string
        org_id:
          anyOf:
            - type: string
            - type: 'null'
          title: Org Id
        role:
          $ref: '#/components/schemas/Role'
      required:
        - role
        - idp_group_name
      title: IdpRoleAssignment
      type: object
    IndexRepositoryRequest:
      properties:
        branch_names:
          items:
            type: string
          title: Branch Names
          type: array
      title: IndexRepositoryRequest
      type: object
    IpAccessListAddRequest:
      properties:
        ip_ranges:
          items:
            type: string
          title: Ip Ranges
          type: array
      required:
        - ip_ranges
      title: IpAccessListAddRequest
      type: object
    IpAccessListReplaceRequest:
      properties:
        ip_ranges:
          items:
            type: string
          title: Ip Ranges
          type: array
      required:
        - ip_ranges
      title: IpAccessListReplaceRequest
      type: object
    IpAccessListResponse:
      properties:
        ip_ranges:
          items:
            type: string
          title: Ip Ranges
          type: array
      required:
        - ip_ranges
      title: IpAccessListResponse
      type: object
    KnowledgeNoteCreateRequest:
      properties:
        body:
          title: Body
          type: string
        folder_id:
          anyOf:
            - type: string
            - type: 'null'
          title: Folder Id
        is_enabled:
          anyOf:
            - type: boolean
            - type: 'null'
          title: Is Enabled
        name:
          title: Name
          type: string
        pinned_repo:
          anyOf:
            - type: string
            - type: 'null'
          title: Pinned Repo
        trigger:
          title: Trigger
          type: string
      required:
        - name
        - body
        - trigger
      title: KnowledgeNoteCreateRequest
      type: object
    KnowledgeNoteResponse:
      properties:
        access_type:
          enum:
            - enterprise
            - org
          title: Access Type
          type: string
        body:
          title: Body
          type: string
        created_at:
          title: Created At
          type: integer
        folder_id:
          anyOf:
            - type: string
            - type: 'null'
          title: Folder Id
        folder_path:
          title: Folder Path
          type: string
        is_enabled:
          title: Is Enabled
          type: boolean
        macro:
          anyOf:
            - type: string
            - type: 'null'
          title: Macro
        name:
          title: Name
          type: string
        note_id:
          title: Note Id
          type: string
        org_id:
          anyOf:
            - type: string
            - type: 'null'
          title: Org Id
        pinned_repo:
          anyOf:
            - type: string
            - type: 'null'
          title: Pinned Repo
        trigger:
          title: Trigger
          type: string
        updated_at:
          title: Updated At
          type: integer
      required:
        - note_id
        - folder_id
        - folder_path
        - name
        - body
        - trigger
        - is_enabled
        - created_at
        - updated_at
        - access_type
        - org_id
        - macro
        - pinned_repo
      title: KnowledgeNoteResponse
      type: object
    OrgGroupConfig:
      properties:
        max_cycle_acus:
          anyOf:
            - type: integer
            - type: 'null'
          title: Max Cycle Acus
        org_ids:
          items:
            type: string
          title: Org Ids
          type: array
          uniqueItems: true
      required:
        - org_ids
      title: OrgGroupConfig
      type: object
    OrgGroupsConfig:
      description: Configuration mapping group names to their settings.
      properties:
        groups:
          additionalProperties:
            $ref: '#/components/schemas/OrgGroupConfig'
          title: Groups
          type: object
      required:
        - groups
      title: OrgGroupsConfig
      type: object
    OrganizationCreateRequest:
      properties:
        max_cycle_acu_limit:
          anyOf:
            - type: integer
            - type: 'null'
          title: Max Cycle Acu Limit
        max_session_acu_limit:
          anyOf:
            - type: integer
            - type: 'null'
          title: Max Session Acu Limit
        name:
          title: Name
          type: string
      required:
        - name
      title: OrganizationCreateRequest
      type: object
    OrganizationResponse:
      properties:
        created_at:
          title: Created At
          type: integer
        max_cycle_acu_limit:
          anyOf:
            - type: integer
            - type: 'null'
          title: Max Cycle Acu Limit
        max_session_acu_limit:
          anyOf:
            - type: integer
            - type: 'null'
          title: Max Session Acu Limit
        name:
          title: Name
          type: string
        org_id:
          title: Org Id
          type: string
        updated_at:
          title: Updated At
          type: integer
      required:
        - org_id
        - name
        - created_at
        - updated_at
        - max_session_acu_limit
        - max_cycle_acu_limit
      title: OrganizationResponse
      type: object
    OrganizationUpdateRequest:
      properties:
        max_cycle_acu_limit:
          anyOf:
            - type: integer
            - type: 'null'
          title: Max Cycle Acu Limit
        max_session_acu_limit:
          anyOf:
            - type: integer
            - type: 'null'
          title: Max Session Acu Limit
        name:
          anyOf:
            - type: string
            - type: 'null'
          title: Name
      title: OrganizationUpdateRequest
      type: object
    PaginatedResponse_ACULimitResponse_:
      properties:
        end_cursor:
          anyOf:
            - type: string
            - type: 'null'
          description: Cursor to fetch the next page, or None if this is the last page.
          title: End Cursor
        has_next_page:
          default: false
          description: Whether there are more items available after this page.
          title: Has Next Page
          type: boolean
        items:
          items:
            $ref: '#/components/schemas/ACULimitResponse'
          title: Items
          type: array
        total:
          anyOf:
            - type: integer
            - type: 'null'
          description: Optional total count (can be omitted for performance).
          title: Total
      required:
        - items
      title: PaginatedResponse[ACULimitResponse]
      type: object
    PaginatedResponse_ApiKeyResponse_:
      properties:
        end_cursor:
          anyOf:
            - type: string
            - type: 'null'
          description: Cursor to fetch the next page, or None if this is the last page.
          title: End Cursor
        has_next_page:
          default: false
          description: Whether there are more items available after this page.
          title: Has Next Page
          type: boolean
        items:
          items:
            $ref: '#/components/schemas/ApiKeyResponse'
          title: Items
          type: array
        total:
          anyOf:
            - type: integer
            - type: 'null'
          description: Optional total count (can be omitted for performance).
          title: Total
      required:
        - items
      title: PaginatedResponse[ApiKeyResponse]
      type: object
    PaginatedResponse_AuditLogResponse_:
      properties:
        end_cursor:
          anyOf:
            - type: string
            - type: 'null'
          description: Cursor to fetch the next page, or None if this is the last page.
          title: End Cursor
        has_next_page:
          default: false
          description: Whether there are more items available after this page.
          title: Has Next Page
          type: boolean
        items:
          items:
            $ref: '#/components/schemas/AuditLogResponse'
          title: Items
          type: array
        total:
          anyOf:
            - type: integer
            - type: 'null'
          description: Optional total count (can be omitted for performance).
          title: Total
      required:
        - items
      title: PaginatedResponse[AuditLogResponse]
      type: object
    PaginatedResponse_Build_:
      properties:
        end_cursor:
          anyOf:
            - type: string
            - type: 'null'
          description: Cursor to fetch the next page, or None if this is the last page.
          title: End Cursor
        has_next_page:
          default: false
          description: Whether there are more items available after this page.
          title: Has Next Page
          type: boolean
        items:
          items:
            $ref: '#/components/schemas/Build'
          title: Items
          type: array
        total:
          anyOf:
            - type: integer
            - type: 'null'
          description: Optional total count (can be omitted for performance).
          title: Total
      required:
        - items
      title: PaginatedResponse[Build]
      type: object
    PaginatedResponse_CodeScanFindingResponse_:
      properties:
        end_cursor:
          anyOf:
            - type: string
            - type: 'null'
          description: Cursor to fetch the next page, or None if this is the last page.
          title: End Cursor
        has_next_page:
          default: false
          description: Whether there are more items available after this page.
          title: Has Next Page
          type: boolean
        items:
          items:
            $ref: '#/components/schemas/CodeScanFindingResponse'
          title: Items
          type: array
        total:
          anyOf:
            - type: integer
            - type: 'null'
          description: Optional total count (can be omitted for performance).
          title: Total
      required:
        - items
      title: PaginatedResponse[CodeScanFindingResponse]
      type: object
    PaginatedResponse_CodeScanProfileSummaryResponse_:
      properties:
        end_cursor:
          anyOf:
            - type: string
            - type: 'null'
          description: Cursor to fetch the next page, or None if this is the last page.
          title: End Cursor
        has_next_page:
          default: false
          description: Whether there are more items available after this page.
          title: Has Next Page
          type: boolean
        items:
          items:
            $ref: '#/components/schemas/CodeScanProfileSummaryResponse'
          title: Items
          type: array
        total:
          anyOf:
            - type: integer
            - type: 'null'
          description: Optional total count (can be omitted for performance).
          title: Total
      required:
        - items
      title: PaginatedResponse[CodeScanProfileSummaryResponse]
      type: object
    PaginatedResponse_CodeScanResponse_:
      properties:
        end_cursor:
          anyOf:
            - type: string
            - type: 'null'
          description: Cursor to fetch the next page, or None if this is the last page.
          title: End Cursor
        has_next_page:
          default: false
          description: Whether there are more items available after this page.
          title: Has Next Page
          type: boolean
        items:
          items:
            $ref: '#/components/schemas/CodeScanResponse'
          title: Items
          type: array
        total:
          anyOf:
            - type: integer
            - type: 'null'
          description: Optional total count (can be omitted for performance).
          title: Total
      required:
        - items
      title: PaginatedResponse[CodeScanResponse]
      type: object
    PaginatedResponse_ConsumptionCycle_:
      properties:
        end_cursor:
          anyOf:
            - type: string
            - type: 'null'
          description: Cursor to fetch the next page, or None if this is the last page.
          title: End Cursor
        has_next_page:
          default: false
          description: Whether there are more items available after this page.
          title: Has Next Page
          type: boolean
        items:
          items:
            $ref: '#/components/schemas/ConsumptionCycle'
          title: Items
          type: array
        total:
          anyOf:
            - type: integer
            - type: 'null'
          description: Optional total count (can be omitted for performance).
          title: Total
      required:
        - items
      title: PaginatedResponse[ConsumptionCycle]
      type: object
    PaginatedResponse_EnterpriseUser_:
      properties:
        end_cursor:
          anyOf:
            - type: string
            - type: 'null'
          description: Cursor to fetch the next page, or None if this is the last page.
          title: End Cursor
        has_next_page:
          default: false
          description: Whether there are more items available after this page.
          title: Has Next Page
          type: boolean
        items:
          items:
            $ref: '#/components/schemas/EnterpriseUser'
          title: Items
          type: array
        total:
          anyOf:
            - type: integer
            - type: 'null'
          description: Optional total count (can be omitted for performance).
          title: Total
      required:
        - items
      title: PaginatedResponse[EnterpriseUser]
      type: object
    PaginatedResponse_GitConnectionRepositoryResponse_:
      properties:
        end_cursor:
          anyOf:
            - type: string
            - type: 'null'
          description: Cursor to fetch the next page, or None if this is the last page.
          title: End Cursor
        has_next_page:
          default: false
          description: Whether there are more items available after this page.
          title: Has Next Page
          type: boolean
        items:
          items:
            $ref: '#/components/schemas/GitConnectionRepositoryResponse'
          title: Items
          type: array
        total:
          anyOf:
            - type: integer
            - type: 'null'
          description: Optional total count (can be omitted for performance).
          title: Total
      required:
        - items
      title: PaginatedResponse[GitConnectionRepositoryResponse]
      type: object
    PaginatedResponse_GitConnectionResponse_:
      properties:
        end_cursor:
          anyOf:
            - type: string
            - type: 'null'
          description: Cursor to fetch the next page, or None if this is the last page.
          title: End Cursor
        has_next_page:
          default: false
          description: Whether there are more items available after this page.
          title: Has Next Page
          type: boolean
        items:
          items:
            $ref: '#/components/schemas/GitConnectionResponse'
          title: Items
          type: array
        total:
          anyOf:
            - type: integer
            - type: 'null'
          description: Optional total count (can be omitted for performance).
          title: Total
      required:
        - items
      title: PaginatedResponse[GitConnectionResponse]
      type: object
    PaginatedResponse_GitPermissionResponse_:
      properties:
        end_cursor:
          anyOf:
            - type: string
            - type: 'null'
          description: Cursor to fetch the next page, or None if this is the last page.
          title: End Cursor
        has_next_page:
          default: false
          description: Whether there are more items available after this page.
          title: Has Next Page
          type: boolean
        items:
          items:
            $ref: '#/components/schemas/GitPermissionResponse'
          title: Items
          type: array
        total:
          anyOf:
            - type: integer
            - type: 'null'
          description: Optional total count (can be omitted for performance).
          title: Total
      required:
        - items
      title: PaginatedResponse[GitPermissionResponse]
      type: object
    PaginatedResponse_GuardrailViolationResponse_:
      properties:
        end_cursor:
          anyOf:
            - type: string
            - type: 'null'
          description: Cursor to fetch the next page, or None if this is the last page.
          title: End Cursor
        has_next_page:
          default: false
          description: Whether there are more items available after this page.
          title: Has Next Page
          type: boolean
        items:
          items:
            $ref: '#/components/schemas/GuardrailViolationResponse'
          title: Items
          type: array
        total:
          anyOf:
            - type: integer
            - type: 'null'
          description: Optional total count (can be omitted for performance).
          title: Total
      required:
        - items
      title: PaginatedResponse[GuardrailViolationResponse]
      type: object
    PaginatedResponse_HypervisorResponse_:
      properties:
        end_cursor:
          anyOf:
            - type: string
            - type: 'null'
          description: Cursor to fetch the next page, or None if this is the last page.
          title: End Cursor
        has_next_page:
          default: false
          description: Whether there are more items available after this page.
          title: Has Next Page
          type: boolean
        items:
          items:
            $ref: '#/components/schemas/HypervisorResponse'
          title: Items
          type: array
        total:
          anyOf:
            - type: integer
            - type: 'null'
          description: Optional total count (can be omitted for performance).
          title: Total
      required:
        - items
      title: PaginatedResponse[HypervisorResponse]
      type: object
    PaginatedResponse_IdpGroupResponse_:
      properties:
        end_cursor:
          anyOf:
            - type: string
            - type: 'null'
          description: Cursor to fetch the next page, or None if this is the last page.
          title: End Cursor
        has_next_page:
          default: false
          description: Whether there are more items available after this page.
          title: Has Next Page
          type: boolean
        items:
          items:
            $ref: '#/components/schemas/IdpGroupResponse'
          title: Items
          type: array
        total:
          anyOf:
            - type: integer
            - type: 'null'
          description: Optional total count (can be omitted for performance).
          title: Total
      required:
        - items
      title: PaginatedResponse[IdpGroupResponse]
      type: object
    PaginatedResponse_IdpGroupUser_:
      properties:
        end_cursor:
          anyOf:
            - type: string
            - type: 'null'
          description: Cursor to fetch the next page, or None if this is the last page.
          title: End Cursor
        has_next_page:
          default: false
          description: Whether there are more items available after this page.
          title: Has Next Page
          type: boolean
        items:
          items:
            $ref: '#/components/schemas/IdpGroupUser'
          title: Items
          type: array
        total:
          anyOf:
            - type: integer
            - type: 'null'
          description: Optional total count (can be omitted for performance).
          title: Total
      required:
        - items
      title: PaginatedResponse[IdpGroupUser]
      type: object
    PaginatedResponse_IdpGroup_:
      properties:
        end_cursor:
          anyOf:
            - type: string
            - type: 'null'
          description: Cursor to fetch the next page, or None if this is the last page.
          title: End Cursor
        has_next_page:
          default: false
          description: Whether there are more items available after this page.
          title: Has Next Page
          type: boolean
        items:
          items:
            $ref: '#/components/schemas/IdpGroup'
          title: Items
          type: array
        total:
          anyOf:
            - type: integer
            - type: 'null'
          description: Optional total count (can be omitted for performance).
          title: Total
      required:
        - items
      title: PaginatedResponse[IdpGroup]
      type: object
    PaginatedResponse_KnowledgeNoteResponse_:
      properties:
        end_cursor:
          anyOf:
            - type: string
            - type: 'null'
          description: Cursor to fetch the next page, or None if this is the last page.
          title: End Cursor
        has_next_page:
          default: false
          description: Whether there are more items available after this page.
          title: Has Next Page
          type: boolean
        items:
          items:
            $ref: '#/components/schemas/KnowledgeNoteResponse'
          title: Items
          type: array
        total:
          anyOf:
            - type: integer
            - type: 'null'
          description: Optional total count (can be omitted for performance).
          title: Total
      required:
        - items
      title: PaginatedResponse[KnowledgeNoteResponse]
      type: object
    PaginatedResponse_OrganizationResponse_:
      properties:
        end_cursor:
          anyOf:
            - type: string
            - type: 'null'
          description: Cursor to fetch the next page, or None if this is the last page.
          title: End Cursor
        has_next_page:
          default: false
          description: Whether there are more items available after this page.
          title: Has Next Page
          type: boolean
        items:
          items:
            $ref: '#/components/schemas/OrganizationResponse'
          title: Items
          type: array
        total:
          anyOf:
            - type: integer
            - type: 'null'
          description: Optional total count (can be omitted for performance).
          title: Total
      required:
        - items
      title: PaginatedResponse[OrganizationResponse]
      type: object
    PaginatedResponse_PlaybookResponse_:
      properties:
        end_cursor:
          anyOf:
            - type: string
            - type: 'null'
          description: Cursor to fetch the next page, or None if this is the last page.
          title: End Cursor
        has_next_page:
          default: false
          description: Whether there are more items available after this page.
          title: Has Next Page
          type: boolean
        items:
          items:
            $ref: '#/components/schemas/PlaybookResponse'
          title: Items
          type: array
        total:
          anyOf:
            - type: integer
            - type: 'null'
          description: Optional total count (can be omitted for performance).
          title: Total
      required:
        - items
      title: PaginatedResponse[PlaybookResponse]
      type: object
    PaginatedResponse_RepositoryIndexingResponse_:
      properties:
        end_cursor:
          anyOf:
            - type: string
            - type: 'null'
          description: Cursor to fetch the next page, or None if this is the last page.
          title: End Cursor
        has_next_page:
          default: false
          description: Whether there are more items available after this page.
          title: Has Next Page
          type: boolean
        items:
          items:
            $ref: '#/components/schemas/RepositoryIndexingResponse'
          title: Items
          type: array
        total:
          anyOf:
            - type: integer
            - type: 'null'
          description: Optional total count (can be omitted for performance).
          title: Total
      required:
        - items
      title: PaginatedResponse[RepositoryIndexingResponse]
      type: object
    PaginatedResponse_RepositoryResponse_:
      properties:
        end_cursor:
          anyOf:
            - type: string
            - type: 'null'
          description: Cursor to fetch the next page, or None if this is the last page.
          title: End Cursor
        has_next_page:
          default: false
          description: Whether there are more items available after this page.
          title: Has Next Page
          type: boolean
        items:
          items:
            $ref: '#/components/schemas/RepositoryResponse'
          title: Items
          type: array
        total:
          anyOf:
            - type: integer
            - type: 'null'
          description: Optional total count (can be omitted for performance).
          title: Total
      required:
        - items
      title: PaginatedResponse[RepositoryResponse]
      type: object
    PaginatedResponse_Role_:
      properties:
        end_cursor:
          anyOf:
            - type: string
            - type: 'null'
          description: Cursor to fetch the next page, or None if this is the last page.
          title: End Cursor
        has_next_page:
          default: false
          description: Whether there are more items available after this page.
          title: Has Next Page
          type: boolean
        items:
          items:
            $ref: '#/components/schemas/Role'
          title: Items
          type: array
        total:
          anyOf:
            - type: integer
            - type: 'null'
          description: Optional total count (can be omitted for performance).
          title: Total
      required:
        - items
      title: PaginatedResponse[Role]
      type: object
    PaginatedResponse_ScheduleResponse_:
      properties:
        end_cursor:
          anyOf:
            - type: string
            - type: 'null'
          description: Cursor to fetch the next page, or None if this is the last page.
          title: End Cursor
        has_next_page:
          default: false
          description: Whether there are more items available after this page.
          title: Has Next Page
          type: boolean
        items:
          items:
            $ref: '#/components/schemas/ScheduleResponse'
          title: Items
          type: array
        total:
          anyOf:
            - type: integer
            - type: 'null'
          description: Optional total count (can be omitted for performance).
          title: Total
      required:
        - items
      title: PaginatedResponse[ScheduleResponse]
      type: object
    PaginatedResponse_SecretResponse_:
      properties:
        end_cursor:
          anyOf:
            - type: string
            - type: 'null'
          description: Cursor to fetch the next page, or None if this is the last page.
          title: End Cursor
        has_next_page:
          default: false
          description: Whether there are more items available after this page.
          title: Has Next Page
          type: boolean
        items:
          items:
            $ref: '#/components/schemas/SecretResponse'
          title: Items
          type: array
        total:
          anyOf:
            - type: integer
            - type: 'null'
          description: Optional total count (can be omitted for performance).
          title: Total
      required:
        - items
      title: PaginatedResponse[SecretResponse]
      type: object
    PaginatedResponse_ServiceUser_:
      properties:
        end_cursor:
          anyOf:
            - type: string
            - type: 'null'
          description: Cursor to fetch the next page, or None if this is the last page.
          title: End Cursor
        has_next_page:
          default: false
          description: Whether there are more items available after this page.
          title: Has Next Page
          type: boolean
        items:
          items:
            $ref: '#/components/schemas/ServiceUser'
          title: Items
          type: array
        total:
          anyOf:
            - type: integer
            - type: 'null'
          description: Optional total count (can be omitted for performance).
          title: Total
      required:
        - items
      title: PaginatedResponse[ServiceUser]
      type: object
    PaginatedResponse_SessionInsightsResponse_:
      properties:
        end_cursor:
          anyOf:
            - type: string
            - type: 'null'
          description: Cursor to fetch the next page, or None if this is the last page.
          title: End Cursor
        has_next_page:
          default: false
          description: Whether there are more items available after this page.
          title: Has Next Page
          type: boolean
        items:
          items:
            $ref: '#/components/schemas/SessionInsightsResponse'
          title: Items
          type: array
        total:
          anyOf:
            - type: integer
            - type: 'null'
          description: Optional total count (can be omitted for performance).
          title: Total
      required:
        - items
      title: PaginatedResponse[SessionInsightsResponse]
      type: object
    PaginatedResponse_SessionMessage_:
      properties:
        end_cursor:
          anyOf:
            - type: string
            - type: 'null'
          description: Cursor to fetch the next page, or None if this is the last page.
          title: End Cursor
        has_next_page:
          default: false
          description: Whether there are more items available after this page.
          title: Has Next Page
          type: boolean
        items:
          items:
            $ref: '#/components/schemas/SessionMessage'
          title: Items
          type: array
        total:
          anyOf:
            - type: integer
            - type: 'null'
          description: Optional total count (can be omitted for performance).
          title: Total
      required:
        - items
      title: PaginatedResponse[SessionMessage]
      type: object
    PaginatedResponse_SessionResponse_:
      properties:
        end_cursor:
          anyOf:
            - type: string
            - type: 'null'
          description: Cursor to fetch the next page, or None if this is the last page.
          title: End Cursor
        has_next_page:
          default: false
          description: Whether there are more items available after this page.
          title: Has Next Page
          type: boolean
        items:
          items:
            $ref: '#/components/schemas/SessionResponse'
          title: Items
          type: array
        total:
          anyOf:
            - type: integer
            - type: 'null'
          description: Optional total count (can be omitted for performance).
          title: Total
      required:
        - items
      title: PaginatedResponse[SessionResponse]
      type: object
    PaginatedResponse_User_:
      properties:
        end_cursor:
          anyOf:
            - type: string
            - type: 'null'
          description: Cursor to fetch the next page, or None if this is the last page.
          title: End Cursor
        has_next_page:
          default: false
          description: Whether there are more items available after this page.
          title: Has Next Page
          type: boolean
        items:
          items:
            $ref: '#/components/schemas/User'
          title: Items
          type: array
        total:
          anyOf:
            - type: integer
            - type: 'null'
          description: Optional total count (can be omitted for performance).
          title: Total
      required:
        - items
      title: PaginatedResponse[User]
      type: object
    PatUserSelf:
      description: Identity information for an authenticated PAT user.
      properties:
        api_key_id:
          title: Api Key Id
          type: string
        api_key_name:
          title: Api Key Name
          type: string
        org_id:
          anyOf:
            - type: string
            - type: 'null'
          title: Org Id
        principal_type:
          const: pat_user
          title: Principal Type
          type: string
        user_id:
          title: User Id
          type: string
        user_name:
          title: User Name
          type: string
      required:
        - principal_type
        - user_id
        - user_name
        - api_key_id
        - api_key_name
      title: PatUserSelf
      type: object
    PinBuildBody:
      description: '``POST /builds/{id}/pin`` body. Empty per spec.'
      properties: {}
      title: PinBuildBody
      type: object
    PlaybookCreateRequest:
      properties:
        body:
          title: Body
          type: string
        macro:
          anyOf:
            - type: string
            - type: 'null'
          description: >-
            Playbook macro identifier. Must start with '!' followed by one or
            more letters, digits, underscores, or hyphens. Example: '!my_macro'
            or '!my-macro'
          title: Macro
        structured_output_schema:
          anyOf:
            - additionalProperties: true
              type: object
            - type: 'null'
          description: >-
            JSON Schema (Draft 7) that sessions using this playbook will produce
            as structured output. Max 64KB. Must be self-contained (no external
            $ref).
          title: Structured Output Schema
        title:
          title: Title
          type: string
      required:
        - title
        - body
      title: PlaybookCreateRequest
      type: object
    PlaybookInfo:
      properties:
        playbook_id:
          title: Playbook Id
          type: string
        title:
          anyOf:
            - type: string
            - type: 'null'
          title: Title
      required:
        - playbook_id
        - title
      title: PlaybookInfo
      type: object
    PlaybookResponse:
      properties:
        access_type:
          enum:
            - enterprise
            - org
          title: Access Type
          type: string
        body:
          title: Body
          type: string
        created_at:
          title: Created At
          type: integer
        created_by:
          title: Created By
          type: string
        macro:
          anyOf:
            - type: string
            - type: 'null'
          title: Macro
        org_id:
          anyOf:
            - type: string
            - type: 'null'
          title: Org Id
        playbook_id:
          title: Playbook Id
          type: string
        structured_output_schema:
          anyOf:
            - additionalProperties: true
              type: object
            - type: 'null'
          title: Structured Output Schema
        title:
          title: Title
          type: string
        updated_at:
          title: Updated At
          type: integer
        updated_by:
          title: Updated By
          type: string
      required:
        - playbook_id
        - title
        - body
        - macro
        - created_by
        - updated_by
        - created_at
        - updated_at
        - access_type
        - org_id
      title: PlaybookResponse
      type: object
    PrMetricsResponse:
      description: Response model for PR metrics.
      properties:
        prs_closed_count:
          description: PRs Devin authored that were closed without merging.
          title: Prs Closed Count
          type: integer
        prs_created_count:
          description: Total PRs Devin authored across all states (open + merged + closed).
          title: Prs Created Count
          type: integer
        prs_merged_count:
          description: PRs Devin authored that were merged.
          title: Prs Merged Count
          type: integer
        prs_opened_count:
          description: PRs Devin authored that are currently open.
          title: Prs Opened Count
          type: integer
        prs_taken_over_closed_count:
          default: 0
          description: PRs Devin took over that were closed without merging.
          title: Prs Taken Over Closed Count
          type: integer
        prs_taken_over_count:
          default: 0
          description: >-
            Total PRs Devin took over across all states (open + merged +
            closed). A take-over is when Devin pushed commits to a PR it did not
            originally create.
          title: Prs Taken Over Count
          type: integer
        prs_taken_over_merged_count:
          default: 0
          description: PRs Devin took over that were merged.
          title: Prs Taken Over Merged Count
          type: integer
        prs_taken_over_opened_count:
          default: 0
          description: PRs Devin took over that are currently open.
          title: Prs Taken Over Opened Count
          type: integer
      required:
        - prs_created_count
        - prs_opened_count
        - prs_merged_count
        - prs_closed_count
      title: PrMetricsResponse
      type: object
    PrReviewCreateRequest:
      properties:
        pr_url:
          description: >-
            Full URL of the pull/merge request to review (e.g.
            `https://github.com/owner/repo/pull/123`).
          examples:
            - https://github.com/owner/repo/pull/123
          title: Pr Url
          type: string
      required:
        - pr_url
      title: PrReviewCreateRequest
      type: object
    PrReviewResponse:
      properties:
        commit_sha:
          description: Commit SHA of the PR head that will be reviewed.
          title: Commit Sha
          type: string
        created_at:
          description: When the review was accepted.
          format: date-time
          title: Created At
          type: string
        pr_number:
          description: Pull/merge request number.
          title: Pr Number
          type: integer
        repo_path:
          description: Normalized host-prefixed repo path (e.g. `github.com/owner/repo`).
          title: Repo Path
          type: string
        status:
          description: Current review status. Newly accepted reviews start as `pending`.
          enum:
            - pending
            - running
            - completed
            - errored
            - cancelled
          title: Status
          type: string
      required:
        - status
        - repo_path
        - pr_number
        - commit_sha
        - created_at
      title: PrReviewResponse
      type: object
    PresignedDownload:
      description: Reusable presigned-URL response (10-minute TTL).
      properties:
        expires_at:
          description: Unix timestamp at which the URL expires.
          title: Expires At
          type: integer
        url:
          description: Presigned GET URL (HTTPS).
          title: Url
          type: string
      required:
        - url
        - expires_at
      title: PresignedDownload
      type: object
    ProblemDetail:
      description: >-
        RFC 9457 application/problem+json error body for the v3 API.


        detail is retained from the legacy {"detail": ...} body for back-compat;
        the

        other members are additive. errors carries field-level validation
        failures

        (422 only).
      properties:
        detail:
          anyOf:
            - type: string
            - type: 'null'
          description: A human-readable explanation specific to this occurrence.
          title: Detail
        errors:
          anyOf:
            - items:
                additionalProperties: true
                type: object
              type: array
            - type: 'null'
          description: Field-level validation errors (422 responses only).
          title: Errors
        instance:
          anyOf:
            - type: string
            - type: 'null'
          description: A URI reference (the request path) for this occurrence.
          title: Instance
        status:
          description: The HTTP status code.
          title: Status
          type: integer
        title:
          description: A short, human-readable summary of the problem type.
          title: Title
          type: string
        type:
          default: about:blank
          description: A URI reference identifying the problem type.
          title: Type
          type: string
      required:
        - title
        - status
      title: ProblemDetail
      type: object
    QueueResponse:
      description: Response model for queue endpoint.
      properties:
        queue_size:
          title: Queue Size
          type: integer
        status:
          enum:
            - normal
            - elevated
            - high
          title: Status
          type: string
      required:
        - queue_size
        - status
      title: QueueResponse
      type: object
    RemediateFindingResponse:
      description: The remediation session launched for a code scan finding.
      properties:
        finding_id:
          description: The finding that is being remediated.
          title: Finding Id
          type: string
        session_id:
          description: ID of the Devin session launched to remediate the finding.
          title: Session Id
          type: string
      required:
        - finding_id
        - session_id
      title: RemediateFindingResponse
      type: object
    RemoveRepositoriesRequest:
      properties:
        repository_paths:
          items:
            type: string
          maxItems: 100
          minItems: 1
          title: Repository Paths
          type: array
      required:
        - repository_paths
      title: RemoveRepositoriesRequest
      type: object
    RepoIndexJobResponse:
      properties:
        branch_name:
          anyOf:
            - type: string
            - type: 'null'
          title: Branch Name
        commit:
          title: Commit
          type: string
        created_at:
          title: Created At
          type: integer
        job_id:
          title: Job Id
          type: string
        status:
          enum:
            - failed
            - completed
            - in_progress
          title: Status
          type: string
      required:
        - job_id
        - status
        - commit
        - branch_name
        - created_at
      title: RepoIndexJobResponse
      type: object
    RepoIndexingStatusResponse:
      properties:
        indexing_enabled:
          title: Indexing Enabled
          type: boolean
        latest_completed_search_index_job:
          anyOf:
            - $ref: '#/components/schemas/RepoIndexJobResponse'
            - type: 'null'
        latest_completed_wiki_index_job:
          anyOf:
            - $ref: '#/components/schemas/RepoIndexJobResponse'
            - type: 'null'
        latest_indexes:
          items:
            $ref: '#/components/schemas/RepoIndexJobResponse'
          title: Latest Indexes
          type: array
      required:
        - indexing_enabled
        - latest_indexes
        - latest_completed_search_index_job
        - latest_completed_wiki_index_job
      title: RepoIndexingStatusResponse
      type: object
    RepositoryIndexingItem:
      properties:
        branch_names:
          items:
            type: string
          title: Branch Names
          type: array
        repository_path:
          description: e.g., 'org/repo-name'
          title: Repository Path
          type: string
      required:
        - repository_path
      title: RepositoryIndexingItem
      type: object
    RepositoryIndexingResponse:
      properties:
        branches:
          items:
            type: string
          title: Branches
          type: array
        indexing_enabled:
          title: Indexing Enabled
          type: boolean
        indexing_status:
          anyOf:
            - $ref: '#/components/schemas/RepoIndexingStatusResponse'
            - type: 'null'
        repository_path:
          title: Repository Path
          type: string
      required:
        - repository_path
        - indexing_enabled
        - branches
      title: RepositoryIndexingResponse
      type: object
    RepositoryResponse:
      properties:
        git_connection_host:
          title: Git Connection Host
          type: string
        git_connection_id:
          title: Git Connection Id
          type: string
        indexing_status:
          anyOf:
            - $ref: '#/components/schemas/RepoIndexingStatusResponse'
            - type: 'null'
        last_updated_at:
          anyOf:
            - type: integer
            - type: 'null'
          title: Last Updated At
        provider_repository_id:
          title: Provider Repository Id
          type: string
        repo_description:
          anyOf:
            - type: string
            - type: 'null'
          title: Repo Description
        repo_language:
          anyOf:
            - type: string
            - type: 'null'
          title: Repo Language
        repo_name:
          title: Repo Name
          type: string
        repo_path:
          title: Repo Path
          type: string
      required:
        - provider_repository_id
        - git_connection_id
        - git_connection_host
        - repo_name
        - repo_path
        - repo_description
        - last_updated_at
        - repo_language
        - indexing_status
      title: RepositoryResponse
      type: object
    Role:
      properties:
        role_id:
          title: Role Id
          type: string
        role_name:
          title: Role Name
          type: string
        role_type:
          enum:
            - enterprise
            - org
          title: Role Type
          type: string
      required:
        - role_name
        - role_id
        - role_type
      title: Role
      type: object
    RoleAssignment:
      properties:
        org_id:
          anyOf:
            - type: string
            - type: 'null'
          title: Org Id
        role:
          $ref: '#/components/schemas/Role'
      required:
        - role
      title: RoleAssignment
      type: object
    RoleDetailResponse:
      properties:
        permissions:
          description: List of permission identifiers granted to this role.
          items:
            type: string
          title: Permissions
          type: array
        role_id:
          title: Role Id
          type: string
        role_name:
          title: Role Name
          type: string
        role_type:
          enum:
            - enterprise
            - org
          title: Role Type
          type: string
      required:
        - role_name
        - role_id
        - role_type
      title: RoleDetailResponse
      type: object
    RotateApiKeyRequest:
      properties:
        new_key_expires_at:
          anyOf:
            - type: integer
            - type: 'null'
          description: >-
            Optional expiration for the new key as a UNIX timestamp in seconds.
            Null for no expiration.
          title: New Key Expires At
        revoke_current:
          default: true
          description: >-
            Whether to revoke the current key. Set to False for graceful
            rollover.
          title: Revoke Current
          type: boolean
      title: RotateApiKeyRequest
      type: object
    ScheduleCreateRequest:
      properties:
        agent:
          default: devin
          enum:
            - devin
            - data_analyst
          title: Agent
          type: string
        bypass_approval:
          default: false
          title: Bypass Approval
          type: boolean
        create_as_user_id:
          anyOf:
            - type: string
            - type: 'null'
          title: Create As User Id
        frequency:
          anyOf:
            - type: string
            - type: 'null'
          title: Frequency
        interval_count:
          default: 1
          title: Interval Count
          type: integer
        name:
          title: Name
          type: string
        notify_on:
          default: failure
          enum:
            - always
            - failure
            - never
          title: Notify On
          type: string
        platform:
          anyOf:
            - type: string
            - type: 'null'
          description: >-
            VM platform for sessions spawned by this schedule (e.g. 'windows').
            When omitted, sessions fall back to the org's default platform at
            trigger time. Value must match a platform configured for the
            organization (case-insensitive); unknown values are rejected with a
            400 that lists the available platform labels.
          title: Platform
        playbook_id:
          anyOf:
            - type: string
            - type: 'null'
          title: Playbook Id
        prompt:
          title: Prompt
          type: string
        schedule_type:
          default: recurring
          enum:
            - recurring
            - one_time
          title: Schedule Type
          type: string
        scheduled_at:
          anyOf:
            - format: date-time
              type: string
            - type: 'null'
          title: Scheduled At
        slack_channel_id:
          anyOf:
            - type: string
            - type: 'null'
          title: Slack Channel Id
        slack_team_id:
          anyOf:
            - type: string
            - type: 'null'
          title: Slack Team Id
        tags:
          anyOf:
            - items:
                type: string
              type: array
            - type: 'null'
          title: Tags
        target_devin_id:
          anyOf:
            - type: string
            - type: 'null'
          title: Target Devin Id
      required:
        - name
        - prompt
      title: ScheduleCreateRequest
      type: object
    ScheduleResponse:
      properties:
        agent:
          enum:
            - devin
            - data_analyst
          title: Agent
          type: string
        bypass_approval:
          default: false
          title: Bypass Approval
          type: boolean
        consecutive_failures:
          title: Consecutive Failures
          type: integer
        created_at:
          format: date-time
          title: Created At
          type: string
        created_by:
          anyOf:
            - type: string
            - type: 'null'
          title: Created By
        enabled:
          title: Enabled
          type: boolean
        frequency:
          anyOf:
            - type: string
            - type: 'null'
          title: Frequency
        interval_count:
          default: 1
          title: Interval Count
          type: integer
        last_edited_by:
          anyOf:
            - type: string
            - type: 'null'
          title: Last Edited By
        last_error_at:
          anyOf:
            - format: date-time
              type: string
            - type: 'null'
          title: Last Error At
        last_error_message:
          anyOf:
            - type: string
            - type: 'null'
          title: Last Error Message
        last_executed_at:
          anyOf:
            - format: date-time
              type: string
            - type: 'null'
          title: Last Executed At
        name:
          title: Name
          type: string
        notify_on:
          enum:
            - always
            - failure
            - never
          title: Notify On
          type: string
        org_id:
          title: Org Id
          type: string
        platform:
          anyOf:
            - type: string
            - type: 'null'
          title: Platform
        playbook:
          anyOf:
            - $ref: '#/components/schemas/PlaybookInfo'
            - type: 'null'
        prompt:
          title: Prompt
          type: string
        schedule_type:
          default: recurring
          enum:
            - recurring
            - one_time
          title: Schedule Type
          type: string
        scheduled_at:
          anyOf:
            - format: date-time
              type: string
            - type: 'null'
          title: Scheduled At
        scheduled_session_id:
          title: Scheduled Session Id
          type: string
        slack_channel_id:
          anyOf:
            - type: string
            - type: 'null'
          title: Slack Channel Id
        slack_team_id:
          anyOf:
            - type: string
            - type: 'null'
          title: Slack Team Id
        tags:
          anyOf:
            - items:
                type: string
              type: array
            - type: 'null'
          title: Tags
        target_devin_id:
          anyOf:
            - type: string
            - type: 'null'
          title: Target Devin Id
        updated_at:
          format: date-time
          title: Updated At
          type: string
      required:
        - scheduled_session_id
        - org_id
        - created_by
        - name
        - prompt
        - playbook
        - frequency
        - enabled
        - last_executed_at
        - created_at
        - updated_at
        - last_error_at
        - last_error_message
        - consecutive_failures
        - notify_on
        - agent
      title: ScheduleResponse
      type: object
    ScheduleUpdateRequest:
      properties:
        agent:
          anyOf:
            - enum:
                - devin
                - data_analyst
              type: string
            - type: 'null'
          title: Agent
        bypass_approval:
          anyOf:
            - type: boolean
            - type: 'null'
          title: Bypass Approval
        enabled:
          anyOf:
            - type: boolean
            - type: 'null'
          title: Enabled
        frequency:
          anyOf:
            - type: string
            - type: 'null'
          title: Frequency
        interval_count:
          anyOf:
            - type: integer
            - type: 'null'
          title: Interval Count
        name:
          anyOf:
            - type: string
            - type: 'null'
          title: Name
        notify_on:
          anyOf:
            - enum:
                - always
                - failure
                - never
              type: string
            - type: 'null'
          title: Notify On
        platform:
          anyOf:
            - type: string
            - type: 'null'
          description: >-
            VM platform for sessions spawned by this schedule (e.g. 'windows').
            When omitted, the platform is left unchanged. Value must match a
            platform configured for the organization (case-insensitive); unknown
            values are rejected with a 400 that lists the available platform
            labels.
          title: Platform
        playbook_id:
          anyOf:
            - type: string
            - type: 'null'
          title: Playbook Id
        prompt:
          anyOf:
            - type: string
            - type: 'null'
          title: Prompt
        run_as_user_id:
          anyOf:
            - type: string
            - type: 'null'
          description: >-
            Set the user ID that this schedule will run as. Requires
            ImpersonateOrgSessions permission. Setting to null reverts to the
            default bot user. Omitting the field leaves the current identity
            unchanged.
          title: Run As User Id
        schedule_type:
          anyOf:
            - enum:
                - recurring
                - one_time
              type: string
            - type: 'null'
          title: Schedule Type
        scheduled_at:
          anyOf:
            - format: date-time
              type: string
            - type: 'null'
          title: Scheduled At
        slack_channel_id:
          anyOf:
            - type: string
            - type: 'null'
          title: Slack Channel Id
        slack_team_id:
          anyOf:
            - type: string
            - type: 'null'
          title: Slack Team Id
        tags:
          anyOf:
            - items:
                type: string
              type: array
            - type: 'null'
          title: Tags
        target_devin_id:
          anyOf:
            - type: string
            - type: 'null'
          title: Target Devin Id
      title: ScheduleUpdateRequest
      type: object
    SearchMetricsResponse:
      description: Response model for search metrics.
      properties:
        searches_created_count:
          title: Searches Created Count
          type: integer
      required:
        - searches_created_count
      title: SearchMetricsResponse
      type: object
    SecretCreateRequest:
      properties:
        is_sensitive:
          default: true
          title: Is Sensitive
          type: boolean
        key:
          title: Key
          type: string
        note:
          anyOf:
            - type: string
            - type: 'null'
          title: Note
        type:
          enum:
            - cookie
            - key-value
            - totp
          title: Type
          type: string
        value:
          title: Value
          type: string
      required:
        - type
        - key
        - value
      title: SecretCreateRequest
      type: object
    SecretResponse:
      properties:
        access_type:
          enum:
            - org
            - personal
          title: Access Type
          type: string
        created_at:
          title: Created At
          type: integer
        created_by:
          title: Created By
          type: string
        is_sensitive:
          title: Is Sensitive
          type: boolean
        key:
          anyOf:
            - type: string
            - type: 'null'
          title: Key
        note:
          anyOf:
            - type: string
            - type: 'null'
          title: Note
        secret_id:
          title: Secret Id
          type: string
        secret_type:
          enum:
            - cookie
            - key-value
            - totp
          title: Secret Type
          type: string
        updated_at:
          anyOf:
            - type: integer
            - type: 'null'
          title: Updated At
        updated_by:
          anyOf:
            - type: string
            - type: 'null'
          title: Updated By
      required:
        - secret_id
        - key
        - note
        - is_sensitive
        - created_by
        - created_at
        - secret_type
        - access_type
      title: SecretResponse
      type: object
    ServiceUser:
      properties:
        deleted_at:
          anyOf:
            - type: integer
            - type: 'null'
          title: Deleted At
        expires_at:
          anyOf:
            - type: integer
            - type: 'null'
          title: Expires At
        name:
          title: Name
          type: string
        role_assignments:
          items:
            $ref: '#/components/schemas/RoleAssignment'
          title: Role Assignments
          type: array
        service_user_id:
          title: Service User Id
          type: string
      required:
        - service_user_id
        - name
        - expires_at
        - deleted_at
        - role_assignments
      title: ServiceUser
      type: object
    ServiceUserSelf:
      description: Identity information for an authenticated service user.
      properties:
        org_id:
          anyOf:
            - type: string
            - type: 'null'
          title: Org Id
        principal_type:
          const: service_user
          title: Principal Type
          type: string
        service_user_id:
          title: Service User Id
          type: string
        service_user_name:
          title: Service User Name
          type: string
      required:
        - principal_type
        - service_user_id
        - service_user_name
      title: ServiceUserSelf
      type: object
    ServiceUserUpdateRoleRequest:
      properties:
        role_id:
          title: Role Id
          type: string
      required:
        - role_id
      title: ServiceUserUpdateRoleRequest
      type: object
    SessionAttachment:
      description: An attachment sent during a session.
      properties:
        attachment_id:
          title: Attachment Id
          type: string
        content_type:
          anyOf:
            - type: string
            - type: 'null'
          title: Content Type
        name:
          title: Name
          type: string
        source:
          enum:
            - devin
            - user
          title: Source
          type: string
        url:
          title: Url
          type: string
      required:
        - attachment_id
        - name
        - url
        - source
      title: SessionAttachment
      type: object
    SessionCountsByOrigin:
      description: |-
        Session counts by origin type, exposed on the v3 metrics API.

        A curated subset of `SessionOrigin`: legacy origins (cli,
        vscode_extension, devin_spaces) are intentionally not surfaced.
        Counts for sessions with a `scheduled` DB origin roll into
        `automation` via the canonical `db_origin_to_api` mapping, since
        automations are a superset that schedules will migrate into.
      properties:
        api:
          default: 0
          title: Api
          type: integer
        automation:
          default: 0
          title: Automation
          type: integer
        code_scan:
          default: 0
          title: Code Scan
          type: integer
        desktop:
          default: 0
          title: Desktop
          type: integer
        jira:
          default: 0
          title: Jira
          type: integer
        linear:
          default: 0
          title: Linear
          type: integer
        slack:
          default: 0
          title: Slack
          type: integer
        teams:
          default: 0
          title: Teams
          type: integer
        webapp:
          default: 0
          title: Webapp
          type: integer
      title: SessionCountsByOrigin
      type: object
    SessionCountsBySize:
      description: Session counts by size category.
      properties:
        l:
          default: 0
          title: L
          type: integer
        m:
          default: 0
          title: M
          type: integer
        s:
          default: 0
          title: S
          type: integer
        xl:
          default: 0
          title: Xl
          type: integer
        xs:
          default: 0
          title: Xs
          type: integer
      title: SessionCountsBySize
      type: object
    SessionCreateRequest:
      properties:
        attachment_urls:
          anyOf:
            - items:
                format: uri
                maxLength: 2083
                minLength: 1
                type: string
              type: array
            - type: 'null'
          title: Attachment Urls
        bypass_approval:
          anyOf:
            - type: boolean
            - type: 'null'
          title: Bypass Approval
        child_playbook_id:
          anyOf:
            - type: string
            - type: 'null'
          title: Child Playbook Id
        create_as_user_id:
          anyOf:
            - type: string
            - type: 'null'
          title: Create As User Id
        devin_mode:
          anyOf:
            - enum:
                - normal
                - fast
                - lite
                - ultra
                - fusion
              type: string
            - type: 'null'
          description: >-
            Override the Devin agent mode for the session. 'normal' uses the
            default Agent mode, 'fast' uses Fast mode, 'lite' uses Devin Lite,
            'ultra' uses Devin Ultra, and 'fusion' uses Fusion. Preview modes
            are subject to the same feature flag and enterprise agent preview
            restrictions as the web app.
          title: Devin Mode
        knowledge_ids:
          anyOf:
            - items:
                type: string
              type: array
            - type: 'null'
          title: Knowledge Ids
        max_acu_limit:
          anyOf:
            - type: integer
            - type: 'null'
          title: Max Acu Limit
        platform:
          anyOf:
            - type: string
            - type: 'null'
          description: >-
            Override the VM platform for the session (e.g. 'windows'), or the
            name of an outpost (BYOB) pool to run the session on one of your own
            machines. When omitted (or set to 'inherit'), a session created by a
            parent Devin inherits the parent's placement — both its platform and
            its outpost pool, so an outpost-placed parent spawns children on the
            same pool; otherwise the organization default is used. Any value
            must match either a platform configured for your organization or an
            outpost pool name (case-insensitive) — built-in platforms take
            priority when a name matches both. Unrecognized values are rejected
            with a 400 whose error body lists the available platform labels and
            outpost pool names for the org.
          title: Platform
        playbook_id:
          anyOf:
            - type: string
            - type: 'null'
          title: Playbook Id
        prompt:
          title: Prompt
          type: string
        repos:
          anyOf:
            - items:
                type: string
              type: array
            - type: 'null'
          title: Repos
        resumable:
          default: true
          description: >-
            Whether to preserve the session's VM state after it stops so the
            session can be resumed. Set to false for disposable sessions.
          title: Resumable
          type: boolean
        secret_ids:
          anyOf:
            - items:
                type: string
              type: array
            - type: 'null'
          title: Secret Ids
        session_links:
          anyOf:
            - items:
                type: string
              type: array
            - type: 'null'
          title: Session Links
        session_secrets:
          anyOf:
            - items:
                $ref: '#/components/schemas/SessionSecretInput'
              type: array
            - type: 'null'
          title: Session Secrets
        structured_output_required:
          anyOf:
            - type: boolean
            - type: 'null'
          description: >-
            When true (default), the agent MUST call provide_structured_output
            with is_final=true before its turn ends. When false, the tool is
            available but not required — it is not guaranteed to be called in a
            given turn.
          title: Structured Output Required
        structured_output_schema:
          anyOf:
            - additionalProperties: true
              type: object
            - type: 'null'
          description: >-
            JSON Schema (Draft 7) for validating structured output. Max 64KB.
            Must be self-contained (no external $ref).
          title: Structured Output Schema
        tags:
          anyOf:
            - items:
                type: string
              type: array
            - type: 'null'
          title: Tags
        title:
          anyOf:
            - type: string
            - type: 'null'
          title: Title
      required:
        - prompt
      title: SessionCreateRequest
      type: object
    SessionInsightsActionItem:
      properties:
        action_item:
          title: Action Item
          type: string
        issue_id:
          anyOf:
            - type: string
            - type: 'null'
          title: Issue Id
        type:
          default: other
          enum:
            - machine_setup
            - repo_config
            - knowledge
            - prompt_improvement
            - external
            - other
          title: Type
          type: string
      required:
        - action_item
      title: SessionInsightsActionItem
      type: object
    SessionInsightsAnalysis:
      description: AI-generated analysis data from a completed session analysis.
      properties:
        action_items:
          default: []
          items:
            $ref: '#/components/schemas/SessionInsightsActionItem'
          title: Action Items
          type: array
        classification:
          anyOf:
            - $ref: '#/components/schemas/SessionInsightsClassification'
            - type: 'null'
        issues:
          default: []
          items:
            $ref: '#/components/schemas/SessionInsightsIssue'
          title: Issues
          type: array
        note_usage:
          anyOf:
            - $ref: '#/components/schemas/SessionInsightsNoteUsage'
            - type: 'null'
        suggested_prompt:
          anyOf:
            - $ref: '#/components/schemas/SessionInsightsSuggestedPrompt'
            - type: 'null'
        timeline:
          default: []
          items:
            $ref: '#/components/schemas/SessionInsightsTimelineEvent'
          title: Timeline
          type: array
      title: SessionInsightsAnalysis
      type: object
    SessionInsightsClassification:
      properties:
        category:
          title: Category
          type: string
        confidence:
          title: Confidence
          type: number
        programming_languages:
          default: []
          items:
            type: string
          title: Programming Languages
          type: array
        tools_and_frameworks:
          default: []
          items:
            type: string
          title: Tools And Frameworks
          type: array
      required:
        - category
        - confidence
      title: SessionInsightsClassification
      type: object
    SessionInsightsFeedbackItem:
      properties:
        details:
          title: Details
          type: string
        excerpt:
          title: Excerpt
          type: string
        issue_id:
          anyOf:
            - type: string
            - type: 'null'
          title: Issue Id
        summary:
          title: Summary
          type: string
      required:
        - summary
        - excerpt
        - details
      title: SessionInsightsFeedbackItem
      type: object
    SessionInsightsGenerateResponse:
      description: Response from triggering session insights generation.
      properties:
        session_id:
          description: The session ID for which insights generation was triggered.
          title: Session Id
          type: string
        status:
          description: The status of the generation request.
          title: Status
          type: string
      required:
        - session_id
        - status
      title: SessionInsightsGenerateResponse
      type: object
    SessionInsightsIssue:
      properties:
        id:
          default: ''
          title: Id
          type: string
        impact:
          title: Impact
          type: string
        issue:
          title: Issue
          type: string
        label:
          title: Label
          type: string
        title:
          default: ''
          title: Title
          type: string
      required:
        - issue
        - impact
        - label
      title: SessionInsightsIssue
      type: object
    SessionInsightsNoteUsage:
      properties:
        bad_usages:
          default: []
          items:
            $ref: '#/components/schemas/SessionInsightsNoteUsageItem'
          title: Bad Usages
          type: array
        good_usages:
          default: []
          items:
            $ref: '#/components/schemas/SessionInsightsNoteUsageItem'
          title: Good Usages
          type: array
      title: SessionInsightsNoteUsage
      type: object
    SessionInsightsNoteUsageItem:
      properties:
        message:
          title: Message
          type: string
        note_id:
          title: Note Id
          type: string
        reason:
          title: Reason
          type: string
      required:
        - reason
        - message
        - note_id
      title: SessionInsightsNoteUsageItem
      type: object
    SessionInsightsResponse:
      description: >-
        Session details augmented with quantitative metrics and AI analysis.


        Extends SessionResponse with additional fields that require extra
        queries.
      properties:
        acus_consumed:
          title: Acus Consumed
          type: number
        analysis:
          anyOf:
            - $ref: '#/components/schemas/SessionInsightsAnalysis'
            - type: 'null'
          description: AI-generated session analysis. None if analysis has not completed.
        category:
          anyOf:
            - enum:
                - bug_fixing
                - ci_cd_and_devops
                - code_quality_and_security
                - code_review
                - code_review_and_analysis
                - data_and_automation
                - documentation_and_content
                - feature_development
                - migrations_and_upgrades
                - other
                - production_investigation
                - refactoring_and_optimization
                - research_and_exploration
                - security
                - unit_test_generation
              type: string
            - type: 'null'
          description: >-
            The session's assigned use-case category, if categorisation has run.
            Only populated on get/list endpoints.
          title: Category
        child_session_ids:
          anyOf:
            - items:
                type: string
              type: array
            - type: 'null'
          title: Child Session Ids
        created_at:
          title: Created At
          type: integer
        devin_mode:
          anyOf:
            - enum:
                - normal
                - fast
                - lite
                - ultra
                - fusion
              type: string
            - type: 'null'
          description: >-
            The Devin agent mode the session was created with, after resolving
            org/user defaults and parent-session inheritance. None when the
            session runs an agent preview that has no mode equivalent.
          title: Devin Mode
        is_archived:
          default: false
          title: Is Archived
          type: boolean
        num_devin_messages:
          description: Number of Devin messages sent during the session.
          title: Num Devin Messages
          type: integer
        num_user_messages:
          description: Number of user messages sent during the session.
          title: Num User Messages
          type: integer
        org_id:
          title: Org Id
          type: string
        origin:
          anyOf:
            - enum:
                - webapp
                - slack
                - teams
                - api
                - linear
                - jira
                - automation
                - cli
                - desktop
                - code_scan
                - other
              type: string
            - type: 'null'
          description: The origin from which the session was created.
          title: Origin
        parent_session_id:
          anyOf:
            - type: string
            - type: 'null'
          title: Parent Session Id
        playbook_id:
          anyOf:
            - type: string
            - type: 'null'
          title: Playbook Id
        pull_requests:
          items:
            $ref: '#/components/schemas/SessionPullRequest'
          title: Pull Requests
          type: array
        service_user_id:
          anyOf:
            - type: string
            - type: 'null'
          title: Service User Id
        session_id:
          title: Session Id
          type: string
        session_size:
          description: Session size classification based on ACU usage and message count.
          enum:
            - xs
            - s
            - m
            - l
            - xl
          title: Session Size
          type: string
        status:
          enum:
            - new
            - claimed
            - running
            - exit
            - error
            - suspended
            - resuming
          title: Status
          type: string
        status_detail:
          anyOf:
            - enum:
                - working
                - waiting_for_user
                - waiting_for_approval
                - finished
                - inactivity
                - user_request
                - usage_limit_exceeded
                - out_of_credits
                - out_of_quota
                - no_quota_allocation
                - payment_declined
                - org_usage_limit_exceeded
                - user_usage_limit_exceeded
                - total_session_limit_exceeded
                - error
              type: string
            - type: 'null'
          description: >-
            Additional detail about the session's current status. When status is
            'running': 'working' (actively working), 'waiting_for_user' (needs
            user input), 'waiting_for_approval' (awaiting action approval in
            safe mode), or 'finished' (task complete). When status is
            'suspended': the reason for suspension such as 'inactivity',
            'user_request', 'usage_limit_exceeded', 'out_of_credits',
            'out_of_quota', 'no_quota_allocation', 'payment_declined',
            'org_usage_limit_exceeded', 'user_usage_limit_exceeded',
            'total_session_limit_exceeded', or 'error'. Only populated on
            get/list endpoints.
          title: Status Detail
        structured_output:
          anyOf:
            - additionalProperties: true
              type: object
            - type: 'null'
          description: >-
            Validated structured output from the session. Only populated on
            get/list endpoints.
          title: Structured Output
        subcategory:
          anyOf:
            - type: string
            - type: 'null'
          description: >-
            The session's assigned subcategory display name. 'Other' when a
            category is set but no subcategory was assigned or resolved. Only
            populated on get/list endpoints.
          title: Subcategory
        tags:
          items:
            type: string
          title: Tags
          type: array
        title:
          anyOf:
            - type: string
            - type: 'null'
          title: Title
        updated_at:
          title: Updated At
          type: integer
        url:
          title: Url
          type: string
        user_id:
          anyOf:
            - type: string
            - type: 'null'
          title: User Id
      required:
        - session_id
        - url
        - status
        - tags
        - org_id
        - created_at
        - updated_at
        - acus_consumed
        - pull_requests
        - num_user_messages
        - num_devin_messages
        - session_size
      title: SessionInsightsResponse
      type: object
    SessionInsightsSuggestedPrompt:
      properties:
        feedback_items:
          default: []
          items:
            $ref: '#/components/schemas/SessionInsightsFeedbackItem'
          title: Feedback Items
          type: array
        original_prompt:
          title: Original Prompt
          type: string
        suggested_prompt:
          title: Suggested Prompt
          type: string
      required:
        - original_prompt
        - suggested_prompt
      title: SessionInsightsSuggestedPrompt
      type: object
    SessionInsightsTimelineEvent:
      properties:
        color:
          default: ''
          title: Color
          type: string
        description:
          title: Description
          type: string
        issue_id:
          anyOf:
            - type: string
            - type: 'null'
          title: Issue Id
        title:
          title: Title
          type: string
      required:
        - title
        - description
      title: SessionInsightsTimelineEvent
      type: object
    SessionMessage:
      description: A message in a Devin session.
      properties:
        created_at:
          title: Created At
          type: integer
        event_id:
          title: Event Id
          type: string
        message:
          title: Message
          type: string
        source:
          enum:
            - devin
            - user
          title: Source
          type: string
      required:
        - event_id
        - source
        - message
        - created_at
      title: SessionMessage
      type: object
    SessionMessageCreateRequest:
      properties:
        attachment_urls:
          anyOf:
            - items:
                format: uri
                maxLength: 2083
                minLength: 1
                type: string
              type: array
            - type: 'null'
          title: Attachment Urls
        message:
          title: Message
          type: string
        message_as_user_id:
          anyOf:
            - type: string
            - type: 'null'
          title: Message As User Id
      required:
        - message
      title: SessionMessageCreateRequest
      type: object
    SessionMetricsResponse:
      description: Response model for session metrics.
      properties:
        avg_acus_per_session:
          title: Avg Acus Per Session
          type: number
        sessions_created_by_origin:
          $ref: '#/components/schemas/SessionCountsByOrigin'
        sessions_created_by_size:
          $ref: '#/components/schemas/SessionCountsBySize'
        sessions_created_count:
          title: Sessions Created Count
          type: integer
        sessions_created_with_playbook_count:
          title: Sessions Created With Playbook Count
          type: integer
        sessions_created_with_search_count:
          title: Sessions Created With Search Count
          type: integer
        sessions_with_merged_prs_by_size:
          $ref: '#/components/schemas/SessionCountsBySize'
        sessions_with_merged_prs_count:
          title: Sessions With Merged Prs Count
          type: integer
      required:
        - sessions_created_count
        - sessions_created_by_size
        - sessions_created_by_origin
        - sessions_created_with_playbook_count
        - sessions_created_with_search_count
        - sessions_with_merged_prs_count
        - sessions_with_merged_prs_by_size
        - avg_acus_per_session
      title: SessionMetricsResponse
      type: object
    SessionPullRequest:
      properties:
        pr_state:
          anyOf:
            - type: string
            - type: 'null'
          title: Pr State
        pr_url:
          title: Pr Url
          type: string
      required:
        - pr_url
        - pr_state
      title: SessionPullRequest
      type: object
    SessionPurpose:
      description: |-
        Purpose of a child session spawned by a parent (brain callers only).

        Propagated to the session via `additional_args["purpose"]`.
      enum:
        - testing
      title: SessionPurpose
      type: string
    SessionResponse:
      properties:
        acus_consumed:
          title: Acus Consumed
          type: number
        category:
          anyOf:
            - enum:
                - bug_fixing
                - ci_cd_and_devops
                - code_quality_and_security
                - code_review
                - code_review_and_analysis
                - data_and_automation
                - documentation_and_content
                - feature_development
                - migrations_and_upgrades
                - other
                - production_investigation
                - refactoring_and_optimization
                - research_and_exploration
                - security
                - unit_test_generation
              type: string
            - type: 'null'
          description: >-
            The session's assigned use-case category, if categorisation has run.
            Only populated on get/list endpoints.
          title: Category
        child_session_ids:
          anyOf:
            - items:
                type: string
              type: array
            - type: 'null'
          title: Child Session Ids
        created_at:
          title: Created At
          type: integer
        devin_mode:
          anyOf:
            - enum:
                - normal
                - fast
                - lite
                - ultra
                - fusion
              type: string
            - type: 'null'
          description: >-
            The Devin agent mode the session was created with, after resolving
            org/user defaults and parent-session inheritance. None when the
            session runs an agent preview that has no mode equivalent.
          title: Devin Mode
        is_archived:
          default: false
          title: Is Archived
          type: boolean
        org_id:
          title: Org Id
          type: string
        origin:
          anyOf:
            - enum:
                - webapp
                - slack
                - teams
                - api
                - linear
                - jira
                - automation
                - cli
                - desktop
                - code_scan
                - other
              type: string
            - type: 'null'
          description: The origin from which the session was created.
          title: Origin
        parent_session_id:
          anyOf:
            - type: string
            - type: 'null'
          title: Parent Session Id
        playbook_id:
          anyOf:
            - type: string
            - type: 'null'
          title: Playbook Id
        pull_requests:
          items:
            $ref: '#/components/schemas/SessionPullRequest'
          title: Pull Requests
          type: array
        service_user_id:
          anyOf:
            - type: string
            - type: 'null'
          title: Service User Id
        session_id:
          title: Session Id
          type: string
        status:
          enum:
            - new
            - claimed
            - running
            - exit
            - error
            - suspended
            - resuming
          title: Status
          type: string
        status_detail:
          anyOf:
            - enum:
                - working
                - waiting_for_user
                - waiting_for_approval
                - finished
                - inactivity
                - user_request
                - usage_limit_exceeded
                - out_of_credits
                - out_of_quota
                - no_quota_allocation
                - payment_declined
                - org_usage_limit_exceeded
                - user_usage_limit_exceeded
                - total_session_limit_exceeded
                - error
              type: string
            - type: 'null'
          description: >-
            Additional detail about the session's current status. When status is
            'running': 'working' (actively working), 'waiting_for_user' (needs
            user input), 'waiting_for_approval' (awaiting action approval in
            safe mode), or 'finished' (task complete). When status is
            'suspended': the reason for suspension such as 'inactivity',
            'user_request', 'usage_limit_exceeded', 'out_of_credits',
            'out_of_quota', 'no_quota_allocation', 'payment_declined',
            'org_usage_limit_exceeded', 'user_usage_limit_exceeded',
            'total_session_limit_exceeded', or 'error'. Only populated on
            get/list endpoints.
          title: Status Detail
        structured_output:
          anyOf:
            - additionalProperties: true
              type: object
            - type: 'null'
          description: >-
            Validated structured output from the session. Only populated on
            get/list endpoints.
          title: Structured Output
        subcategory:
          anyOf:
            - type: string
            - type: 'null'
          description: >-
            The session's assigned subcategory display name. 'Other' when a
            category is set but no subcategory was assigned or resolved. Only
            populated on get/list endpoints.
          title: Subcategory
        tags:
          items:
            type: string
          title: Tags
          type: array
        title:
          anyOf:
            - type: string
            - type: 'null'
          title: Title
        updated_at:
          title: Updated At
          type: integer
        url:
          title: Url
          type: string
        user_id:
          anyOf:
            - type: string
            - type: 'null'
          title: User Id
      required:
        - session_id
        - url
        - status
        - tags
        - org_id
        - created_at
        - updated_at
        - acus_consumed
        - pull_requests
      title: SessionResponse
      type: object
    SessionSecretInput:
      description: Input model for a session secret provided via API.
      properties:
        key:
          maxLength: 256
          minLength: 1
          title: Key
          type: string
        sensitive:
          default: true
          title: Sensitive
          type: boolean
        value:
          maxLength: 65536
          title: Value
          type: string
      required:
        - key
        - value
      title: SessionSecretInput
      type: object
    SessionTagsResponse:
      properties:
        tags:
          items:
            type: string
          title: Tags
          type: array
      required:
        - tags
      title: SessionTagsResponse
      type: object
    SessionTagsUpdateRequest:
      properties:
        tags:
          items:
            type: string
          maxItems: 50
          title: Tags
          type: array
      required:
        - tags
      title: SessionTagsUpdateRequest
      type: object
    SessionsByCategoryResponse:
      properties:
        categories:
          items:
            $ref: '#/components/schemas/CategoryMetrics'
          title: Categories
          type: array
      required:
        - categories
      title: SessionsByCategoryResponse
      type: object
    SessionsQueryParams:
      properties:
        after:
          anyOf:
            - type: string
            - type: 'null'
          title: After
        category:
          anyOf:
            - enum:
                - bug_fixing
                - ci_cd_and_devops
                - code_quality_and_security
                - code_review
                - code_review_and_analysis
                - data_and_automation
                - documentation_and_content
                - feature_development
                - migrations_and_upgrades
                - other
                - production_investigation
                - refactoring_and_optimization
                - research_and_exploration
                - security
                - unit_test_generation
              type: string
            - type: 'null'
          title: Category
        created_after:
          anyOf:
            - type: integer
            - type: 'null'
          title: Created After
        created_before:
          anyOf:
            - type: integer
            - type: 'null'
          title: Created Before
        first:
          default: 100
          maximum: 200
          minimum: 1
          title: First
          type: integer
        is_archived:
          anyOf:
            - type: boolean
            - type: 'null'
          title: Is Archived
        origins:
          anyOf:
            - items:
                enum:
                  - webapp
                  - slack
                  - teams
                  - api
                  - linear
                  - jira
                  - automation
                  - cli
                  - desktop
                  - code_scan
                  - other
                type: string
              type: array
            - type: 'null'
          title: Origins
        playbook_id:
          anyOf:
            - type: string
            - type: 'null'
          title: Playbook Id
        repo_names:
          anyOf:
            - items:
                type: string
              type: array
            - type: 'null'
          description: Filter by repository names (e.g., 'owner/repo')
          title: Repo Names
        schedule_id:
          anyOf:
            - type: string
            - type: 'null'
          title: Schedule Id
        service_user_ids:
          anyOf:
            - items:
                type: string
              type: array
            - type: 'null'
          title: Service User Ids
        session_ids:
          anyOf:
            - items:
                type: string
              type: array
            - type: 'null'
          title: Session Ids
        tags:
          anyOf:
            - items:
                type: string
              type: array
            - type: 'null'
          title: Tags
        updated_after:
          anyOf:
            - type: integer
            - type: 'null'
          title: Updated After
        updated_before:
          anyOf:
            - type: integer
            - type: 'null'
          title: Updated Before
        user_ids:
          anyOf:
            - items:
                type: string
              type: array
            - type: 'null'
          title: User Ids
      title: SessionsQueryParams
      type: object
    StartIngestionScanRequest:
      description: |-
        Request body for starting an ingestion-mode code scan.

        Only accepts an ingestion (ingest-mode) scan profile: the profile is run
        against the given repository.
      properties:
        attachment_urls:
          anyOf:
            - items:
                format: uri
                maxLength: 2083
                minLength: 1
                type: string
              maxItems: 10
              type: array
            - type: 'null'
          description: >-
            Devin attachment URLs to provide to the scan, e.g. files uploaded
            via the attachments API. The attachments must belong to the
            organization being scanned.
          title: Attachment Urls
        host:
          anyOf:
            - type: string
            - type: 'null'
          description: Git host of the repository, if known.
          title: Host
        profile_id:
          description: >-
            Ingestion-mode scan profile to run. Must be an ingest profile;
            non-ingest profiles are rejected with 400.
          title: Profile Id
          type: string
        repo_name:
          description: Full name of the repository to scan.
          title: Repo Name
          type: string
      required:
        - repo_name
        - profile_id
      title: StartIngestionScanRequest
      type: object
    SubcategoryMetrics:
      properties:
        acus:
          title: Acus
          type: number
        display_name:
          title: Display Name
          type: string
        sessions_count:
          title: Sessions Count
          type: integer
        subcategory_id:
          anyOf:
            - type: string
            - type: 'null'
          title: Subcategory Id
      required:
        - subcategory_id
        - display_name
        - sessions_count
        - acus
      title: SubcategoryMetrics
      type: object
    TagsCreateRequest:
      properties:
        tags:
          items:
            type: string
          title: Tags
          type: array
      required:
        - tags
      title: TagsCreateRequest
      type: object
    TagsResponse:
      properties:
        tags:
          items:
            type: string
          title: Tags
          type: array
      required:
        - tags
      title: TagsResponse
      type: object
    TriggerBuildBody:
      description: '``POST /builds`` body. Empty per spec; reserved for future fields.'
      properties: {}
      title: TriggerBuildBody
      type: object
    UpdateACULimitRequest:
      properties:
        cycle_acu_limit:
          minimum: 0
          title: Cycle Acu Limit
          type: integer
      required:
        - cycle_acu_limit
      title: UpdateACULimitRequest
      type: object
    UpdateBlueprintContentsBody:
      properties:
        contents:
          description: New YAML body for the blueprint.
          title: Contents
          type: string
      required:
        - contents
      title: UpdateBlueprintContentsBody
      type: object
    UpdateOrgBlueprintBody:
      description: |-
        Partial update for an org- or repo-tier blueprint.

        Any subset of fields may be provided. Fields not set are left alone.
        Providing ``position`` on an org-tier blueprint returns ``400`` — only
        repo-tier blueprints have a position. Does NOT trigger a build.
      properties:
        contents:
          anyOf:
            - type: string
            - type: 'null'
          description: If set, replaces the blueprint's YAML body with a new version.
          title: Contents
        position:
          anyOf:
            - type: integer
            - type: 'null'
          description: >-
            If set, updates the execution position of this repo-tier blueprint.
            Positions are not required to be unique; ties are broken arbitrarily
            by the server when sorting for execution.
          title: Position
      title: UpdateOrgBlueprintBody
      type: object
    UsageMetrics:
      properties:
        prs_created_count:
          title: Prs Created Count
          type: integer
        prs_merged_count:
          title: Prs Merged Count
          type: integer
        searches_count:
          title: Searches Count
          type: integer
        sessions_count:
          title: Sessions Count
          type: integer
      required:
        - sessions_count
        - searches_count
        - prs_created_count
        - prs_merged_count
      title: UsageMetrics
      type: object
    User:
      properties:
        email:
          anyOf:
            - type: string
            - type: 'null'
          title: Email
        name:
          anyOf:
            - type: string
            - type: 'null'
          title: Name
        role_assignments:
          items:
            $ref: '#/components/schemas/RoleAssignment'
          title: Role Assignments
          type: array
        user_id:
          title: User Id
          type: string
      required:
        - user_id
        - email
        - name
        - role_assignments
      title: User
      type: object
    UserBulkCreateRequest:
      properties:
        emails:
          items:
            type: string
          maxItems: 100
          title: Emails
          type: array
        enterprise_role_id:
          title: Enterprise Role Id
          type: string
      required:
        - emails
        - enterprise_role_id
      title: UserBulkCreateRequest
      type: object
    UserUpdateRoleRequest:
      properties:
        role_id:
          title: Role Id
          type: string
      required:
        - role_id
      title: UserUpdateRoleRequest
      type: object
    UserWithIdpRoles:
      description: User with both direct and IDP-group-derived role assignments.
      properties:
        email:
          anyOf:
            - type: string
            - type: 'null'
          title: Email
        idp_role_assignments:
          items:
            $ref: '#/components/schemas/IdpRoleAssignment'
          title: Idp Role Assignments
          type: array
        name:
          anyOf:
            - type: string
            - type: 'null'
          title: Name
        role_assignments:
          items:
            $ref: '#/components/schemas/RoleAssignment'
          title: Role Assignments
          type: array
        user_id:
          title: User Id
          type: string
      required:
        - user_id
        - email
        - name
        - role_assignments
      title: UserWithIdpRoles
      type: object
    WindsurfSessionUserSelf:
      description: Identity information for an authenticated Windsurf session user.
      properties:
        org_id:
          title: Org Id
          type: string
        principal_type:
          const: windsurf_session
          title: Principal Type
          type: string
        user_id:
          title: User Id
          type: string
        user_name:
          anyOf:
            - type: string
            - type: 'null'
          title: User Name
      required:
        - principal_type
        - user_id
        - org_id
      title: WindsurfSessionUserSelf
      type: object
  securitySchemes:
    bearerAuth:
      description: 'Service User credential (prefix: cog_)'
      scheme: bearer
      type: http
info:
  description: Devin v3 API with Service User authentication and RBAC
  title: Devin API v3
  version: 3.0.0
openapi: 3.1.0
paths:
  /v3/enterprise/audit-logs:
    get:
      description: List audit logs for the enterprise.
      operationId: handle_get_enterprise_audit_logs_v3_enterprise_audit_logs_get
      parameters:
        - in: query
          name: order
          required: false
          schema:
            default: desc
            enum:
              - asc
              - desc
            title: Order
            type: string
        - in: query
          name: time_before
          required: false
          schema:
            anyOf:
              - type: integer
              - type: 'null'
            title: Time Before
        - in: query
          name: time_after
          required: false
          schema:
            anyOf:
              - type: integer
              - type: 'null'
            title: Time After
        - in: query
          name: after
          required: false
          schema:
            anyOf:
              - type: string
              - type: 'null'
            title: After
        - in: query
          name: first
          required: false
          schema:
            default: 100
            maximum: 200
            minimum: 1
            title: First
            type: integer
        - in: query
          name: action
          required: false
          schema:
            anyOf:
              - $ref: '#/components/schemas/AuditLogAction'
              - type: 'null'
            title: Action
      responses:
        '200':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/PaginatedResponse_AuditLogResponse_'
          description: Successful Response
        '401':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
          description: Unauthorized
        '403':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
          description: Forbidden
        '404':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
          description: Not Found
        '409':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
          description: Conflict
        '422':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
          description: Unprocessable Content
        '429':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
          description: Too Many Requests
      summary: List Audit Logs
      tags:
        - audit_logs
  /v3/enterprise/code-scans/findings:
    get:
      description: >-
        List code scan findings for the enterprise account.


        Findings are returned newest first. Optionally filter by ``org_ids``,

        ``scan_id``, ``repo_name``, ``severity``, and ``status`` (``severity``
        and

        ``status`` accept multiple values); results are paginated with an opaque

        cursor (``after`` / ``first``).
      operationId: handle_list_code_scan_findings_v3_enterprise_code_scans_findings_get
      parameters:
        - in: query
          name: after
          required: false
          schema:
            anyOf:
              - type: string
              - type: 'null'
            title: After
        - in: query
          name: first
          required: false
          schema:
            default: 100
            maximum: 200
            minimum: 1
            title: First
            type: integer
        - description: Filter to findings produced by this scan.
          in: query
          name: scan_id
          required: false
          schema:
            anyOf:
              - type: string
              - type: 'null'
            description: Filter to findings produced by this scan.
            title: Scan Id
        - description: Filter to findings reported in this repository.
          in: query
          name: repo_name
          required: false
          schema:
            anyOf:
              - type: string
              - type: 'null'
            description: Filter to findings reported in this repository.
            title: Repo Name
        - description: >-
            Filter to findings with any of these severities (critical, high,
            medium, low).
          in: query
          name: severity
          required: false
          schema:
            anyOf:
              - items:
                  enum:
                    - critical
                    - high
                    - medium
                    - low
                  type: string
                type: array
              - type: 'null'
            description: >-
              Filter to findings with any of these severities (critical, high,
              medium, low).
            title: Severity
        - description: >-
            Filter to findings with any of these statuses (open, dismissed,
            resolved).
          in: query
          name: status
          required: false
          schema:
            anyOf:
              - items:
                  enum:
                    - open
                    - dismissed
                    - resolved
                  type: string
                type: array
              - type: 'null'
            description: >-
              Filter to findings with any of these statuses (open, dismissed,
              resolved).
            title: Status
        - description: Filter to findings in these organizations.
          in: query
          name: org_ids
          required: false
          schema:
            anyOf:
              - items:
                  type: string
                type: array
              - type: 'null'
            description: Filter to findings in these organizations.
            title: Org Ids
      responses:
        '200':
          content:
            application/json:
              schema:
                $ref: >-
                  #/components/schemas/PaginatedResponse_CodeScanFindingResponse_
          description: Successful Response
        '401':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
          description: Unauthorized
        '403':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
          description: Forbidden
        '404':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
          description: Not Found
        '409':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
          description: Conflict
        '422':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
          description: Unprocessable Content
        '429':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
          description: Too Many Requests
      summary: List Code Scan Findings
      tags:
        - code-scans
  /v3/enterprise/code-scans/metrics:
    get:
      description: |-
        Get aggregated code scan metrics for the enterprise account.

        Returns scan, finding, and remediation-PR metrics for code scans created
        within the specified time range, optionally filtered to specific
        organizations.
      operationId: handle_get_code_scan_metrics_v3_enterprise_code_scans_metrics_get
      parameters:
        - in: query
          name: time_before
          required: true
          schema:
            title: Time Before
            type: integer
        - in: query
          name: time_after
          required: true
          schema:
            title: Time After
            type: integer
        - in: query
          name: org_ids
          required: false
          schema:
            anyOf:
              - items:
                  type: string
                type: array
              - type: 'null'
            title: Org Ids
      responses:
        '200':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/CodeScanMetricsResponse'
          description: Successful Response
        '401':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
          description: Unauthorized
        '403':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
          description: Forbidden
        '404':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
          description: Not Found
        '409':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
          description: Conflict
        '422':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
          description: Unprocessable Content
        '429':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
          description: Too Many Requests
      summary: Get Code Scan Metrics
      tags:
        - code-scans
  /v3/enterprise/code-scans/profiles:
    get:
      description: >-
        List code scan profiles for the enterprise account.


        Returns profile summaries (without guidance) newest first, including
        both

        org-owned and account-shared profiles. Optionally filter by ``org_ids``;

        results are paginated with an opaque cursor (``after`` / ``first``).
      operationId: handle_list_code_scan_profiles_v3_enterprise_code_scans_profiles_get
      parameters:
        - in: query
          name: after
          required: false
          schema:
            anyOf:
              - type: string
              - type: 'null'
            title: After
        - in: query
          name: first
          required: false
          schema:
            default: 100
            maximum: 200
            minimum: 1
            title: First
            type: integer
        - description: >-
            Only return profiles visible to these organizations. Defaults to all
            organizations in the account.
          in: query
          name: org_ids
          required: false
          schema:
            anyOf:
              - items:
                  type: string
                type: array
              - type: 'null'
            description: >-
              Only return profiles visible to these organizations. Defaults to
              all organizations in the account.
            title: Org Ids
      responses:
        '200':
          content:
            application/json:
              schema:
                $ref: >-
                  #/components/schemas/PaginatedResponse_CodeScanProfileSummaryResponse_
          description: Successful Response
        '401':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
          description: Unauthorized
        '403':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
          description: Forbidden
        '404':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
          description: Not Found
        '409':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
          description: Conflict
        '422':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
          description: Unprocessable Content
        '429':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
          description: Too Many Requests
      summary: List Code Scan Profiles
      tags:
        - code-scans
  /v3/enterprise/code-scans/profiles/{profile_id}:
    get:
      description: |-
        Get a code scan profile by ID.

        Returns the profile's metadata, visibility (org-owned or shared
        account-wide), and all of its guidance fields. Returns ``404`` when the
        profile does not exist or is not visible to the enterprise account.
      operationId: >-
        handle_get_code_scan_profile_v3_enterprise_code_scans_profiles__profile_id__get
      parameters:
        - in: path
          name: profile_id
          required: true
          schema:
            title: Profile Id
            type: string
      responses:
        '200':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/CodeScanProfileDetailResponse'
          description: Successful Response
        '401':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
          description: Unauthorized
        '403':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
          description: Forbidden
        '404':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
          description: Not Found
        '409':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
          description: Conflict
        '422':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
          description: Unprocessable Content
        '429':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
          description: Too Many Requests
      summary: Get Code Scan Profile
      tags:
        - code-scans
  /v3/enterprise/code-scans/scans:
    get:
      description: |-
        List code scans for the enterprise account.

        Scans are returned newest first. Optionally filter by ``org_ids``,
        ``repo_name``, and creation time (``time_after`` / ``time_before``);
        results are paginated with an opaque cursor (``after`` / ``first``).
      operationId: handle_list_code_scans_v3_enterprise_code_scans_scans_get
      parameters:
        - in: query
          name: time_before
          required: false
          schema:
            anyOf:
              - type: integer
              - type: 'null'
            title: Time Before
        - in: query
          name: time_after
          required: false
          schema:
            anyOf:
              - type: integer
              - type: 'null'
            title: Time After
        - in: query
          name: after
          required: false
          schema:
            anyOf:
              - type: string
              - type: 'null'
            title: After
        - in: query
          name: first
          required: false
          schema:
            default: 100
            maximum: 200
            minimum: 1
            title: First
            type: integer
        - description: >-
            Filter to scans that scanned this repository. Matches multi-repo
            scans even when the repository is not the scan's primary repo, so
            returned items may report a different repo_name.
          in: query
          name: repo_name
          required: false
          schema:
            anyOf:
              - type: string
              - type: 'null'
            description: >-
              Filter to scans that scanned this repository. Matches multi-repo
              scans even when the repository is not the scan's primary repo, so
              returned items may report a different repo_name.
            title: Repo Name
        - description: Filter to scans in these organizations.
          in: query
          name: org_ids
          required: false
          schema:
            anyOf:
              - items:
                  type: string
                type: array
              - type: 'null'
            description: Filter to scans in these organizations.
            title: Org Ids
      responses:
        '200':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/PaginatedResponse_CodeScanResponse_'
          description: Successful Response
        '401':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
          description: Unauthorized
        '403':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
          description: Forbidden
        '404':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
          description: Not Found
        '409':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
          description: Conflict
        '422':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
          description: Unprocessable Content
        '429':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
          description: Too Many Requests
      summary: List Code Scans
      tags:
        - code-scans
  /v3/enterprise/consumption/acu-limits/devin:
    get:
      description: Get all org-level Devin ACU limits for this enterprise.
      operationId: >-
        handle_get_devin_acu_limits_v3_enterprise_consumption_acu_limits_devin_get
      parameters:
        - in: query
          name: after
          required: false
          schema:
            anyOf:
              - type: string
              - type: 'null'
            title: After
        - in: query
          name: first
          required: false
          schema:
            default: 100
            maximum: 200
            minimum: 1
            title: First
            type: integer
      responses:
        '200':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/PaginatedResponse_ACULimitResponse_'
          description: Successful Response
        '401':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
          description: Unauthorized
        '403':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
          description: Forbidden
        '404':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
          description: Not Found
        '409':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
          description: Conflict
        '422':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
          description: Unprocessable Content
        '429':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
          description: Too Many Requests
      summary: Get Devin ACU limits
      tags:
        - acu-limits
  /v3/enterprise/consumption/acu-limits/devin/organizations/{org_id}:
    delete:
      description: Delete an org-level Devin ACU limit.
      operationId: >-
        handle_delete_org_devin_acu_limit_v3_enterprise_consumption_acu_limits_devin_organizations__org_id__delete
      parameters:
        - description: 'Organization ID (prefix: org-)'
          in: path
          name: org_id
          required: true
          schema:
            example: org-abc123def456
            title: Org Id
            type: string
      responses:
        '204':
          description: Successful Response
        '401':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
          description: Unauthorized
        '403':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
          description: Forbidden
        '404':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
          description: Not Found
        '409':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
          description: Conflict
        '422':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
          description: Unprocessable Content
        '429':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
          description: Too Many Requests
      summary: Delete org-level Devin ACU limit
      tags:
        - acu-limits
    put:
      description: Create or update an org-level Devin ACU limit.
      operationId: >-
        handle_set_org_devin_acu_limit_v3_enterprise_consumption_acu_limits_devin_organizations__org_id__put
      parameters:
        - description: 'Organization ID (prefix: org-)'
          in: path
          name: org_id
          required: true
          schema:
            example: org-abc123def456
            title: Org Id
            type: string
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/UpdateACULimitRequest'
        required: true
      responses:
        '204':
          description: Successful Response
        '401':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
          description: Unauthorized
        '403':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
          description: Forbidden
        '404':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
          description: Not Found
        '409':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
          description: Conflict
        '422':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
          description: Unprocessable Content
        '429':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
          description: Too Many Requests
      summary: Set org-level Devin ACU limit
      tags:
        - acu-limits
  /v3/enterprise/consumption/cycles:
    get:
      operationId: handle_get_consumption_cycles_v3_enterprise_consumption_cycles_get
      parameters:
        - in: query
          name: after
          required: false
          schema:
            anyOf:
              - type: string
              - type: 'null'
            title: After
        - in: query
          name: first
          required: false
          schema:
            default: 100
            maximum: 200
            minimum: 1
            title: First
            type: integer
      responses:
        '200':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/PaginatedResponse_ConsumptionCycle_'
          description: Successful Response
        '401':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
          description: Unauthorized
        '403':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
          description: Forbidden
        '404':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
          description: Not Found
        '409':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
          description: Conflict
        '422':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
          description: Unprocessable Content
        '429':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
          description: Too Many Requests
      summary: List Consumption Cycles
      tags:
        - consumption
  /v3/enterprise/consumption/daily:
    get:
      description: >-
        Get daily ACU consumption for the entire enterprise.


        Returns total ACUs and consumption broken down by date.


        **Timezone behavior**: Billing cycles use midnight PST (Pacific Standard
        Time)

        as the day boundary, which corresponds to 08:00:00 UTC. To match the
        consumption

        data shown in the Devin dashboard, pass Unix timestamps that align with
        this

        timezone offset (e.g., 1733385600 for December 5, 2025 at midnight PST).
      operationId: handle_get_consumption_daily_v3_enterprise_consumption_daily_get
      parameters:
        - in: query
          name: time_before
          required: false
          schema:
            anyOf:
              - type: integer
              - type: 'null'
            title: Time Before
        - in: query
          name: time_after
          required: false
          schema:
            anyOf:
              - type: integer
              - type: 'null'
            title: Time After
      responses:
        '200':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ConsumptionResponse'
          description: Successful Response
        '401':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
          description: Unauthorized
        '403':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
          description: Forbidden
        '404':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
          description: Not Found
        '409':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
          description: Conflict
        '422':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
          description: Unprocessable Content
        '429':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
          description: Too Many Requests
      summary: Get Daily Consumption
      tags:
        - consumption
  /v3/enterprise/consumption/daily/organizations/{org_id}:
    get:
      description: >-
        Get daily ACU consumption for a specific organization.


        Returns total ACUs and consumption broken down by date for the org.


        **Timezone behavior**: Billing cycles use midnight PST (Pacific Standard
        Time)

        as the day boundary, which corresponds to 08:00:00 UTC. To match the
        consumption

        data shown in the Devin dashboard, pass Unix timestamps that align with
        this

        timezone offset (e.g., 1733385600 for December 5, 2025 at midnight PST).
      operationId: >-
        handle_get_org_consumption_daily_v3_enterprise_consumption_daily_organizations__org_id__get
      parameters:
        - description: 'Organization ID (prefix: org-)'
          in: path
          name: org_id
          required: true
          schema:
            example: org-abc123def456
            title: Org Id
            type: string
        - in: query
          name: time_before
          required: false
          schema:
            anyOf:
              - type: integer
              - type: 'null'
            title: Time Before
        - in: query
          name: time_after
          required: false
          schema:
            anyOf:
              - type: integer
              - type: 'null'
            title: Time After
      responses:
        '200':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ConsumptionResponse'
          description: Successful Response
        '401':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
          description: Unauthorized
        '403':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
          description: Forbidden
        '404':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
          description: Not Found
        '409':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
          description: Conflict
        '422':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
          description: Unprocessable Content
        '429':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
          description: Too Many Requests
      summary: Get Organization Daily Consumption
      tags:
        - consumption
  /v3/enterprise/consumption/daily/service-users/{service_user_id}:
    get:
      description: >-
        Get daily ACU consumption for a specific service user.


        Returns total ACUs and consumption broken down by date for sessions

        created by the given service user.


        **Timezone behavior**: Billing cycles use midnight PST (Pacific Standard
        Time)

        as the day boundary, which corresponds to 08:00:00 UTC. To match the
        consumption

        data shown in the Devin dashboard, pass Unix timestamps that align with
        this

        timezone offset (e.g., 1733385600 for December 5, 2025 at midnight PST).
      operationId: >-
        handle_get_service_user_consumption_daily_v3_enterprise_consumption_daily_service_users__service_user_id__get
      parameters:
        - description: 'Service user ID (prefix: service-user-)'
          in: path
          name: service_user_id
          required: true
          schema:
            example: service-user-abc123def456
            title: Service User Id
            type: string
        - in: query
          name: time_before
          required: false
          schema:
            anyOf:
              - type: integer
              - type: 'null'
            title: Time Before
        - in: query
          name: time_after
          required: false
          schema:
            anyOf:
              - type: integer
              - type: 'null'
            title: Time After
      responses:
        '200':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ConsumptionResponse'
          description: Successful Response
        '401':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
          description: Unauthorized
        '403':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
          description: Forbidden
        '404':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
          description: Not Found
        '409':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
          description: Conflict
        '422':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
          description: Unprocessable Content
        '429':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
          description: Too Many Requests
      summary: Get Service User Daily Consumption
      tags:
        - consumption
  /v3/enterprise/consumption/daily/sessions/{session_id}:
    get:
      description: >-
        Get daily ACU consumption for a specific session.


        Returns total ACUs and consumption broken down by date for the session.


        **Timezone behavior**: Billing cycles use midnight PST (Pacific Standard
        Time)

        as the day boundary, which corresponds to 08:00:00 UTC. To match the
        consumption

        data shown in the Devin dashboard, pass Unix timestamps that align with
        this

        timezone offset (e.g., 1733385600 for December 5, 2025 at midnight PST).
      operationId: >-
        handle_get_session_consumption_daily_v3_enterprise_consumption_daily_sessions__session_id__get
      parameters:
        - description: >-
            Session ID (prefix: devin-). Alias for devin_id used in consumption
            endpoints.
          in: path
          name: session_id
          required: true
          schema:
            example: devin-abc123def456
            title: Session Id
            type: string
        - in: query
          name: time_before
          required: false
          schema:
            anyOf:
              - type: integer
              - type: 'null'
            title: Time Before
        - in: query
          name: time_after
          required: false
          schema:
            anyOf:
              - type: integer
              - type: 'null'
            title: Time After
      responses:
        '200':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ConsumptionResponse'
          description: Successful Response
        '401':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
          description: Unauthorized
        '403':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
          description: Forbidden
        '404':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
          description: Not Found
        '409':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
          description: Conflict
        '422':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
          description: Unprocessable Content
        '429':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
          description: Too Many Requests
      summary: Get Session Daily Consumption
      tags:
        - consumption
  /v3/enterprise/consumption/daily/users/{user_id}:
    get:
      description: >-
        Get daily ACU consumption for a specific user.


        Returns total ACUs and consumption broken down by date for the user.


        **Timezone behavior**: Billing cycles use midnight PST (Pacific Standard
        Time)

        as the day boundary, which corresponds to 08:00:00 UTC. To match the
        consumption

        data shown in the Devin dashboard, pass Unix timestamps that align with
        this

        timezone offset (e.g., 1733385600 for December 5, 2025 at midnight PST).
      operationId: >-
        handle_get_user_consumption_daily_v3_enterprise_consumption_daily_users__user_id__get
      parameters:
        - description: User ID
          in: path
          name: user_id
          required: true
          schema:
            title: User Id
            type: string
        - in: query
          name: time_before
          required: false
          schema:
            anyOf:
              - type: integer
              - type: 'null'
            title: Time Before
        - in: query
          name: time_after
          required: false
          schema:
            anyOf:
              - type: integer
              - type: 'null'
            title: Time After
      responses:
        '200':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ConsumptionResponse'
          description: Successful Response
        '401':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
          description: Unauthorized
        '403':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
          description: Forbidden
        '404':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
          description: Not Found
        '409':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
          description: Conflict
        '422':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
          description: Unprocessable Content
        '429':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
          description: Too Many Requests
      summary: Get User Daily Consumption
      tags:
        - consumption
  /v3/enterprise/git-providers/connections:
    get:
      operationId: handle_get_git_connections_v3_enterprise_git_providers_connections_get
      parameters:
        - in: query
          name: after
          required: false
          schema:
            anyOf:
              - type: string
              - type: 'null'
            title: After
        - in: query
          name: first
          required: false
          schema:
            default: 100
            maximum: 200
            minimum: 1
            title: First
            type: integer
      responses:
        '200':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/PaginatedResponse_GitConnectionResponse_'
          description: Successful Response
        '401':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
          description: Unauthorized
        '403':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
          description: Forbidden
        '404':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
          description: Not Found
        '409':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
          description: Conflict
        '422':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
          description: Unprocessable Content
        '429':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
          description: Too Many Requests
      summary: List Git Connections
      tags:
        - git_connections
  /v3/enterprise/git-providers/connections/{connection_id}/repositories:
    get:
      operationId: >-
        handle_list_git_connection_repositories_v3_enterprise_git_providers_connections__connection_id__repositories_get
      parameters:
        - in: path
          name: connection_id
          required: true
          schema:
            title: Connection Id
            type: string
        - in: query
          name: after
          required: false
          schema:
            anyOf:
              - type: string
              - type: 'null'
            title: After
        - in: query
          name: first
          required: false
          schema:
            default: 100
            maximum: 100
            minimum: 1
            title: First
            type: integer
        - in: query
          name: filter_name
          required: false
          schema:
            anyOf:
              - type: string
              - type: 'null'
            title: Filter Name
      responses:
        '200':
          content:
            application/json:
              schema:
                $ref: >-
                  #/components/schemas/PaginatedResponse_GitConnectionRepositoryResponse_
          description: Successful Response
        '401':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
          description: Unauthorized
        '403':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
          description: Forbidden
        '404':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
          description: Not Found
        '409':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
          description: Conflict
        '422':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
          description: Unprocessable Content
        '429':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
          description: Too Many Requests
      summary: List repositories for a git connection
      tags:
        - git_connections
  /v3/enterprise/hypervisors:
    get:
      operationId: handle_get_hypervisors_v3_enterprise_hypervisors_get
      parameters:
        - in: query
          name: after
          required: false
          schema:
            anyOf:
              - type: string
              - type: 'null'
            title: After
        - in: query
          name: first
          required: false
          schema:
            default: 100
            maximum: 200
            minimum: 1
            title: First
            type: integer
        - in: query
          name: status
          required: false
          schema:
            default: available
            enum:
              - available
              - restarting
              - disconnected
              - terminated
              - draining
              - all
            title: Status
            type: string
      responses:
        '200':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/PaginatedResponse_HypervisorResponse_'
          description: Successful Response
        '401':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
          description: Unauthorized
        '403':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
          description: Forbidden
        '404':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
          description: Not Found
        '409':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
          description: Conflict
        '422':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
          description: Unprocessable Content
        '429':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
          description: Too Many Requests
      summary: List Hypervisors
  /v3/enterprise/idp-groups:
    get:
      description: List IDP groups registered with this enterprise.
      operationId: handle_list_account_idp_groups_v3_enterprise_idp_groups_get
      parameters:
        - in: query
          name: after
          required: false
          schema:
            anyOf:
              - type: string
              - type: 'null'
            title: After
        - in: query
          name: first
          required: false
          schema:
            default: 100
            maximum: 200
            minimum: 1
            title: First
            type: integer
      responses:
        '200':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/PaginatedResponse_IdpGroupResponse_'
          description: Successful Response
        '401':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
          description: Unauthorized
        '403':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
          description: Forbidden
        '404':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
          description: Not Found
        '409':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
          description: Conflict
        '422':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
          description: Unprocessable Content
        '429':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
          description: Too Many Requests
      summary: List Account IDP Groups
      tags:
        - idp_groups
    post:
      description: Bulk create IDP groups for this enterprise. Existing groups are ignored.
      operationId: handle_bulk_register_account_idp_groups_v3_enterprise_idp_groups_post
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/IdpGroupsBulkCreateRequest'
        required: true
      responses:
        '200':
          content:
            application/json:
              schema:
                items:
                  $ref: '#/components/schemas/IdpGroupResponse'
                title: >-
                  Response Handle Bulk Register Account Idp Groups V3 Enterprise
                  Idp Groups Post
                type: array
          description: Successful Response
        '401':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
          description: Unauthorized
        '403':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
          description: Forbidden
        '404':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
          description: Not Found
        '409':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
          description: Conflict
        '422':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
          description: Unprocessable Content
        '429':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
          description: Too Many Requests
      summary: Register Account IDP Groups
      tags:
        - idp_groups
  /v3/enterprise/idp-groups/{idp_group_name}:
    delete:
      description: Remove a registered IDP group from this enterprise.
      operationId: >-
        handle_delete_account_idp_group_v3_enterprise_idp_groups__idp_group_name__delete
      parameters:
        - in: path
          name: idp_group_name
          required: true
          schema:
            title: Idp Group Name
            type: string
      responses:
        '200':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/IdpGroupResponse'
          description: Successful Response
        '401':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
          description: Unauthorized
        '403':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
          description: Forbidden
        '404':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
          description: Not Found
        '409':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
          description: Conflict
        '422':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
          description: Unprocessable Content
        '429':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
          description: Too Many Requests
      summary: Delete Account IDP Group
      tags:
        - idp_groups
  /v3/enterprise/ip-access-list:
    delete:
      operationId: handle_clear_ip_access_list_v3_enterprise_ip_access_list_delete
      responses:
        '200':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/IpAccessListResponse'
          description: Successful Response
        '401':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
          description: Unauthorized
        '403':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
          description: Forbidden
        '404':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
          description: Not Found
        '409':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
          description: Conflict
        '422':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
          description: Unprocessable Content
        '429':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
          description: Too Many Requests
      summary: Clear IP Access List
      tags:
        - ip-access-list
    get:
      operationId: handle_get_ip_access_list_v3_enterprise_ip_access_list_get
      responses:
        '200':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/IpAccessListResponse'
          description: Successful Response
        '401':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
          description: Unauthorized
        '403':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
          description: Forbidden
        '404':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
          description: Not Found
        '409':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
          description: Conflict
        '422':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
          description: Unprocessable Content
        '429':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
          description: Too Many Requests
      summary: Get IP Access List
      tags:
        - ip-access-list
    post:
      operationId: handle_add_ip_access_list_v3_enterprise_ip_access_list_post
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/IpAccessListAddRequest'
        required: true
      responses:
        '200':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/IpAccessListResponse'
          description: Successful Response
        '401':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
          description: Unauthorized
        '403':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
          description: Forbidden
        '404':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
          description: Not Found
        '409':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
          description: Conflict
        '422':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
          description: Unprocessable Content
        '429':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
          description: Too Many Requests
      summary: Add IPs to IP Access List
      tags:
        - ip-access-list
    put:
      operationId: handle_replace_ip_access_list_v3_enterprise_ip_access_list_put
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/IpAccessListReplaceRequest'
        required: true
      responses:
        '200':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/IpAccessListResponse'
          description: Successful Response
        '401':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
          description: Unauthorized
        '403':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
          description: Forbidden
        '404':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
          description: Not Found
        '409':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
          description: Conflict
        '422':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
          description: Unprocessable Content
        '429':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
          description: Too Many Requests
      summary: Replace IP Access List
      tags:
        - ip-access-list
  /v3/enterprise/knowledge/folders:
    get:
      description: Return the full folder tree with per-folder note counts.
      operationId: handle_list_folders_v3_enterprise_knowledge_folders_get
      responses:
        '200':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/FolderTreeResponse'
          description: Successful Response
        '401':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
          description: Unauthorized
        '403':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
          description: Forbidden
        '404':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
          description: Not Found
        '409':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
          description: Conflict
        '422':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
          description: Unprocessable Content
        '429':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
          description: Too Many Requests
      summary: Get knowledge folder structure with note counts.
      tags:
        - notes
  /v3/enterprise/knowledge/notes:
    get:
      operationId: handle_list_notes_v3_enterprise_knowledge_notes_get
      parameters:
        - in: query
          name: after
          required: false
          schema:
            anyOf:
              - type: string
              - type: 'null'
            title: After
        - in: query
          name: first
          required: false
          schema:
            default: 100
            maximum: 200
            minimum: 1
            title: First
            type: integer
        - in: query
          name: access_type
          required: false
          schema:
            anyOf:
              - enum:
                  - org
                  - enterprise
                type: string
              - type: 'null'
            title: Access Type
        - in: query
          name: search
          required: false
          schema:
            anyOf:
              - type: string
              - type: 'null'
            title: Search
        - in: query
          name: folder_path
          required: false
          schema:
            anyOf:
              - type: string
              - type: 'null'
            title: Folder Path
        - in: query
          name: pinned_repo
          required: false
          schema:
            anyOf:
              - type: string
              - type: 'null'
            title: Pinned Repo
      responses:
        '200':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/PaginatedResponse_KnowledgeNoteResponse_'
          description: Successful Response
        '401':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
          description: Unauthorized
        '403':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
          description: Forbidden
        '404':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
          description: Not Found
        '409':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
          description: Conflict
        '422':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
          description: Unprocessable Content
        '429':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
          description: Too Many Requests
      summary: List all notes.
      tags:
        - notes
    post:
      operationId: handle_create_note_v3_enterprise_knowledge_notes_post
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/KnowledgeNoteCreateRequest'
        required: true
      responses:
        '200':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/KnowledgeNoteResponse'
          description: Successful Response
        '401':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
          description: Unauthorized
        '403':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
          description: Forbidden
        '404':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
          description: Not Found
        '409':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
          description: Conflict
        '422':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
          description: Unprocessable Content
        '429':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
          description: Too Many Requests
      summary: Create an enterprise-level note
      tags:
        - notes
  /v3/enterprise/knowledge/notes/{note_id}:
    delete:
      operationId: handle_delete_note_v3_enterprise_knowledge_notes__note_id__delete
      parameters:
        - description: 'Knowledge note ID (prefix: note-)'
          in: path
          name: note_id
          required: true
          schema:
            example: note-abc123def456
            title: Note Id
            type: string
      responses:
        '200':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/KnowledgeNoteResponse'
          description: Successful Response
        '401':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
          description: Unauthorized
        '403':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
          description: Forbidden
        '404':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
          description: Not Found
        '409':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
          description: Conflict
        '422':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
          description: Unprocessable Content
        '429':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
          description: Too Many Requests
      summary: Delete a note
      tags:
        - notes
    get:
      description: Get a note by ID.
      operationId: handle_get_note_v3_enterprise_knowledge_notes__note_id__get
      parameters:
        - description: 'Knowledge note ID (prefix: note-)'
          in: path
          name: note_id
          required: true
          schema:
            example: note-abc123def456
            title: Note Id
            type: string
      responses:
        '200':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/KnowledgeNoteResponse'
          description: Successful Response
        '401':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
          description: Unauthorized
        '403':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
          description: Forbidden
        '404':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
          description: Not Found
        '409':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
          description: Conflict
        '422':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
          description: Unprocessable Content
        '429':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
          description: Too Many Requests
      summary: Get a note by ID
      tags:
        - notes
    put:
      operationId: handle_update_note_v3_enterprise_knowledge_notes__note_id__put
      parameters:
        - description: 'Knowledge note ID (prefix: note-)'
          in: path
          name: note_id
          required: true
          schema:
            example: note-abc123def456
            title: Note Id
            type: string
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/KnowledgeNoteCreateRequest'
        required: true
      responses:
        '200':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/KnowledgeNoteResponse'
          description: Successful Response
        '401':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
          description: Unauthorized
        '403':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
          description: Forbidden
        '404':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
          description: Not Found
        '409':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
          description: Conflict
        '422':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
          description: Unprocessable Content
        '429':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
          description: Too Many Requests
      summary: Update a note
      tags:
        - notes
  /v3/enterprise/members/idp-groups:
    get:
      operationId: handle_list_enterprise_idp_groups_v3_enterprise_members_idp_groups_get
      parameters:
        - in: query
          name: after
          required: false
          schema:
            anyOf:
              - type: string
              - type: 'null'
            title: After
        - in: query
          name: first
          required: false
          schema:
            default: 100
            maximum: 200
            minimum: 1
            title: First
            type: integer
      responses:
        '200':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/PaginatedResponse_IdpGroup_'
          description: Successful Response
        '401':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
          description: Unauthorized
        '403':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
          description: Forbidden
        '404':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
          description: Not Found
        '409':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
          description: Conflict
        '422':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
          description: Unprocessable Content
        '429':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
          description: Too Many Requests
      summary: List IDP Groups
      tags:
        - idp_groups
  /v3/enterprise/members/idp-groups/{idp_group_name}:
    delete:
      operationId: >-
        handle_remove_enterprise_idp_group_v3_enterprise_members_idp_groups__idp_group_name__delete
      parameters:
        - in: path
          name: idp_group_name
          required: true
          schema:
            title: Idp Group Name
            type: string
      responses:
        '200':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/IdpGroup'
          description: Successful Response
        '401':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
          description: Unauthorized
        '403':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
          description: Forbidden
        '404':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
          description: Not Found
        '409':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
          description: Conflict
        '422':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
          description: Unprocessable Content
        '429':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
          description: Too Many Requests
      summary: Delete IDP Group
      tags:
        - idp_groups
    get:
      operationId: >-
        handle_get_enterprise_idp_group_v3_enterprise_members_idp_groups__idp_group_name__get
      parameters:
        - in: path
          name: idp_group_name
          required: true
          schema:
            title: Idp Group Name
            type: string
      responses:
        '200':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/IdpGroup'
          description: Successful Response
        '401':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
          description: Unauthorized
        '403':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
          description: Forbidden
        '404':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
          description: Not Found
        '409':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
          description: Conflict
        '422':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
          description: Unprocessable Content
        '429':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
          description: Too Many Requests
      summary: Get IDP Group
      tags:
        - idp_groups
    patch:
      operationId: >-
        handle_update_enterprise_idp_group_role_v3_enterprise_members_idp_groups__idp_group_name__patch
      parameters:
        - in: path
          name: idp_group_name
          required: true
          schema:
            title: Idp Group Name
            type: string
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/IdpGroupUpdateRoleRequest'
        required: true
      responses:
        '200':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/IdpGroup'
          description: Successful Response
        '401':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
          description: Unauthorized
        '403':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
          description: Forbidden
        '404':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
          description: Not Found
        '409':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
          description: Conflict
        '422':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
          description: Unprocessable Content
        '429':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
          description: Too Many Requests
      summary: Update IDP Group
      tags:
        - idp_groups
    post:
      operationId: >-
        handle_assign_enterprise_idp_group_role_v3_enterprise_members_idp_groups__idp_group_name__post
      parameters:
        - in: path
          name: idp_group_name
          required: true
          schema:
            title: Idp Group Name
            type: string
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/IdpGroupUpdateRoleRequest'
        required: true
      responses:
        '200':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/IdpGroup'
          description: Successful Response
        '401':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
          description: Unauthorized
        '403':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
          description: Forbidden
        '404':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
          description: Not Found
        '409':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
          description: Conflict
        '422':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
          description: Unprocessable Content
        '429':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
          description: Too Many Requests
      summary: Assign IDP Group
      tags:
        - idp_groups
  /v3/enterprise/members/idp-users:
    get:
      description: >-
        List users whose enterprise membership is derived from IDP group
        assignments.
      operationId: handle_list_enterprise_idp_users_v3_enterprise_members_idp_users_get
      parameters:
        - in: query
          name: after
          required: false
          schema:
            anyOf:
              - type: string
              - type: 'null'
            title: After
        - in: query
          name: first
          required: false
          schema:
            default: 100
            maximum: 200
            minimum: 1
            title: First
            type: integer
        - description: Filter by exact email address
          in: query
          name: email
          required: false
          schema:
            anyOf:
              - type: string
              - type: 'null'
            description: Filter by exact email address
            title: Email
      responses:
        '200':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/PaginatedResponse_IdpGroupUser_'
          description: Successful Response
        '401':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
          description: Unauthorized
        '403':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
          description: Forbidden
        '404':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
          description: Not Found
        '409':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
          description: Conflict
        '422':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
          description: Unprocessable Content
        '429':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
          description: Too Many Requests
      summary: List IDP Group Users
      tags:
        - users
  /v3/enterprise/members/service-users:
    get:
      description: List service users in the enterprise.
      operationId: >-
        handle_list_enterprise_service_users_v3_enterprise_members_service_users_get
      parameters:
        - in: query
          name: after
          required: false
          schema:
            anyOf:
              - type: string
              - type: 'null'
            title: After
        - in: query
          name: first
          required: false
          schema:
            default: 100
            maximum: 200
            minimum: 1
            title: First
            type: integer
        - description: Include inactive service users (expired or removed).
          in: query
          name: include_inactive
          required: false
          schema:
            default: false
            description: Include inactive service users (expired or removed).
            title: Include Inactive
            type: boolean
      responses:
        '200':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/PaginatedResponse_ServiceUser_'
          description: Successful Response
        '401':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
          description: Unauthorized
        '403':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
          description: Forbidden
        '404':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
          description: Not Found
        '409':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
          description: Conflict
        '422':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
          description: Unprocessable Content
        '429':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
          description: Too Many Requests
      summary: List Service Users
      tags:
        - service_users
  /v3/enterprise/members/service-users/{service_user_id}:
    delete:
      operationId: >-
        handle_remove_enterprise_service_user_v3_enterprise_members_service_users__service_user_id__delete
      parameters:
        - description: 'Service user ID (prefix: service-user-)'
          in: path
          name: service_user_id
          required: true
          schema:
            example: service-user-abc123def456
            title: Service User Id
            type: string
      responses:
        '200':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ServiceUser'
          description: Successful Response
        '401':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
          description: Unauthorized
        '403':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
          description: Forbidden
        '404':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
          description: Not Found
        '409':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
          description: Conflict
        '422':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
          description: Unprocessable Content
        '429':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
          description: Too Many Requests
      summary: Delete Service User
      tags:
        - service_users
    get:
      description: Get a service user by ID.
      operationId: >-
        handle_get_enterprise_service_user_v3_enterprise_members_service_users__service_user_id__get
      parameters:
        - description: 'Service user ID (prefix: service-user-)'
          in: path
          name: service_user_id
          required: true
          schema:
            example: service-user-abc123def456
            title: Service User Id
            type: string
      responses:
        '200':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ServiceUser'
          description: Successful Response
        '401':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
          description: Unauthorized
        '403':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
          description: Forbidden
        '404':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
          description: Not Found
        '409':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
          description: Conflict
        '422':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
          description: Unprocessable Content
        '429':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
          description: Too Many Requests
      summary: Get Service User
      tags:
        - service_users
    patch:
      description: Update enterprise role for service user.
      operationId: >-
        handle_update_enterprise_service_user_role_v3_enterprise_members_service_users__service_user_id__patch
      parameters:
        - description: 'Service user ID (prefix: service-user-)'
          in: path
          name: service_user_id
          required: true
          schema:
            example: service-user-abc123def456
            title: Service User Id
            type: string
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/ServiceUserUpdateRoleRequest'
        required: true
      responses:
        '200':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ServiceUser'
          description: Successful Response
        '401':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
          description: Unauthorized
        '403':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
          description: Forbidden
        '404':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
          description: Not Found
        '409':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
          description: Conflict
        '422':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
          description: Unprocessable Content
        '429':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
          description: Too Many Requests
      summary: Update Service User
      tags:
        - service_users
    post:
      description: Assign enterprise role to service user.
      operationId: >-
        handle_assign_enterprise_service_user_role_v3_enterprise_members_service_users__service_user_id__post
      parameters:
        - description: 'Service user ID (prefix: service-user-)'
          in: path
          name: service_user_id
          required: true
          schema:
            example: service-user-abc123def456
            title: Service User Id
            type: string
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/ServiceUserUpdateRoleRequest'
        required: true
      responses:
        '200':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ServiceUser'
          description: Successful Response
        '401':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
          description: Unauthorized
        '403':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
          description: Forbidden
        '404':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
          description: Not Found
        '409':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
          description: Conflict
        '422':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
          description: Unprocessable Content
        '429':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
          description: Too Many Requests
      summary: Assign Service User
      tags:
        - service_users
  /v3/enterprise/members/users:
    get:
      operationId: handle_list_enterprise_users_v3_enterprise_members_users_get
      parameters:
        - in: query
          name: after
          required: false
          schema:
            anyOf:
              - type: string
              - type: 'null'
            title: After
        - in: query
          name: first
          required: false
          schema:
            default: 100
            maximum: 200
            minimum: 1
            title: First
            type: integer
        - description: Filter by exact email address
          in: query
          name: email
          required: false
          schema:
            anyOf:
              - type: string
              - type: 'null'
            description: Filter by exact email address
            title: Email
      responses:
        '200':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/PaginatedResponse_EnterpriseUser_'
          description: Successful Response
        '401':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
          description: Unauthorized
        '403':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
          description: Forbidden
        '404':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
          description: Not Found
        '409':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
          description: Conflict
        '422':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
          description: Unprocessable Content
        '429':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
          description: Too Many Requests
      summary: List Users
      tags:
        - users
    post:
      operationId: handle_bulk_invite_enterprise_users_v3_enterprise_members_users_post
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/UserBulkCreateRequest'
        required: true
      responses:
        '200':
          content:
            application/json:
              schema:
                items:
                  $ref: '#/components/schemas/User'
                title: >-
                  Response Handle Bulk Invite Enterprise Users V3 Enterprise
                  Members Users Post
                type: array
          description: Successful Response
        '401':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
          description: Unauthorized
        '403':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
          description: Forbidden
        '404':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
          description: Not Found
        '409':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
          description: Conflict
        '422':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
          description: Unprocessable Content
        '429':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
          description: Too Many Requests
      summary: Invite Users
      tags:
        - users
  /v3/enterprise/members/users/{user_id}:
    delete:
      operationId: >-
        handle_remove_enterprise_user_v3_enterprise_members_users__user_id__delete
      parameters:
        - description: User ID
          in: path
          name: user_id
          required: true
          schema:
            title: User Id
            type: string
      responses:
        '200':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/User'
          description: Successful Response
        '401':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
          description: Unauthorized
        '403':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
          description: Forbidden
        '404':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
          description: Not Found
        '409':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
          description: Conflict
        '422':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
          description: Unprocessable Content
        '429':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
          description: Too Many Requests
      summary: Delete User
      tags:
        - users
    get:
      description: >-
        Get a user by ID. Returns both direct and IDP-group-derived role
        assignments.
      operationId: handle_get_enterprise_user_v3_enterprise_members_users__user_id__get
      parameters:
        - description: User ID
          in: path
          name: user_id
          required: true
          schema:
            title: User Id
            type: string
      responses:
        '200':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/EnterpriseUserWithIdpRoles'
          description: Successful Response
        '401':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
          description: Unauthorized
        '403':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
          description: Forbidden
        '404':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
          description: Not Found
        '409':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
          description: Conflict
        '422':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
          description: Unprocessable Content
        '429':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
          description: Too Many Requests
      summary: Get User
      tags:
        - users
    patch:
      operationId: >-
        handle_update_enterprise_user_role_v3_enterprise_members_users__user_id__patch
      parameters:
        - description: User ID
          in: path
          name: user_id
          required: true
          schema:
            title: User Id
            type: string
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/UserUpdateRoleRequest'
        required: true
      responses:
        '200':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/User'
          description: Successful Response
        '401':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
          description: Unauthorized
        '403':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
          description: Forbidden
        '404':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
          description: Not Found
        '409':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
          description: Conflict
        '422':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
          description: Unprocessable Content
        '429':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
          description: Too Many Requests
      summary: Update User
      tags:
        - users
  /v3/enterprise/metrics/active-users:
    get:
      description: >-
        Get unique active users for a custom date range.


        A user is considered active if they have created at least min_sessions
        sessions

        OR at least min_searches searches within the specified time range.


        Returns a single count of unique active users across the entire range.
      operationId: handle_get_active_users_metrics_v3_enterprise_metrics_active_users_get
      parameters:
        - in: query
          name: time_before
          required: true
          schema:
            title: Time Before
            type: integer
        - in: query
          name: time_after
          required: true
          schema:
            title: Time After
            type: integer
        - in: query
          name: org_ids
          required: false
          schema:
            anyOf:
              - items:
                  type: string
                type: array
              - type: 'null'
            title: Org Ids
        - in: query
          name: min_sessions
          required: false
          schema:
            default: 1
            minimum: 0
            title: Min Sessions
            type: integer
        - in: query
          name: min_searches
          required: false
          schema:
            default: 1
            minimum: 0
            title: Min Searches
            type: integer
      responses:
        '200':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ActiveUserMetricsResponse'
          description: Successful Response
        '401':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
          description: Unauthorized
        '403':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
          description: Forbidden
        '404':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
          description: Not Found
        '409':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
          description: Conflict
        '422':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
          description: Unprocessable Content
        '429':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
          description: Too Many Requests
      summary: Get Active Users for Custom Date Range
      tags:
        - metrics
  /v3/enterprise/metrics/dau:
    get:
      description: >-
        Get daily active users for each day in the specified time range.


        A user is considered active on a given day if they have created at least

        min_sessions sessions OR at least min_searches searches during that UTC
        day.


        Returns a list of daily active user counts, one entry per day in the
        range.
      operationId: handle_get_dau_metrics_v3_enterprise_metrics_dau_get
      parameters:
        - in: query
          name: time_before
          required: true
          schema:
            title: Time Before
            type: integer
        - in: query
          name: time_after
          required: true
          schema:
            title: Time After
            type: integer
        - in: query
          name: org_ids
          required: false
          schema:
            anyOf:
              - items:
                  type: string
                type: array
              - type: 'null'
            title: Org Ids
        - in: query
          name: min_sessions
          required: false
          schema:
            default: 1
            minimum: 0
            title: Min Sessions
            type: integer
        - in: query
          name: min_searches
          required: false
          schema:
            default: 1
            minimum: 0
            title: Min Searches
            type: integer
      responses:
        '200':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ActiveUserMetricsListResponse'
          description: Successful Response
        '401':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
          description: Unauthorized
        '403':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
          description: Forbidden
        '404':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
          description: Not Found
        '409':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
          description: Conflict
        '422':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
          description: Unprocessable Content
        '429':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
          description: Too Many Requests
      summary: Get Daily Active Users
      tags:
        - metrics
  /v3/enterprise/metrics/mau:
    get:
      description: >-
        Get monthly active users for each month in the specified time range.


        A user is considered active in a given month if they have created at
        least

        min_sessions sessions OR at least min_searches searches during that UTC
        month.


        Returns a list of monthly active user counts, one entry per month in the
        range.
      operationId: handle_get_mau_metrics_v3_enterprise_metrics_mau_get
      parameters:
        - in: query
          name: time_before
          required: true
          schema:
            title: Time Before
            type: integer
        - in: query
          name: time_after
          required: true
          schema:
            title: Time After
            type: integer
        - in: query
          name: org_ids
          required: false
          schema:
            anyOf:
              - items:
                  type: string
                type: array
              - type: 'null'
            title: Org Ids
        - in: query
          name: min_sessions
          required: false
          schema:
            default: 1
            minimum: 0
            title: Min Sessions
            type: integer
        - in: query
          name: min_searches
          required: false
          schema:
            default: 1
            minimum: 0
            title: Min Searches
            type: integer
      responses:
        '200':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ActiveUserMetricsListResponse'
          description: Successful Response
        '401':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
          description: Unauthorized
        '403':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
          description: Forbidden
        '404':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
          description: Not Found
        '409':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
          description: Conflict
        '422':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
          description: Unprocessable Content
        '429':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
          description: Too Many Requests
      summary: Get Monthly Active Users
      tags:
        - metrics
  /v3/enterprise/metrics/prs:
    get:
      description: >-
        Get aggregated PR metrics for the enterprise account.


        Optionally filter by playbook_id to get metrics for PRs from sessions
        created with a specific playbook.
      operationId: handle_get_pr_metrics_v3_enterprise_metrics_prs_get
      parameters:
        - in: query
          name: user_ids
          required: false
          schema:
            anyOf:
              - items:
                  type: string
                type: array
              - type: 'null'
            title: User Ids
        - in: query
          name: service_user_ids
          required: false
          schema:
            anyOf:
              - items:
                  type: string
                type: array
              - type: 'null'
            title: Service User Ids
        - in: query
          name: time_before
          required: true
          schema:
            title: Time Before
            type: integer
        - in: query
          name: time_after
          required: true
          schema:
            title: Time After
            type: integer
        - in: query
          name: org_ids
          required: false
          schema:
            anyOf:
              - items:
                  type: string
                type: array
              - type: 'null'
            title: Org Ids
        - in: query
          name: playbook_id
          required: false
          schema:
            anyOf:
              - type: string
              - type: 'null'
            title: Playbook Id
      responses:
        '200':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/PrMetricsResponse'
          description: Successful Response
        '401':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
          description: Unauthorized
        '403':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
          description: Forbidden
        '404':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
          description: Not Found
        '409':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
          description: Conflict
        '422':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
          description: Unprocessable Content
        '429':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
          description: Too Many Requests
      summary: Get PR Metrics
      tags:
        - metrics
  /v3/enterprise/metrics/searches:
    get:
      description: Get aggregated search metrics for the enterprise account.
      operationId: handle_get_search_metrics_v3_enterprise_metrics_searches_get
      parameters:
        - in: query
          name: time_before
          required: true
          schema:
            title: Time Before
            type: integer
        - in: query
          name: time_after
          required: true
          schema:
            title: Time After
            type: integer
        - in: query
          name: org_ids
          required: false
          schema:
            anyOf:
              - items:
                  type: string
                type: array
              - type: 'null'
            title: Org Ids
      responses:
        '200':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/SearchMetricsResponse'
          description: Successful Response
        '401':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
          description: Unauthorized
        '403':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
          description: Forbidden
        '404':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
          description: Not Found
        '409':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
          description: Conflict
        '422':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
          description: Unprocessable Content
        '429':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
          description: Too Many Requests
      summary: Get Search Metrics
      tags:
        - metrics
  /v3/enterprise/metrics/sessions:
    get:
      description: >-
        Get aggregated session metrics for the enterprise account.


        Optionally filter by playbook_id to get metrics for sessions created
        with a specific playbook.
      operationId: handle_get_session_metrics_v3_enterprise_metrics_sessions_get
      parameters:
        - in: query
          name: user_ids
          required: false
          schema:
            anyOf:
              - items:
                  type: string
                type: array
              - type: 'null'
            title: User Ids
        - in: query
          name: service_user_ids
          required: false
          schema:
            anyOf:
              - items:
                  type: string
                type: array
              - type: 'null'
            title: Service User Ids
        - in: query
          name: time_before
          required: true
          schema:
            title: Time Before
            type: integer
        - in: query
          name: time_after
          required: true
          schema:
            title: Time After
            type: integer
        - in: query
          name: org_ids
          required: false
          schema:
            anyOf:
              - items:
                  type: string
                type: array
              - type: 'null'
            title: Org Ids
        - in: query
          name: playbook_id
          required: false
          schema:
            anyOf:
              - type: string
              - type: 'null'
            title: Playbook Id
      responses:
        '200':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/SessionMetricsResponse'
          description: Successful Response
        '401':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
          description: Unauthorized
        '403':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
          description: Forbidden
        '404':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
          description: Not Found
        '409':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
          description: Conflict
        '422':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
          description: Unprocessable Content
        '429':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
          description: Too Many Requests
      summary: Get Session Metrics
      tags:
        - metrics
  /v3/enterprise/metrics/sessions-by-category:
    get:
      description: >-
        Get session counts and ACU consumption grouped by category and
        subcategory.
      operationId: >-
        handle_get_sessions_by_category_v3_enterprise_metrics_sessions_by_category_get
      parameters:
        - in: query
          name: time_before
          required: true
          schema:
            title: Time Before
            type: integer
        - in: query
          name: time_after
          required: true
          schema:
            title: Time After
            type: integer
        - in: query
          name: org_ids
          required: false
          schema:
            anyOf:
              - items:
                  type: string
                type: array
              - type: 'null'
            title: Org Ids
      responses:
        '200':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/SessionsByCategoryResponse'
          description: Successful Response
        '401':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
          description: Unauthorized
        '403':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
          description: Forbidden
        '404':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
          description: Not Found
        '409':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
          description: Conflict
        '422':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
          description: Unprocessable Content
        '429':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
          description: Too Many Requests
      summary: Get Session Metrics by Category
      tags:
        - metrics
  /v3/enterprise/metrics/usage:
    get:
      description: |-
        Get aggregated usage metrics for the enterprise account.

        Returns counts of sessions, searches, and PRs (opened, closed, merged)
        within the specified time range.
      operationId: handle_get_usage_metrics_v3_enterprise_metrics_usage_get
      parameters:
        - in: query
          name: time_before
          required: false
          schema:
            anyOf:
              - type: integer
              - type: 'null'
            title: Time Before
        - in: query
          name: time_after
          required: false
          schema:
            anyOf:
              - type: integer
              - type: 'null'
            title: Time After
      responses:
        '200':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/UsageMetrics'
          description: Successful Response
        '401':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
          description: Unauthorized
        '403':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
          description: Forbidden
        '404':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
          description: Not Found
        '409':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
          description: Conflict
        '422':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
          description: Unprocessable Content
        '429':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
          description: Too Many Requests
      summary: Get Usage Metrics
      tags:
        - metrics
  /v3/enterprise/metrics/wau:
    get:
      description: >-
        Get weekly active users for each week in the specified time range.


        A user is considered active in a given week if they have created at
        least

        min_sessions sessions OR at least min_searches searches during that UTC
        week.


        Weeks are defined as Monday 00:00:00 UTC to Sunday 23:59:59 UTC.


        Returns a list of weekly active user counts, one entry per week in the
        range.
      operationId: handle_get_wau_metrics_v3_enterprise_metrics_wau_get
      parameters:
        - in: query
          name: time_before
          required: true
          schema:
            title: Time Before
            type: integer
        - in: query
          name: time_after
          required: true
          schema:
            title: Time After
            type: integer
        - in: query
          name: org_ids
          required: false
          schema:
            anyOf:
              - items:
                  type: string
                type: array
              - type: 'null'
            title: Org Ids
        - in: query
          name: min_sessions
          required: false
          schema:
            default: 1
            minimum: 0
            title: Min Sessions
            type: integer
        - in: query
          name: min_searches
          required: false
          schema:
            default: 1
            minimum: 0
            title: Min Searches
            type: integer
      responses:
        '200':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ActiveUserMetricsListResponse'
          description: Successful Response
        '401':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
          description: Unauthorized
        '403':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
          description: Forbidden
        '404':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
          description: Not Found
        '409':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
          description: Conflict
        '422':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
          description: Unprocessable Content
        '429':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
          description: Too Many Requests
      summary: Get Weekly Active Users
      tags:
        - metrics
  /v3/enterprise/org-group-limits:
    get:
      description: Get the current organization groups configuration.
      operationId: get_org_groups_config_v3_enterprise_org_group_limits_get
      responses:
        '200':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/OrgGroupsConfig'
          description: Successful Response
        '401':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
          description: Unauthorized
        '403':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
          description: Forbidden
        '404':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
          description: Not Found
        '409':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
          description: Conflict
        '422':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
          description: Unprocessable Content
        '429':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
          description: Too Many Requests
      summary: Get Org Groups Config
      tags:
        - org-groups
    put:
      description: >-
        Update the organization groups configuration.


        This endpoint replaces the entire org groups configuration with the
        provided config.

        - Groups not in the request will be deleted

        - Groups in the request will be created or updated to match the config
      operationId: update_org_groups_config_v3_enterprise_org_group_limits_put
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/OrgGroupsConfig'
        required: true
      responses:
        '200':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/OrgGroupsConfig'
          description: Successful Response
        '401':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
          description: Unauthorized
        '403':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
          description: Forbidden
        '404':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
          description: Not Found
        '409':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
          description: Conflict
        '422':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
          description: Unprocessable Content
        '429':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
          description: Too Many Requests
      summary: Update Org Groups Config
      tags:
        - org-groups
  /v3/enterprise/organizations:
    get:
      description: List organizations in the enterprise.
      operationId: handle_get_organizations_v3_enterprise_organizations_get
      parameters:
        - in: query
          name: after
          required: false
          schema:
            anyOf:
              - type: string
              - type: 'null'
            title: After
        - in: query
          name: first
          required: false
          schema:
            default: 100
            maximum: 200
            minimum: 1
            title: First
            type: integer
      responses:
        '200':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/PaginatedResponse_OrganizationResponse_'
          description: Successful Response
        '401':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
          description: Unauthorized
        '403':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
          description: Forbidden
        '404':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
          description: Not Found
        '409':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
          description: Conflict
        '422':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
          description: Unprocessable Content
        '429':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
          description: Too Many Requests
      summary: List Organizations
      tags:
        - organizations
    post:
      description: Create a new organization in this enterprise
      operationId: handle_create_organization_v3_enterprise_organizations_post
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/OrganizationCreateRequest'
        required: true
      responses:
        '200':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/OrganizationResponse'
          description: Successful Response
        '401':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
          description: Unauthorized
        '403':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
          description: Forbidden
        '404':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
          description: Not Found
        '409':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
          description: Conflict
        '422':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
          description: Unprocessable Content
        '429':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
          description: Too Many Requests
      summary: Create Organization
      tags:
        - organizations
  /v3/enterprise/organizations/{org_id}:
    delete:
      description: Delete an organization from this enterprise
      operationId: handle_delete_organization_v3_enterprise_organizations__org_id__delete
      parameters:
        - description: 'Organization ID (prefix: org-)'
          in: path
          name: org_id
          required: true
          schema:
            example: org-abc123def456
            title: Org Id
            type: string
      responses:
        '200':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/OrganizationResponse'
          description: Successful Response
        '401':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
          description: Unauthorized
        '403':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
          description: Forbidden
        '404':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
          description: Not Found
        '409':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
          description: Conflict
        '422':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
          description: Unprocessable Content
        '429':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
          description: Too Many Requests
      summary: Delete Organization
      tags:
        - organizations
    get:
      description: Get details for a specific organization in the enterprise.
      operationId: handle_get_organization_v3_enterprise_organizations__org_id__get
      parameters:
        - description: 'Organization ID (prefix: org-)'
          in: path
          name: org_id
          required: true
          schema:
            example: org-abc123def456
            title: Org Id
            type: string
      responses:
        '200':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/OrganizationResponse'
          description: Successful Response
        '401':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
          description: Unauthorized
        '403':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
          description: Forbidden
        '404':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
          description: Not Found
        '409':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
          description: Conflict
        '422':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
          description: Unprocessable Content
        '429':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
          description: Too Many Requests
      summary: Get Organization
      tags:
        - organizations
    patch:
      description: Update an organization's name and/or ACU limits
      operationId: handle_update_organization_v3_enterprise_organizations__org_id__patch
      parameters:
        - description: 'Organization ID (prefix: org-)'
          in: path
          name: org_id
          required: true
          schema:
            example: org-abc123def456
            title: Org Id
            type: string
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/OrganizationUpdateRequest'
        required: true
      responses:
        '200':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/OrganizationResponse'
          description: Successful Response
        '401':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
          description: Unauthorized
        '403':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
          description: Forbidden
        '404':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
          description: Not Found
        '409':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
          description: Conflict
        '422':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
          description: Unprocessable Content
        '429':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
          description: Too Many Requests
      summary: Update Organization
      tags:
        - organizations
  /v3/enterprise/organizations/{org_id}/audit-logs:
    get:
      description: List audit logs for the organization.
      operationId: >-
        handle_get_org_audit_logs_v3_enterprise_organizations__org_id__audit_logs_get
      parameters:
        - description: 'Organization ID (prefix: org-)'
          in: path
          name: org_id
          required: true
          schema:
            example: org-abc123def456
            title: Org Id
            type: string
        - in: query
          name: order
          required: false
          schema:
            default: desc
            enum:
              - asc
              - desc
            title: Order
            type: string
        - in: query
          name: time_before
          required: false
          schema:
            anyOf:
              - type: integer
              - type: 'null'
            title: Time Before
        - in: query
          name: time_after
          required: false
          schema:
            anyOf:
              - type: integer
              - type: 'null'
            title: Time After
        - in: query
          name: after
          required: false
          schema:
            anyOf:
              - type: string
              - type: 'null'
            title: After
        - in: query
          name: first
          required: false
          schema:
            default: 100
            maximum: 200
            minimum: 1
            title: First
            type: integer
        - in: query
          name: action
          required: false
          schema:
            anyOf:
              - $ref: '#/components/schemas/AuditLogAction'
              - type: 'null'
            title: Action
      responses:
        '200':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/PaginatedResponse_AuditLogResponse_'
          description: Successful Response
        '401':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
          description: Unauthorized
        '403':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
          description: Forbidden
        '404':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
          description: Not Found
        '409':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
          description: Conflict
        '422':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
          description: Unprocessable Content
        '429':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
          description: Too Many Requests
      summary: List Organization Audit Logs
      tags:
        - audit_logs
  /v3/enterprise/organizations/{org_id}/code-scans:
    post:
      description: |-
        Start a new code scan on a repository in an organization.

        The scan is enqueued and launched asynchronously by the scan dispatcher.
        The scan is attributed to the calling principal (the service user or PAT
        that made the request). Returns ``409`` when the organization's scan
        backlog is at capacity.
      operationId: >-
        handle_start_code_scan_v3_enterprise_organizations__org_id__code_scans_post
      parameters:
        - description: 'Organization ID (prefix: org-)'
          in: path
          name: org_id
          required: true
          schema:
            example: org-abc123def456
            title: Org Id
            type: string
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/CodeScanCreateRequest'
        required: true
      responses:
        '201':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/CodeScanResponse'
          description: Successful Response
        '401':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
          description: Unauthorized
        '403':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
          description: Forbidden
        '404':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
          description: Not Found
        '409':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
          description: Conflict
        '422':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
          description: Unprocessable Content
        '429':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
          description: Too Many Requests
      summary: Start Code Scan
      tags:
        - code-scans
  /v3/enterprise/organizations/{org_id}/code-scans/ingestion:
    post:
      description: >-
        Start an ingestion-mode code scan on a repository in an organization.


        The scan is enqueued and launched asynchronously by the scan dispatcher.

        Only ingest-mode profiles are accepted; a non-ingest profile is rejected

        with ``400``. Optional attachment URLs (uploaded via the attachments
        API)

        are provided to the scan. Returns ``409`` when the organization's scan

        backlog is at capacity.
      operationId: >-
        handle_start_ingestion_scan_v3_enterprise_organizations__org_id__code_scans_ingestion_post
      parameters:
        - description: 'Organization ID (prefix: org-)'
          in: path
          name: org_id
          required: true
          schema:
            example: org-abc123def456
            title: Org Id
            type: string
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/StartIngestionScanRequest'
        required: true
      responses:
        '201':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/CodeScanResponse'
          description: Successful Response
        '401':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
          description: Unauthorized
        '403':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
          description: Forbidden
        '404':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
          description: Not Found
        '409':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
          description: Conflict
        '422':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
          description: Unprocessable Content
        '429':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
          description: Too Many Requests
      summary: Start Ingestion Scan
      tags:
        - code-scans
  /v3/enterprise/organizations/{org_id}/code-scans/{scan_id}/findings/{finding_id}/remediate:
    post:
      description: >-
        Launch a Devin session to remediate a code scan finding.


        The session analyzes the vulnerable code, implements a fix, and opens a

        pull request. The session is attributed to the calling principal (the

        service user or PAT that made the request). Returns ``409`` if the
        finding

        already has a remediation session.
      operationId: >-
        handle_remediate_code_scan_finding_v3_enterprise_organizations__org_id__code_scans__scan_id__findings__finding_id__remediate_post
      parameters:
        - description: 'Organization ID (prefix: org-)'
          in: path
          name: org_id
          required: true
          schema:
            example: org-abc123def456
            title: Org Id
            type: string
        - in: path
          name: scan_id
          required: true
          schema:
            title: Scan Id
            type: string
        - in: path
          name: finding_id
          required: true
          schema:
            title: Finding Id
            type: string
      responses:
        '201':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/RemediateFindingResponse'
          description: Successful Response
        '401':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
          description: Unauthorized
        '403':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
          description: Forbidden
        '404':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
          description: Not Found
        '409':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
          description: Conflict
        '422':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
          description: Unprocessable Content
        '429':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
          description: Too Many Requests
      summary: Remediate Code Scan Finding
      tags:
        - code-scans
  /v3/enterprise/organizations/{org_id}/git-providers/permissions:
    delete:
      operationId: >-
        handle_clear_organization_git_permissions_v3_enterprise_organizations__org_id__git_providers_permissions_delete
      parameters:
        - description: 'Organization ID (prefix: org-)'
          in: path
          name: org_id
          required: true
          schema:
            example: org-abc123def456
            title: Org Id
            type: string
      responses:
        '200':
          content:
            application/json:
              schema:
                items:
                  $ref: '#/components/schemas/GitPermissionResponse'
                title: >-
                  Response Handle Clear Organization Git Permissions V3
                  Enterprise Organizations  Org Id  Git Providers Permissions
                  Delete
                type: array
          description: Successful Response
        '401':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
          description: Unauthorized
        '403':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
          description: Forbidden
        '404':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
          description: Not Found
        '409':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
          description: Conflict
        '422':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
          description: Unprocessable Content
        '429':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
          description: Too Many Requests
      summary: Clear Git Permissions
      tags:
        - git_permissions
    get:
      description: List git permissions for the organization.
      operationId: >-
        handle_get_organization_git_permissions_v3_enterprise_organizations__org_id__git_providers_permissions_get
      parameters:
        - description: 'Organization ID (prefix: org-)'
          in: path
          name: org_id
          required: true
          schema:
            example: org-abc123def456
            title: Org Id
            type: string
        - in: query
          name: after
          required: false
          schema:
            anyOf:
              - type: string
              - type: 'null'
            title: After
        - in: query
          name: first
          required: false
          schema:
            default: 100
            maximum: 200
            minimum: 1
            title: First
            type: integer
      responses:
        '200':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/PaginatedResponse_GitPermissionResponse_'
          description: Successful Response
        '401':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
          description: Unauthorized
        '403':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
          description: Forbidden
        '404':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
          description: Not Found
        '409':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
          description: Conflict
        '422':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
          description: Unprocessable Content
        '429':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
          description: Too Many Requests
      summary: List Git Permissions
      tags:
        - git_permissions
    post:
      operationId: >-
        handle_bulk_create_organization_git_permissions_v3_enterprise_organizations__org_id__git_providers_permissions_post
      parameters:
        - description: 'Organization ID (prefix: org-)'
          in: path
          name: org_id
          required: true
          schema:
            example: org-abc123def456
            title: Org Id
            type: string
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/GitPermissionBulkCreateRequest'
        required: true
      responses:
        '200':
          content:
            application/json:
              schema:
                items:
                  $ref: '#/components/schemas/GitPermissionResponse'
                title: >-
                  Response Handle Bulk Create Organization Git Permissions V3
                  Enterprise Organizations  Org Id  Git Providers Permissions
                  Post
                type: array
          description: Successful Response
        '401':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
          description: Unauthorized
        '403':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
          description: Forbidden
        '404':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
          description: Not Found
        '409':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
          description: Conflict
        '422':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
          description: Unprocessable Content
        '429':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
          description: Too Many Requests
      summary: Create Git Permissions
      tags:
        - git_permissions
    put:
      operationId: >-
        handle_replace_organization_git_permissions_v3_enterprise_organizations__org_id__git_providers_permissions_put
      parameters:
        - description: 'Organization ID (prefix: org-)'
          in: path
          name: org_id
          required: true
          schema:
            example: org-abc123def456
            title: Org Id
            type: string
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/GitPermissionBulkCreateRequest'
        required: true
      responses:
        '200':
          content:
            application/json:
              schema:
                items:
                  $ref: '#/components/schemas/GitPermissionResponse'
                title: >-
                  Response Handle Replace Organization Git Permissions V3
                  Enterprise Organizations  Org Id  Git Providers Permissions
                  Put
                type: array
          description: Successful Response
        '401':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
          description: Unauthorized
        '403':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
          description: Forbidden
        '404':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
          description: Not Found
        '409':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
          description: Conflict
        '422':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
          description: Unprocessable Content
        '429':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
          description: Too Many Requests
      summary: Replace Git Permissions
      tags:
        - git_permissions
  /v3/enterprise/organizations/{org_id}/git-providers/permissions/{git_permission_id}:
    delete:
      operationId: >-
        handle_delete_organization_git_permission_v3_enterprise_organizations__org_id__git_providers_permissions__git_permission_id__delete
      parameters:
        - description: 'Organization ID (prefix: org-)'
          in: path
          name: org_id
          required: true
          schema:
            example: org-abc123def456
            title: Org Id
            type: string
        - description: 'Git permission ID (prefix: git-permission-)'
          in: path
          name: git_permission_id
          required: true
          schema:
            example: git-permission-abc123def456
            title: Git Permission Id
            type: string
      responses:
        '200':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/GitPermissionResponse'
          description: Successful Response
        '401':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
          description: Unauthorized
        '403':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
          description: Forbidden
        '404':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
          description: Not Found
        '409':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
          description: Conflict
        '422':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
          description: Unprocessable Content
        '429':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
          description: Too Many Requests
      summary: Delete Git Permission
      tags:
        - git_permissions
    patch:
      operationId: >-
        handle_update_organization_git_permission_v3_enterprise_organizations__org_id__git_providers_permissions__git_permission_id__patch
      parameters:
        - description: 'Organization ID (prefix: org-)'
          in: path
          name: org_id
          required: true
          schema:
            example: org-abc123def456
            title: Org Id
            type: string
        - description: 'Git permission ID (prefix: git-permission-)'
          in: path
          name: git_permission_id
          required: true
          schema:
            example: git-permission-abc123def456
            title: Git Permission Id
            type: string
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/GitPermissionUpdateRequest'
        required: true
      responses:
        '200':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/GitPermissionResponse'
          description: Successful Response
        '401':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
          description: Unauthorized
        '403':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
          description: Forbidden
        '404':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
          description: Not Found
        '409':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
          description: Conflict
        '422':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
          description: Unprocessable Content
        '429':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
          description: Too Many Requests
      summary: Update Git Permission
      tags:
        - git_permissions
  /v3/enterprise/organizations/{org_id}/members/idp-groups:
    get:
      operationId: >-
        handle_list_organization_idp_groups_v3_enterprise_organizations__org_id__members_idp_groups_get
      parameters:
        - description: 'Organization ID (prefix: org-)'
          in: path
          name: org_id
          required: true
          schema:
            example: org-abc123def456
            title: Org Id
            type: string
        - in: query
          name: after
          required: false
          schema:
            anyOf:
              - type: string
              - type: 'null'
            title: After
        - in: query
          name: first
          required: false
          schema:
            default: 100
            maximum: 200
            minimum: 1
            title: First
            type: integer
      responses:
        '200':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/PaginatedResponse_IdpGroup_'
          description: Successful Response
        '401':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
          description: Unauthorized
        '403':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
          description: Forbidden
        '404':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
          description: Not Found
        '409':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
          description: Conflict
        '422':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
          description: Unprocessable Content
        '429':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
          description: Too Many Requests
      summary: List Organization IDP Groups
      tags:
        - idp_groups
  /v3/enterprise/organizations/{org_id}/members/idp-groups/{idp_group_name}:
    delete:
      description: Remove idp_group from the organization.
      operationId: >-
        handle_remove_organization_idp_group_v3_enterprise_organizations__org_id__members_idp_groups__idp_group_name__delete
      parameters:
        - description: 'Organization ID (prefix: org-)'
          in: path
          name: org_id
          required: true
          schema:
            example: org-abc123def456
            title: Org Id
            type: string
        - in: path
          name: idp_group_name
          required: true
          schema:
            title: Idp Group Name
            type: string
      responses:
        '200':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/IdpGroup'
          description: Successful Response
        '401':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
          description: Unauthorized
        '403':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
          description: Forbidden
        '404':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
          description: Not Found
        '409':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
          description: Conflict
        '422':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
          description: Unprocessable Content
        '429':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
          description: Too Many Requests
      summary: Delete Organization IDP Group
      tags:
        - idp_groups
    get:
      operationId: >-
        handle_get_organization_idp_group_v3_enterprise_organizations__org_id__members_idp_groups__idp_group_name__get
      parameters:
        - description: 'Organization ID (prefix: org-)'
          in: path
          name: org_id
          required: true
          schema:
            example: org-abc123def456
            title: Org Id
            type: string
        - in: path
          name: idp_group_name
          required: true
          schema:
            title: Idp Group Name
            type: string
      responses:
        '200':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/IdpGroup'
          description: Successful Response
        '401':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
          description: Unauthorized
        '403':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
          description: Forbidden
        '404':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
          description: Not Found
        '409':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
          description: Conflict
        '422':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
          description: Unprocessable Content
        '429':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
          description: Too Many Requests
      summary: Get Organization IDP Group
      tags:
        - idp_groups
    patch:
      operationId: >-
        handle_update_organization_idp_group_role_v3_enterprise_organizations__org_id__members_idp_groups__idp_group_name__patch
      parameters:
        - description: 'Organization ID (prefix: org-)'
          in: path
          name: org_id
          required: true
          schema:
            example: org-abc123def456
            title: Org Id
            type: string
        - in: path
          name: idp_group_name
          required: true
          schema:
            title: Idp Group Name
            type: string
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/IdpGroupUpdateRoleRequest'
        required: true
      responses:
        '200':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/IdpGroup'
          description: Successful Response
        '401':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
          description: Unauthorized
        '403':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
          description: Forbidden
        '404':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
          description: Not Found
        '409':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
          description: Conflict
        '422':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
          description: Unprocessable Content
        '429':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
          description: Too Many Requests
      summary: Update Organization IDP Group
      tags:
        - idp_groups
    post:
      operationId: >-
        handle_assign_organization_idp_group_role_v3_enterprise_organizations__org_id__members_idp_groups__idp_group_name__post
      parameters:
        - description: 'Organization ID (prefix: org-)'
          in: path
          name: org_id
          required: true
          schema:
            example: org-abc123def456
            title: Org Id
            type: string
        - in: path
          name: idp_group_name
          required: true
          schema:
            title: Idp Group Name
            type: string
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/IdpGroupUpdateRoleRequest'
        required: true
      responses:
        '200':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/IdpGroup'
          description: Successful Response
        '401':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
          description: Unauthorized
        '403':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
          description: Forbidden
        '404':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
          description: Not Found
        '409':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
          description: Conflict
        '422':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
          description: Unprocessable Content
        '429':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
          description: Too Many Requests
      summary: Assign Organization IDP Group
      tags:
        - idp_groups
  /v3/enterprise/organizations/{org_id}/members/idp-users:
    get:
      description: >-
        List users whose organization membership is derived from IDP group
        assignments.
      operationId: >-
        handle_list_organization_idp_users_v3_enterprise_organizations__org_id__members_idp_users_get
      parameters:
        - description: 'Organization ID (prefix: org-)'
          in: path
          name: org_id
          required: true
          schema:
            example: org-abc123def456
            title: Org Id
            type: string
        - in: query
          name: after
          required: false
          schema:
            anyOf:
              - type: string
              - type: 'null'
            title: After
        - in: query
          name: first
          required: false
          schema:
            default: 100
            maximum: 200
            minimum: 1
            title: First
            type: integer
        - description: Filter by exact email address
          in: query
          name: email
          required: false
          schema:
            anyOf:
              - type: string
              - type: 'null'
            description: Filter by exact email address
            title: Email
      responses:
        '200':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/PaginatedResponse_IdpGroupUser_'
          description: Successful Response
        '401':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
          description: Unauthorized
        '403':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
          description: Forbidden
        '404':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
          description: Not Found
        '409':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
          description: Conflict
        '422':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
          description: Unprocessable Content
        '429':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
          description: Too Many Requests
      summary: List Organization IDP Group Users
      tags:
        - users
  /v3/enterprise/organizations/{org_id}/members/service-users:
    get:
      description: List service users in the organization.
      operationId: >-
        handle_list_organization_service_users_v3_enterprise_organizations__org_id__members_service_users_get
      parameters:
        - description: 'Organization ID (prefix: org-)'
          in: path
          name: org_id
          required: true
          schema:
            example: org-abc123def456
            title: Org Id
            type: string
        - in: query
          name: after
          required: false
          schema:
            anyOf:
              - type: string
              - type: 'null'
            title: After
        - in: query
          name: first
          required: false
          schema:
            default: 100
            maximum: 200
            minimum: 1
            title: First
            type: integer
        - description: Include inactive service users (expired or removed).
          in: query
          name: include_inactive
          required: false
          schema:
            default: false
            description: Include inactive service users (expired or removed).
            title: Include Inactive
            type: boolean
      responses:
        '200':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/PaginatedResponse_ServiceUser_'
          description: Successful Response
        '401':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
          description: Unauthorized
        '403':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
          description: Forbidden
        '404':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
          description: Not Found
        '409':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
          description: Conflict
        '422':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
          description: Unprocessable Content
        '429':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
          description: Too Many Requests
      summary: List Organization Service Users
      tags:
        - service_users
  /v3/enterprise/organizations/{org_id}/members/service-users/{service_user_id}:
    delete:
      description: Remove service user from the organization.
      operationId: >-
        handle_remove_organization_service_user_v3_enterprise_organizations__org_id__members_service_users__service_user_id__delete
      parameters:
        - description: 'Organization ID (prefix: org-)'
          in: path
          name: org_id
          required: true
          schema:
            example: org-abc123def456
            title: Org Id
            type: string
        - description: 'Service user ID (prefix: service-user-)'
          in: path
          name: service_user_id
          required: true
          schema:
            example: service-user-abc123def456
            title: Service User Id
            type: string
      responses:
        '200':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ServiceUser'
          description: Successful Response
        '401':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
          description: Unauthorized
        '403':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
          description: Forbidden
        '404':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
          description: Not Found
        '409':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
          description: Conflict
        '422':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
          description: Unprocessable Content
        '429':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
          description: Too Many Requests
      summary: Delete Organization Service User
      tags:
        - service_users
    patch:
      description: Update organization role for service user.
      operationId: >-
        handle_update_organization_service_user_role_v3_enterprise_organizations__org_id__members_service_users__service_user_id__patch
      parameters:
        - description: 'Organization ID (prefix: org-)'
          in: path
          name: org_id
          required: true
          schema:
            example: org-abc123def456
            title: Org Id
            type: string
        - description: 'Service user ID (prefix: service-user-)'
          in: path
          name: service_user_id
          required: true
          schema:
            example: service-user-abc123def456
            title: Service User Id
            type: string
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/ServiceUserUpdateRoleRequest'
        required: true
      responses:
        '200':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ServiceUser'
          description: Successful Response
        '401':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
          description: Unauthorized
        '403':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
          description: Forbidden
        '404':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
          description: Not Found
        '409':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
          description: Conflict
        '422':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
          description: Unprocessable Content
        '429':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
          description: Too Many Requests
      summary: Update Organization Service User
      tags:
        - service_users
    post:
      description: Assign organization role to service user.
      operationId: >-
        handle_assign_organization_service_user_role_v3_enterprise_organizations__org_id__members_service_users__service_user_id__post
      parameters:
        - description: 'Organization ID (prefix: org-)'
          in: path
          name: org_id
          required: true
          schema:
            example: org-abc123def456
            title: Org Id
            type: string
        - description: 'Service user ID (prefix: service-user-)'
          in: path
          name: service_user_id
          required: true
          schema:
            example: service-user-abc123def456
            title: Service User Id
            type: string
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/ServiceUserUpdateRoleRequest'
        required: true
      responses:
        '200':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ServiceUser'
          description: Successful Response
        '401':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
          description: Unauthorized
        '403':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
          description: Forbidden
        '404':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
          description: Not Found
        '409':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
          description: Conflict
        '422':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
          description: Unprocessable Content
        '429':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
          description: Too Many Requests
      summary: Assign Organization Service User
      tags:
        - service_users
  /v3/enterprise/organizations/{org_id}/members/users:
    get:
      operationId: >-
        handle_list_organization_users_v3_enterprise_organizations__org_id__members_users_get
      parameters:
        - description: 'Organization ID (prefix: org-)'
          in: path
          name: org_id
          required: true
          schema:
            example: org-abc123def456
            title: Org Id
            type: string
        - in: query
          name: after
          required: false
          schema:
            anyOf:
              - type: string
              - type: 'null'
            title: After
        - in: query
          name: first
          required: false
          schema:
            default: 100
            maximum: 200
            minimum: 1
            title: First
            type: integer
        - description: Filter by exact email address
          in: query
          name: email
          required: false
          schema:
            anyOf:
              - type: string
              - type: 'null'
            description: Filter by exact email address
            title: Email
      responses:
        '200':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/PaginatedResponse_User_'
          description: Successful Response
        '401':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
          description: Unauthorized
        '403':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
          description: Forbidden
        '404':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
          description: Not Found
        '409':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
          description: Conflict
        '422':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
          description: Unprocessable Content
        '429':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
          description: Too Many Requests
      summary: List Organization Users
      tags:
        - users
  /v3/enterprise/organizations/{org_id}/members/users/{user_id}:
    delete:
      operationId: >-
        handle_remove_organization_user_v3_enterprise_organizations__org_id__members_users__user_id__delete
      parameters:
        - description: 'Organization ID (prefix: org-)'
          in: path
          name: org_id
          required: true
          schema:
            example: org-abc123def456
            title: Org Id
            type: string
        - description: User ID
          in: path
          name: user_id
          required: true
          schema:
            title: User Id
            type: string
      responses:
        '200':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/User'
          description: Successful Response
        '401':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
          description: Unauthorized
        '403':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
          description: Forbidden
        '404':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
          description: Not Found
        '409':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
          description: Conflict
        '422':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
          description: Unprocessable Content
        '429':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
          description: Too Many Requests
      summary: Delete Organization User
      tags:
        - users
    patch:
      operationId: >-
        handle_update_organization_user_role_v3_enterprise_organizations__org_id__members_users__user_id__patch
      parameters:
        - description: 'Organization ID (prefix: org-)'
          in: path
          name: org_id
          required: true
          schema:
            example: org-abc123def456
            title: Org Id
            type: string
        - description: User ID
          in: path
          name: user_id
          required: true
          schema:
            title: User Id
            type: string
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/UserUpdateRoleRequest'
        required: true
      responses:
        '200':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/User'
          description: Successful Response
        '401':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
          description: Unauthorized
        '403':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
          description: Forbidden
        '404':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
          description: Not Found
        '409':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
          description: Conflict
        '422':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
          description: Unprocessable Content
        '429':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
          description: Too Many Requests
      summary: Update Organization User
      tags:
        - users
    post:
      operationId: >-
        handle_assign_organization_user_role_v3_enterprise_organizations__org_id__members_users__user_id__post
      parameters:
        - description: 'Organization ID (prefix: org-)'
          in: path
          name: org_id
          required: true
          schema:
            example: org-abc123def456
            title: Org Id
            type: string
        - description: User ID
          in: path
          name: user_id
          required: true
          schema:
            title: User Id
            type: string
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/UserUpdateRoleRequest'
        required: true
      responses:
        '200':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/User'
          description: Successful Response
        '401':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
          description: Unauthorized
        '403':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
          description: Forbidden
        '404':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
          description: Not Found
        '409':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
          description: Conflict
        '422':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
          description: Unprocessable Content
        '429':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
          description: Too Many Requests
      summary: Assign Organization User
      tags:
        - users
  /v3/enterprise/organizations/{org_id}/metrics/usage:
    get:
      description: |-
        Get aggregated usage metrics for the enterprise account.

        Returns counts of sessions, searches, and PRs (opened, closed, merged)
        within the specified time range.
      operationId: >-
        handle_get_organization_usage_metrics_v3_enterprise_organizations__org_id__metrics_usage_get
      parameters:
        - description: 'Organization ID (prefix: org-)'
          in: path
          name: org_id
          required: true
          schema:
            example: org-abc123def456
            title: Org Id
            type: string
        - in: query
          name: time_before
          required: false
          schema:
            anyOf:
              - type: integer
              - type: 'null'
            title: Time Before
        - in: query
          name: time_after
          required: false
          schema:
            anyOf:
              - type: integer
              - type: 'null'
            title: Time After
      responses:
        '200':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/UsageMetrics'
          description: Successful Response
        '401':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
          description: Unauthorized
        '403':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
          description: Forbidden
        '404':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
          description: Not Found
        '409':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
          description: Conflict
        '422':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
          description: Unprocessable Content
        '429':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
          description: Too Many Requests
      summary: Get Organization Usage Metrics
      tags:
        - metrics
  /v3/enterprise/organizations/{org_id}/tags:
    delete:
      description: Clear all allowed session tags for an organization.
      operationId: >-
        clear_organization_allowed_tags_v3_enterprise_organizations__org_id__tags_delete
      parameters:
        - description: 'Organization ID (prefix: org-)'
          in: path
          name: org_id
          required: true
          schema:
            example: org-abc123def456
            title: Org Id
            type: string
      responses:
        '200':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/TagsResponse'
          description: Successful Response
        '401':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
          description: Unauthorized
        '403':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
          description: Forbidden
        '404':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
          description: Not Found
        '409':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
          description: Conflict
        '422':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
          description: Unprocessable Content
        '429':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
          description: Too Many Requests
      summary: Clear Organization Tags
      tags:
        - organization-tags
    get:
      description: Get the allowed session tags for an organization.
      operationId: >-
        handle_get_organization_allowed_tags_v3_enterprise_organizations__org_id__tags_get
      parameters:
        - description: 'Organization ID (prefix: org-)'
          in: path
          name: org_id
          required: true
          schema:
            example: org-abc123def456
            title: Org Id
            type: string
      responses:
        '200':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/TagsResponse'
          description: Successful Response
        '401':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
          description: Unauthorized
        '403':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
          description: Forbidden
        '404':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
          description: Not Found
        '409':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
          description: Conflict
        '422':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
          description: Unprocessable Content
        '429':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
          description: Too Many Requests
      summary: Get Organization Allowed Tags
      tags:
        - organization-tags
    post:
      description: Append tags to the allowed session tags for an organization.
      operationId: >-
        handle_append_organization_allowed_tags_v3_enterprise_organizations__org_id__tags_post
      parameters:
        - description: 'Organization ID (prefix: org-)'
          in: path
          name: org_id
          required: true
          schema:
            example: org-abc123def456
            title: Org Id
            type: string
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/TagsCreateRequest'
        required: true
      responses:
        '200':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/TagsResponse'
          description: Successful Response
        '401':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
          description: Unauthorized
        '403':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
          description: Forbidden
        '404':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
          description: Not Found
        '409':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
          description: Conflict
        '422':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
          description: Unprocessable Content
        '429':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
          description: Too Many Requests
      summary: Append Organization Tags
      tags:
        - organization-tags
    put:
      description: Replace the full set of allowed session tags for an organization.
      operationId: >-
        handle_replace_organization_allowed_tags_v3_enterprise_organizations__org_id__tags_put
      parameters:
        - description: 'Organization ID (prefix: org-)'
          in: path
          name: org_id
          required: true
          schema:
            example: org-abc123def456
            title: Org Id
            type: string
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/TagsCreateRequest'
        required: true
      responses:
        '200':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/TagsResponse'
          description: Successful Response
        '401':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
          description: Unauthorized
        '403':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
          description: Forbidden
        '404':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
          description: Not Found
        '409':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
          description: Conflict
        '422':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
          description: Unprocessable Content
        '429':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
          description: Too Many Requests
      summary: Replace Organization Allowed Tags
      tags:
        - organization-tags
  /v3/enterprise/organizations/{org_id}/tags/default:
    delete:
      description: Clear the default tag for an organization.
      operationId: >-
        clear_organization_default_tag_v3_enterprise_organizations__org_id__tags_default_delete
      parameters:
        - description: 'Organization ID (prefix: org-)'
          in: path
          name: org_id
          required: true
          schema:
            example: org-abc123def456
            title: Org Id
            type: string
      responses:
        '200':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/DefaultTagResponse'
          description: Successful Response
        '401':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
          description: Unauthorized
        '403':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
          description: Forbidden
        '404':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
          description: Not Found
        '409':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
          description: Conflict
        '422':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
          description: Unprocessable Content
        '429':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
          description: Too Many Requests
      summary: Clear Organization Default Tag
      tags:
        - organization-tags
    get:
      description: Get the current default tag for an organization.
      operationId: >-
        get_organization_default_tag_v3_enterprise_organizations__org_id__tags_default_get
      parameters:
        - description: 'Organization ID (prefix: org-)'
          in: path
          name: org_id
          required: true
          schema:
            example: org-abc123def456
            title: Org Id
            type: string
      responses:
        '200':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/DefaultTagResponse'
          description: Successful Response
        '401':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
          description: Unauthorized
        '403':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
          description: Forbidden
        '404':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
          description: Not Found
        '409':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
          description: Conflict
        '422':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
          description: Unprocessable Content
        '429':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
          description: Too Many Requests
      summary: Get Organization Default Tag
      tags:
        - organization-tags
    put:
      description: >-
        Set the default tag for an organization. The tag must exist in the
        allowed tags list.
      operationId: >-
        set_organization_default_tag_v3_enterprise_organizations__org_id__tags_default_put
      parameters:
        - description: 'Organization ID (prefix: org-)'
          in: path
          name: org_id
          required: true
          schema:
            example: org-abc123def456
            title: Org Id
            type: string
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/DefaultTagRequest'
        required: true
      responses:
        '200':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/DefaultTagResponse'
          description: Successful Response
        '401':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
          description: Unauthorized
        '403':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
          description: Forbidden
        '404':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
          description: Not Found
        '409':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
          description: Conflict
        '422':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
          description: Unprocessable Content
        '429':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
          description: Too Many Requests
      summary: Set Organization Default Tag
      tags:
        - organization-tags
  /v3/enterprise/organizations/{org_id}/tags/{tag}:
    delete:
      description: Remove a single tag from the allowed session tags for an organization.
      operationId: >-
        remove_organization_allowed_tag_v3_enterprise_organizations__org_id__tags__tag__delete
      parameters:
        - description: 'Organization ID (prefix: org-)'
          in: path
          name: org_id
          required: true
          schema:
            example: org-abc123def456
            title: Org Id
            type: string
        - in: path
          name: tag
          required: true
          schema:
            title: Tag
            type: string
      responses:
        '200':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/TagsResponse'
          description: Successful Response
        '401':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
          description: Unauthorized
        '403':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
          description: Forbidden
        '404':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
          description: Not Found
        '409':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
          description: Conflict
        '422':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
          description: Unprocessable Content
        '429':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
          description: Too Many Requests
      summary: Remove Organization Tag
      tags:
        - organization-tags
  /v3/enterprise/playbooks:
    get:
      operationId: handle_list_playbooks_v3_enterprise_playbooks_get
      parameters:
        - in: query
          name: after
          required: false
          schema:
            anyOf:
              - type: string
              - type: 'null'
            title: After
        - in: query
          name: first
          required: false
          schema:
            default: 100
            maximum: 200
            minimum: 1
            title: First
            type: integer
      responses:
        '200':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/PaginatedResponse_PlaybookResponse_'
          description: Successful Response
        '401':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
          description: Unauthorized
        '403':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
          description: Forbidden
        '404':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
          description: Not Found
        '409':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
          description: Conflict
        '422':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
          description: Unprocessable Content
        '429':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
          description: Too Many Requests
      summary: List all playbooks.
      tags:
        - playbooks
    post:
      operationId: handle_create_playbook_v3_enterprise_playbooks_post
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/PlaybookCreateRequest'
        required: true
      responses:
        '200':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/PlaybookResponse'
          description: Successful Response
        '401':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
          description: Unauthorized
        '403':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
          description: Forbidden
        '404':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
          description: Not Found
        '409':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
          description: Conflict
        '422':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
          description: Unprocessable Content
        '429':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
          description: Too Many Requests
      summary: Create an enterprise-level playbook
      tags:
        - playbooks
  /v3/enterprise/playbooks/{playbook_id}:
    delete:
      operationId: handle_delete_playbook_v3_enterprise_playbooks__playbook_id__delete
      parameters:
        - description: 'Playbook ID (prefix: playbook-)'
          in: path
          name: playbook_id
          required: true
          schema:
            example: playbook-abc123def456
            title: Playbook Id
            type: string
      responses:
        '200':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/PlaybookResponse'
          description: Successful Response
        '401':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
          description: Unauthorized
        '403':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
          description: Forbidden
        '404':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
          description: Not Found
        '409':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
          description: Conflict
        '422':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
          description: Unprocessable Content
        '429':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
          description: Too Many Requests
      summary: Delete a playbook
      tags:
        - playbooks
    get:
      description: Get a specific playbook by ID.
      operationId: handle_get_playbook_v3_enterprise_playbooks__playbook_id__get
      parameters:
        - description: 'Playbook ID (prefix: playbook-)'
          in: path
          name: playbook_id
          required: true
          schema:
            example: playbook-abc123def456
            title: Playbook Id
            type: string
      responses:
        '200':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/PlaybookResponse'
          description: Successful Response
        '401':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
          description: Unauthorized
        '403':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
          description: Forbidden
        '404':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
          description: Not Found
        '409':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
          description: Conflict
        '422':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
          description: Unprocessable Content
        '429':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
          description: Too Many Requests
      summary: Get a playbook by ID.
      tags:
        - playbooks
    put:
      operationId: handle_update_playbook_v3_enterprise_playbooks__playbook_id__put
      parameters:
        - description: 'Playbook ID (prefix: playbook-)'
          in: path
          name: playbook_id
          required: true
          schema:
            example: playbook-abc123def456
            title: Playbook Id
            type: string
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/PlaybookCreateRequest'
        required: true
      responses:
        '200':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/PlaybookResponse'
          description: Successful Response
        '401':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
          description: Unauthorized
        '403':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
          description: Forbidden
        '404':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
          description: Not Found
        '409':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
          description: Conflict
        '422':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
          description: Unprocessable Content
        '429':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
          description: Too Many Requests
      summary: Update a playbook
      tags:
        - playbooks
  /v3/enterprise/pr-reviews:
    get:
      description: |-
        Return the latest Devin Review for a PR scoped to the enterprise.

        The owning organization is resolved server-side from ``pr_url`` —
        the same way as the trigger endpoint. When ``commit_sha`` is
        omitted, the PR's current head commit is fetched from the provider
        and used. Returns ``404`` when no review exists for the resolved
        commit.
      operationId: handle_get_pr_review_status_v3_enterprise_pr_reviews_get
      parameters:
        - description: >-
            Full URL of the pull/merge request to look up (e.g.
            `https://github.com/owner/repo/pull/123`).
          in: query
          name: pr_url
          required: true
          schema:
            description: >-
              Full URL of the pull/merge request to look up (e.g.
              `https://github.com/owner/repo/pull/123`).
            examples:
              - https://github.com/owner/repo/pull/123
            title: Pr Url
            type: string
        - description: >-
            Commit SHA to look up (full or short prefix). Defaults to the PR's
            current head commit when omitted.
          in: query
          name: commit_sha
          required: false
          schema:
            anyOf:
              - type: string
              - type: 'null'
            description: >-
              Commit SHA to look up (full or short prefix). Defaults to the PR's
              current head commit when omitted.
            examples:
              - abc123def4567890abc123def4567890abc123de
            title: Commit Sha
      responses:
        '200':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/PrReviewResponse'
          description: Successful Response
        '401':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
          description: Unauthorized
        '403':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
          description: Forbidden
        '404':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
          description: Not Found
        '409':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
          description: Conflict
        '422':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
          description: Unprocessable Content
        '429':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
          description: Too Many Requests
      summary: Get latest Devin Review status
      tags:
        - pr-reviews
    post:
      description: |-
        Trigger a Devin Review for a pull/merge request.

        Creates a database record that will be picked up by the review
        worker pool. Always fetches the latest commit from the PR.
      operationId: handle_create_pr_review_v3_enterprise_pr_reviews_post
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/PrReviewCreateRequest'
        required: true
      responses:
        '200':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/PrReviewResponse'
          description: Successful Response
        '401':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
          description: Unauthorized
        '403':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
          description: Forbidden
        '404':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
          description: Not Found
        '409':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
          description: Conflict
        '422':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
          description: Unprocessable Content
        '429':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
          description: Too Many Requests
      summary: Trigger Devin Review
      tags:
        - pr-reviews
  /v3/enterprise/queue:
    get:
      description: >-
        Get the queue status for an enterprise.


        Returns the total number of queued sessions (status: new, resuming,
        claimed)

        and a status indicator (normal/elevated/high).


        This endpoint is useful for enterprise admins to monitor queue health
        and

        set up alerts for capacity issues.
      operationId: get_queue_v3_enterprise_queue_get
      responses:
        '200':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/QueueResponse'
          description: Successful Response
        '401':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
          description: Unauthorized
        '403':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
          description: Forbidden
        '404':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
          description: Not Found
        '409':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
          description: Conflict
        '422':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
          description: Unprocessable Content
        '429':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
          description: Too Many Requests
      summary: Get Queue
      tags:
        - queue
  /v3/enterprise/roles:
    get:
      description: Get roles for this enterprise
      operationId: handle_get_roles_v3_enterprise_roles_get
      parameters:
        - in: query
          name: after
          required: false
          schema:
            anyOf:
              - type: string
              - type: 'null'
            title: After
        - in: query
          name: first
          required: false
          schema:
            default: 100
            maximum: 200
            minimum: 1
            title: First
            type: integer
      responses:
        '200':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/PaginatedResponse_Role_'
          description: Successful Response
        '401':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
          description: Unauthorized
        '403':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
          description: Forbidden
        '404':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
          description: Not Found
        '409':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
          description: Conflict
        '422':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
          description: Unprocessable Content
        '429':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
          description: Too Many Requests
      summary: List Roles
      tags:
        - roles
  /v3/enterprise/roles/{role_id}:
    get:
      description: Get a single role and its permissions for this enterprise
      operationId: handle_get_role_v3_enterprise_roles__role_id__get
      parameters:
        - in: path
          name: role_id
          required: true
          schema:
            title: Role Id
            type: string
      responses:
        '200':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/RoleDetailResponse'
          description: Successful Response
        '401':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
          description: Unauthorized
        '403':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
          description: Forbidden
        '404':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
          description: Not Found
        '409':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
          description: Conflict
        '422':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
          description: Unprocessable Content
        '429':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
          description: Too Many Requests
      summary: Get Role
      tags:
        - roles
  /v3/enterprise/sessions:
    get:
      description: List all sessions across the enterprise.
      operationId: handle_get_account_sessions_v3_enterprise_sessions_get
      parameters:
        - in: query
          name: after
          required: false
          schema:
            anyOf:
              - type: string
              - type: 'null'
            title: After
        - in: query
          name: first
          required: false
          schema:
            default: 100
            maximum: 200
            minimum: 1
            title: First
            type: integer
        - in: query
          name: session_ids
          required: false
          schema:
            anyOf:
              - items:
                  type: string
                type: array
              - type: 'null'
            title: Session Ids
        - in: query
          name: created_after
          required: false
          schema:
            anyOf:
              - type: integer
              - type: 'null'
            title: Created After
        - in: query
          name: created_before
          required: false
          schema:
            anyOf:
              - type: integer
              - type: 'null'
            title: Created Before
        - in: query
          name: updated_after
          required: false
          schema:
            anyOf:
              - type: integer
              - type: 'null'
            title: Updated After
        - in: query
          name: updated_before
          required: false
          schema:
            anyOf:
              - type: integer
              - type: 'null'
            title: Updated Before
        - in: query
          name: tags
          required: false
          schema:
            anyOf:
              - items:
                  type: string
                type: array
              - type: 'null'
            title: Tags
        - in: query
          name: playbook_id
          required: false
          schema:
            anyOf:
              - type: string
              - type: 'null'
            title: Playbook Id
        - in: query
          name: origins
          required: false
          schema:
            anyOf:
              - items:
                  enum:
                    - webapp
                    - slack
                    - teams
                    - api
                    - linear
                    - jira
                    - automation
                    - cli
                    - desktop
                    - code_scan
                    - other
                  type: string
                type: array
              - type: 'null'
            title: Origins
        - in: query
          name: schedule_id
          required: false
          schema:
            anyOf:
              - type: string
              - type: 'null'
            title: Schedule Id
        - in: query
          name: user_ids
          required: false
          schema:
            anyOf:
              - items:
                  type: string
                type: array
              - type: 'null'
            title: User Ids
        - in: query
          name: service_user_ids
          required: false
          schema:
            anyOf:
              - items:
                  type: string
                type: array
              - type: 'null'
            title: Service User Ids
        - description: Filter by repository names (e.g., 'owner/repo')
          in: query
          name: repo_names
          required: false
          schema:
            anyOf:
              - items:
                  type: string
                type: array
              - type: 'null'
            description: Filter by repository names (e.g., 'owner/repo')
            title: Repo Names
        - in: query
          name: category
          required: false
          schema:
            anyOf:
              - enum:
                  - bug_fixing
                  - ci_cd_and_devops
                  - code_quality_and_security
                  - code_review
                  - code_review_and_analysis
                  - data_and_automation
                  - documentation_and_content
                  - feature_development
                  - migrations_and_upgrades
                  - other
                  - production_investigation
                  - refactoring_and_optimization
                  - research_and_exploration
                  - security
                  - unit_test_generation
                type: string
              - type: 'null'
            title: Category
        - in: query
          name: is_archived
          required: false
          schema:
            anyOf:
              - type: boolean
              - type: 'null'
            title: Is Archived
        - in: query
          name: org_ids
          required: false
          schema:
            anyOf:
              - items:
                  type: string
                type: array
              - type: 'null'
            title: Org Ids
        - in: query
          name: include_deleted_orgs
          required: false
          schema:
            default: false
            title: Include Deleted Orgs
            type: boolean
      responses:
        '200':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/PaginatedResponse_SessionResponse_'
          description: Successful Response
        '401':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
          description: Unauthorized
        '403':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
          description: Forbidden
        '404':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
          description: Not Found
        '409':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
          description: Conflict
        '422':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
          description: Unprocessable Content
        '429':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
          description: Too Many Requests
      summary: List sessions for account
      tags:
        - sessions
  /v3/enterprise/sessions/insights:
    get:
      description: |-
        List sessions with detailed insights including message counts,
        session size classification, and AI-generated analysis.
      operationId: handle_get_account_sessions_insights_v3_enterprise_sessions_insights_get
      parameters:
        - in: query
          name: after
          required: false
          schema:
            anyOf:
              - type: string
              - type: 'null'
            title: After
        - in: query
          name: first
          required: false
          schema:
            default: 100
            maximum: 200
            minimum: 1
            title: First
            type: integer
        - in: query
          name: session_ids
          required: false
          schema:
            anyOf:
              - items:
                  type: string
                type: array
              - type: 'null'
            title: Session Ids
        - in: query
          name: created_after
          required: false
          schema:
            anyOf:
              - type: integer
              - type: 'null'
            title: Created After
        - in: query
          name: created_before
          required: false
          schema:
            anyOf:
              - type: integer
              - type: 'null'
            title: Created Before
        - in: query
          name: updated_after
          required: false
          schema:
            anyOf:
              - type: integer
              - type: 'null'
            title: Updated After
        - in: query
          name: updated_before
          required: false
          schema:
            anyOf:
              - type: integer
              - type: 'null'
            title: Updated Before
        - in: query
          name: tags
          required: false
          schema:
            anyOf:
              - items:
                  type: string
                type: array
              - type: 'null'
            title: Tags
        - in: query
          name: playbook_id
          required: false
          schema:
            anyOf:
              - type: string
              - type: 'null'
            title: Playbook Id
        - in: query
          name: origins
          required: false
          schema:
            anyOf:
              - items:
                  enum:
                    - webapp
                    - slack
                    - teams
                    - api
                    - linear
                    - jira
                    - automation
                    - cli
                    - desktop
                    - code_scan
                    - other
                  type: string
                type: array
              - type: 'null'
            title: Origins
        - in: query
          name: schedule_id
          required: false
          schema:
            anyOf:
              - type: string
              - type: 'null'
            title: Schedule Id
        - in: query
          name: user_ids
          required: false
          schema:
            anyOf:
              - items:
                  type: string
                type: array
              - type: 'null'
            title: User Ids
        - in: query
          name: service_user_ids
          required: false
          schema:
            anyOf:
              - items:
                  type: string
                type: array
              - type: 'null'
            title: Service User Ids
        - description: Filter by repository names (e.g., 'owner/repo')
          in: query
          name: repo_names
          required: false
          schema:
            anyOf:
              - items:
                  type: string
                type: array
              - type: 'null'
            description: Filter by repository names (e.g., 'owner/repo')
            title: Repo Names
        - in: query
          name: category
          required: false
          schema:
            anyOf:
              - enum:
                  - bug_fixing
                  - ci_cd_and_devops
                  - code_quality_and_security
                  - code_review
                  - code_review_and_analysis
                  - data_and_automation
                  - documentation_and_content
                  - feature_development
                  - migrations_and_upgrades
                  - other
                  - production_investigation
                  - refactoring_and_optimization
                  - research_and_exploration
                  - security
                  - unit_test_generation
                type: string
              - type: 'null'
            title: Category
        - in: query
          name: is_archived
          required: false
          schema:
            anyOf:
              - type: boolean
              - type: 'null'
            title: Is Archived
        - in: query
          name: org_ids
          required: false
          schema:
            anyOf:
              - items:
                  type: string
                type: array
              - type: 'null'
            title: Org Ids
        - in: query
          name: include_deleted_orgs
          required: false
          schema:
            default: false
            title: Include Deleted Orgs
            type: boolean
      responses:
        '200':
          content:
            application/json:
              schema:
                $ref: >-
                  #/components/schemas/PaginatedResponse_SessionInsightsResponse_
          description: Successful Response
        '401':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
          description: Unauthorized
        '403':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
          description: Forbidden
        '404':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
          description: Not Found
        '409':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
          description: Conflict
        '422':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
          description: Unprocessable Content
        '429':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
          description: Too Many Requests
      summary: List sessions with insights
      tags:
        - sessions
  /v3/enterprise/sessions/{devin_id}:
    get:
      description: Get details of a specific session.
      operationId: handle_get_account_session_v3_enterprise_sessions__devin_id__get
      parameters:
        - description: 'Devin session ID (prefix: devin-)'
          in: path
          name: devin_id
          required: true
          schema:
            anyOf:
              - type: string
              - type: 'null'
            example: devin-abc123def456
            title: Devin Id
        - in: query
          name: org_id
          required: false
          schema:
            anyOf:
              - type: string
              - type: 'null'
            title: Org Id
      responses:
        '200':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/SessionResponse'
          description: Successful Response
        '401':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
          description: Unauthorized
        '403':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
          description: Forbidden
        '404':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
          description: Not Found
        '409':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
          description: Conflict
        '422':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
          description: Unprocessable Content
        '429':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
          description: Too Many Requests
      summary: Get session details
      tags:
        - sessions
  /v3/enterprise/sessions/{devin_id}/attachments:
    get:
      description: List all attachments for a session.
      operationId: >-
        handle_get_account_session_attachments_v3_enterprise_sessions__devin_id__attachments_get
      parameters:
        - description: 'Devin session ID (prefix: devin-)'
          in: path
          name: devin_id
          required: true
          schema:
            anyOf:
              - type: string
              - type: 'null'
            example: devin-abc123def456
            title: Devin Id
        - in: query
          name: org_id
          required: false
          schema:
            anyOf:
              - type: string
              - type: 'null'
            title: Org Id
      responses:
        '200':
          content:
            application/json:
              schema:
                items:
                  $ref: '#/components/schemas/SessionAttachment'
                title: >-
                  Response Handle Get Account Session Attachments V3 Enterprise
                  Sessions  Devin Id  Attachments Get
                type: array
          description: Successful Response
        '401':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
          description: Unauthorized
        '403':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
          description: Forbidden
        '404':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
          description: Not Found
        '409':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
          description: Conflict
        '422':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
          description: Unprocessable Content
        '429':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
          description: Too Many Requests
      summary: List session attachments
      tags:
        - sessions
  /v3/enterprise/sessions/{devin_id}/insights:
    get:
      description: |-
        Get detailed insights for a specific session, including message counts,
        session size classification, and AI-generated analysis.
      operationId: >-
        handle_get_account_session_insights_v3_enterprise_sessions__devin_id__insights_get
      parameters:
        - description: 'Devin session ID (prefix: devin-)'
          in: path
          name: devin_id
          required: true
          schema:
            anyOf:
              - type: string
              - type: 'null'
            example: devin-abc123def456
            title: Devin Id
        - in: query
          name: org_id
          required: false
          schema:
            anyOf:
              - type: string
              - type: 'null'
            title: Org Id
      responses:
        '200':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/SessionInsightsResponse'
          description: Successful Response
        '401':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
          description: Unauthorized
        '403':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
          description: Forbidden
        '404':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
          description: Not Found
        '409':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
          description: Conflict
        '422':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
          description: Unprocessable Content
        '429':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
          description: Too Many Requests
      summary: Get session insights
      tags:
        - sessions
  /v3/enterprise/sessions/{devin_id}/insights/generate:
    post:
      description: |-
        Trigger on-demand generation of session insights.

        Returns ``already_exists`` if insights have already been generated.
        Otherwise kicks off generation in the background. Poll the
        GET insights endpoint to retrieve results once generation completes.
      operationId: >-
        handle_generate_account_session_insights_v3_enterprise_sessions__devin_id__insights_generate_post
      parameters:
        - description: 'Devin session ID (prefix: devin-)'
          in: path
          name: devin_id
          required: true
          schema:
            anyOf:
              - type: string
              - type: 'null'
            example: devin-abc123def456
            title: Devin Id
        - in: query
          name: org_id
          required: false
          schema:
            anyOf:
              - type: string
              - type: 'null'
            title: Org Id
      responses:
        '200':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/SessionInsightsGenerateResponse'
          description: Successful Response
        '401':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
          description: Unauthorized
        '403':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
          description: Forbidden
        '404':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
          description: Not Found
        '409':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
          description: Conflict
        '422':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
          description: Unprocessable Content
        '429':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
          description: Too Many Requests
      summary: Generate session insights
      tags:
        - sessions
  /v3/enterprise/sessions/{devin_id}/messages:
    get:
      description: >-
        List all messages for a session with cursor-based pagination, ordered
        chronologically.
      operationId: >-
        handle_get_account_session_messages_v3_enterprise_sessions__devin_id__messages_get
      parameters:
        - description: 'Devin session ID (prefix: devin-)'
          in: path
          name: devin_id
          required: true
          schema:
            anyOf:
              - type: string
              - type: 'null'
            example: devin-abc123def456
            title: Devin Id
        - in: query
          name: qs
          required: true
          schema:
            $ref: '#/components/schemas/CursorPaginationParams'
        - in: query
          name: org_id
          required: false
          schema:
            anyOf:
              - type: string
              - type: 'null'
            title: Org Id
      responses:
        '200':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/PaginatedResponse_SessionMessage_'
          description: Successful Response
        '401':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
          description: Unauthorized
        '403':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
          description: Forbidden
        '404':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
          description: Not Found
        '409':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
          description: Conflict
        '422':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
          description: Unprocessable Content
        '429':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
          description: Too Many Requests
      summary: List session messages
      tags:
        - sessions
    post:
      description: >-
        Send a message to an active session. The session will be automatically
        resumed if suspended.
      operationId: >-
        handle_post_account_session_message_v3_enterprise_sessions__devin_id__messages_post
      parameters:
        - description: 'Devin session ID (prefix: devin-)'
          in: path
          name: devin_id
          required: true
          schema:
            anyOf:
              - type: string
              - type: 'null'
            example: devin-abc123def456
            title: Devin Id
        - in: query
          name: org_id
          required: false
          schema:
            anyOf:
              - type: string
              - type: 'null'
            title: Org Id
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/SessionMessageCreateRequest'
        required: true
      responses:
        '200':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/SessionResponse'
          description: Successful Response
        '401':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
          description: Unauthorized
        '403':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
          description: Forbidden
        '404':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
          description: Not Found
        '409':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
          description: Conflict
        '422':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
          description: Unprocessable Content
        '429':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
          description: Too Many Requests
      summary: Send a message to a session
      tags:
        - sessions
  /v3/enterprise/sessions/{devin_id}/tags:
    get:
      description: Get the tags for a specific session.
      operationId: >-
        handle_get_account_session_tags_v3_enterprise_sessions__devin_id__tags_get
      parameters:
        - description: 'Devin session ID (prefix: devin-)'
          in: path
          name: devin_id
          required: true
          schema:
            anyOf:
              - type: string
              - type: 'null'
            example: devin-abc123def456
            title: Devin Id
        - in: query
          name: org_id
          required: false
          schema:
            anyOf:
              - type: string
              - type: 'null'
            title: Org Id
      responses:
        '200':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/SessionTagsResponse'
          description: Successful Response
        '401':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
          description: Unauthorized
        '403':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
          description: Forbidden
        '404':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
          description: Not Found
        '409':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
          description: Conflict
        '422':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
          description: Unprocessable Content
        '429':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
          description: Too Many Requests
      summary: Get session tags
      tags:
        - sessions
    post:
      description: Append tags to a session (deduplicating with existing tags).
      operationId: >-
        handle_append_account_session_tags_v3_enterprise_sessions__devin_id__tags_post
      parameters:
        - description: 'Devin session ID (prefix: devin-)'
          in: path
          name: devin_id
          required: true
          schema:
            anyOf:
              - type: string
              - type: 'null'
            example: devin-abc123def456
            title: Devin Id
        - in: query
          name: org_id
          required: false
          schema:
            anyOf:
              - type: string
              - type: 'null'
            title: Org Id
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/SessionTagsUpdateRequest'
        required: true
      responses:
        '200':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/SessionTagsResponse'
          description: Successful Response
        '401':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
          description: Unauthorized
        '403':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
          description: Forbidden
        '404':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
          description: Not Found
        '409':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
          description: Conflict
        '422':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
          description: Unprocessable Content
        '429':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
          description: Too Many Requests
      summary: Append session tags
      tags:
        - sessions
    put:
      description: Replace all tags on a session.
      operationId: >-
        handle_replace_account_session_tags_v3_enterprise_sessions__devin_id__tags_put
      parameters:
        - description: 'Devin session ID (prefix: devin-)'
          in: path
          name: devin_id
          required: true
          schema:
            anyOf:
              - type: string
              - type: 'null'
            example: devin-abc123def456
            title: Devin Id
        - in: query
          name: org_id
          required: false
          schema:
            anyOf:
              - type: string
              - type: 'null'
            title: Org Id
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/SessionTagsUpdateRequest'
        required: true
      responses:
        '200':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/SessionTagsResponse'
          description: Successful Response
        '401':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
          description: Unauthorized
        '403':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
          description: Forbidden
        '404':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
          description: Not Found
        '409':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
          description: Conflict
        '422':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
          description: Unprocessable Content
        '429':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
          description: Too Many Requests
      summary: Replace session tags
      tags:
        - sessions
  /v3/organizations/{org_id}/attachments:
    post:
      description: Upload a file attachment that can be used in Devin sessions.
      operationId: handle_upload_attachment_v3_organizations__org_id__attachments_post
      parameters:
        - description: 'Organization ID (prefix: org-)'
          in: path
          name: org_id
          required: true
          schema:
            example: org-abc123def456
            title: Org Id
            type: string
      requestBody:
        content:
          multipart/form-data:
            schema:
              $ref: >-
                #/components/schemas/Body_handle_upload_attachment_v3_organizations__org_id__attachments_post
        required: true
      responses:
        '200':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/AttachmentResponse'
          description: Successful Response
        '401':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
          description: Unauthorized
        '403':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
          description: Forbidden
        '404':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
          description: Not Found
        '409':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
          description: Conflict
        '422':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
          description: Unprocessable Content
        '429':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
          description: Too Many Requests
      summary: Upload an attachment
      tags:
        - attachments
  /v3/organizations/{org_id}/attachments/{uuid}/{name}:
    get:
      description: >-
        Download a file attachment.


        Returns a 307 redirect: to the IP-enforcing presigned proxy for orgs
        with an

        IP allowlist, or to a presigned S3 URL otherwise.
      operationId: >-
        handle_download_attachment_v3_organizations__org_id__attachments__uuid___name__get
      parameters:
        - in: path
          name: uuid
          required: true
          schema:
            title: Uuid
            type: string
        - in: path
          name: name
          required: true
          schema:
            title: Name
            type: string
        - description: 'Organization ID (prefix: org-)'
          in: path
          name: org_id
          required: true
          schema:
            example: org-abc123def456
            title: Org Id
            type: string
      responses:
        '200':
          content:
            application/json:
              schema: {}
          description: Successful Response
        '307':
          description: Redirect to the attachment download URL
        '401':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
          description: Unauthorized
        '403':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
          description: Forbidden
        '404':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
          description: Not Found
        '409':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
          description: Conflict
        '422':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
          description: Unprocessable Content
        '429':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
          description: Too Many Requests
      summary: Download an attachment
      tags:
        - attachments
  /v3/organizations/{org_id}/code-scans:
    post:
      description: |-
        Start a new code scan on a repository in the organization.

        The scan is enqueued and launched asynchronously by the scan dispatcher.
        The scan is attributed to the calling principal (the service user or PAT
        that made the request). Returns ``409`` when the organization's scan
        backlog is at capacity.
      operationId: handle_start_code_scan_v3_organizations__org_id__code_scans_post
      parameters:
        - description: 'Organization ID (prefix: org-)'
          in: path
          name: org_id
          required: true
          schema:
            example: org-abc123def456
            title: Org Id
            type: string
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/CodeScanCreateRequest'
        required: true
      responses:
        '201':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/CodeScanResponse'
          description: Successful Response
        '401':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
          description: Unauthorized
        '403':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
          description: Forbidden
        '404':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
          description: Not Found
        '409':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
          description: Conflict
        '422':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
          description: Unprocessable Content
        '429':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
          description: Too Many Requests
      summary: Start Code Scan
      tags:
        - code-scans
  /v3/organizations/{org_id}/code-scans/findings:
    get:
      description: |-
        List code scan findings for the organization.

        Findings are returned newest first. Optionally filter by ``scan_id``,
        ``repo_name``, ``severity``, and ``status`` (``severity`` and ``status``
        accept multiple values); results are paginated with an opaque cursor
        (``after`` / ``first``).
      operationId: >-
        handle_list_code_scan_findings_v3_organizations__org_id__code_scans_findings_get
      parameters:
        - description: 'Organization ID (prefix: org-)'
          in: path
          name: org_id
          required: true
          schema:
            example: org-abc123def456
            title: Org Id
            type: string
        - in: query
          name: after
          required: false
          schema:
            anyOf:
              - type: string
              - type: 'null'
            title: After
        - in: query
          name: first
          required: false
          schema:
            default: 100
            maximum: 200
            minimum: 1
            title: First
            type: integer
        - description: Filter to findings produced by this scan.
          in: query
          name: scan_id
          required: false
          schema:
            anyOf:
              - type: string
              - type: 'null'
            description: Filter to findings produced by this scan.
            title: Scan Id
        - description: Filter to findings reported in this repository.
          in: query
          name: repo_name
          required: false
          schema:
            anyOf:
              - type: string
              - type: 'null'
            description: Filter to findings reported in this repository.
            title: Repo Name
        - description: >-
            Filter to findings with any of these severities (critical, high,
            medium, low).
          in: query
          name: severity
          required: false
          schema:
            anyOf:
              - items:
                  enum:
                    - critical
                    - high
                    - medium
                    - low
                  type: string
                type: array
              - type: 'null'
            description: >-
              Filter to findings with any of these severities (critical, high,
              medium, low).
            title: Severity
        - description: >-
            Filter to findings with any of these statuses (open, dismissed,
            resolved).
          in: query
          name: status
          required: false
          schema:
            anyOf:
              - items:
                  enum:
                    - open
                    - dismissed
                    - resolved
                  type: string
                type: array
              - type: 'null'
            description: >-
              Filter to findings with any of these statuses (open, dismissed,
              resolved).
            title: Status
      responses:
        '200':
          content:
            application/json:
              schema:
                $ref: >-
                  #/components/schemas/PaginatedResponse_CodeScanFindingResponse_
          description: Successful Response
        '401':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
          description: Unauthorized
        '403':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
          description: Forbidden
        '404':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
          description: Not Found
        '409':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
          description: Conflict
        '422':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
          description: Unprocessable Content
        '429':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
          description: Too Many Requests
      summary: List Code Scan Findings
      tags:
        - code-scans
  /v3/organizations/{org_id}/code-scans/ingestion:
    post:
      description: >-
        Start an ingestion-mode code scan on a repository in the organization.


        The scan is enqueued and launched asynchronously by the scan dispatcher.

        Only ingest-mode profiles are accepted; a non-ingest profile is rejected

        with ``400``. Optional attachment URLs (uploaded via the attachments
        API)

        are provided to the scan. Returns ``409`` when the organization's scan

        backlog is at capacity.
      operationId: >-
        handle_start_ingestion_scan_v3_organizations__org_id__code_scans_ingestion_post
      parameters:
        - description: 'Organization ID (prefix: org-)'
          in: path
          name: org_id
          required: true
          schema:
            example: org-abc123def456
            title: Org Id
            type: string
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/StartIngestionScanRequest'
        required: true
      responses:
        '201':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/CodeScanResponse'
          description: Successful Response
        '401':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
          description: Unauthorized
        '403':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
          description: Forbidden
        '404':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
          description: Not Found
        '409':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
          description: Conflict
        '422':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
          description: Unprocessable Content
        '429':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
          description: Too Many Requests
      summary: Start Ingestion Scan
      tags:
        - code-scans
  /v3/organizations/{org_id}/code-scans/metrics:
    get:
      description: |-
        Get aggregated code scan metrics for the organization.

        Returns scan, finding, and remediation-PR metrics for code scans created
        within the specified time range.
      operationId: >-
        handle_get_code_scan_metrics_v3_organizations__org_id__code_scans_metrics_get
      parameters:
        - description: 'Organization ID (prefix: org-)'
          in: path
          name: org_id
          required: true
          schema:
            example: org-abc123def456
            title: Org Id
            type: string
        - in: query
          name: time_before
          required: true
          schema:
            title: Time Before
            type: integer
        - in: query
          name: time_after
          required: true
          schema:
            title: Time After
            type: integer
      responses:
        '200':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/CodeScanMetricsResponse'
          description: Successful Response
        '401':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
          description: Unauthorized
        '403':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
          description: Forbidden
        '404':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
          description: Not Found
        '409':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
          description: Conflict
        '422':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
          description: Unprocessable Content
        '429':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
          description: Too Many Requests
      summary: Get Code Scan Metrics
      tags:
        - code-scans
  /v3/organizations/{org_id}/code-scans/profiles:
    get:
      description: >-
        List code scan profiles for the organization.


        Returns profile summaries (without guidance) newest first, including
        both

        org-owned and account-shared profiles. Results are paginated with an

        opaque cursor (``after`` / ``first``).
      operationId: >-
        handle_list_code_scan_profiles_v3_organizations__org_id__code_scans_profiles_get
      parameters:
        - description: 'Organization ID (prefix: org-)'
          in: path
          name: org_id
          required: true
          schema:
            example: org-abc123def456
            title: Org Id
            type: string
        - in: query
          name: after
          required: false
          schema:
            anyOf:
              - type: string
              - type: 'null'
            title: After
        - in: query
          name: first
          required: false
          schema:
            default: 100
            maximum: 200
            minimum: 1
            title: First
            type: integer
      responses:
        '200':
          content:
            application/json:
              schema:
                $ref: >-
                  #/components/schemas/PaginatedResponse_CodeScanProfileSummaryResponse_
          description: Successful Response
        '401':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
          description: Unauthorized
        '403':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
          description: Forbidden
        '404':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
          description: Not Found
        '409':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
          description: Conflict
        '422':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
          description: Unprocessable Content
        '429':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
          description: Too Many Requests
      summary: List Code Scan Profiles
      tags:
        - code-scans
  /v3/organizations/{org_id}/code-scans/profiles/{profile_id}:
    get:
      description: |-
        Get a code scan profile by ID.

        Returns the profile's metadata, visibility (org-owned or shared
        account-wide), and all of its guidance fields. Returns ``404`` when the
        profile does not exist or is not visible to the organization.
      operationId: >-
        handle_get_code_scan_profile_v3_organizations__org_id__code_scans_profiles__profile_id__get
      parameters:
        - in: path
          name: profile_id
          required: true
          schema:
            title: Profile Id
            type: string
        - description: 'Organization ID (prefix: org-)'
          in: path
          name: org_id
          required: true
          schema:
            example: org-abc123def456
            title: Org Id
            type: string
      responses:
        '200':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/CodeScanProfileDetailResponse'
          description: Successful Response
        '401':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
          description: Unauthorized
        '403':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
          description: Forbidden
        '404':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
          description: Not Found
        '409':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
          description: Conflict
        '422':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
          description: Unprocessable Content
        '429':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
          description: Too Many Requests
      summary: Get Code Scan Profile
      tags:
        - code-scans
  /v3/organizations/{org_id}/code-scans/scans:
    get:
      description: |-
        List code scans for the organization.

        Scans are returned newest first. Optionally filter by ``repo_name`` and
        creation time (``time_after`` / ``time_before``); results are paginated
        with an opaque cursor (``after`` / ``first``).
      operationId: handle_list_code_scans_v3_organizations__org_id__code_scans_scans_get
      parameters:
        - description: 'Organization ID (prefix: org-)'
          in: path
          name: org_id
          required: true
          schema:
            example: org-abc123def456
            title: Org Id
            type: string
        - in: query
          name: time_before
          required: false
          schema:
            anyOf:
              - type: integer
              - type: 'null'
            title: Time Before
        - in: query
          name: time_after
          required: false
          schema:
            anyOf:
              - type: integer
              - type: 'null'
            title: Time After
        - in: query
          name: after
          required: false
          schema:
            anyOf:
              - type: string
              - type: 'null'
            title: After
        - in: query
          name: first
          required: false
          schema:
            default: 100
            maximum: 200
            minimum: 1
            title: First
            type: integer
        - description: >-
            Filter to scans that scanned this repository. Matches multi-repo
            scans even when the repository is not the scan's primary repo, so
            returned items may report a different repo_name.
          in: query
          name: repo_name
          required: false
          schema:
            anyOf:
              - type: string
              - type: 'null'
            description: >-
              Filter to scans that scanned this repository. Matches multi-repo
              scans even when the repository is not the scan's primary repo, so
              returned items may report a different repo_name.
            title: Repo Name
      responses:
        '200':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/PaginatedResponse_CodeScanResponse_'
          description: Successful Response
        '401':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
          description: Unauthorized
        '403':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
          description: Forbidden
        '404':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
          description: Not Found
        '409':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
          description: Conflict
        '422':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
          description: Unprocessable Content
        '429':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
          description: Too Many Requests
      summary: List Code Scans
      tags:
        - code-scans
  /v3/organizations/{org_id}/code-scans/{scan_id}/findings/{finding_id}/remediate:
    post:
      description: >-
        Launch a Devin session to remediate a code scan finding.


        The session analyzes the vulnerable code, implements a fix, and opens a

        pull request. The session is attributed to the calling principal (the

        service user or PAT that made the request). Returns ``409`` if the
        finding

        already has a remediation session.
      operationId: >-
        handle_remediate_code_scan_finding_v3_organizations__org_id__code_scans__scan_id__findings__finding_id__remediate_post
      parameters:
        - in: path
          name: scan_id
          required: true
          schema:
            title: Scan Id
            type: string
        - in: path
          name: finding_id
          required: true
          schema:
            title: Finding Id
            type: string
        - description: 'Organization ID (prefix: org-)'
          in: path
          name: org_id
          required: true
          schema:
            example: org-abc123def456
            title: Org Id
            type: string
      responses:
        '201':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/RemediateFindingResponse'
          description: Successful Response
        '401':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
          description: Unauthorized
        '403':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
          description: Forbidden
        '404':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
          description: Not Found
        '409':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
          description: Conflict
        '422':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
          description: Unprocessable Content
        '429':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
          description: Too Many Requests
      summary: Remediate Code Scan Finding
      tags:
        - code-scans
  /v3/organizations/{org_id}/consumption/daily:
    get:
      description: >-
        Get daily ACU consumption for the organization.


        **Timezone behavior**: Billing cycles use midnight PST (Pacific Standard
        Time)

        as the day boundary, which corresponds to 08:00:00 UTC.
      operationId: >-
        handle_get_consumption_daily_v3_organizations__org_id__consumption_daily_get
      parameters:
        - description: 'Organization ID (prefix: org-)'
          in: path
          name: org_id
          required: true
          schema:
            example: org-abc123def456
            title: Org Id
            type: string
        - in: query
          name: time_before
          required: false
          schema:
            anyOf:
              - type: integer
              - type: 'null'
            title: Time Before
        - in: query
          name: time_after
          required: false
          schema:
            anyOf:
              - type: integer
              - type: 'null'
            title: Time After
      responses:
        '200':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ConsumptionResponse'
          description: Successful Response
        '401':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
          description: Unauthorized
        '403':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
          description: Forbidden
        '404':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
          description: Not Found
        '409':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
          description: Conflict
        '422':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
          description: Unprocessable Content
        '429':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
          description: Too Many Requests
      summary: Get Daily Consumption
      tags:
        - consumption
  /v3/organizations/{org_id}/consumption/daily/service-users/{service_user_id}:
    get:
      description: >-
        Get daily ACU consumption for a specific service user within the
        organization.


        **Timezone behavior**: Billing cycles use midnight PST (Pacific Standard
        Time)

        as the day boundary, which corresponds to 08:00:00 UTC.
      operationId: >-
        handle_get_service_user_consumption_daily_v3_organizations__org_id__consumption_daily_service_users__service_user_id__get
      parameters:
        - description: 'Service user ID (prefix: service-user-)'
          in: path
          name: service_user_id
          required: true
          schema:
            example: service-user-abc123def456
            title: Service User Id
            type: string
        - description: 'Organization ID (prefix: org-)'
          in: path
          name: org_id
          required: true
          schema:
            example: org-abc123def456
            title: Org Id
            type: string
        - in: query
          name: time_before
          required: false
          schema:
            anyOf:
              - type: integer
              - type: 'null'
            title: Time Before
        - in: query
          name: time_after
          required: false
          schema:
            anyOf:
              - type: integer
              - type: 'null'
            title: Time After
      responses:
        '200':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ConsumptionResponse'
          description: Successful Response
        '401':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
          description: Unauthorized
        '403':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
          description: Forbidden
        '404':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
          description: Not Found
        '409':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
          description: Conflict
        '422':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
          description: Unprocessable Content
        '429':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
          description: Too Many Requests
      summary: Get Service User Daily Consumption
      tags:
        - consumption
  /v3/organizations/{org_id}/consumption/daily/sessions/{session_id}:
    get:
      description: >-
        Get daily ACU consumption for a specific session within the
        organization.


        **Timezone behavior**: Billing cycles use midnight PST (Pacific Standard
        Time)

        as the day boundary, which corresponds to 08:00:00 UTC.
      operationId: >-
        handle_get_session_consumption_daily_v3_organizations__org_id__consumption_daily_sessions__session_id__get
      parameters:
        - description: >-
            Session ID (prefix: devin-). Alias for devin_id used in consumption
            endpoints.
          in: path
          name: session_id
          required: true
          schema:
            example: devin-abc123def456
            title: Session Id
            type: string
        - description: 'Organization ID (prefix: org-)'
          in: path
          name: org_id
          required: true
          schema:
            example: org-abc123def456
            title: Org Id
            type: string
        - in: query
          name: time_before
          required: false
          schema:
            anyOf:
              - type: integer
              - type: 'null'
            title: Time Before
        - in: query
          name: time_after
          required: false
          schema:
            anyOf:
              - type: integer
              - type: 'null'
            title: Time After
      responses:
        '200':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ConsumptionResponse'
          description: Successful Response
        '401':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
          description: Unauthorized
        '403':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
          description: Forbidden
        '404':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
          description: Not Found
        '409':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
          description: Conflict
        '422':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
          description: Unprocessable Content
        '429':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
          description: Too Many Requests
      summary: Get Session Daily Consumption
      tags:
        - consumption
  /v3/organizations/{org_id}/consumption/daily/users/{user_id}:
    get:
      description: >-
        Get daily ACU consumption for a specific user within the organization.


        **Timezone behavior**: Billing cycles use midnight PST (Pacific Standard
        Time)

        as the day boundary, which corresponds to 08:00:00 UTC.
      operationId: >-
        handle_get_user_consumption_daily_v3_organizations__org_id__consumption_daily_users__user_id__get
      parameters:
        - description: User ID
          in: path
          name: user_id
          required: true
          schema:
            title: User Id
            type: string
        - description: 'Organization ID (prefix: org-)'
          in: path
          name: org_id
          required: true
          schema:
            example: org-abc123def456
            title: Org Id
            type: string
        - in: query
          name: time_before
          required: false
          schema:
            anyOf:
              - type: integer
              - type: 'null'
            title: Time Before
        - in: query
          name: time_after
          required: false
          schema:
            anyOf:
              - type: integer
              - type: 'null'
            title: Time After
      responses:
        '200':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ConsumptionResponse'
          description: Successful Response
        '401':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
          description: Unauthorized
        '403':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
          description: Forbidden
        '404':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
          description: Not Found
        '409':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
          description: Conflict
        '422':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
          description: Unprocessable Content
        '429':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
          description: Too Many Requests
      summary: Get User Daily Consumption
      tags:
        - consumption
  /v3/organizations/{org_id}/knowledge/folders:
    get:
      description: Return the full folder tree with per-folder note counts.
      operationId: handle_list_folders_v3_organizations__org_id__knowledge_folders_get
      parameters:
        - description: 'Organization ID (prefix: org-)'
          in: path
          name: org_id
          required: true
          schema:
            example: org-abc123def456
            title: Org Id
            type: string
      responses:
        '200':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/FolderTreeResponse'
          description: Successful Response
        '401':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
          description: Unauthorized
        '403':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
          description: Forbidden
        '404':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
          description: Not Found
        '409':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
          description: Conflict
        '422':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
          description: Unprocessable Content
        '429':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
          description: Too Many Requests
      summary: Get knowledge folder structure with note counts.
      tags:
        - notes
  /v3/organizations/{org_id}/knowledge/notes:
    get:
      description: List notes for an organization.
      operationId: handle_list_notes_v3_organizations__org_id__knowledge_notes_get
      parameters:
        - description: 'Organization ID (prefix: org-)'
          in: path
          name: org_id
          required: true
          schema:
            example: org-abc123def456
            title: Org Id
            type: string
        - in: query
          name: after
          required: false
          schema:
            anyOf:
              - type: string
              - type: 'null'
            title: After
        - in: query
          name: first
          required: false
          schema:
            default: 100
            maximum: 200
            minimum: 1
            title: First
            type: integer
        - in: query
          name: search
          required: false
          schema:
            anyOf:
              - type: string
              - type: 'null'
            title: Search
        - in: query
          name: folder_path
          required: false
          schema:
            anyOf:
              - type: string
              - type: 'null'
            title: Folder Path
        - in: query
          name: pinned_repo
          required: false
          schema:
            anyOf:
              - type: string
              - type: 'null'
            title: Pinned Repo
      responses:
        '200':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/PaginatedResponse_KnowledgeNoteResponse_'
          description: Successful Response
        '401':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
          description: Unauthorized
        '403':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
          description: Forbidden
        '404':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
          description: Not Found
        '409':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
          description: Conflict
        '422':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
          description: Unprocessable Content
        '429':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
          description: Too Many Requests
      summary: List org-level notes
      tags:
        - notes
    post:
      description: Create a note for an organization.
      operationId: handle_create_note_v3_organizations__org_id__knowledge_notes_post
      parameters:
        - description: 'Organization ID (prefix: org-)'
          in: path
          name: org_id
          required: true
          schema:
            example: org-abc123def456
            title: Org Id
            type: string
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/KnowledgeNoteCreateRequest'
        required: true
      responses:
        '200':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/KnowledgeNoteResponse'
          description: Successful Response
        '401':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
          description: Unauthorized
        '403':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
          description: Forbidden
        '404':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
          description: Not Found
        '409':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
          description: Conflict
        '422':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
          description: Unprocessable Content
        '429':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
          description: Too Many Requests
      summary: Create an org-level note
      tags:
        - notes
  /v3/organizations/{org_id}/knowledge/notes/{note_id}:
    delete:
      description: Delete a note for an organization.
      operationId: >-
        handle_delete_note_v3_organizations__org_id__knowledge_notes__note_id__delete
      parameters:
        - description: 'Knowledge note ID (prefix: note-)'
          in: path
          name: note_id
          required: true
          schema:
            example: note-abc123def456
            title: Note Id
            type: string
        - description: 'Organization ID (prefix: org-)'
          in: path
          name: org_id
          required: true
          schema:
            example: org-abc123def456
            title: Org Id
            type: string
      responses:
        '200':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/KnowledgeNoteResponse'
          description: Successful Response
        '401':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
          description: Unauthorized
        '403':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
          description: Forbidden
        '404':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
          description: Not Found
        '409':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
          description: Conflict
        '422':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
          description: Unprocessable Content
        '429':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
          description: Too Many Requests
      summary: Delete an org-level note
      tags:
        - notes
    get:
      description: Get a note by ID for an organization.
      operationId: handle_get_note_v3_organizations__org_id__knowledge_notes__note_id__get
      parameters:
        - description: 'Knowledge note ID (prefix: note-)'
          in: path
          name: note_id
          required: true
          schema:
            example: note-abc123def456
            title: Note Id
            type: string
        - description: 'Organization ID (prefix: org-)'
          in: path
          name: org_id
          required: true
          schema:
            example: org-abc123def456
            title: Org Id
            type: string
      responses:
        '200':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/KnowledgeNoteResponse'
          description: Successful Response
        '401':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
          description: Unauthorized
        '403':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
          description: Forbidden
        '404':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
          description: Not Found
        '409':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
          description: Conflict
        '422':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
          description: Unprocessable Content
        '429':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
          description: Too Many Requests
      summary: Get an org-level note
      tags:
        - notes
    put:
      description: Update a note for an organization.
      operationId: >-
        handle_update_note_v3_organizations__org_id__knowledge_notes__note_id__put
      parameters:
        - description: 'Knowledge note ID (prefix: note-)'
          in: path
          name: note_id
          required: true
          schema:
            example: note-abc123def456
            title: Note Id
            type: string
        - description: 'Organization ID (prefix: org-)'
          in: path
          name: org_id
          required: true
          schema:
            example: org-abc123def456
            title: Org Id
            type: string
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/KnowledgeNoteCreateRequest'
        required: true
      responses:
        '200':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/KnowledgeNoteResponse'
          description: Successful Response
        '401':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
          description: Unauthorized
        '403':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
          description: Forbidden
        '404':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
          description: Not Found
        '409':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
          description: Conflict
        '422':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
          description: Unprocessable Content
        '429':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
          description: Too Many Requests
      summary: Update an org-level note
      tags:
        - notes
  /v3/organizations/{org_id}/metrics/active-users:
    get:
      description: Get unique active users for a custom date range.
      operationId: >-
        handle_get_active_users_metrics_v3_organizations__org_id__metrics_active_users_get
      parameters:
        - description: 'Organization ID (prefix: org-)'
          in: path
          name: org_id
          required: true
          schema:
            example: org-abc123def456
            title: Org Id
            type: string
        - in: query
          name: time_before
          required: true
          schema:
            title: Time Before
            type: integer
        - in: query
          name: time_after
          required: true
          schema:
            title: Time After
            type: integer
        - in: query
          name: min_sessions
          required: false
          schema:
            default: 1
            minimum: 0
            title: Min Sessions
            type: integer
        - in: query
          name: min_searches
          required: false
          schema:
            default: 1
            minimum: 0
            title: Min Searches
            type: integer
      responses:
        '200':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ActiveUserMetricsResponse'
          description: Successful Response
        '401':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
          description: Unauthorized
        '403':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
          description: Forbidden
        '404':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
          description: Not Found
        '409':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
          description: Conflict
        '422':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
          description: Unprocessable Content
        '429':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
          description: Too Many Requests
      summary: Get Active Users for Custom Date Range
      tags:
        - metrics
  /v3/organizations/{org_id}/metrics/dau:
    get:
      description: Get daily active users for each day in the specified time range.
      operationId: handle_get_dau_metrics_v3_organizations__org_id__metrics_dau_get
      parameters:
        - description: 'Organization ID (prefix: org-)'
          in: path
          name: org_id
          required: true
          schema:
            example: org-abc123def456
            title: Org Id
            type: string
        - in: query
          name: time_before
          required: true
          schema:
            title: Time Before
            type: integer
        - in: query
          name: time_after
          required: true
          schema:
            title: Time After
            type: integer
        - in: query
          name: min_sessions
          required: false
          schema:
            default: 1
            minimum: 0
            title: Min Sessions
            type: integer
        - in: query
          name: min_searches
          required: false
          schema:
            default: 1
            minimum: 0
            title: Min Searches
            type: integer
      responses:
        '200':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ActiveUserMetricsListResponse'
          description: Successful Response
        '401':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
          description: Unauthorized
        '403':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
          description: Forbidden
        '404':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
          description: Not Found
        '409':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
          description: Conflict
        '422':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
          description: Unprocessable Content
        '429':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
          description: Too Many Requests
      summary: Get Daily Active Users
      tags:
        - metrics
  /v3/organizations/{org_id}/metrics/mau:
    get:
      description: Get monthly active users for each month in the specified time range.
      operationId: handle_get_mau_metrics_v3_organizations__org_id__metrics_mau_get
      parameters:
        - description: 'Organization ID (prefix: org-)'
          in: path
          name: org_id
          required: true
          schema:
            example: org-abc123def456
            title: Org Id
            type: string
        - in: query
          name: time_before
          required: true
          schema:
            title: Time Before
            type: integer
        - in: query
          name: time_after
          required: true
          schema:
            title: Time After
            type: integer
        - in: query
          name: min_sessions
          required: false
          schema:
            default: 1
            minimum: 0
            title: Min Sessions
            type: integer
        - in: query
          name: min_searches
          required: false
          schema:
            default: 1
            minimum: 0
            title: Min Searches
            type: integer
      responses:
        '200':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ActiveUserMetricsListResponse'
          description: Successful Response
        '401':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
          description: Unauthorized
        '403':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
          description: Forbidden
        '404':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
          description: Not Found
        '409':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
          description: Conflict
        '422':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
          description: Unprocessable Content
        '429':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
          description: Too Many Requests
      summary: Get Monthly Active Users
      tags:
        - metrics
  /v3/organizations/{org_id}/metrics/prs:
    get:
      description: Get aggregated PR metrics for the organization.
      operationId: handle_get_pr_metrics_v3_organizations__org_id__metrics_prs_get
      parameters:
        - description: 'Organization ID (prefix: org-)'
          in: path
          name: org_id
          required: true
          schema:
            example: org-abc123def456
            title: Org Id
            type: string
        - in: query
          name: user_ids
          required: false
          schema:
            anyOf:
              - items:
                  type: string
                type: array
              - type: 'null'
            title: User Ids
        - in: query
          name: service_user_ids
          required: false
          schema:
            anyOf:
              - items:
                  type: string
                type: array
              - type: 'null'
            title: Service User Ids
        - in: query
          name: time_before
          required: true
          schema:
            title: Time Before
            type: integer
        - in: query
          name: time_after
          required: true
          schema:
            title: Time After
            type: integer
        - in: query
          name: playbook_id
          required: false
          schema:
            anyOf:
              - type: string
              - type: 'null'
            title: Playbook Id
      responses:
        '200':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/PrMetricsResponse'
          description: Successful Response
        '401':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
          description: Unauthorized
        '403':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
          description: Forbidden
        '404':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
          description: Not Found
        '409':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
          description: Conflict
        '422':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
          description: Unprocessable Content
        '429':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
          description: Too Many Requests
      summary: Get PR Metrics
      tags:
        - metrics
  /v3/organizations/{org_id}/metrics/searches:
    get:
      description: Get aggregated search metrics for the organization.
      operationId: handle_get_search_metrics_v3_organizations__org_id__metrics_searches_get
      parameters:
        - description: 'Organization ID (prefix: org-)'
          in: path
          name: org_id
          required: true
          schema:
            example: org-abc123def456
            title: Org Id
            type: string
        - in: query
          name: time_before
          required: true
          schema:
            title: Time Before
            type: integer
        - in: query
          name: time_after
          required: true
          schema:
            title: Time After
            type: integer
      responses:
        '200':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/SearchMetricsResponse'
          description: Successful Response
        '401':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
          description: Unauthorized
        '403':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
          description: Forbidden
        '404':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
          description: Not Found
        '409':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
          description: Conflict
        '422':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
          description: Unprocessable Content
        '429':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
          description: Too Many Requests
      summary: Get Search Metrics
      tags:
        - metrics
  /v3/organizations/{org_id}/metrics/sessions:
    get:
      description: Get aggregated session metrics for the organization.
      operationId: >-
        handle_get_session_metrics_v3_organizations__org_id__metrics_sessions_get
      parameters:
        - description: 'Organization ID (prefix: org-)'
          in: path
          name: org_id
          required: true
          schema:
            example: org-abc123def456
            title: Org Id
            type: string
        - in: query
          name: user_ids
          required: false
          schema:
            anyOf:
              - items:
                  type: string
                type: array
              - type: 'null'
            title: User Ids
        - in: query
          name: service_user_ids
          required: false
          schema:
            anyOf:
              - items:
                  type: string
                type: array
              - type: 'null'
            title: Service User Ids
        - in: query
          name: time_before
          required: true
          schema:
            title: Time Before
            type: integer
        - in: query
          name: time_after
          required: true
          schema:
            title: Time After
            type: integer
        - in: query
          name: playbook_id
          required: false
          schema:
            anyOf:
              - type: string
              - type: 'null'
            title: Playbook Id
      responses:
        '200':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/SessionMetricsResponse'
          description: Successful Response
        '401':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
          description: Unauthorized
        '403':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
          description: Forbidden
        '404':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
          description: Not Found
        '409':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
          description: Conflict
        '422':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
          description: Unprocessable Content
        '429':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
          description: Too Many Requests
      summary: Get Session Metrics
      tags:
        - metrics
  /v3/organizations/{org_id}/metrics/usage:
    get:
      description: Get aggregated usage metrics for the organization.
      operationId: handle_get_usage_metrics_v3_organizations__org_id__metrics_usage_get
      parameters:
        - description: 'Organization ID (prefix: org-)'
          in: path
          name: org_id
          required: true
          schema:
            example: org-abc123def456
            title: Org Id
            type: string
        - in: query
          name: time_before
          required: false
          schema:
            anyOf:
              - type: integer
              - type: 'null'
            title: Time Before
        - in: query
          name: time_after
          required: false
          schema:
            anyOf:
              - type: integer
              - type: 'null'
            title: Time After
      responses:
        '200':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/UsageMetrics'
          description: Successful Response
        '401':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
          description: Unauthorized
        '403':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
          description: Forbidden
        '404':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
          description: Not Found
        '409':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
          description: Conflict
        '422':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
          description: Unprocessable Content
        '429':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
          description: Too Many Requests
      summary: Get Usage Metrics
      tags:
        - metrics
  /v3/organizations/{org_id}/metrics/wau:
    get:
      description: Get weekly active users for each week in the specified time range.
      operationId: handle_get_wau_metrics_v3_organizations__org_id__metrics_wau_get
      parameters:
        - description: 'Organization ID (prefix: org-)'
          in: path
          name: org_id
          required: true
          schema:
            example: org-abc123def456
            title: Org Id
            type: string
        - in: query
          name: time_before
          required: true
          schema:
            title: Time Before
            type: integer
        - in: query
          name: time_after
          required: true
          schema:
            title: Time After
            type: integer
        - in: query
          name: min_sessions
          required: false
          schema:
            default: 1
            minimum: 0
            title: Min Sessions
            type: integer
        - in: query
          name: min_searches
          required: false
          schema:
            default: 1
            minimum: 0
            title: Min Searches
            type: integer
      responses:
        '200':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ActiveUserMetricsListResponse'
          description: Successful Response
        '401':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
          description: Unauthorized
        '403':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
          description: Forbidden
        '404':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
          description: Not Found
        '409':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
          description: Conflict
        '422':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
          description: Unprocessable Content
        '429':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
          description: Too Many Requests
      summary: Get Weekly Active Users
      tags:
        - metrics
  /v3/organizations/{org_id}/playbooks:
    get:
      description: List playbooks for an organization.
      operationId: handle_list_playbooks_v3_organizations__org_id__playbooks_get
      parameters:
        - description: 'Organization ID (prefix: org-)'
          in: path
          name: org_id
          required: true
          schema:
            example: org-abc123def456
            title: Org Id
            type: string
        - in: query
          name: after
          required: false
          schema:
            anyOf:
              - type: string
              - type: 'null'
            title: After
        - in: query
          name: first
          required: false
          schema:
            default: 100
            maximum: 200
            minimum: 1
            title: First
            type: integer
      responses:
        '200':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/PaginatedResponse_PlaybookResponse_'
          description: Successful Response
        '401':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
          description: Unauthorized
        '403':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
          description: Forbidden
        '404':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
          description: Not Found
        '409':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
          description: Conflict
        '422':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
          description: Unprocessable Content
        '429':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
          description: Too Many Requests
      summary: List org-level playbooks
      tags:
        - playbooks
    post:
      description: Create a playbook for an organization.
      operationId: handle_create_playbook_v3_organizations__org_id__playbooks_post
      parameters:
        - description: 'Organization ID (prefix: org-)'
          in: path
          name: org_id
          required: true
          schema:
            example: org-abc123def456
            title: Org Id
            type: string
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/PlaybookCreateRequest'
        required: true
      responses:
        '200':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/PlaybookResponse'
          description: Successful Response
        '401':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
          description: Unauthorized
        '403':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
          description: Forbidden
        '404':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
          description: Not Found
        '409':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
          description: Conflict
        '422':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
          description: Unprocessable Content
        '429':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
          description: Too Many Requests
      summary: Create an org-level playbook
      tags:
        - playbooks
  /v3/organizations/{org_id}/playbooks/{playbook_id}:
    delete:
      description: Delete a playbook for an organization.
      operationId: >-
        handle_delete_playbook_v3_organizations__org_id__playbooks__playbook_id__delete
      parameters:
        - description: 'Playbook ID (prefix: playbook-)'
          in: path
          name: playbook_id
          required: true
          schema:
            example: playbook-abc123def456
            title: Playbook Id
            type: string
        - description: 'Organization ID (prefix: org-)'
          in: path
          name: org_id
          required: true
          schema:
            example: org-abc123def456
            title: Org Id
            type: string
      responses:
        '200':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/PlaybookResponse'
          description: Successful Response
        '401':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
          description: Unauthorized
        '403':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
          description: Forbidden
        '404':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
          description: Not Found
        '409':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
          description: Conflict
        '422':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
          description: Unprocessable Content
        '429':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
          description: Too Many Requests
      summary: Delete an org-level playbook
      tags:
        - playbooks
    get:
      description: Get a specific playbook by ID for an organization.
      operationId: >-
        handle_get_playbook_v3_organizations__org_id__playbooks__playbook_id__get
      parameters:
        - description: 'Playbook ID (prefix: playbook-)'
          in: path
          name: playbook_id
          required: true
          schema:
            example: playbook-abc123def456
            title: Playbook Id
            type: string
        - description: 'Organization ID (prefix: org-)'
          in: path
          name: org_id
          required: true
          schema:
            example: org-abc123def456
            title: Org Id
            type: string
      responses:
        '200':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/PlaybookResponse'
          description: Successful Response
        '401':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
          description: Unauthorized
        '403':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
          description: Forbidden
        '404':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
          description: Not Found
        '409':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
          description: Conflict
        '422':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
          description: Unprocessable Content
        '429':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
          description: Too Many Requests
      summary: Get an org-level playbook by ID
      tags:
        - playbooks
    put:
      description: Update a playbook for an organization.
      operationId: >-
        handle_update_playbook_v3_organizations__org_id__playbooks__playbook_id__put
      parameters:
        - description: 'Playbook ID (prefix: playbook-)'
          in: path
          name: playbook_id
          required: true
          schema:
            example: playbook-abc123def456
            title: Playbook Id
            type: string
        - description: 'Organization ID (prefix: org-)'
          in: path
          name: org_id
          required: true
          schema:
            example: org-abc123def456
            title: Org Id
            type: string
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/PlaybookCreateRequest'
        required: true
      responses:
        '200':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/PlaybookResponse'
          description: Successful Response
        '401':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
          description: Unauthorized
        '403':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
          description: Forbidden
        '404':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
          description: Not Found
        '409':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
          description: Conflict
        '422':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
          description: Unprocessable Content
        '429':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
          description: Too Many Requests
      summary: Update an org-level playbook
      tags:
        - playbooks
  /v3/organizations/{org_id}/pr-reviews:
    get:
      description: |-
        Return the latest Devin Review for a PR scoped to the organization.

        When ``commit_sha`` is omitted, the PR's current head commit is
        fetched from the provider and used. Returns ``404`` when no review
        exists for the resolved commit.
      operationId: handle_get_pr_review_status_v3_organizations__org_id__pr_reviews_get
      parameters:
        - description: 'Organization ID (prefix: org-)'
          in: path
          name: org_id
          required: true
          schema:
            example: org-abc123def456
            title: Org Id
            type: string
        - description: >-
            Full URL of the pull/merge request to look up (e.g.
            `https://github.com/owner/repo/pull/123`).
          in: query
          name: pr_url
          required: true
          schema:
            description: >-
              Full URL of the pull/merge request to look up (e.g.
              `https://github.com/owner/repo/pull/123`).
            examples:
              - https://github.com/owner/repo/pull/123
            title: Pr Url
            type: string
        - description: >-
            Commit SHA to look up (full or short prefix). Defaults to the PR's
            current head commit when omitted.
          in: query
          name: commit_sha
          required: false
          schema:
            anyOf:
              - type: string
              - type: 'null'
            description: >-
              Commit SHA to look up (full or short prefix). Defaults to the PR's
              current head commit when omitted.
            examples:
              - abc123def4567890abc123def4567890abc123de
            title: Commit Sha
      responses:
        '200':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/PrReviewResponse'
          description: Successful Response
        '401':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
          description: Unauthorized
        '403':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
          description: Forbidden
        '404':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
          description: Not Found
        '409':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
          description: Conflict
        '422':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
          description: Unprocessable Content
        '429':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
          description: Too Many Requests
      summary: Get latest Devin Review status
      tags:
        - pr-reviews
    post:
      description: |-
        Trigger a Devin Review for a pull/merge request.

        Creates a database record that will be picked up by the review
        worker pool. Always fetches the latest commit from the PR.
      operationId: handle_create_pr_review_v3_organizations__org_id__pr_reviews_post
      parameters:
        - description: 'Organization ID (prefix: org-)'
          in: path
          name: org_id
          required: true
          schema:
            example: org-abc123def456
            title: Org Id
            type: string
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/PrReviewCreateRequest'
        required: true
      responses:
        '200':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/PrReviewResponse'
          description: Successful Response
        '401':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
          description: Unauthorized
        '403':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
          description: Forbidden
        '404':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
          description: Not Found
        '409':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
          description: Conflict
        '422':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
          description: Unprocessable Content
        '429':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
          description: Too Many Requests
      summary: Trigger Devin Review
      tags:
        - pr-reviews
  /v3/organizations/{org_id}/schedules:
    get:
      description: List all schedules for the organization.
      operationId: handle_list_schedules_v3_organizations__org_id__schedules_get
      parameters:
        - description: 'Organization ID (prefix: org-)'
          in: path
          name: org_id
          required: true
          schema:
            example: org-abc123def456
            title: Org Id
            type: string
        - in: query
          name: limit
          required: false
          schema:
            default: 200
            maximum: 200
            minimum: 1
            title: Limit
            type: integer
        - in: query
          name: offset
          required: false
          schema:
            default: 0
            minimum: 0
            title: Offset
            type: integer
      responses:
        '200':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/PaginatedResponse_ScheduleResponse_'
          description: Successful Response
        '401':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
          description: Unauthorized
        '403':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
          description: Forbidden
        '404':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
          description: Not Found
        '409':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
          description: Conflict
        '422':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
          description: Unprocessable Content
        '429':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
          description: Too Many Requests
      summary: List schedules
      tags:
        - schedules
    post:
      description: Create a new scheduled session.
      operationId: handle_create_schedule_v3_organizations__org_id__schedules_post
      parameters:
        - description: 'Organization ID (prefix: org-)'
          in: path
          name: org_id
          required: true
          schema:
            example: org-abc123def456
            title: Org Id
            type: string
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/ScheduleCreateRequest'
        required: true
      responses:
        '200':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ScheduleResponse'
          description: Successful Response
        '401':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
          description: Unauthorized
        '403':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
          description: Forbidden
        '404':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
          description: Not Found
        '409':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
          description: Conflict
        '422':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
          description: Unprocessable Content
        '429':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
          description: Too Many Requests
      summary: Create schedule
      tags:
        - schedules
  /v3/organizations/{org_id}/schedules/{schedule_id}:
    delete:
      description: Soft delete a schedule.
      operationId: >-
        handle_delete_schedule_v3_organizations__org_id__schedules__schedule_id__delete
      parameters:
        - description: 'Schedule ID (prefix: sched-)'
          in: path
          name: schedule_id
          required: true
          schema:
            example: sched-abc123def456
            title: Schedule Id
            type: string
        - description: 'Organization ID (prefix: org-)'
          in: path
          name: org_id
          required: true
          schema:
            example: org-abc123def456
            title: Org Id
            type: string
      responses:
        '200':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ScheduleResponse'
          description: Successful Response
        '401':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
          description: Unauthorized
        '403':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
          description: Forbidden
        '404':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
          description: Not Found
        '409':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
          description: Conflict
        '422':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
          description: Unprocessable Content
        '429':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
          description: Too Many Requests
      summary: Delete schedule
      tags:
        - schedules
    get:
      description: Get a specific schedule by ID.
      operationId: >-
        handle_get_schedule_v3_organizations__org_id__schedules__schedule_id__get
      parameters:
        - description: 'Schedule ID (prefix: sched-)'
          in: path
          name: schedule_id
          required: true
          schema:
            example: sched-abc123def456
            title: Schedule Id
            type: string
        - description: 'Organization ID (prefix: org-)'
          in: path
          name: org_id
          required: true
          schema:
            example: org-abc123def456
            title: Org Id
            type: string
      responses:
        '200':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ScheduleResponse'
          description: Successful Response
        '401':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
          description: Unauthorized
        '403':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
          description: Forbidden
        '404':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
          description: Not Found
        '409':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
          description: Conflict
        '422':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
          description: Unprocessable Content
        '429':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
          description: Too Many Requests
      summary: Get schedule
      tags:
        - schedules
    patch:
      description: Update an existing schedule.
      operationId: >-
        handle_update_schedule_v3_organizations__org_id__schedules__schedule_id__patch
      parameters:
        - description: 'Schedule ID (prefix: sched-)'
          in: path
          name: schedule_id
          required: true
          schema:
            example: sched-abc123def456
            title: Schedule Id
            type: string
        - description: 'Organization ID (prefix: org-)'
          in: path
          name: org_id
          required: true
          schema:
            example: org-abc123def456
            title: Org Id
            type: string
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/ScheduleUpdateRequest'
        required: true
      responses:
        '200':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ScheduleResponse'
          description: Successful Response
        '401':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
          description: Unauthorized
        '403':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
          description: Forbidden
        '404':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
          description: Not Found
        '409':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
          description: Conflict
        '422':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
          description: Unprocessable Content
        '429':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
          description: Too Many Requests
      summary: Update schedule
      tags:
        - schedules
  /v3/organizations/{org_id}/secrets:
    get:
      description: List secrets for an organization.
      operationId: handle_list_secrets_v3_organizations__org_id__secrets_get
      parameters:
        - description: 'Organization ID (prefix: org-)'
          in: path
          name: org_id
          required: true
          schema:
            example: org-abc123def456
            title: Org Id
            type: string
        - in: query
          name: after
          required: false
          schema:
            anyOf:
              - type: string
              - type: 'null'
            title: After
        - in: query
          name: first
          required: false
          schema:
            default: 100
            maximum: 200
            minimum: 1
            title: First
            type: integer
      responses:
        '200':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/PaginatedResponse_SecretResponse_'
          description: Successful Response
        '401':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
          description: Unauthorized
        '403':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
          description: Forbidden
        '404':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
          description: Not Found
        '409':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
          description: Conflict
        '422':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
          description: Unprocessable Content
        '429':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
          description: Too Many Requests
      summary: List org-level secrets
      tags:
        - secrets
    post:
      description: Create a secret for an organization.
      operationId: handle_create_secret_v3_organizations__org_id__secrets_post
      parameters:
        - description: 'Organization ID (prefix: org-)'
          in: path
          name: org_id
          required: true
          schema:
            example: org-abc123def456
            title: Org Id
            type: string
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/SecretCreateRequest'
        required: true
      responses:
        '200':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/SecretResponse'
          description: Successful Response
        '401':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
          description: Unauthorized
        '403':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
          description: Forbidden
        '404':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
          description: Not Found
        '409':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
          description: Conflict
        '422':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
          description: Unprocessable Content
        '429':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
          description: Too Many Requests
      summary: Create an org-level secret
      tags:
        - secrets
  /v3/organizations/{org_id}/secrets/{secret_id}:
    delete:
      description: Delete a secret for an organization.
      operationId: >-
        handle_delete_secret_v3_organizations__org_id__secrets__secret_id__delete
      parameters:
        - description: 'Secret ID (prefix: secret-)'
          in: path
          name: secret_id
          required: true
          schema:
            example: secret-abc123def456
            title: Secret Id
            type: string
        - description: 'Organization ID (prefix: org-)'
          in: path
          name: org_id
          required: true
          schema:
            example: org-abc123def456
            title: Org Id
            type: string
      responses:
        '200':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/SecretResponse'
          description: Successful Response
        '401':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
          description: Unauthorized
        '403':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
          description: Forbidden
        '404':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
          description: Not Found
        '409':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
          description: Conflict
        '422':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
          description: Unprocessable Content
        '429':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
          description: Too Many Requests
      summary: Delete an org-level secret
      tags:
        - secrets
  /v3/organizations/{org_id}/sessions:
    get:
      description: List sessions.
      operationId: handle_get_sessions_v3_organizations__org_id__sessions_get
      parameters:
        - description: 'Organization ID (prefix: org-)'
          in: path
          name: org_id
          required: true
          schema:
            anyOf:
              - type: string
              - type: 'null'
            example: org-abc123def456
            title: Org Id
        - in: query
          name: qs
          required: true
          schema:
            $ref: '#/components/schemas/SessionsQueryParams'
        - in: query
          name: devin_id
          required: false
          schema:
            anyOf:
              - type: string
              - type: 'null'
            title: Devin Id
      responses:
        '200':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/PaginatedResponse_SessionResponse_'
          description: Successful Response
        '401':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
          description: Unauthorized
        '403':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
          description: Forbidden
        '404':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
          description: Not Found
        '409':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
          description: Conflict
        '422':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
          description: Unprocessable Content
        '429':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
          description: Too Many Requests
      summary: List Sessions
      tags:
        - sessions
    post:
      description: Create a new session
      operationId: handle_create_session_v3_organizations__org_id__sessions_post
      parameters:
        - description: 'Organization ID (prefix: org-)'
          in: path
          name: org_id
          required: true
          schema:
            anyOf:
              - type: string
              - type: 'null'
            example: org-abc123def456
            title: Org Id
        - in: query
          name: devin_id
          required: false
          schema:
            anyOf:
              - type: string
              - type: 'null'
            title: Devin Id
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/SessionCreateRequest'
        required: true
      responses:
        '200':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/SessionResponse'
          description: Successful Response
        '401':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
          description: Unauthorized
        '403':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
          description: Forbidden
        '404':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
          description: Not Found
        '409':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
          description: Conflict
        '422':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
          description: Unprocessable Content
        '429':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
          description: Too Many Requests
      summary: Create Session
      tags:
        - sessions
  /v3/organizations/{org_id}/sessions/insights:
    get:
      description: |-
        List sessions with detailed insights including message counts,
        session size classification, and AI-generated analysis.
      operationId: >-
        handle_get_sessions_insights_v3_organizations__org_id__sessions_insights_get
      parameters:
        - description: 'Organization ID (prefix: org-)'
          in: path
          name: org_id
          required: true
          schema:
            anyOf:
              - type: string
              - type: 'null'
            example: org-abc123def456
            title: Org Id
        - in: query
          name: qs
          required: true
          schema:
            $ref: '#/components/schemas/SessionsQueryParams'
        - in: query
          name: devin_id
          required: false
          schema:
            anyOf:
              - type: string
              - type: 'null'
            title: Devin Id
      responses:
        '200':
          content:
            application/json:
              schema:
                $ref: >-
                  #/components/schemas/PaginatedResponse_SessionInsightsResponse_
          description: Successful Response
        '401':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
          description: Unauthorized
        '403':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
          description: Forbidden
        '404':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
          description: Not Found
        '409':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
          description: Conflict
        '422':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
          description: Unprocessable Content
        '429':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
          description: Too Many Requests
      summary: List sessions with insights
      tags:
        - sessions
  /v3/organizations/{org_id}/sessions/{devin_id}:
    delete:
      description: Terminate session
      operationId: >-
        handle_terminate_session_v3_organizations__org_id__sessions__devin_id__delete
      parameters:
        - description: 'Organization ID (prefix: org-)'
          in: path
          name: org_id
          required: true
          schema:
            anyOf:
              - type: string
              - type: 'null'
            example: org-abc123def456
            title: Org Id
        - description: 'Devin session ID (prefix: devin-)'
          in: path
          name: devin_id
          required: true
          schema:
            anyOf:
              - type: string
              - type: 'null'
            example: devin-abc123def456
            title: Devin Id
        - description: Whether to archive the Devin session
          in: query
          name: archive
          required: false
          schema:
            default: false
            description: Whether to archive the Devin session
            title: Archive
            type: boolean
      responses:
        '200':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/SessionResponse'
          description: Successful Response
        '401':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
          description: Unauthorized
        '403':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
          description: Forbidden
        '404':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
          description: Not Found
        '409':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
          description: Conflict
        '422':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
          description: Unprocessable Content
        '429':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
          description: Too Many Requests
      summary: Terminate Session
      tags:
        - sessions
    get:
      description: Get details of a specific session.
      operationId: handle_get_session_v3_organizations__org_id__sessions__devin_id__get
      parameters:
        - description: 'Organization ID (prefix: org-)'
          in: path
          name: org_id
          required: true
          schema:
            anyOf:
              - type: string
              - type: 'null'
            example: org-abc123def456
            title: Org Id
        - description: 'Devin session ID (prefix: devin-)'
          in: path
          name: devin_id
          required: true
          schema:
            anyOf:
              - type: string
              - type: 'null'
            example: devin-abc123def456
            title: Devin Id
      responses:
        '200':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/SessionResponse'
          description: Successful Response
        '401':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
          description: Unauthorized
        '403':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
          description: Forbidden
        '404':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
          description: Not Found
        '409':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
          description: Conflict
        '422':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
          description: Unprocessable Content
        '429':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
          description: Too Many Requests
      summary: Get Session
      tags:
        - sessions
  /v3/organizations/{org_id}/sessions/{devin_id}/archive:
    post:
      description: Archive session and put it to sleep if currently running
      operationId: >-
        handle_archive_session_v3_organizations__org_id__sessions__devin_id__archive_post
      parameters:
        - description: 'Organization ID (prefix: org-)'
          in: path
          name: org_id
          required: true
          schema:
            anyOf:
              - type: string
              - type: 'null'
            example: org-abc123def456
            title: Org Id
        - description: 'Devin session ID (prefix: devin-)'
          in: path
          name: devin_id
          required: true
          schema:
            anyOf:
              - type: string
              - type: 'null'
            example: devin-abc123def456
            title: Devin Id
      responses:
        '200':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/SessionResponse'
          description: Successful Response
        '401':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
          description: Unauthorized
        '403':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
          description: Forbidden
        '404':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
          description: Not Found
        '409':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
          description: Conflict
        '422':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
          description: Unprocessable Content
        '429':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
          description: Too Many Requests
      summary: Archive Session
      tags:
        - sessions
  /v3/organizations/{org_id}/sessions/{devin_id}/attachments:
    get:
      description: List all attachments for a session.
      operationId: >-
        handle_get_session_attachments_v3_organizations__org_id__sessions__devin_id__attachments_get
      parameters:
        - description: 'Organization ID (prefix: org-)'
          in: path
          name: org_id
          required: true
          schema:
            anyOf:
              - type: string
              - type: 'null'
            example: org-abc123def456
            title: Org Id
        - description: 'Devin session ID (prefix: devin-)'
          in: path
          name: devin_id
          required: true
          schema:
            anyOf:
              - type: string
              - type: 'null'
            example: devin-abc123def456
            title: Devin Id
      responses:
        '200':
          content:
            application/json:
              schema:
                items:
                  $ref: '#/components/schemas/SessionAttachment'
                title: >-
                  Response Handle Get Session Attachments V3 Organizations  Org
                  Id  Sessions  Devin Id  Attachments Get
                type: array
          description: Successful Response
        '401':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
          description: Unauthorized
        '403':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
          description: Forbidden
        '404':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
          description: Not Found
        '409':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
          description: Conflict
        '422':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
          description: Unprocessable Content
        '429':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
          description: Too Many Requests
      summary: List session attachments
      tags:
        - sessions
  /v3/organizations/{org_id}/sessions/{devin_id}/insights:
    get:
      description: |-
        Get detailed insights for a specific session, including message counts,
        session size classification, and AI-generated analysis.
      operationId: >-
        handle_get_session_insights_v3_organizations__org_id__sessions__devin_id__insights_get
      parameters:
        - description: 'Organization ID (prefix: org-)'
          in: path
          name: org_id
          required: true
          schema:
            anyOf:
              - type: string
              - type: 'null'
            example: org-abc123def456
            title: Org Id
        - description: 'Devin session ID (prefix: devin-)'
          in: path
          name: devin_id
          required: true
          schema:
            anyOf:
              - type: string
              - type: 'null'
            example: devin-abc123def456
            title: Devin Id
      responses:
        '200':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/SessionInsightsResponse'
          description: Successful Response
        '401':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
          description: Unauthorized
        '403':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
          description: Forbidden
        '404':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
          description: Not Found
        '409':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
          description: Conflict
        '422':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
          description: Unprocessable Content
        '429':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
          description: Too Many Requests
      summary: Get session insights
      tags:
        - sessions
  /v3/organizations/{org_id}/sessions/{devin_id}/insights/generate:
    post:
      description: |-
        Trigger on-demand generation of session insights.

        Returns ``already_exists`` if insights have already been generated.
        Otherwise kicks off generation in the background. Poll the
        GET insights endpoint to retrieve results once generation completes.
      operationId: >-
        handle_generate_session_insights_v3_organizations__org_id__sessions__devin_id__insights_generate_post
      parameters:
        - description: 'Organization ID (prefix: org-)'
          in: path
          name: org_id
          required: true
          schema:
            anyOf:
              - type: string
              - type: 'null'
            example: org-abc123def456
            title: Org Id
        - description: 'Devin session ID (prefix: devin-)'
          in: path
          name: devin_id
          required: true
          schema:
            anyOf:
              - type: string
              - type: 'null'
            example: devin-abc123def456
            title: Devin Id
      responses:
        '200':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/SessionInsightsGenerateResponse'
          description: Successful Response
        '401':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
          description: Unauthorized
        '403':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
          description: Forbidden
        '404':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
          description: Not Found
        '409':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
          description: Conflict
        '422':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
          description: Unprocessable Content
        '429':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
          description: Too Many Requests
      summary: Generate session insights
      tags:
        - sessions
  /v3/organizations/{org_id}/sessions/{devin_id}/messages:
    get:
      description: >-
        List all messages for a session with cursor-based pagination, ordered
        chronologically.
      operationId: >-
        handle_get_session_messages_v3_organizations__org_id__sessions__devin_id__messages_get
      parameters:
        - description: 'Organization ID (prefix: org-)'
          in: path
          name: org_id
          required: true
          schema:
            anyOf:
              - type: string
              - type: 'null'
            example: org-abc123def456
            title: Org Id
        - description: 'Devin session ID (prefix: devin-)'
          in: path
          name: devin_id
          required: true
          schema:
            anyOf:
              - type: string
              - type: 'null'
            example: devin-abc123def456
            title: Devin Id
        - in: query
          name: after
          required: false
          schema:
            anyOf:
              - type: string
              - type: 'null'
            title: After
        - in: query
          name: first
          required: false
          schema:
            default: 100
            maximum: 200
            minimum: 1
            title: First
            type: integer
      responses:
        '200':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/PaginatedResponse_SessionMessage_'
          description: Successful Response
        '401':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
          description: Unauthorized
        '403':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
          description: Forbidden
        '404':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
          description: Not Found
        '409':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
          description: Conflict
        '422':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
          description: Unprocessable Content
        '429':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
          description: Too Many Requests
      summary: List session messages
      tags:
        - sessions
    post:
      description: >-
        Send a message to an active session. The session will be automatically
        resumed if suspended.
      operationId: >-
        handle_post_message_v3_organizations__org_id__sessions__devin_id__messages_post
      parameters:
        - description: 'Organization ID (prefix: org-)'
          in: path
          name: org_id
          required: true
          schema:
            anyOf:
              - type: string
              - type: 'null'
            example: org-abc123def456
            title: Org Id
        - description: 'Devin session ID (prefix: devin-)'
          in: path
          name: devin_id
          required: true
          schema:
            anyOf:
              - type: string
              - type: 'null'
            example: devin-abc123def456
            title: Devin Id
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/SessionMessageCreateRequest'
        required: true
      responses:
        '200':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/SessionResponse'
          description: Successful Response
        '401':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
          description: Unauthorized
        '403':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
          description: Forbidden
        '404':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
          description: Not Found
        '409':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
          description: Conflict
        '422':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
          description: Unprocessable Content
        '429':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
          description: Too Many Requests
      summary: Send a message to a session
      tags:
        - sessions
  /v3/organizations/{org_id}/sessions/{devin_id}/tags:
    get:
      description: Get the tags for a specific session.
      operationId: >-
        handle_get_session_tags_v3_organizations__org_id__sessions__devin_id__tags_get
      parameters:
        - description: 'Organization ID (prefix: org-)'
          in: path
          name: org_id
          required: true
          schema:
            anyOf:
              - type: string
              - type: 'null'
            example: org-abc123def456
            title: Org Id
        - description: 'Devin session ID (prefix: devin-)'
          in: path
          name: devin_id
          required: true
          schema:
            anyOf:
              - type: string
              - type: 'null'
            example: devin-abc123def456
            title: Devin Id
      responses:
        '200':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/SessionTagsResponse'
          description: Successful Response
        '401':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
          description: Unauthorized
        '403':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
          description: Forbidden
        '404':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
          description: Not Found
        '409':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
          description: Conflict
        '422':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
          description: Unprocessable Content
        '429':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
          description: Too Many Requests
      summary: Get session tags
      tags:
        - sessions
    post:
      description: Append tags to a session (deduplicating with existing tags).
      operationId: >-
        handle_append_session_tags_v3_organizations__org_id__sessions__devin_id__tags_post
      parameters:
        - description: 'Organization ID (prefix: org-)'
          in: path
          name: org_id
          required: true
          schema:
            anyOf:
              - type: string
              - type: 'null'
            example: org-abc123def456
            title: Org Id
        - description: 'Devin session ID (prefix: devin-)'
          in: path
          name: devin_id
          required: true
          schema:
            anyOf:
              - type: string
              - type: 'null'
            example: devin-abc123def456
            title: Devin Id
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/SessionTagsUpdateRequest'
        required: true
      responses:
        '200':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/SessionTagsResponse'
          description: Successful Response
        '401':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
          description: Unauthorized
        '403':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
          description: Forbidden
        '404':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
          description: Not Found
        '409':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
          description: Conflict
        '422':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
          description: Unprocessable Content
        '429':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
          description: Too Many Requests
      summary: Append session tags
      tags:
        - sessions
    put:
      description: Replace all tags on a session.
      operationId: >-
        handle_replace_session_tags_v3_organizations__org_id__sessions__devin_id__tags_put
      parameters:
        - description: 'Organization ID (prefix: org-)'
          in: path
          name: org_id
          required: true
          schema:
            anyOf:
              - type: string
              - type: 'null'
            example: org-abc123def456
            title: Org Id
        - description: 'Devin session ID (prefix: devin-)'
          in: path
          name: devin_id
          required: true
          schema:
            anyOf:
              - type: string
              - type: 'null'
            example: devin-abc123def456
            title: Devin Id
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/SessionTagsUpdateRequest'
        required: true
      responses:
        '200':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/SessionTagsResponse'
          description: Successful Response
        '401':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
          description: Unauthorized
        '403':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
          description: Forbidden
        '404':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
          description: Not Found
        '409':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
          description: Conflict
        '422':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
          description: Unprocessable Content
        '429':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
          description: Too Many Requests
      summary: Replace session tags
      tags:
        - sessions
  /v3/organizations/{org_id}/sessions/{devin_id}/unarchive:
    post:
      description: Unarchive session (does not cascade to child sessions)
      operationId: >-
        handle_unarchive_session_v3_organizations__org_id__sessions__devin_id__unarchive_post
      parameters:
        - description: 'Organization ID (prefix: org-)'
          in: path
          name: org_id
          required: true
          schema:
            anyOf:
              - type: string
              - type: 'null'
            example: org-abc123def456
            title: Org Id
        - description: 'Devin session ID (prefix: devin-)'
          in: path
          name: devin_id
          required: true
          schema:
            anyOf:
              - type: string
              - type: 'null'
            example: devin-abc123def456
            title: Devin Id
      responses:
        '200':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/SessionResponse'
          description: Successful Response
        '401':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
          description: Unauthorized
        '403':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
          description: Forbidden
        '404':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
          description: Not Found
        '409':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
          description: Conflict
        '422':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
          description: Unprocessable Content
        '429':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
          description: Too Many Requests
      summary: Unarchive Session
      tags:
        - sessions
  /v3/self:
    get:
      operationId: handle_get_self_v3_self_get
      responses:
        '200':
          content:
            application/json:
              schema:
                anyOf:
                  - $ref: '#/components/schemas/ServiceUserSelf'
                  - $ref: '#/components/schemas/PatUserSelf'
                  - $ref: '#/components/schemas/DevinBrainUserSelf'
                  - $ref: '#/components/schemas/WindsurfSessionUserSelf'
                title: Response Handle Get Self V3 Self Get
          description: Successful Response
        '401':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
          description: Unauthorized
        '403':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
          description: Forbidden
        '404':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
          description: Not Found
        '409':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
          description: Conflict
        '422':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
          description: Unprocessable Content
        '429':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
          description: Too Many Requests
      summary: Get Self
      tags:
        - self
  /v3beta1/enterprise/guardrail-violations:
    get:
      description: List guardrail violations across the enterprise.
      operationId: >-
        handle_get_enterprise_guardrail_violations_v3beta1_enterprise_guardrail_violations_get
      parameters:
        - in: query
          name: order
          required: false
          schema:
            default: desc
            enum:
              - asc
              - desc
            title: Order
            type: string
        - in: query
          name: time_before
          required: false
          schema:
            anyOf:
              - type: integer
              - type: 'null'
            title: Time Before
        - in: query
          name: time_after
          required: false
          schema:
            anyOf:
              - type: integer
              - type: 'null'
            title: Time After
        - in: query
          name: after
          required: false
          schema:
            anyOf:
              - type: string
              - type: 'null'
            title: After
        - in: query
          name: first
          required: false
          schema:
            default: 100
            maximum: 200
            minimum: 1
            title: First
            type: integer
        - in: query
          name: session_id
          required: false
          schema:
            anyOf:
              - type: string
              - type: 'null'
            title: Session Id
        - in: query
          name: guardrail_id
          required: false
          schema:
            anyOf:
              - type: string
              - type: 'null'
            title: Guardrail Id
      responses:
        '200':
          content:
            application/json:
              schema:
                $ref: >-
                  #/components/schemas/PaginatedResponse_GuardrailViolationResponse_
          description: Successful Response
        '401':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
          description: Unauthorized
        '403':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
          description: Forbidden
        '404':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
          description: Not Found
        '409':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
          description: Conflict
        '422':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
          description: Unprocessable Content
        '429':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
          description: Too Many Requests
      summary: List Guardrail Violations
      tags:
        - guardrail_violations
  /v3beta1/enterprise/organizations/{org_id}/guardrail-violations:
    get:
      description: List guardrail violations for a specific organization.
      operationId: >-
        handle_get_org_guardrail_violations_v3beta1_enterprise_organizations__org_id__guardrail_violations_get
      parameters:
        - description: 'Organization ID (prefix: org-)'
          in: path
          name: org_id
          required: true
          schema:
            example: org-abc123def456
            title: Org Id
            type: string
        - in: query
          name: order
          required: false
          schema:
            default: desc
            enum:
              - asc
              - desc
            title: Order
            type: string
        - in: query
          name: time_before
          required: false
          schema:
            anyOf:
              - type: integer
              - type: 'null'
            title: Time Before
        - in: query
          name: time_after
          required: false
          schema:
            anyOf:
              - type: integer
              - type: 'null'
            title: Time After
        - in: query
          name: after
          required: false
          schema:
            anyOf:
              - type: string
              - type: 'null'
            title: After
        - in: query
          name: first
          required: false
          schema:
            default: 100
            maximum: 200
            minimum: 1
            title: First
            type: integer
        - in: query
          name: session_id
          required: false
          schema:
            anyOf:
              - type: string
              - type: 'null'
            title: Session Id
        - in: query
          name: guardrail_id
          required: false
          schema:
            anyOf:
              - type: string
              - type: 'null'
            title: Guardrail Id
      responses:
        '200':
          content:
            application/json:
              schema:
                $ref: >-
                  #/components/schemas/PaginatedResponse_GuardrailViolationResponse_
          description: Successful Response
        '401':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
          description: Unauthorized
        '403':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
          description: Forbidden
        '404':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
          description: Not Found
        '409':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
          description: Conflict
        '422':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
          description: Unprocessable Content
        '429':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
          description: Too Many Requests
      summary: List Organization Guardrail Violations
      tags:
        - guardrail_violations
  /v3beta1/enterprise/service-users/{service_user_id}/api-keys:
    get:
      description: List API keys for a service user, optionally filtered by status.
      operationId: >-
        handle_list_service_user_api_keys_v3beta1_enterprise_service_users__service_user_id__api_keys_get
      parameters:
        - description: 'Service user ID (prefix: service-user-)'
          in: path
          name: service_user_id
          required: true
          schema:
            example: service-user-abc123def456
            title: Service User Id
            type: string
        - in: query
          name: status
          required: false
          schema:
            default: all
            enum:
              - active
              - revoked
              - expired
              - all
            title: Status
            type: string
      responses:
        '200':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/PaginatedResponse_ApiKeyResponse_'
          description: Successful Response
        '401':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
          description: Unauthorized
        '403':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
          description: Forbidden
        '404':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
          description: Not Found
        '409':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
          description: Conflict
        '422':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
          description: Unprocessable Content
        '429':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
          description: Too Many Requests
      summary: List API keys for service user
      tags:
        - service_user_api_keys
    post:
      description: |-
        Create a new API key for a service user.

        The caller must have ManageAccountServiceUsers permission.
      operationId: >-
        handle_create_service_user_api_key_v3beta1_enterprise_service_users__service_user_id__api_keys_post
      parameters:
        - description: 'Service user ID (prefix: service-user-)'
          in: path
          name: service_user_id
          required: true
          schema:
            example: service-user-abc123def456
            title: Service User Id
            type: string
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/CreateApiKeyRequest'
        required: true
      responses:
        '200':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ApiKeyWithTokenResponse'
          description: Successful Response
        '401':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
          description: Unauthorized
        '403':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
          description: Forbidden
        '404':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
          description: Not Found
        '409':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
          description: Conflict
        '422':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
          description: Unprocessable Content
        '429':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
          description: Too Many Requests
      summary: Create API key for service user
      tags:
        - service_user_api_keys
  /v3beta1/enterprise/service-users/{service_user_id}/api-keys/{api_key_id}:
    delete:
      description: |-
        Revoke an API key for a service user.

        Returns 404 if the key is not found, 409 if already revoked.
      operationId: >-
        handle_revoke_service_user_api_key_v3beta1_enterprise_service_users__service_user_id__api_keys__api_key_id__delete
      parameters:
        - description: 'Service user ID (prefix: service-user-)'
          in: path
          name: service_user_id
          required: true
          schema:
            example: service-user-abc123def456
            title: Service User Id
            type: string
        - in: path
          name: api_key_id
          required: true
          schema:
            title: Api Key Id
            type: string
      responses:
        '200':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ApiKeyResponse'
          description: Successful Response
        '401':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
          description: Unauthorized
        '403':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
          description: Forbidden
        '404':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
          description: Not Found
        '409':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
          description: Conflict
        '422':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
          description: Unprocessable Content
        '429':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
          description: Too Many Requests
      summary: Revoke API key for service user
      tags:
        - service_user_api_keys
  /v3beta1/enterprise/service-users/{service_user_id}/api-keys/{api_key_id}/rotate:
    post:
      description: >-
        Rotate an API key for a service user.


        Creates a new key. By default revokes the old key; set
        revoke_current=false

        for graceful rollover where both keys remain active temporarily.

        Returns 404 if the key is not found, 400 if the key is not active.
      operationId: >-
        handle_rotate_service_user_api_key_v3beta1_enterprise_service_users__service_user_id__api_keys__api_key_id__rotate_post
      parameters:
        - description: 'Service user ID (prefix: service-user-)'
          in: path
          name: service_user_id
          required: true
          schema:
            example: service-user-abc123def456
            title: Service User Id
            type: string
        - in: path
          name: api_key_id
          required: true
          schema:
            title: Api Key Id
            type: string
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/RotateApiKeyRequest'
        required: true
      responses:
        '200':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ApiKeyWithTokenResponse'
          description: Successful Response
        '401':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
          description: Unauthorized
        '403':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
          description: Forbidden
        '404':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
          description: Not Found
        '409':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
          description: Conflict
        '422':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
          description: Unprocessable Content
        '429':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
          description: Too Many Requests
      summary: Rotate API key for service user
      tags:
        - service_user_api_keys
  /v3beta1/enterprise/snapshot-setup/blueprints:
    get:
      operationId: >-
        list_enterprise_blueprints_v3beta1_enterprise_snapshot_setup_blueprints_get
      responses:
        '200':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/BlueprintList'
          description: Successful Response
        '401':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
          description: Unauthorized
        '403':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
          description: Forbidden
        '404':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
          description: Not Found
        '409':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
          description: Conflict
        '422':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
          description: Unprocessable Content
        '429':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
          description: Too Many Requests
      summary: List enterprise-tier blueprints
      tags:
        - snapshot_setup
    post:
      description: |-
        Create the single enterprise-tier blueprint.

        Returns 409 if a blueprint already exists for this enterprise.
      operationId: >-
        create_enterprise_blueprint_endpoint_v3beta1_enterprise_snapshot_setup_blueprints_post
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/CreateEnterpriseBlueprintBody'
        required: true
      responses:
        '201':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Blueprint'
          description: Successful Response
        '401':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
          description: Unauthorized
        '403':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
          description: Forbidden
        '404':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
          description: Not Found
        '409':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
          description: Conflict
        '422':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
          description: Unprocessable Content
        '429':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
          description: Too Many Requests
      summary: Create the enterprise-tier blueprint
      tags:
        - snapshot_setup
  /v3beta1/enterprise/snapshot-setup/blueprints/{blueprint_id}:
    delete:
      operationId: >-
        delete_enterprise_blueprint_endpoint_v3beta1_enterprise_snapshot_setup_blueprints__blueprint_id__delete
      parameters:
        - in: path
          name: blueprint_id
          required: true
          schema:
            title: Blueprint Id
            type: string
      responses:
        '204':
          description: Successful Response
        '401':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
          description: Unauthorized
        '403':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
          description: Forbidden
        '404':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
          description: Not Found
        '409':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
          description: Conflict
        '422':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
          description: Unprocessable Content
        '429':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
          description: Too Many Requests
      summary: Delete the enterprise blueprint (soft-delete)
      tags:
        - snapshot_setup
    get:
      operationId: >-
        get_enterprise_blueprint_endpoint_v3beta1_enterprise_snapshot_setup_blueprints__blueprint_id__get
      parameters:
        - in: path
          name: blueprint_id
          required: true
          schema:
            title: Blueprint Id
            type: string
      responses:
        '200':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Blueprint'
          description: Successful Response
        '401':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
          description: Unauthorized
        '403':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
          description: Forbidden
        '404':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
          description: Not Found
        '409':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
          description: Conflict
        '422':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
          description: Unprocessable Content
        '429':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
          description: Too Many Requests
      summary: Get the enterprise blueprint
      tags:
        - snapshot_setup
    put:
      operationId: >-
        update_enterprise_blueprint_endpoint_v3beta1_enterprise_snapshot_setup_blueprints__blueprint_id__put
      parameters:
        - in: path
          name: blueprint_id
          required: true
          schema:
            title: Blueprint Id
            type: string
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/UpdateBlueprintContentsBody'
        required: true
      responses:
        '200':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Blueprint'
          description: Successful Response
        '401':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
          description: Unauthorized
        '403':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
          description: Forbidden
        '404':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
          description: Not Found
        '409':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
          description: Conflict
        '422':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
          description: Unprocessable Content
        '429':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
          description: Too Many Requests
      summary: Replace the enterprise blueprint's YAML contents
      tags:
        - snapshot_setup
  /v3beta1/enterprise/snapshot-setup/blueprints/{blueprint_id}/contents:
    get:
      operationId: >-
        get_enterprise_blueprint_contents_v3beta1_enterprise_snapshot_setup_blueprints__blueprint_id__contents_get
      parameters:
        - in: path
          name: blueprint_id
          required: true
          schema:
            title: Blueprint Id
            type: string
      responses:
        '200':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/PresignedDownload'
          description: Successful Response
        '401':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
          description: Unauthorized
        '403':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
          description: Forbidden
        '404':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
          description: Not Found
        '409':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
          description: Conflict
        '422':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
          description: Unprocessable Content
        '429':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
          description: Too Many Requests
      summary: Presigned URL for the enterprise blueprint YAML
      tags:
        - snapshot_setup
  /v3beta1/enterprise/snapshot-setup/blueprints/{blueprint_id}/files:
    get:
      operationId: >-
        list_enterprise_blueprint_files_v3beta1_enterprise_snapshot_setup_blueprints__blueprint_id__files_get
      parameters:
        - in: path
          name: blueprint_id
          required: true
          schema:
            title: Blueprint Id
            type: string
      responses:
        '200':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/BlueprintFileList'
          description: Successful Response
        '401':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
          description: Unauthorized
        '403':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
          description: Forbidden
        '404':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
          description: Not Found
        '409':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
          description: Conflict
        '422':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
          description: Unprocessable Content
        '429':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
          description: Too Many Requests
      summary: List enterprise blueprint files
      tags:
        - snapshot_setup
    post:
      description: >-
        Upload a file attachment (env-var substitution material) to the
        blueprint.


        Returns 409 if the derived env-var name collides with another active
        file.
      operationId: >-
        upload_enterprise_blueprint_file_endpoint_v3beta1_enterprise_snapshot_setup_blueprints__blueprint_id__files_post
      parameters:
        - in: path
          name: blueprint_id
          required: true
          schema:
            title: Blueprint Id
            type: string
        - in: query
          name: name
          required: true
          schema:
            title: Name
            type: string
      requestBody:
        content:
          multipart/form-data:
            schema:
              $ref: >-
                #/components/schemas/Body_upload_enterprise_blueprint_file_endpoint_v3beta1_enterprise_snapshot_setup_blueprints__blueprint_id__files_post
        required: true
      responses:
        '201':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/BlueprintFile'
          description: Successful Response
        '401':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
          description: Unauthorized
        '403':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
          description: Forbidden
        '404':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
          description: Not Found
        '409':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
          description: Conflict
        '422':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
          description: Unprocessable Content
        '429':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
          description: Too Many Requests
      summary: Upload an enterprise blueprint file
      tags:
        - snapshot_setup
  /v3beta1/enterprise/snapshot-setup/blueprints/{blueprint_id}/files/{file_id}:
    delete:
      operationId: >-
        delete_enterprise_blueprint_file_v3beta1_enterprise_snapshot_setup_blueprints__blueprint_id__files__file_id__delete
      parameters:
        - in: path
          name: blueprint_id
          required: true
          schema:
            title: Blueprint Id
            type: string
        - in: path
          name: file_id
          required: true
          schema:
            title: File Id
            type: string
      responses:
        '204':
          description: Successful Response
        '401':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
          description: Unauthorized
        '403':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
          description: Forbidden
        '404':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
          description: Not Found
        '409':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
          description: Conflict
        '422':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
          description: Unprocessable Content
        '429':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
          description: Too Many Requests
      summary: Delete an enterprise blueprint file
      tags:
        - snapshot_setup
  /v3beta1/organizations/{org_id}/members/idp-users:
    get:
      description: >-
        List users whose organization membership is derived from IDP group
        assignments.
      operationId: >-
        handle_list_organization_idp_users_v3beta1_organizations__org_id__members_idp_users_get
      parameters:
        - description: 'Organization ID (prefix: org-)'
          in: path
          name: org_id
          required: true
          schema:
            example: org-abc123def456
            title: Org Id
            type: string
        - in: query
          name: after
          required: false
          schema:
            anyOf:
              - type: string
              - type: 'null'
            title: After
        - in: query
          name: first
          required: false
          schema:
            default: 100
            maximum: 200
            minimum: 1
            title: First
            type: integer
        - description: Filter by exact email address
          in: query
          name: email
          required: false
          schema:
            anyOf:
              - type: string
              - type: 'null'
            description: Filter by exact email address
            title: Email
      responses:
        '200':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/PaginatedResponse_IdpGroupUser_'
          description: Successful Response
        '401':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
          description: Unauthorized
        '403':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
          description: Forbidden
        '404':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
          description: Not Found
        '409':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
          description: Conflict
        '422':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
          description: Unprocessable Content
        '429':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
          description: Too Many Requests
      summary: List Organization IDP Group Users
      tags:
        - users
  /v3beta1/organizations/{org_id}/members/users:
    get:
      description: List users with direct membership in the organization.
      operationId: >-
        handle_list_organization_users_v3beta1_organizations__org_id__members_users_get
      parameters:
        - description: 'Organization ID (prefix: org-)'
          in: path
          name: org_id
          required: true
          schema:
            example: org-abc123def456
            title: Org Id
            type: string
        - in: query
          name: after
          required: false
          schema:
            anyOf:
              - type: string
              - type: 'null'
            title: After
        - in: query
          name: first
          required: false
          schema:
            default: 100
            maximum: 200
            minimum: 1
            title: First
            type: integer
        - description: Filter by exact email address
          in: query
          name: email
          required: false
          schema:
            anyOf:
              - type: string
              - type: 'null'
            description: Filter by exact email address
            title: Email
      responses:
        '200':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/PaginatedResponse_User_'
          description: Successful Response
        '401':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
          description: Unauthorized
        '403':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
          description: Forbidden
        '404':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
          description: Not Found
        '409':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
          description: Conflict
        '422':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
          description: Unprocessable Content
        '429':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
          description: Too Many Requests
      summary: List Organization Users
      tags:
        - users
  /v3beta1/organizations/{org_id}/members/users/{user_id}:
    get:
      description: >-
        Get an organization member by ID. Returns both direct and
        IDP-group-derived role assignments.
      operationId: >-
        handle_get_organization_user_v3beta1_organizations__org_id__members_users__user_id__get
      parameters:
        - description: User ID
          in: path
          name: user_id
          required: true
          schema:
            title: User Id
            type: string
        - description: 'Organization ID (prefix: org-)'
          in: path
          name: org_id
          required: true
          schema:
            example: org-abc123def456
            title: Org Id
            type: string
      responses:
        '200':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/UserWithIdpRoles'
          description: Successful Response
        '401':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
          description: Unauthorized
        '403':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
          description: Forbidden
        '404':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
          description: Not Found
        '409':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
          description: Conflict
        '422':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
          description: Unprocessable Content
        '429':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
          description: Too Many Requests
      summary: Get Organization User
      tags:
        - users
  /v3beta1/organizations/{org_id}/repositories:
    get:
      operationId: handle_list_repositories_v3beta1_organizations__org_id__repositories_get
      parameters:
        - description: 'Organization ID (prefix: org-)'
          in: path
          name: org_id
          required: true
          schema:
            example: org-abc123def456
            title: Org Id
            type: string
        - in: query
          name: after
          required: false
          schema:
            anyOf:
              - type: string
              - type: 'null'
            title: After
        - in: query
          name: first
          required: false
          schema:
            default: 100
            maximum: 100
            minimum: 1
            title: First
            type: integer
        - in: query
          name: filter_name
          required: false
          schema:
            anyOf:
              - type: string
              - type: 'null'
            title: Filter Name
        - in: query
          name: only_repo_paths
          required: false
          schema:
            anyOf:
              - items:
                  type: string
                type: array
              - type: 'null'
            title: Only Repo Paths
        - in: query
          name: exclude_repo_paths
          required: false
          schema:
            anyOf:
              - items:
                  type: string
                type: array
              - type: 'null'
            title: Exclude Repo Paths
        - in: query
          name: load_indexing_status
          required: false
          schema:
            default: true
            title: Load Indexing Status
            type: boolean
      responses:
        '200':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/PaginatedResponse_RepositoryResponse_'
          description: Successful Response
        '401':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
          description: Unauthorized
        '403':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
          description: Forbidden
        '404':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
          description: Not Found
        '409':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
          description: Conflict
        '422':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
          description: Unprocessable Content
        '429':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
          description: Too Many Requests
      summary: List repositories available to an organization
      tags:
        - repositories
  /v3beta1/organizations/{org_id}/repositories/indexing:
    delete:
      description: >-
        Disables indexing and clears configured branches for a batch of
        repositories.
      operationId: >-
        handle_bulk_remove_repositories_from_indexing_v3beta1_organizations__org_id__repositories_indexing_delete
      parameters:
        - description: 'Organization ID (prefix: org-)'
          in: path
          name: org_id
          required: true
          schema:
            example: org-abc123def456
            title: Org Id
            type: string
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/RemoveRepositoriesRequest'
        required: true
      responses:
        '200':
          content:
            application/json:
              schema:
                items:
                  $ref: '#/components/schemas/RepositoryIndexingResponse'
                title: >-
                  Response Handle Bulk Remove Repositories From Indexing V3Beta1
                  Organizations  Org Id  Repositories Indexing Delete
                type: array
          description: Successful Response
        '401':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
          description: Unauthorized
        '403':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
          description: Forbidden
        '404':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
          description: Not Found
        '409':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
          description: Conflict
        '422':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
          description: Unprocessable Content
        '429':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
          description: Too Many Requests
      summary: Bulk remove repositories from indexing
      tags:
        - repositories
    get:
      operationId: >-
        handle_list_indexed_repositories_v3beta1_organizations__org_id__repositories_indexing_get
      parameters:
        - description: 'Organization ID (prefix: org-)'
          in: path
          name: org_id
          required: true
          schema:
            example: org-abc123def456
            title: Org Id
            type: string
        - in: query
          name: after
          required: false
          schema:
            anyOf:
              - type: string
              - type: 'null'
            title: After
        - in: query
          name: first
          required: false
          schema:
            default: 100
            maximum: 200
            minimum: 1
            title: First
            type: integer
        - description: Case-insensitive substring filter on the repository path.
          in: query
          name: filter_name
          required: false
          schema:
            anyOf:
              - type: string
              - type: 'null'
            description: Case-insensitive substring filter on the repository path.
            title: Filter Name
      responses:
        '200':
          content:
            application/json:
              schema:
                $ref: >-
                  #/components/schemas/PaginatedResponse_RepositoryIndexingResponse_
          description: Successful Response
        '401':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
          description: Unauthorized
        '403':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
          description: Forbidden
        '404':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
          description: Not Found
        '409':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
          description: Conflict
        '422':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
          description: Unprocessable Content
        '429':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
          description: Too Many Requests
      summary: List indexed repositories
      tags:
        - repositories
    put:
      description: >-
        Idempotently enables indexing for a batch of repositories and triggers
        indexing jobs.
      operationId: >-
        handle_bulk_index_repositories_v3beta1_organizations__org_id__repositories_indexing_put
      parameters:
        - description: 'Organization ID (prefix: org-)'
          in: path
          name: org_id
          required: true
          schema:
            example: org-abc123def456
            title: Org Id
            type: string
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/BulkIndexRepositoriesRequest'
        required: true
      responses:
        '200':
          content:
            application/json:
              schema:
                items:
                  $ref: '#/components/schemas/RepositoryIndexingResponse'
                title: >-
                  Response Handle Bulk Index Repositories V3Beta1 Organizations 
                  Org Id  Repositories Indexing Put
                type: array
          description: Successful Response
        '401':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
          description: Unauthorized
        '403':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
          description: Forbidden
        '404':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
          description: Not Found
        '409':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
          description: Conflict
        '422':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
          description: Unprocessable Content
        '429':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
          description: Too Many Requests
      summary: Bulk index repositories
      tags:
        - repositories
  /v3beta1/organizations/{org_id}/repositories/{repository_path}/indexing:
    delete:
      description: >-
        Disables indexing and clears configured branches for a single
        repository.
      operationId: >-
        handle_remove_single_repository_from_indexing_v3beta1_organizations__org_id__repositories__repository_path__indexing_delete
      parameters:
        - in: path
          name: repository_path
          required: true
          schema:
            title: Repository Path
            type: string
        - description: 'Organization ID (prefix: org-)'
          in: path
          name: org_id
          required: true
          schema:
            example: org-abc123def456
            title: Org Id
            type: string
      responses:
        '200':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/RepositoryIndexingResponse'
          description: Successful Response
        '401':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
          description: Unauthorized
        '403':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
          description: Forbidden
        '404':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
          description: Not Found
        '409':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
          description: Conflict
        '422':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
          description: Unprocessable Content
        '429':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
          description: Too Many Requests
      summary: Remove a repository from indexing
      tags:
        - repositories
    get:
      operationId: >-
        handle_get_repository_indexing_status_v3beta1_organizations__org_id__repositories__repository_path__indexing_get
      parameters:
        - in: path
          name: repository_path
          required: true
          schema:
            title: Repository Path
            type: string
        - description: 'Organization ID (prefix: org-)'
          in: path
          name: org_id
          required: true
          schema:
            example: org-abc123def456
            title: Org Id
            type: string
      responses:
        '200':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/RepoIndexingStatusResponse'
          description: Successful Response
        '401':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
          description: Unauthorized
        '403':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
          description: Forbidden
        '404':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
          description: Not Found
        '409':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
          description: Conflict
        '422':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
          description: Unprocessable Content
        '429':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
          description: Too Many Requests
      summary: Get indexing status for a repository
      tags:
        - repositories
    put:
      description: >-
        Idempotently enables indexing for a single repository and triggers
        indexing jobs.
      operationId: >-
        handle_index_single_repository_v3beta1_organizations__org_id__repositories__repository_path__indexing_put
      parameters:
        - in: path
          name: repository_path
          required: true
          schema:
            title: Repository Path
            type: string
        - description: 'Organization ID (prefix: org-)'
          in: path
          name: org_id
          required: true
          schema:
            example: org-abc123def456
            title: Org Id
            type: string
      requestBody:
        content:
          application/json:
            schema:
              anyOf:
                - $ref: '#/components/schemas/IndexRepositoryRequest'
                - type: 'null'
              title: Payload
      responses:
        '200':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/RepositoryIndexingResponse'
          description: Successful Response
        '401':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
          description: Unauthorized
        '403':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
          description: Forbidden
        '404':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
          description: Not Found
        '409':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
          description: Conflict
        '422':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
          description: Unprocessable Content
        '429':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
          description: Too Many Requests
      summary: Index a repository
      tags:
        - repositories
  /v3beta1/organizations/{org_id}/repositories/{repository_path}/indexing/branches/{branch_name}:
    delete:
      operationId: >-
        handle_remove_branch_v3beta1_organizations__org_id__repositories__repository_path__indexing_branches__branch_name__delete
      parameters:
        - in: path
          name: repository_path
          required: true
          schema:
            title: Repository Path
            type: string
        - in: path
          name: branch_name
          required: true
          schema:
            title: Branch Name
            type: string
        - description: 'Organization ID (prefix: org-)'
          in: path
          name: org_id
          required: true
          schema:
            example: org-abc123def456
            title: Org Id
            type: string
      responses:
        '200':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/RepositoryIndexingResponse'
          description: Successful Response
        '401':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
          description: Unauthorized
        '403':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
          description: Forbidden
        '404':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
          description: Not Found
        '409':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
          description: Conflict
        '422':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
          description: Unprocessable Content
        '429':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
          description: Too Many Requests
      summary: Remove a branch from indexing
      tags:
        - repositories
  /v3beta1/organizations/{org_id}/snapshot-setup/blueprints:
    get:
      operationId: >-
        list_org_blueprints_v3beta1_organizations__org_id__snapshot_setup_blueprints_get
      parameters:
        - description: 'Organization ID (prefix: org-)'
          in: path
          name: org_id
          required: true
          schema:
            example: org-abc123def456
            title: Org Id
            type: string
        - description: Filter to a specific repository (e.g. 'org/repo').
          in: query
          name: repo_name
          required: false
          schema:
            anyOf:
              - type: string
              - type: 'null'
            description: Filter to a specific repository (e.g. 'org/repo').
            title: Repo Name
      responses:
        '200':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/BlueprintList'
          description: Successful Response
        '401':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
          description: Unauthorized
        '403':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
          description: Forbidden
        '404':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
          description: Not Found
        '409':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
          description: Conflict
        '422':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
          description: Unprocessable Content
        '429':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
          description: Too Many Requests
      summary: List org- and repo-tier blueprints
      tags:
        - snapshot_setup
    post:
      description: |-
        Create a blueprint.  ``type`` is inferred from ``repo_name``.

        Per spec, this never auto-triggers a build — callers must
        ``POST /builds`` explicitly.
      operationId: >-
        create_org_blueprint_v3beta1_organizations__org_id__snapshot_setup_blueprints_post
      parameters:
        - description: 'Organization ID (prefix: org-)'
          in: path
          name: org_id
          required: true
          schema:
            example: org-abc123def456
            title: Org Id
            type: string
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/CreateOrgBlueprintBody'
        required: true
      responses:
        '201':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Blueprint'
          description: Successful Response
        '401':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
          description: Unauthorized
        '403':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
          description: Forbidden
        '404':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
          description: Not Found
        '409':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
          description: Conflict
        '422':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
          description: Unprocessable Content
        '429':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
          description: Too Many Requests
      summary: Create an org- or repo-tier blueprint
      tags:
        - snapshot_setup
  /v3beta1/organizations/{org_id}/snapshot-setup/blueprints/{blueprint_id}:
    delete:
      operationId: >-
        delete_org_blueprint_v3beta1_organizations__org_id__snapshot_setup_blueprints__blueprint_id__delete
      parameters:
        - in: path
          name: blueprint_id
          required: true
          schema:
            title: Blueprint Id
            type: string
        - description: 'Organization ID (prefix: org-)'
          in: path
          name: org_id
          required: true
          schema:
            example: org-abc123def456
            title: Org Id
            type: string
      responses:
        '204':
          description: Successful Response
        '401':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
          description: Unauthorized
        '403':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
          description: Forbidden
        '404':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
          description: Not Found
        '409':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
          description: Conflict
        '422':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
          description: Unprocessable Content
        '429':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
          description: Too Many Requests
      summary: Soft-delete a blueprint
      tags:
        - snapshot_setup
    get:
      operationId: >-
        get_org_blueprint_v3beta1_organizations__org_id__snapshot_setup_blueprints__blueprint_id__get
      parameters:
        - in: path
          name: blueprint_id
          required: true
          schema:
            title: Blueprint Id
            type: string
        - description: 'Organization ID (prefix: org-)'
          in: path
          name: org_id
          required: true
          schema:
            example: org-abc123def456
            title: Org Id
            type: string
      responses:
        '200':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Blueprint'
          description: Successful Response
        '401':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
          description: Unauthorized
        '403':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
          description: Forbidden
        '404':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
          description: Not Found
        '409':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
          description: Conflict
        '422':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
          description: Unprocessable Content
        '429':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
          description: Too Many Requests
      summary: Get a single blueprint
      tags:
        - snapshot_setup
    patch:
      description: |-
        Partial update for a single blueprint. Does NOT auto-trigger a build.

        Fields honored:

        - ``contents`` — writes a new YAML version for the blueprint.
        - ``position`` — sets the repo-tier blueprint's execution position.
          Returns ``400`` on an org-tier blueprint (those have no position).

        Returns ``400`` when the body is empty.
      operationId: >-
        update_org_blueprint_v3beta1_organizations__org_id__snapshot_setup_blueprints__blueprint_id__patch
      parameters:
        - in: path
          name: blueprint_id
          required: true
          schema:
            title: Blueprint Id
            type: string
        - description: 'Organization ID (prefix: org-)'
          in: path
          name: org_id
          required: true
          schema:
            example: org-abc123def456
            title: Org Id
            type: string
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/UpdateOrgBlueprintBody'
        required: true
      responses:
        '200':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Blueprint'
          description: Successful Response
        '401':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
          description: Unauthorized
        '403':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
          description: Forbidden
        '404':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
          description: Not Found
        '409':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
          description: Conflict
        '422':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
          description: Unprocessable Content
        '429':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
          description: Too Many Requests
      summary: Update a blueprint's contents and/or position
      tags:
        - snapshot_setup
  /v3beta1/organizations/{org_id}/snapshot-setup/blueprints/{blueprint_id}/contents:
    get:
      operationId: >-
        get_org_blueprint_contents_v3beta1_organizations__org_id__snapshot_setup_blueprints__blueprint_id__contents_get
      parameters:
        - in: path
          name: blueprint_id
          required: true
          schema:
            title: Blueprint Id
            type: string
        - description: 'Organization ID (prefix: org-)'
          in: path
          name: org_id
          required: true
          schema:
            example: org-abc123def456
            title: Org Id
            type: string
      responses:
        '200':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/PresignedDownload'
          description: Successful Response
        '401':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
          description: Unauthorized
        '403':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
          description: Forbidden
        '404':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
          description: Not Found
        '409':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
          description: Conflict
        '422':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
          description: Unprocessable Content
        '429':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
          description: Too Many Requests
      summary: Presigned URL for the blueprint's YAML
      tags:
        - snapshot_setup
  /v3beta1/organizations/{org_id}/snapshot-setup/blueprints/{blueprint_id}/files:
    get:
      operationId: >-
        list_org_blueprint_files_v3beta1_organizations__org_id__snapshot_setup_blueprints__blueprint_id__files_get
      parameters:
        - in: path
          name: blueprint_id
          required: true
          schema:
            title: Blueprint Id
            type: string
        - description: 'Organization ID (prefix: org-)'
          in: path
          name: org_id
          required: true
          schema:
            example: org-abc123def456
            title: Org Id
            type: string
      responses:
        '200':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/BlueprintFileList'
          description: Successful Response
        '401':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
          description: Unauthorized
        '403':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
          description: Forbidden
        '404':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
          description: Not Found
        '409':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
          description: Conflict
        '422':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
          description: Unprocessable Content
        '429':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
          description: Too Many Requests
      summary: List blueprint files
      tags:
        - snapshot_setup
    post:
      operationId: >-
        upload_org_blueprint_file_v3beta1_organizations__org_id__snapshot_setup_blueprints__blueprint_id__files_post
      parameters:
        - in: path
          name: blueprint_id
          required: true
          schema:
            title: Blueprint Id
            type: string
        - description: 'Organization ID (prefix: org-)'
          in: path
          name: org_id
          required: true
          schema:
            example: org-abc123def456
            title: Org Id
            type: string
        - in: query
          name: name
          required: true
          schema:
            title: Name
            type: string
      requestBody:
        content:
          multipart/form-data:
            schema:
              $ref: >-
                #/components/schemas/Body_upload_org_blueprint_file_v3beta1_organizations__org_id__snapshot_setup_blueprints__blueprint_id__files_post
        required: true
      responses:
        '201':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/BlueprintFile'
          description: Successful Response
        '401':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
          description: Unauthorized
        '403':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
          description: Forbidden
        '404':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
          description: Not Found
        '409':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
          description: Conflict
        '422':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
          description: Unprocessable Content
        '429':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
          description: Too Many Requests
      summary: Upload a blueprint file
      tags:
        - snapshot_setup
  /v3beta1/organizations/{org_id}/snapshot-setup/blueprints/{blueprint_id}/files/{file_id}:
    delete:
      operationId: >-
        delete_org_blueprint_file_v3beta1_organizations__org_id__snapshot_setup_blueprints__blueprint_id__files__file_id__delete
      parameters:
        - in: path
          name: blueprint_id
          required: true
          schema:
            title: Blueprint Id
            type: string
        - in: path
          name: file_id
          required: true
          schema:
            title: File Id
            type: string
        - description: 'Organization ID (prefix: org-)'
          in: path
          name: org_id
          required: true
          schema:
            example: org-abc123def456
            title: Org Id
            type: string
      responses:
        '204':
          description: Successful Response
        '401':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
          description: Unauthorized
        '403':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
          description: Forbidden
        '404':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
          description: Not Found
        '409':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
          description: Conflict
        '422':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
          description: Unprocessable Content
        '429':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
          description: Too Many Requests
      summary: Delete a blueprint file
      tags:
        - snapshot_setup
  /v3beta1/organizations/{org_id}/snapshot-setup/builds:
    get:
      operationId: list_org_builds_v3beta1_organizations__org_id__snapshot_setup_builds_get
      parameters:
        - description: 'Organization ID (prefix: org-)'
          in: path
          name: org_id
          required: true
          schema:
            example: org-abc123def456
            title: Org Id
            type: string
        - in: query
          name: after
          required: false
          schema:
            anyOf:
              - type: string
              - type: 'null'
            title: After
        - in: query
          name: first
          required: false
          schema:
            default: 100
            maximum: 200
            minimum: 1
            title: First
            type: integer
        - description: Filter by spec status.
          in: query
          name: status
          required: false
          schema:
            anyOf:
              - enum:
                  - pending
                  - running
                  - succeeded
                  - failed
                  - cancelled
                type: string
              - type: 'null'
            description: Filter by spec status.
            title: Status
        - description: >-
            If true, returns 0 or 1 items: the build whose image is currently
            used by new sessions.
          in: query
          name: active
          required: false
          schema:
            anyOf:
              - type: boolean
              - type: 'null'
            description: >-
              If true, returns 0 or 1 items: the build whose image is currently
              used by new sessions.
            title: Active
      responses:
        '200':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/PaginatedResponse_Build_'
          description: Successful Response
        '401':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
          description: Unauthorized
        '403':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
          description: Forbidden
        '404':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
          description: Not Found
        '409':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
          description: Conflict
        '422':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
          description: Unprocessable Content
        '429':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
          description: Too Many Requests
      summary: List builds for the org
      tags:
        - snapshot_setup
    post:
      description: Manually trigger a snapshot build using the org's current blueprints.
      operationId: >-
        trigger_org_build_v3beta1_organizations__org_id__snapshot_setup_builds_post
      parameters:
        - description: 'Organization ID (prefix: org-)'
          in: path
          name: org_id
          required: true
          schema:
            example: org-abc123def456
            title: Org Id
            type: string
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/TriggerBuildBody'
        required: true
      responses:
        '201':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Build'
          description: Successful Response
        '401':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
          description: Unauthorized
        '403':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
          description: Forbidden
        '404':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
          description: Not Found
        '409':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
          description: Conflict
        '422':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
          description: Unprocessable Content
        '429':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
          description: Too Many Requests
      summary: Trigger a manual build
      tags:
        - snapshot_setup
  /v3beta1/organizations/{org_id}/snapshot-setup/builds/{build_id}:
    get:
      operationId: >-
        get_org_build_v3beta1_organizations__org_id__snapshot_setup_builds__build_id__get
      parameters:
        - in: path
          name: build_id
          required: true
          schema:
            title: Build Id
            type: string
        - description: 'Organization ID (prefix: org-)'
          in: path
          name: org_id
          required: true
          schema:
            example: org-abc123def456
            title: Org Id
            type: string
      responses:
        '200':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Build'
          description: Successful Response
        '401':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
          description: Unauthorized
        '403':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
          description: Forbidden
        '404':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
          description: Not Found
        '409':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
          description: Conflict
        '422':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
          description: Unprocessable Content
        '429':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
          description: Too Many Requests
      summary: Get a single build
      tags:
        - snapshot_setup
  /v3beta1/organizations/{org_id}/snapshot-setup/builds/{build_id}/cancel:
    post:
      operationId: >-
        cancel_org_build_v3beta1_organizations__org_id__snapshot_setup_builds__build_id__cancel_post
      parameters:
        - in: path
          name: build_id
          required: true
          schema:
            title: Build Id
            type: string
        - description: 'Organization ID (prefix: org-)'
          in: path
          name: org_id
          required: true
          schema:
            example: org-abc123def456
            title: Org Id
            type: string
      responses:
        '200':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Build'
          description: Successful Response
        '401':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
          description: Unauthorized
        '403':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
          description: Forbidden
        '404':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
          description: Not Found
        '409':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
          description: Conflict
        '422':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
          description: Unprocessable Content
        '429':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
          description: Too Many Requests
      summary: Cancel an in-flight build
      tags:
        - snapshot_setup
  /v3beta1/organizations/{org_id}/snapshot-setup/builds/{build_id}/logs:
    get:
      operationId: >-
        get_org_build_logs_v3beta1_organizations__org_id__snapshot_setup_builds__build_id__logs_get
      parameters:
        - in: path
          name: build_id
          required: true
          schema:
            title: Build Id
            type: string
        - description: 'Organization ID (prefix: org-)'
          in: path
          name: org_id
          required: true
          schema:
            example: org-abc123def456
            title: Org Id
            type: string
      responses:
        '200':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/PresignedDownload'
          description: Successful Response
        '401':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
          description: Unauthorized
        '403':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
          description: Forbidden
        '404':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
          description: Not Found
        '409':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
          description: Conflict
        '422':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
          description: Unprocessable Content
        '429':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
          description: Too Many Requests
      summary: Presigned URL for the build's log file
      tags:
        - snapshot_setup
  /v3beta1/organizations/{org_id}/snapshot-setup/builds/{build_id}/pin:
    delete:
      description: |-
        Unpin the org if and only if it is currently pinned to ``build_id``.

        No-op (still 204) when the org is not pinned to this build.
      operationId: >-
        unpin_org_build_v3beta1_organizations__org_id__snapshot_setup_builds__build_id__pin_delete
      parameters:
        - in: path
          name: build_id
          required: true
          schema:
            title: Build Id
            type: string
        - description: 'Organization ID (prefix: org-)'
          in: path
          name: org_id
          required: true
          schema:
            example: org-abc123def456
            title: Org Id
            type: string
      responses:
        '204':
          description: Successful Response
        '401':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
          description: Unauthorized
        '403':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
          description: Forbidden
        '404':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
          description: Not Found
        '409':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
          description: Conflict
        '422':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
          description: Unprocessable Content
        '429':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
          description: Too Many Requests
      summary: Unpin a build (no-op if not pinned)
      tags:
        - snapshot_setup
    post:
      description: |-
        Pin a successful build (less than 7 days old).

        Translates the SDK's 400 errors into 409 (per spec: "409 if the
        build is not succeeded, or older than 7 days").
      operationId: >-
        pin_org_build_v3beta1_organizations__org_id__snapshot_setup_builds__build_id__pin_post
      parameters:
        - in: path
          name: build_id
          required: true
          schema:
            title: Build Id
            type: string
        - description: 'Organization ID (prefix: org-)'
          in: path
          name: org_id
          required: true
          schema:
            example: org-abc123def456
            title: Org Id
            type: string
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/PinBuildBody'
        required: true
      responses:
        '200':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Build'
          description: Successful Response
        '401':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
          description: Unauthorized
        '403':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
          description: Forbidden
        '404':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
          description: Not Found
        '409':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
          description: Conflict
        '422':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
          description: Unprocessable Content
        '429':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
          description: Too Many Requests
      summary: Pin the org to a specific successful build
      tags:
        - snapshot_setup
security:
  - bearerAuth: []
