"""
Type annotations for codecatalyst service type definitions.

[Open documentation](https://youtype.github.io/boto3_stubs_docs/mypy_boto3_codecatalyst/type_defs/)

Usage::

    ```python
    from mypy_boto3_codecatalyst.type_defs import AccessTokenSummaryTypeDef

    data: AccessTokenSummaryTypeDef = ...
    ```
"""
import sys
from datetime import datetime
from typing import Dict, List, Sequence, Union

from .literals import (
    ComparisonOperatorType,
    DevEnvironmentSessionTypeType,
    DevEnvironmentStatusType,
    InstanceTypeType,
    OperationTypeType,
    UserTypeType,
)

if sys.version_info >= (3, 12):
    from typing import Literal
else:
    from typing_extensions import Literal
if sys.version_info >= (3, 12):
    from typing import NotRequired
else:
    from typing_extensions import NotRequired
if sys.version_info >= (3, 12):
    from typing import TypedDict
else:
    from typing_extensions import TypedDict

__all__ = (
    "AccessTokenSummaryTypeDef",
    "TimestampTypeDef",
    "ResponseMetadataTypeDef",
    "IdeConfigurationTypeDef",
    "PersistentStorageConfigurationTypeDef",
    "RepositoryInputTypeDef",
    "CreateProjectRequestRequestTypeDef",
    "CreateSourceRepositoryBranchRequestRequestTypeDef",
    "CreateSourceRepositoryRequestRequestTypeDef",
    "DeleteAccessTokenRequestRequestTypeDef",
    "DeleteDevEnvironmentRequestRequestTypeDef",
    "DeleteProjectRequestRequestTypeDef",
    "DeleteSourceRepositoryRequestRequestTypeDef",
    "DeleteSpaceRequestRequestTypeDef",
    "DevEnvironmentAccessDetailsTypeDef",
    "DevEnvironmentRepositorySummaryTypeDef",
    "ExecuteCommandSessionConfigurationTypeDef",
    "DevEnvironmentSessionSummaryTypeDef",
    "IdeTypeDef",
    "PersistentStorageTypeDef",
    "EmailAddressTypeDef",
    "EventPayloadTypeDef",
    "ProjectInformationTypeDef",
    "UserIdentityTypeDef",
    "FilterTypeDef",
    "GetDevEnvironmentRequestRequestTypeDef",
    "GetProjectRequestRequestTypeDef",
    "GetSourceRepositoryCloneUrlsRequestRequestTypeDef",
    "GetSourceRepositoryRequestRequestTypeDef",
    "GetSpaceRequestRequestTypeDef",
    "GetSubscriptionRequestRequestTypeDef",
    "GetUserDetailsRequestRequestTypeDef",
    "PaginatorConfigTypeDef",
    "ListAccessTokensRequestRequestTypeDef",
    "ListDevEnvironmentSessionsRequestRequestTypeDef",
    "ProjectListFilterTypeDef",
    "ProjectSummaryTypeDef",
    "ListSourceRepositoriesItemTypeDef",
    "ListSourceRepositoriesRequestRequestTypeDef",
    "ListSourceRepositoryBranchesItemTypeDef",
    "ListSourceRepositoryBranchesRequestRequestTypeDef",
    "ListSpacesRequestRequestTypeDef",
    "SpaceSummaryTypeDef",
    "StopDevEnvironmentRequestRequestTypeDef",
    "StopDevEnvironmentSessionRequestRequestTypeDef",
    "UpdateProjectRequestRequestTypeDef",
    "UpdateSpaceRequestRequestTypeDef",
    "CreateAccessTokenRequestRequestTypeDef",
    "ListEventLogsRequestRequestTypeDef",
    "CreateAccessTokenResponseTypeDef",
    "CreateDevEnvironmentResponseTypeDef",
    "CreateProjectResponseTypeDef",
    "CreateSourceRepositoryBranchResponseTypeDef",
    "CreateSourceRepositoryResponseTypeDef",
    "DeleteDevEnvironmentResponseTypeDef",
    "DeleteProjectResponseTypeDef",
    "DeleteSourceRepositoryResponseTypeDef",
    "DeleteSpaceResponseTypeDef",
    "GetProjectResponseTypeDef",
    "GetSourceRepositoryCloneUrlsResponseTypeDef",
    "GetSourceRepositoryResponseTypeDef",
    "GetSpaceResponseTypeDef",
    "GetSubscriptionResponseTypeDef",
    "ListAccessTokensResponseTypeDef",
    "StartDevEnvironmentResponseTypeDef",
    "StopDevEnvironmentResponseTypeDef",
    "StopDevEnvironmentSessionResponseTypeDef",
    "UpdateProjectResponseTypeDef",
    "UpdateSpaceResponseTypeDef",
    "VerifySessionResponseTypeDef",
    "StartDevEnvironmentRequestRequestTypeDef",
    "UpdateDevEnvironmentRequestRequestTypeDef",
    "UpdateDevEnvironmentResponseTypeDef",
    "CreateDevEnvironmentRequestRequestTypeDef",
    "StartDevEnvironmentSessionResponseTypeDef",
    "DevEnvironmentSessionConfigurationTypeDef",
    "ListDevEnvironmentSessionsResponseTypeDef",
    "DevEnvironmentSummaryTypeDef",
    "GetDevEnvironmentResponseTypeDef",
    "GetUserDetailsResponseTypeDef",
    "EventLogEntryTypeDef",
    "ListDevEnvironmentsRequestRequestTypeDef",
    "ListAccessTokensRequestListAccessTokensPaginateTypeDef",
    "ListDevEnvironmentSessionsRequestListDevEnvironmentSessionsPaginateTypeDef",
    "ListDevEnvironmentsRequestListDevEnvironmentsPaginateTypeDef",
    "ListEventLogsRequestListEventLogsPaginateTypeDef",
    "ListSourceRepositoriesRequestListSourceRepositoriesPaginateTypeDef",
    "ListSourceRepositoryBranchesRequestListSourceRepositoryBranchesPaginateTypeDef",
    "ListSpacesRequestListSpacesPaginateTypeDef",
    "ListProjectsRequestListProjectsPaginateTypeDef",
    "ListProjectsRequestRequestTypeDef",
    "ListProjectsResponseTypeDef",
    "ListSourceRepositoriesResponseTypeDef",
    "ListSourceRepositoryBranchesResponseTypeDef",
    "ListSpacesResponseTypeDef",
    "StartDevEnvironmentSessionRequestRequestTypeDef",
    "ListDevEnvironmentsResponseTypeDef",
    "ListEventLogsResponseTypeDef",
)

