@lap v0.3
# Machine-readable API spec. Each @endpoint block is one API call.
@api Convex Management API
@base https://api.convex.dev/v1
@version 1.0.0
@auth Bearer bearer | Bearer bearer | Bearer bearer | Bearer bearer | Bearer bearer
@endpoints 48
@hint download_for_search
@toc teams(22), projects(11), deployments(11), list_personal_access_tokens(1), create_personal_access_token(1), delete_personal_access_token(1), token_details(1)

@group teams
@endpoint POST /teams/{team_id}/create_project
@required {team_id: int(int64), projectName: str}
@optional {deploymentType: any, deploymentClass: str, deploymentRegion: any}
@returns(200) {projectId: int(int64), id: int(int64), slug: str, deploymentName: str?, deploymentUrl: str?}

@endgroup

@group projects
@endpoint GET /projects/{project_id}
@required {project_id: int(int64)}
@returns(200) {id: int(int64), name: str, slug: str, teamId: int(int64), teamSlug: str, createTime: int(int64), prodDeploymentName: str?, devDeploymentName: str?}

@endpoint PATCH /projects/{project_id}
@required {project_id: int(int64)}
@optional {name: any, slug: any}
@returns(200) {id: int(int64), name: str, slug: str, teamId: int(int64), teamSlug: str, createTime: int(int64), prodDeploymentName: str?, devDeploymentName: str?}

@endgroup

@group teams
@endpoint GET /teams/{team_id}/projects
@required {team_id: int(int64)}
@optional {cursor: str, limit: int(int64), q: str}
@returns(200) {items: [map], pagination: map{hasMore: bool, nextCursor: str?}}

@endgroup

@group projects
@endpoint GET /projects/{project_id}/list_deployments
@required {project_id: int(int64)}
@optional {includeLocal: bool, isDefault: bool, deploymentType: any}
@returns(200)

@endpoint GET /projects/{project_id}/deployment
@required {project_id: int(int64)}
@optional {reference: any, defaultProd: bool, defaultDev: bool}
@returns(200)

@endgroup

@group teams
@endpoint GET /teams/{team_id_or_slug}/projects/{project_slug}/deployment
@required {team_id_or_slug: str, project_slug: str}
@optional {reference: any, defaultProd: bool, defaultDev: bool}
@returns(200)

@endgroup

@group projects
@endpoint POST /projects/{project_id}/delete
@required {project_id: int(int64)}
@returns(200)

@endgroup

@group teams
@endpoint GET /teams/{team_id_or_slug}/projects/{project_slug}
@required {team_id_or_slug: str, project_slug: str}
@returns(200) {id: int(int64), name: str, slug: str, teamId: int(int64), teamSlug: str, createTime: int(int64), prodDeploymentName: str?, devDeploymentName: str?}

@endgroup

@group projects
@endpoint POST /projects/{project_id}/create_deployment
@required {project_id: int(int64), type: str(dev/prod/preview/custom)}
@optional {class: str, region: any, reference: str, isDefault: bool, expiresAt: int(int64)}
@returns(200)

@endgroup

@group deployments
@endpoint POST /deployments/{deployment_name}/delete
@required {deployment_name: any}
@returns(200)

@endpoint GET /deployments/{deployment_name}
@required {deployment_name: str}
@returns(200)

@endpoint PATCH /deployments/{deployment_name}
@required {deployment_name: str}
@optional {reference: str, dashboardEditConfirmation: bool, expiresAt: int(int64), sendLogsToClient: bool, class: str, isDefault: bool, deploymentType: any}
@returns(200)

@endpoint POST /deployments/{deployment_name}/transfer
@required {deployment_name: str, destinationProjectId: int(int64)}
@returns(204)

@endgroup

@group teams
@endpoint GET /teams/{team_id}/list_deployment_classes
@required {team_id: any}
@returns(200) {items: [map]}

@endpoint GET /teams/{team_id}/list_deployment_regions
@required {team_id: any}
@returns(200) {items: [map]}