AccessTokenSummaryTypeDef = TypedDict(
    "AccessTokenSummaryTypeDef",
    {
        "id": str,
        "name": str,
        "expiresTime": NotRequired[datetime],
    },
)

TimestampTypeDef = Union[datetime, str]
ResponseMetadataTypeDef = TypedDict(
    "ResponseMetadataTypeDef",
    {
        "RequestId": str,
        "HostId": str,
        "HTTPStatusCode": int,
        "HTTPHeaders": Dict[str, str],
        "RetryAttempts": int,
    },
)

IdeConfigurationTypeDef = TypedDict(
    "IdeConfigurationTypeDef",
    {
        "runtime": NotRequired[str],
        "name": NotRequired[str],
    },
)

PersistentStorageConfigurationTypeDef = TypedDict(
    "PersistentStorageConfigurationTypeDef",
    {
        "sizeInGiB": int,
    },
)

RepositoryInputTypeDef = TypedDict(
    "RepositoryInputTypeDef",
    {
        "repositoryName": str,
        "branchName": NotRequired[str],
    },
)

CreateProjectRequestRequestTypeDef = TypedDict(
    "CreateProjectRequestRequestTypeDef",
    {
        "spaceName": str,
        "displayName": str,
        "description": NotRequired[str],
    },
)

CreateSourceRepositoryBranchRequestRequestTypeDef = TypedDict(
    "CreateSourceRepositoryBranchRequestRequestTypeDef",
    {
        "spaceName": str,
        "projectName": str,
        "sourceRepositoryName": str,
        "name": str,
        "headCommitId": NotRequired[str],
    },
)

CreateSourceRepositoryRequestRequestTypeDef = TypedDict(
    "CreateSourceRepositoryRequestRequestTypeDef",
    {
        "spaceName": str,
        "projectName": str,
        "name": str,
        "description": NotRequired[str],
    },
)

DeleteAccessTokenRequestRequestTypeDef = TypedDict(
    "DeleteAccessTokenRequestRequestTypeDef",
    {
        "id": str,
    },
)

DeleteDevEnvironmentRequestRequestTypeDef = TypedDict(
    "DeleteDevEnvironmentRequestRequestTypeDef",
    {
        "spaceName": str,
        "projectName": str,
        "id": str,
    },
)

DeleteProjectRequestRequestTypeDef = TypedDict(
    "DeleteProjectRequestRequestTypeDef",
    {
        "spaceName": str,
        "name": str,
    },
)

DeleteSourceRepositoryRequestRequestTypeDef = TypedDict(
    "DeleteSourceRepositoryRequestRequestTypeDef",
    {
        "spaceName": str,
        "projectName": str,
        "name": str,
    },
)

DeleteSpaceRequestRequestTypeDef = TypedDict(
    "DeleteSpaceRequestRequestTypeDef",
    {
        "name": str,
    },
)

DevEnvironmentAccessDetailsTypeDef = TypedDict(
    "DevEnvironmentAccessDetailsTypeDef",
    {
        "streamUrl": str,
        "tokenValue": str,
    },
)

DevEnvironmentRepositorySummaryTypeDef = TypedDict(
    "DevEnvironmentRepositorySummaryTypeDef",
    {
        "repositoryName": str,
        "branchName": NotRequired[str],
    },
)

ExecuteCommandSessionConfigurationTypeDef = TypedDict(
    "ExecuteCommandSessionConfigurationTypeDef",
    {
        "command": str,
        "arguments": NotRequired[Sequence[str]],
    },
)

DevEnvironmentSessionSummaryTypeDef = TypedDict(
    "DevEnvironmentSessionSummaryTypeDef",
    {
        "spaceName": str,
        "projectName": str,
        "devEnvironmentId": str,
        "startedTime": datetime,
        "id": str,
    },
)

IdeTypeDef = TypedDict(
    "IdeTypeDef",
    {
        "runtime": NotRequired[str],
        "name": NotRequired[str],
    },
)

PersistentStorageTypeDef = TypedDict(
    "PersistentStorageTypeDef",
    {
        "sizeInGiB": int,
    },
)

EmailAddressTypeDef = TypedDict(
    "EmailAddressTypeDef",
    {
        "email": NotRequired[str],
        "verified": NotRequired[bool],
    },
)

EventPayloadTypeDef = TypedDict(
    "EventPayloadTypeDef",
    {
        "contentType": NotRequired[str],
        "data": NotRequired[str],
    },
)

ProjectInformationTypeDef = TypedDict(
    "ProjectInformationTypeDef",
    {
        "name": NotRequired[str],
        "projectId": NotRequired[str],
    },
)

UserIdentityTypeDef = TypedDict(
    "UserIdentityTypeDef",
    {
        "userType": UserTypeType,
        "principalId": str,
        "userName": NotRequired[str],
        "awsAccountId": NotRequired[str],
    },
)

FilterTypeDef = TypedDict(
    "FilterTypeDef",
    {
        "key": str,
        "values": Sequence[str],
        "comparisonOperator": NotRequired[str],
    },
)

GetDevEnvironmentRequestRequestTypeDef = TypedDict(
    "GetDevEnvironmentRequestRequestTypeDef",
    {
        "spaceName": str,
        "projectName": str,
        "id": str,
    },
)

GetProjectRequestRequestTypeDef = TypedDict(
    "GetProjectRequestRequestTypeDef",
    {
        "spaceName": str,
        "name": str,
    },
)

GetSourceRepositoryCloneUrlsRequestRequestTypeDef = TypedDict(
    "GetSourceRepositoryCloneUrlsRequestRequestTypeDef",
    {
        "spaceName": str,
        "projectName": str,
        "sourceRepositoryName": str,
    },
)

GetSourceRepositoryRequestRequestTypeDef = TypedDict(
    "GetSourceRepositoryRequestRequestTypeDef",
    {
        "spaceName": str,
        "projectName": str,
        "name": str,
    },
)

GetSpaceRequestRequestTypeDef = TypedDict(
    "GetSpaceRequestRequestTypeDef",
    {
        "name": str,
    },
)

GetSubscriptionRequestRequestTypeDef = TypedDict(
    "GetSubscriptionRequestRequestTypeDef",
    {
        "spaceName": str,
    },
)