@endpoint GET /teams/{team_id}/list_deployments
@required {team_id: int(int64)}
@optional {cursor: str, limit: int(int64), sortBy: str, sortOrder: str, deploymentType: str, q: str, projectId: int(int64), creator: int(int64), isDefault: bool}
@returns(200) {items: [any], pagination: map{hasMore: bool, nextCursor: str?}}

@endpoint GET /teams/{team_id}/list_local_deployments
@required {team_id: int(int64)}
@returns(200) {items: [any]}

@endgroup

@group deployments
@endpoint POST /deployments/{deployment_name}/mint_ai_gateway_jwt
@required {deployment_name: str, attribution: map{componentPath: str, functionName: str, functionType: str}}
@returns(200) {token: str}

@endpoint POST /deployments/{deployment_name}/create_deploy_key
@required {deployment_name: any, name: str}
@optional {allowedActions: [str], expiresAt: int(int64)}
@returns(200) {deployKey: str}

@endpoint GET /deployments/{deployment_name}/list_deploy_keys
@required {deployment_name: any}
@returns(200)

@endpoint POST /deployments/{deployment_name}/delete_deploy_key
@required {deployment_name: any, id: str}
@returns(200)

@endgroup

@group projects
@endpoint POST /projects/{project_id}/create_preview_deploy_key
@required {project_id: int(int64), name: str}
@optional {expiresAt: int(int64)}
@returns(200) {previewDeployKey: str}

@endpoint GET /projects/{project_id}/list_preview_deploy_keys
@required {project_id: int(int64)}
@optional {includeManaged: bool}
@returns(200) {items: [map]}

@endpoint POST /projects/{project_id}/delete_preview_deploy_key
@required {project_id: int(int64), id: str}
@returns(200)

@endgroup

@group list_personal_access_tokens
@endpoint GET /list_personal_access_tokens
@optional {cursor: str, limit: int(int64)}
@returns(200) {items: [map], pagination: map{hasMore: bool, nextCursor: str?}}

@endgroup

@group create_personal_access_token
@endpoint POST /create_personal_access_token
@required {name: str}
@optional {expiresAt: int(int64)}
@returns(200) {accessToken: str}

@endgroup

@group delete_personal_access_token
@endpoint POST /delete_personal_access_token
@required {id: str}
@returns(200)

@endgroup

@group teams
@endpoint GET /teams/{team_id}/list_access_tokens
@required {team_id: int(int64)}
@optional {cursor: str, limit: int(int64)}
@returns(200) {items: [map], pagination: map{hasMore: bool, nextCursor: str?}}

@endpoint POST /teams/{team_id}/delete_access_token
@required {team_id: int(int64), id: str}
@returns(200)

@endgroup

@group token_details
@endpoint GET /token_details
@returns(200)

@endgroup

@group deployments
@endpoint POST /deployments/{deployment_name}/create_custom_domain
@required {deployment_name: any, requestDestination: str(convexCloud/convexSite), domain: str}
@returns(200)

@endpoint POST /deployments/{deployment_name}/delete_custom_domain
@required {deployment_name: any, requestDestination: str(convexCloud/convexSite), domain: str}
@returns(200)

@endpoint GET /deployments/{deployment_name}/custom_domains
@required {deployment_name: any}
@returns(200) {domains: [map]}

@endgroup

@group teams
@endpoint GET /teams/{team_id}/list_members
@required {team_id: any}
@returns(200) {items: [map]}

@endpoint POST /teams/create_team
@required {defaultRegion: str(aws-us-east-1/aws-eu-west-1), name: str}
@returns(201) {id: int(int64), name: str, slug: str, creator: any, suspended: bool, referralCode: str, referredBy: any, managedBy: any, defaultRegion: any, ssoLoginId: str?, managedByUrl: str?}
@errors {400, 403}

@endpoint POST /teams/{team_id}/create_access_token
@required {team_id: int(int64)}
@returns(201) {accessToken: str, tokenType: str}
@errors {403}