GetUserDetailsRequestRequestTypeDef = TypedDict(
    "GetUserDetailsRequestRequestTypeDef",
    {
        "id": NotRequired[str],
        "userName": NotRequired[str],
    },
)

PaginatorConfigTypeDef = TypedDict(
    "PaginatorConfigTypeDef",
    {
        "MaxItems": NotRequired[int],
        "PageSize": NotRequired[int],
        "StartingToken": NotRequired[str],
    },
)

ListAccessTokensRequestRequestTypeDef = TypedDict(
    "ListAccessTokensRequestRequestTypeDef",
    {
        "maxResults": NotRequired[int],
        "nextToken": NotRequired[str],
    },
)

ListDevEnvironmentSessionsRequestRequestTypeDef = TypedDict(
    "ListDevEnvironmentSessionsRequestRequestTypeDef",
    {
        "spaceName": str,
        "projectName": str,
        "devEnvironmentId": str,
        "nextToken": NotRequired[str],
        "maxResults": NotRequired[int],
    },
)

ProjectListFilterTypeDef = TypedDict(
    "ProjectListFilterTypeDef",
    {
        "key": Literal["hasAccessTo"],
        "values": Sequence[str],
        "comparisonOperator": NotRequired[ComparisonOperatorType],
    },
)

ProjectSummaryTypeDef = TypedDict(
    "ProjectSummaryTypeDef",
    {
        "name": str,
        "displayName": NotRequired[str],
        "description": NotRequired[str],
    },
)

ListSourceRepositoriesItemTypeDef = TypedDict(
    "ListSourceRepositoriesItemTypeDef",
    {
        "id": str,
        "name": str,
        "lastUpdatedTime": datetime,
        "createdTime": datetime,
        "description": NotRequired[str],
    },
)

ListSourceRepositoriesRequestRequestTypeDef = TypedDict(
    "ListSourceRepositoriesRequestRequestTypeDef",
    {
        "spaceName": str,
        "projectName": str,
        "nextToken": NotRequired[str],
        "maxResults": NotRequired[int],
    },
)

ListSourceRepositoryBranchesItemTypeDef = TypedDict(
    "ListSourceRepositoryBranchesItemTypeDef",
    {
        "ref": NotRequired[str],
        "name": NotRequired[str],
        "lastUpdatedTime": NotRequired[datetime],
        "headCommitId": NotRequired[str],
    },
)

ListSourceRepositoryBranchesRequestRequestTypeDef = TypedDict(
    "ListSourceRepositoryBranchesRequestRequestTypeDef",
    {
        "spaceName": str,
        "projectName": str,
        "sourceRepositoryName": str,
        "nextToken": NotRequired[str],
        "maxResults": NotRequired[int],
    },
)

ListSpacesRequestRequestTypeDef = TypedDict(
    "ListSpacesRequestRequestTypeDef",
    {
        "nextToken": NotRequired[str],
    },
)

SpaceSummaryTypeDef = TypedDict(
    "SpaceSummaryTypeDef",
    {
        "name": str,
        "regionName": str,
        "displayName": NotRequired[str],
        "description": NotRequired[str],
    },
)

StopDevEnvironmentRequestRequestTypeDef = TypedDict(
    "StopDevEnvironmentRequestRequestTypeDef",
    {
        "spaceName": str,
        "projectName": str,
        "id": str,
    },
)

StopDevEnvironmentSessionRequestRequestTypeDef = TypedDict(
    "StopDevEnvironmentSessionRequestRequestTypeDef",
    {
        "spaceName": str,
        "projectName": str,
        "id": str,
        "sessionId": str,
    },
)

UpdateProjectRequestRequestTypeDef = TypedDict(
    "UpdateProjectRequestRequestTypeDef",
    {
        "spaceName": str,
        "name": str,
        "description": NotRequired[str],
    },
)

UpdateSpaceRequestRequestTypeDef = TypedDict(
    "UpdateSpaceRequestRequestTypeDef",
    {
        "name": str,
        "description": NotRequired[str],
    },
)

CreateAccessTokenRequestRequestTypeDef = TypedDict(
    "CreateAccessTokenRequestRequestTypeDef",
    {
        "name": str,
        "expiresTime": NotRequired[TimestampTypeDef],
    },
)

ListEventLogsRequestRequestTypeDef = TypedDict(
    "ListEventLogsRequestRequestTypeDef",
    {
        "spaceName": str,
        "startTime": TimestampTypeDef,
        "endTime": TimestampTypeDef,
        "eventName": NotRequired[str],
        "nextToken": NotRequired[str],
        "maxResults": NotRequired[int],
    },
)

CreateAccessTokenResponseTypeDef = TypedDict(
    "CreateAccessTokenResponseTypeDef",
    {
        "secret": str,
        "name": str,
        "expiresTime": datetime,
        "accessTokenId": str,
        "ResponseMetadata": ResponseMetadataTypeDef,
    },
)

CreateDevEnvironmentResponseTypeDef = TypedDict(
    "CreateDevEnvironmentResponseTypeDef",
    {
        "spaceName": str,
        "projectName": str,
        "id": str,
        "ResponseMetadata": ResponseMetadataTypeDef,
    },
)

CreateProjectResponseTypeDef = TypedDict(
    "CreateProjectResponseTypeDef",
    {
        "spaceName": str,
        "name": str,
        "displayName": str,
        "description": str,
        "ResponseMetadata": ResponseMetadataTypeDef,
    },
)

CreateSourceRepositoryBranchResponseTypeDef = TypedDict(
    "CreateSourceRepositoryBranchResponseTypeDef",
    {
        "ref": str,
        "name": str,
        "lastUpdatedTime": datetime,
        "headCommitId": str,
        "ResponseMetadata": ResponseMetadataTypeDef,
    },
)

CreateSourceRepositoryResponseTypeDef = TypedDict(
    "CreateSourceRepositoryResponseTypeDef",
    {
        "spaceName": str,
        "projectName": str,
        "name": str,
        "description": str,
        "ResponseMetadata": ResponseMetadataTypeDef,
    },
)

DeleteDevEnvironmentResponseTypeDef = TypedDict(
    "DeleteDevEnvironmentResponseTypeDef",
    {
        "spaceName": str,
        "projectName": str,
        "id": str,
        "ResponseMetadata": ResponseMetadataTypeDef,
    },
)

DeleteProjectResponseTypeDef = TypedDict(
    "DeleteProjectResponseTypeDef",
    {
        "spaceName": str,
        "name": str,
        "displayName": str,
        "ResponseMetadata": ResponseMetadataTypeDef,
    },
)

DeleteSourceRepositoryResponseTypeDef = TypedDict(
    "DeleteSourceRepositoryResponseTypeDef",
    {
        "spaceName": str,
        "projectName": str,
        "name": str,
        "ResponseMetadata": ResponseMetadataTypeDef,
    },
)

DeleteSpaceResponseTypeDef = TypedDict(
    "DeleteSpaceResponseTypeDef",
    {
        "name": str,
        "displayName": str,
        "ResponseMetadata": ResponseMetadataTypeDef,
    },
)

GetProjectResponseTypeDef = TypedDict(
    "GetProjectResponseTypeDef",
    {
        "spaceName": str,
        "name": str,
        "displayName": str,
        "description": str,
        "ResponseMetadata": ResponseMetadataTypeDef,
    },
)

GetSourceRepositoryCloneUrlsResponseTypeDef = TypedDict(
    "GetSourceRepositoryCloneUrlsResponseTypeDef",
    {
        "https": str,
        "ResponseMetadata": ResponseMetadataTypeDef,
    },
)

GetSourceRepositoryResponseTypeDef = TypedDict(
    "GetSourceRepositoryResponseTypeDef",
    {
        "spaceName": str,
        "projectName": str,
        "name": str,
        "description": str,
        "lastUpdatedTime": datetime,
        "createdTime": datetime,
        "ResponseMetadata": ResponseMetadataTypeDef,
    },
)

GetSpaceResponseTypeDef = TypedDict(
    "GetSpaceResponseTypeDef",
    {
        "name": str,
        "regionName": str,
        "displayName": str,
        "description": str,
        "ResponseMetadata": ResponseMetadataTypeDef,
    },
)

GetSubscriptionResponseTypeDef = TypedDict(
    "GetSubscriptionResponseTypeDef",
    {
        "subscriptionType": str,
        "awsAccountName": str,
        "ResponseMetadata": ResponseMetadataTypeDef,
    },
)