@endpoint GET /teams/{team_id}/list_audit_log_events
@required {team_id: int(int64), from: int(int64), to: int(int64)}
@optional {memberId: any, action: str(team:join/team:create/team:update/team:delete/project:create/project:transfer/project:receive/project:update/project:delete/defaultEnvironmentVariable:create/defaultEnvironmentVariable:update/defaultEnvironmentVariable:delete/deployment:create/deployment:delete/member:invite/member:cancelInvitation/member:remove/member:updateRole/project:updateMemberRole/billing:paymentMethod:update/billing:contact:update/billing:address:update/billing:subscription:create/billing:subscription:resume/billing:subscription:cancel/billing:subscription:changePlan/team:token:create/team:token:update/team:token:delete/team:token:view/project:token:create/project:token:update/project:token:delete/project:token:view/deployment:token:create/deployment:token:update/deployment:token:delete/deployment:token:view/team:domain:create/team:domain:delete/deployment:customDomain:create/deployment:customDomain:delete/deployment:backups:create/deployment:backups:import/deployment:backups:configurePeriodic/deployment:backups:disablePeriodic/deployment:backups:delete/team:disableExceedingSpendingLimits/billing:spendingLimit:update/team:applyReferralCode/oauthApplication:create/oauthApplication:update/oauthApplication:delete/oauthApplication:verify/oauthApplication:generateClientSecret/integration:workos:team:create/integration:workos:environment:create/integration:workos:environment:delete/integration:workos:environment:retrieveCredentials/integration:workos:team:disconnect/integration:workos:team:inviteMember/integration:workos:projectEnvironment:create/integration:workos:projectEnvironment:delete/integration:workos:projectEnvironment:retrieveCredentials/sso:enable/sso:disable/sso:update/directorySync:enable/directorySync:disable/directorySync:updateGroupMapping/directorySync:deleteGroupMapping/deployment:transfer/deployment:receive/deployment:update/customRole:create/customRole:update/customRole:delete), limit: int(int64), cursor: str}
@returns(200) {items: [map], pagination: map{hasMore: bool, nextCursor: str?}}

@endpoint POST /teams/{team_id}/invite_team_member
@required {team_id: any, email: str, role: str(admin/developer/custom)}
@optional {customRoles: [int(int64)]}
@returns(200)

@endpoint GET /teams/{team_id}/list_pending_invites
@required {team_id: any}
@returns(200) {items: [map]}

@endpoint POST /teams/{team_id}/cancel_team_member_invite
@required {team_id: any, email: str}
@returns(200)

@endgroup

@group projects
@endpoint GET /projects/{project_id}/list_default_environment_variables
@required {project_id: int(int64)}
@optional {name: str, deploymentType: any}
@returns(200) {items: [map], pagination: map{hasMore: bool, nextCursor: str?}}

@endpoint POST /projects/{project_id}/update_default_environment_variables
@required {project_id: int(int64), changes: [map{name!: str, deploymentType!: str, value: str}]}
@returns(200)

@endgroup

@group teams
@endpoint POST /teams/{team_id}/create_custom_role
@required {team_id: int(int64), name: str, statements: [map{effect!: str, actions!: any, resource!: str}]}
@optional {description: str}
@returns(201) {id: int(int64), teamId: int(int64), name: str, description: str?, statements: [map], creator: any, createTime: int(int64)}

@endpoint GET /teams/{team_id}/list_custom_roles
@required {team_id: int(int64)}
@optional {cursor: str, limit: int(int64)}
@returns(200) {items: [map], pagination: map{hasMore: bool, nextCursor: str?}}

@endpoint POST /teams/{team_id}/update_custom_role
@required {team_id: int(int64), id: int(int64), name: str, statements: [map{effect!: str, actions!: any, resource!: str}]}
@optional {description: str}
@returns(200) {id: int(int64), teamId: int(int64), name: str, description: str?, statements: [map], creator: any, createTime: int(int64)}

@endpoint POST /teams/{team_id}/delete_custom_role
@required {team_id: int(int64), id: int(int64)}
@returns(200)

@endpoint POST /teams/{team_id}/update_team_member_role
@required {team_id: int(int64), memberId: int(int64)}
@optional {role: any, customRoles: [int(int64)]}
@returns(200)

@endgroup

@end