ListAccessTokensResponseTypeDef = TypedDict(
    "ListAccessTokensResponseTypeDef",
    {
        "items": List[AccessTokenSummaryTypeDef],
        "nextToken": str,
        "ResponseMetadata": ResponseMetadataTypeDef,
    },
)

StartDevEnvironmentResponseTypeDef = TypedDict(
    "StartDevEnvironmentResponseTypeDef",
    {
        "spaceName": str,
        "projectName": str,
        "id": str,
        "status": DevEnvironmentStatusType,
        "ResponseMetadata": ResponseMetadataTypeDef,
    },
)

StopDevEnvironmentResponseTypeDef = TypedDict(
    "StopDevEnvironmentResponseTypeDef",
    {
        "spaceName": str,
        "projectName": str,
        "id": str,
        "status": DevEnvironmentStatusType,
        "ResponseMetadata": ResponseMetadataTypeDef,
    },
)

StopDevEnvironmentSessionResponseTypeDef = TypedDict(
    "StopDevEnvironmentSessionResponseTypeDef",
    {
        "spaceName": str,
        "projectName": str,
        "id": str,
        "sessionId": str,
        "ResponseMetadata": ResponseMetadataTypeDef,
    },
)

UpdateProjectResponseTypeDef = TypedDict(
    "UpdateProjectResponseTypeDef",
    {
        "spaceName": str,
        "name": str,
        "displayName": str,
        "description": str,
        "ResponseMetadata": ResponseMetadataTypeDef,
    },
)

UpdateSpaceResponseTypeDef = TypedDict(
    "UpdateSpaceResponseTypeDef",
    {
        "name": str,
        "displayName": str,
        "description": str,
        "ResponseMetadata": ResponseMetadataTypeDef,
    },
)

VerifySessionResponseTypeDef = TypedDict(
    "VerifySessionResponseTypeDef",
    {
        "identity": str,
        "ResponseMetadata": ResponseMetadataTypeDef,
    },
)

StartDevEnvironmentRequestRequestTypeDef = TypedDict(
    "StartDevEnvironmentRequestRequestTypeDef",
    {
        "spaceName": str,
        "projectName": str,
        "id": str,
        "ides": NotRequired[Sequence[IdeConfigurationTypeDef]],
        "instanceType": NotRequired[InstanceTypeType],
        "inactivityTimeoutMinutes": NotRequired[int],
    },
)

UpdateDevEnvironmentRequestRequestTypeDef = TypedDict(
    "UpdateDevEnvironmentRequestRequestTypeDef",
    {
        "spaceName": str,
        "projectName": str,
        "id": str,
        "alias": NotRequired[str],
        "ides": NotRequired[Sequence[IdeConfigurationTypeDef]],
        "instanceType": NotRequired[InstanceTypeType],
        "inactivityTimeoutMinutes": NotRequired[int],
        "clientToken": NotRequired[str],
    },
)

UpdateDevEnvironmentResponseTypeDef = TypedDict(
    "UpdateDevEnvironmentResponseTypeDef",
    {
        "id": str,
        "spaceName": str,
        "projectName": str,
        "alias": str,
        "ides": List[IdeConfigurationTypeDef],
        "instanceType": InstanceTypeType,
        "inactivityTimeoutMinutes": int,
        "clientToken": str,
        "ResponseMetadata": ResponseMetadataTypeDef,
    },
)

CreateDevEnvironmentRequestRequestTypeDef = TypedDict(
    "CreateDevEnvironmentRequestRequestTypeDef",
    {
        "spaceName": str,
        "projectName": str,
        "instanceType": InstanceTypeType,
        "persistentStorage": PersistentStorageConfigurationTypeDef,
        "repositories": NotRequired[Sequence[RepositoryInputTypeDef]],
        "clientToken": NotRequired[str],
        "alias": NotRequired[str],
        "ides": NotRequired[Sequence[IdeConfigurationTypeDef]],
        "inactivityTimeoutMinutes": NotRequired[int],
    },
)

StartDevEnvironmentSessionResponseTypeDef = TypedDict(
    "StartDevEnvironmentSessionResponseTypeDef",
    {
        "accessDetails": DevEnvironmentAccessDetailsTypeDef,
        "sessionId": str,
        "spaceName": str,
        "projectName": str,
        "id": str,
        "ResponseMetadata": ResponseMetadataTypeDef,
    },
)

DevEnvironmentSessionConfigurationTypeDef = TypedDict(
    "DevEnvironmentSessionConfigurationTypeDef",
    {
        "sessionType": DevEnvironmentSessionTypeType,
        "executeCommandSessionConfiguration": NotRequired[
            ExecuteCommandSessionConfigurationTypeDef
        ],
    },
)

ListDevEnvironmentSessionsResponseTypeDef = TypedDict(
    "ListDevEnvironmentSessionsResponseTypeDef",
    {
        "items": List[DevEnvironmentSessionSummaryTypeDef],
        "nextToken": str,
        "ResponseMetadata": ResponseMetadataTypeDef,
    },
)

DevEnvironmentSummaryTypeDef = TypedDict(
    "DevEnvironmentSummaryTypeDef",
    {
        "id": str,
        "lastUpdatedTime": datetime,
        "creatorId": str,
        "status": DevEnvironmentStatusType,
        "repositories": List[DevEnvironmentRepositorySummaryTypeDef],
        "instanceType": InstanceTypeType,
        "inactivityTimeoutMinutes": int,
        "persistentStorage": PersistentStorageTypeDef,
        "spaceName": NotRequired[str],
        "projectName": NotRequired[str],
        "statusReason": NotRequired[str],
        "alias": NotRequired[str],
        "ides": NotRequired[List[IdeTypeDef]],
    },
)

GetDevEnvironmentResponseTypeDef = TypedDict(
    "GetDevEnvironmentResponseTypeDef",
    {
        "spaceName": str,
        "projectName": str,
        "id": str,
        "lastUpdatedTime": datetime,
        "creatorId": str,
        "status": DevEnvironmentStatusType,
        "statusReason": str,
        "repositories": List[DevEnvironmentRepositorySummaryTypeDef],
        "alias": str,
        "ides": List[IdeTypeDef],
        "instanceType": InstanceTypeType,
        "inactivityTimeoutMinutes": int,
        "persistentStorage": PersistentStorageTypeDef,
        "ResponseMetadata": ResponseMetadataTypeDef,
    },
)

GetUserDetailsResponseTypeDef = TypedDict(
    "GetUserDetailsResponseTypeDef",
    {
        "userId": str,
        "userName": str,
        "displayName": str,
        "primaryEmail": EmailAddressTypeDef,
        "version": str,
        "ResponseMetadata": ResponseMetadataTypeDef,
    },
)

EventLogEntryTypeDef = TypedDict(
    "EventLogEntryTypeDef",
    {
        "id": str,
        "eventName": str,
        "eventType": str,
        "eventCategory": str,
        "eventSource": str,
        "eventTime": datetime,
        "operationType": OperationTypeType,
        "userIdentity": UserIdentityTypeDef,
        "projectInformation": NotRequired[ProjectInformationTypeDef],
        "requestId": NotRequired[str],
        "requestPayload": NotRequired[EventPayloadTypeDef],
        "responsePayload": NotRequired[EventPayloadTypeDef],
        "errorCode": NotRequired[str],
        "sourceIpAddress": NotRequired[str],
        "userAgent": NotRequired[str],
    },
)

ListDevEnvironmentsRequestRequestTypeDef = TypedDict(
    "ListDevEnvironmentsRequestRequestTypeDef",
    {
        "spaceName": str,
        "projectName": str,
        "filters": NotRequired[Sequence[FilterTypeDef]],
        "nextToken": NotRequired[str],
        "maxResults": NotRequired[int],
    },
)

ListAccessTokensRequestListAccessTokensPaginateTypeDef = TypedDict(
    "ListAccessTokensRequestListAccessTokensPaginateTypeDef",
    {
        "PaginationConfig": NotRequired[PaginatorConfigTypeDef],
    },
)

ListDevEnvironmentSessionsRequestListDevEnvironmentSessionsPaginateTypeDef = TypedDict(
    "ListDevEnvironmentSessionsRequestListDevEnvironmentSessionsPaginateTypeDef",
    {
        "spaceName": str,
        "projectName": str,
        "devEnvironmentId": str,
        "PaginationConfig": NotRequired[PaginatorConfigTypeDef],
    },
)

ListDevEnvironmentsRequestListDevEnvironmentsPaginateTypeDef = TypedDict(
    "ListDevEnvironmentsRequestListDevEnvironmentsPaginateTypeDef",
    {
        "spaceName": str,
        "projectName": str,
        "filters": NotRequired[Sequence[FilterTypeDef]],
        "PaginationConfig": NotRequired[PaginatorConfigTypeDef],
    },
)

ListEventLogsRequestListEventLogsPaginateTypeDef = TypedDict(
    "ListEventLogsRequestListEventLogsPaginateTypeDef",
    {
        "spaceName": str,
        "startTime": TimestampTypeDef,
        "endTime": TimestampTypeDef,
        "eventName": NotRequired[str],
        "PaginationConfig": NotRequired[PaginatorConfigTypeDef],
    },
)

ListSourceRepositoriesRequestListSourceRepositoriesPaginateTypeDef = TypedDict(
    "ListSourceRepositoriesRequestListSourceRepositoriesPaginateTypeDef",
    {
        "spaceName": str,
        "projectName": str,
        "PaginationConfig": NotRequired[PaginatorConfigTypeDef],
    },
)

ListSourceRepositoryBranchesRequestListSourceRepositoryBranchesPaginateTypeDef = TypedDict(
    "ListSourceRepositoryBranchesRequestListSourceRepositoryBranchesPaginateTypeDef",
    {
        "spaceName": str,
        "projectName": str,
        "sourceRepositoryName": str,
        "PaginationConfig": NotRequired[PaginatorConfigTypeDef],
    },
)

ListSpacesRequestListSpacesPaginateTypeDef = TypedDict(
    "ListSpacesRequestListSpacesPaginateTypeDef",
    {
        "PaginationConfig": NotRequired[PaginatorConfigTypeDef],
    },
)

ListProjectsRequestListProjectsPaginateTypeDef = TypedDict(
    "ListProjectsRequestListProjectsPaginateTypeDef",
    {
        "spaceName": str,
        "filters": NotRequired[Sequence[ProjectListFilterTypeDef]],
        "PaginationConfig": NotRequired[PaginatorConfigTypeDef],
    },
)

ListProjectsRequestRequestTypeDef = TypedDict(
    "ListProjectsRequestRequestTypeDef",
    {
        "spaceName": str,
        "nextToken": NotRequired[str],
        "maxResults": NotRequired[int],
        "filters": NotRequired[Sequence[ProjectListFilterTypeDef]],
    },
)

ListProjectsResponseTypeDef = TypedDict(
    "ListProjectsResponseTypeDef",
    {
        "nextToken": str,
        "items": List[ProjectSummaryTypeDef],
        "ResponseMetadata": ResponseMetadataTypeDef,
    },
)

ListSourceRepositoriesResponseTypeDef = TypedDict(
    "ListSourceRepositoriesResponseTypeDef",
    {
        "items": List[ListSourceRepositoriesItemTypeDef],
        "nextToken": str,
        "ResponseMetadata": ResponseMetadataTypeDef,
    },
)

ListSourceRepositoryBranchesResponseTypeDef = TypedDict(
    "ListSourceRepositoryBranchesResponseTypeDef",
    {
        "nextToken": str,
        "items": List[ListSourceRepositoryBranchesItemTypeDef],
        "ResponseMetadata": ResponseMetadataTypeDef,
    },
)

ListSpacesResponseTypeDef = TypedDict(
    "ListSpacesResponseTypeDef",
    {
        "nextToken": str,
        "items": List[SpaceSummaryTypeDef],
        "ResponseMetadata": ResponseMetadataTypeDef,
    },
)

StartDevEnvironmentSessionRequestRequestTypeDef = TypedDict(
    "StartDevEnvironmentSessionRequestRequestTypeDef",
    {
        "spaceName": str,
        "projectName": str,
        "id": str,
        "sessionConfiguration": DevEnvironmentSessionConfigurationTypeDef,
    },
)

ListDevEnvironmentsResponseTypeDef = TypedDict(
    "ListDevEnvironmentsResponseTypeDef",
    {
        "items": List[DevEnvironmentSummaryTypeDef],
        "nextToken": str,
        "ResponseMetadata": ResponseMetadataTypeDef,
    },
)

ListEventLogsResponseTypeDef = TypedDict(
    "ListEventLogsResponseTypeDef",
    {
        "nextToken": str,
        "items": List[EventLogEntryTypeDef],
        "ResponseMetadata": ResponseMetadataTypeDef,
    },
)
