Skip to content

gcapi.models¤

SocketValueSpec¤

Specification for a socket value which provides exactly one source that will be used to create a socket value.

Socket values are the items that constitute cases in job inputs, archive items, and display sets.

Example
from gcapi import SocketValueSpec

# Directly from a value
SocketValueSpec(socket_slug="my_value_socket", value=42)

# Indirectly from a file
SocketValueSpec(socket_slug="my_value_socket", file="/path/to/number.json")

# Directly from a file
SocketValueSpec(socket_slug="my_pdf_socket", file="/path/to/report.pdf")

# Directly from multiple files
SocketValueSpec(socket_slug="my_image_socket", files=["1.dcm", "2.dcm"])

# Indirectly from an existing image
SocketValueSpec(
    socket_slug="my_image_socket",
    existing_image_api_url="https://grand-challenge.org/api/v1/images/123/"
)

# Indirectly from an existing socket value
display_set = client.display_sets.detail(pk="...")
SocketValueSpec(
    socket_slug="my_value_socket",
    existing_socket_value=display_set.values[0]
)

# A DICOM Image set, including image_name
display_set = client.display_sets.detail(pk="...")
SocketValueSpec(
    socket_slug="my_value_socket",
    files=["/path/to/dicom/files/1.dcm", "/path/to/dicom/files/2.dcm"],
    image_name="My Image Name",
)

Parameters:

  • socket_slug (str) –

    The slug of the socket (required)

  • value (Any, default: Unset ) –

    Direct source value to set (can be None)

  • file (str | Path | UnsetType, default: Unset ) –

    Single source file path for file/image upload (e.g. file="annotation.json")

  • files (list[str | Path] | UnsetType, default: Unset ) –

    List of source file paths that constitute a single value/image (e.g. files=["1.dcm", "2.dcm", "3.dcm"])

  • image_name (str | UnsetType, default: Unset ) –

    Name for the image when uploading a DICOM image

  • existing_image_api_url (str | UnsetType, default: Unset ) –

    An API URL of an existing image to reuse

  • existing_socket_value (HyperlinkedComponentInterfaceValue | UnsetType, default: Unset ) –

    Existing socket value that can be reused

validate ¤

validate() -> None

Validate the spec without a socket context.

validate_against_socket ¤

validate_against_socket(socket: ComponentInterface) -> None

Validate the spec with the socket context.

PageResult¤

A paginated result container for API responses.

This class provides a sequence-like interface for handling paginated API responses, containing metadata about the pagination state and the actual results.

Attributes:

  • offset (int) –

    The starting index of the results.

  • limit (int) –

    The maximum number of results in this page.

  • total_count (int) –

    The total number of items available.

Algorithm ¤

Source code in gcapi/models.py
@dataclass
class Algorithm(BaseModel):
    api_url: str
    url: str
    description: str | None
    pk: str
    title: str
    logo: str
    slug: str
    average_duration: float | None
    interfaces: list[AlgorithmInterface]

AlgorithmImage ¤

Source code in gcapi/models.py
@dataclass
class AlgorithmImage(BaseModel):
    pk: str
    url: str
    api_url: str
    algorithm: str
    created: str
    import_status: str
    image: str | None

AlgorithmInterface ¤

Source code in gcapi/models.py
@dataclass
class AlgorithmInterface(BaseModel):
    inputs: list[ComponentInterface]
    outputs: list[ComponentInterface]

Answer ¤

Source code in gcapi/models.py
@dataclass
class Answer(BaseModel):
    answer: Any | None
    api_url: str
    created: str
    creator: str
    display_set: str | None
    pk: str
    question: str
    modified: str
    answer_image: str | None
    last_edit_duration: str | None
    total_edit_duration: str | None
    is_ground_truth: bool

AnswerRequest ¤

Source code in gcapi/models.py
@dataclass
class AnswerRequest(BaseModel):
    answer: Any | None
    display_set: str | None
    question: str
    last_edit_duration: str | None

Archive ¤

Source code in gcapi/models.py
@dataclass
class Archive(BaseModel):
    pk: str
    title: str
    logo: str
    description: str | None
    api_url: str
    url: str

ArchiveItem ¤

Source code in gcapi/models.py
@dataclass
class ArchiveItem(BaseModel):
    pk: str
    archive: str
    values: list[HyperlinkedComponentInterfaceValue]
    hanging_protocol: HangingProtocol | None
    optional_hanging_protocols: list[HangingProtocol]
    view_content: Any
    title: str = ""

ArchiveItemPost ¤

Source code in gcapi/models.py
@dataclass
class ArchiveItemPost(BaseModel):
    pk: str
    archive: str | None
    values: list[ComponentInterfaceValuePost] | None
    hanging_protocol: HangingProtocol | None
    optional_hanging_protocols: list[HangingProtocol]
    view_content: Any
    title: str = ""

ArchiveItemPostRequest ¤

Source code in gcapi/models.py
@dataclass
class ArchiveItemPostRequest(BaseModel):
    archive: str | None
    values: list[ComponentInterfaceValuePostRequest] | None
    title: str = ""

BaseModel ¤

Source code in gcapi/model_base.py
class BaseModel:
    def __getitem__(self, key):
        self._warn_deprecated_access(key, "getting")
        return getattr(self, key)

    def __setitem__(self, key, value):
        self._warn_deprecated_access(key, "setting")
        return setattr(self, key, value)

    def __delitem__(self, key):
        self._warn_deprecated_access(key, "deleting")
        return delattr(self, key)

    @staticmethod
    def _warn_deprecated_access(key, action):
        warnings.warn(
            message=(
                f'Using ["{key}"] for {action} attributes is deprecated '
                "and will be removed in the next release. "
                f'Suggestion: Replace ["{key}"] with .{key}'
            ),
            category=DeprecationWarning,
            stacklevel=3,
        )

BlankEnum ¤

Source code in gcapi/models.py
class BlankEnum(Enum):
    field_ = ""

CategoricalOption ¤

Source code in gcapi/models.py
@dataclass
class CategoricalOption(BaseModel):
    id: int
    title: str
    default: bool | None

Challenge ¤

Source code in gcapi/models.py
@dataclass
class Challenge(BaseModel):
    title: str | None
    short_name: str

ChallengeRequest ¤

Source code in gcapi/models.py
@dataclass
class ChallengeRequest(BaseModel):
    title: str | None
    short_name: str

ColorInterpolationEnum ¤

Source code in gcapi/models.py
class ColorInterpolationEnum(Enum):
    RGB = "RGB"
    HLS = "HLS"
    HLSpos = "HLSpos"
    HLSneg = "HLSneg"
    Constant = "Constant"

ColorSpaceEnum ¤

Source code in gcapi/models.py
class ColorSpaceEnum(Enum):
    GRAY = "GRAY"
    RGB = "RGB"
    RGBA = "RGBA"
    YCBCR = "YCBCR"

ComponentInterface ¤

Source code in gcapi/models.py
@dataclass
class ComponentInterface(BaseModel):
    title: str
    description: str | None
    slug: str
    kind: str
    pk: int
    default_value: Any | None
    super_kind: str
    relative_path: str
    overlay_segments: Any | None
    look_up_table: LookUpTable | None

ComponentInterfaceValue ¤

Source code in gcapi/models.py
@dataclass
class ComponentInterfaceValue(BaseModel):
    interface: ComponentInterface
    value: Any | None
    file: str | None
    image: SimpleImage | None
    pk: int

ComponentInterfaceValuePost ¤

Source code in gcapi/models.py
@dataclass
class ComponentInterfaceValuePost(BaseModel):
    interface: str
    value: Any | None
    file: str | None
    image: str | None
    pk: int
    image_name: str | None

ComponentInterfaceValuePostRequest ¤

Source code in gcapi/models.py
@dataclass
class ComponentInterfaceValuePostRequest(BaseModel):
    interface: str
    value: Any | None
    file: bytes | None
    image: str | None
    upload_session: str | None
    user_upload: str | None
    user_uploads: list[str] | None
    image_name: str | None

DICOMImageSet ¤

Source code in gcapi/models.py
@dataclass
class DICOMImageSet(BaseModel):
    image_set_id: str

DisplaySet ¤

Source code in gcapi/models.py
@dataclass
class DisplaySet(BaseModel):
    pk: str
    title_safe: str
    reader_study: str
    values: list[HyperlinkedComponentInterfaceValue]
    order: int | None
    api_url: str
    hanging_protocol: HangingProtocol | None
    optional_hanging_protocols: list[HangingProtocol]
    view_content: Any
    description: str
    index: int | None
    title: str = ""

DisplaySetPost ¤

Source code in gcapi/models.py
@dataclass
class DisplaySetPost(BaseModel):
    pk: str
    title_safe: str
    reader_study: str | None
    values: list[ComponentInterfaceValuePost] | None
    order: int | None
    api_url: str
    hanging_protocol: HangingProtocol | None
    optional_hanging_protocols: list[HangingProtocol]
    view_content: Any
    description: str
    index: int | None
    title: str = ""

DisplaySetPostRequest ¤

Source code in gcapi/models.py
@dataclass
class DisplaySetPostRequest(BaseModel):
    reader_study: str | None
    values: list[ComponentInterfaceValuePostRequest] | None
    order: int | None
    title: str = ""

Evaluation ¤

Source code in gcapi/models.py
@dataclass
class Evaluation(BaseModel):
    pk: str
    method: str | None
    submission: Submission
    created: str
    published: bool | None
    outputs: list[ComponentInterfaceValue]
    rank: int | None
    rank_score: float | None
    rank_per_metric: Any | None
    status: str
    title: str
    exec_duration: str
    invoke_duration: str

ExternalEvaluation ¤

Source code in gcapi/models.py
@dataclass
class ExternalEvaluation(BaseModel):
    pk: str
    method: str | None
    submission: Submission
    created: str
    published: bool | None
    outputs: list[ComponentInterfaceValue]
    rank: int | None
    rank_score: float | None
    rank_per_metric: Any | None
    status: str
    title: str
    exec_duration: str
    invoke_duration: str
    algorithm_model: dict[str, Any] | None
    algorithm_image: dict[str, Any]
    claimed_by: int | None
    phase_pk: str

ExternalEvaluationUpdate ¤

Source code in gcapi/models.py
@dataclass
class ExternalEvaluationUpdate(BaseModel):
    metrics: Any | None
    status: StatusEnum
    error_message: str | None

EyeChoiceEnum ¤

Source code in gcapi/models.py
class EyeChoiceEnum(Enum):
    OD = "OD"
    OS = "OS"
    U = "U"
    NA = "NA"

Feedback ¤

Source code in gcapi/models.py
@dataclass
class Feedback(BaseModel):
    session: str
    screenshot: str | None
    user_comment: str
    context: Any | None

FeedbackRequest ¤

Source code in gcapi/models.py
@dataclass
class FeedbackRequest(BaseModel):
    session: str
    screenshot: bytes | None
    user_comment: str
    context: Any | None

FieldOfViewEnum ¤

Source code in gcapi/models.py
class FieldOfViewEnum(Enum):
    F1M = "F1M"
    F2 = "F2"
    F3M = "F3M"
    F4 = "F4"
    F5 = "F5"
    F6 = "F6"
    F7 = "F7"
    U = "U"

Follow ¤

Source code in gcapi/models.py
@dataclass
class Follow(BaseModel):
    pk: int
    flag: str | None

FollowRequest ¤

Source code in gcapi/models.py
@dataclass
class FollowRequest(BaseModel):
    flag: str | None

GCAPIVersion ¤

Source code in gcapi/models.py
@dataclass
class GCAPIVersion(BaseModel):
    latest_version: str
    lowest_supported_version: str

HangingProtocol ¤

Source code in gcapi/models.py
@dataclass
class HangingProtocol(BaseModel):
    json: Any
    title: str
    pk: str
    svg_icon: str

HangingProtocolRequest ¤

Source code in gcapi/models.py
@dataclass
class HangingProtocolRequest(BaseModel):
    json: Any
    title: str

HyperlinkedComponentInterfaceValue ¤

Source code in gcapi/models.py
@dataclass
class HyperlinkedComponentInterfaceValue(BaseModel):
    interface: ComponentInterface
    value: Any | None
    file: str | None
    image: str | None
    pk: int

HyperlinkedImage ¤

Source code in gcapi/models.py
@dataclass
class HyperlinkedImage(BaseModel):
    pk: str
    name: str
    files: list[ImageFile]
    dicom_image_set: DICOMImageSet | None
    width: int | None
    height: int | None
    depth: int | None
    color_space: ColorSpaceEnum | BlankEnum | None
    modality: ImagingModality | None
    eye_choice: EyeChoiceEnum | None
    stereoscopic_choice: StereoscopicChoiceEnum | BlankEnum | NullEnum | None
    field_of_view: FieldOfViewEnum | BlankEnum | NullEnum | None
    shape_without_color: list[int]
    shape: list[int]
    voxel_width_mm: float | None
    voxel_height_mm: float | None
    voxel_depth_mm: float | None
    api_url: str
    patient_id: str | None
    patient_name: str | None
    patient_birth_date: str | None
    patient_age: str | None
    patient_sex: PatientSexEnum | BlankEnum | None
    study_date: str | None
    study_instance_uid: str | None
    series_instance_uid: str | None
    study_description: str | None
    series_description: str | None
    window_center: float | None
    window_width: float | None
    segments: Any | None

HyperlinkedJob ¤

Source code in gcapi/models.py
@dataclass
class HyperlinkedJob(BaseModel):
    pk: str
    url: str
    api_url: str
    algorithm_image: str
    inputs: list[HyperlinkedComponentInterfaceValue]
    outputs: list[HyperlinkedComponentInterfaceValue]
    status: str
    hanging_protocol: HangingProtocol | None
    optional_hanging_protocols: list[HangingProtocol]
    view_content: Any
    exec_duration: str
    invoke_duration: str
    algorithm: str

ImageFile ¤

Source code in gcapi/models.py
@dataclass
class ImageFile(BaseModel):
    pk: str
    image: str | None
    file: str
    image_type: ImageTypeEnum | None

ImageTypeEnum ¤

Source code in gcapi/models.py
class ImageTypeEnum(Enum):
    MHD = "MHD"
    TIFF = "TIFF"
    DZI = "DZI"

ImagingModality ¤

Source code in gcapi/models.py
@dataclass
class ImagingModality(BaseModel):
    modality: str

JobPost ¤

Source code in gcapi/models.py
@dataclass
class JobPost(BaseModel):
    pk: str
    inputs: list[ComponentInterfaceValuePost]
    status: str

JobPostRequest ¤

Source code in gcapi/models.py
@dataclass
class JobPostRequest(BaseModel):
    algorithm: str
    inputs: list[ComponentInterfaceValuePostRequest]

LocationEnum ¤

Source code in gcapi/models.py
class LocationEnum(Enum):
    AF = "AF"
    AX = "AX"
    AL = "AL"
    DZ = "DZ"
    AS = "AS"
    AD = "AD"
    AO = "AO"
    AI = "AI"
    AQ = "AQ"
    AG = "AG"
    AR = "AR"
    AM = "AM"
    AW = "AW"
    AU = "AU"
    AT = "AT"
    AZ = "AZ"
    BS = "BS"
    BH = "BH"
    BD = "BD"
    BB = "BB"
    BY = "BY"
    BE = "BE"
    BZ = "BZ"
    BJ = "BJ"
    BM = "BM"
    BT = "BT"
    BO = "BO"
    BQ = "BQ"
    BA = "BA"
    BW = "BW"
    BV = "BV"
    BR = "BR"
    IO = "IO"
    BN = "BN"
    BG = "BG"
    BF = "BF"
    BI = "BI"
    CV = "CV"
    KH = "KH"
    CM = "CM"
    CA = "CA"
    KY = "KY"
    CF = "CF"
    TD = "TD"
    CL = "CL"
    CN = "CN"
    CX = "CX"
    CC = "CC"
    CO = "CO"
    KM = "KM"
    CG = "CG"
    CK = "CK"
    CR = "CR"
    CI = "CI"
    HR = "HR"
    CU = "CU"
    CW = "CW"
    CY = "CY"
    CZ = "CZ"
    CD = "CD"
    DK = "DK"
    DJ = "DJ"
    DM = "DM"
    DO = "DO"
    EC = "EC"
    EG = "EG"
    SV = "SV"
    GQ = "GQ"
    ER = "ER"
    EE = "EE"
    SZ = "SZ"
    ET = "ET"
    FK = "FK"
    FO = "FO"
    FJ = "FJ"
    FI = "FI"
    FR = "FR"
    GF = "GF"
    PF = "PF"
    TF = "TF"
    GA = "GA"
    GM = "GM"
    GE = "GE"
    DE = "DE"
    GH = "GH"
    GI = "GI"
    GR = "GR"
    GL = "GL"
    GD = "GD"
    GP = "GP"
    GU = "GU"
    GT = "GT"
    GG = "GG"
    GN = "GN"
    GW = "GW"
    GY = "GY"
    HT = "HT"
    HM = "HM"
    HN = "HN"
    HK = "HK"
    HU = "HU"
    IS = "IS"
    IN = "IN"
    ID = "ID"
    IR = "IR"
    IQ = "IQ"
    IE = "IE"
    IM = "IM"
    IL = "IL"
    IT = "IT"
    JM = "JM"
    JP = "JP"
    JE = "JE"
    JO = "JO"
    KZ = "KZ"
    KE = "KE"
    KI = "KI"
    KW = "KW"
    KG = "KG"
    LA = "LA"
    LV = "LV"
    LB = "LB"
    LS = "LS"
    LR = "LR"
    LY = "LY"
    LI = "LI"
    LT = "LT"
    LU = "LU"
    MO = "MO"
    MG = "MG"
    MW = "MW"
    MY = "MY"
    MV = "MV"
    ML = "ML"
    MT = "MT"
    MH = "MH"
    MQ = "MQ"
    MR = "MR"
    MU = "MU"
    YT = "YT"
    MX = "MX"
    FM = "FM"
    MD = "MD"
    MC = "MC"
    MN = "MN"
    ME = "ME"
    MS = "MS"
    MA = "MA"
    MZ = "MZ"
    MM = "MM"
    NA = "NA"
    NR = "NR"
    NP = "NP"
    NL = "NL"
    NC = "NC"
    NZ = "NZ"
    NI = "NI"
    NE = "NE"
    NG = "NG"
    NU = "NU"
    NF = "NF"
    KP = "KP"
    MK = "MK"
    MP = "MP"
    NO = "NO"
    OM = "OM"
    PK = "PK"
    PW = "PW"
    PS = "PS"
    PA = "PA"
    PG = "PG"
    PY = "PY"
    PE = "PE"
    PH = "PH"
    PN = "PN"
    PL = "PL"
    PT = "PT"
    PR = "PR"
    QA = "QA"
    RE = "RE"
    RO = "RO"
    RU = "RU"
    RW = "RW"
    BL = "BL"
    SH = "SH"
    KN = "KN"
    LC = "LC"
    MF = "MF"
    PM = "PM"
    VC = "VC"
    WS = "WS"
    SM = "SM"
    ST = "ST"
    SA = "SA"
    SN = "SN"
    RS = "RS"
    SC = "SC"
    SL = "SL"
    SG = "SG"
    SX = "SX"
    SK = "SK"
    SI = "SI"
    SB = "SB"
    SO = "SO"
    ZA = "ZA"
    GS = "GS"
    KR = "KR"
    SS = "SS"
    ES = "ES"
    LK = "LK"
    SD = "SD"
    SR = "SR"
    SJ = "SJ"
    SE = "SE"
    CH = "CH"
    SY = "SY"
    TW = "TW"
    TJ = "TJ"
    TZ = "TZ"
    TH = "TH"
    TL = "TL"
    TG = "TG"
    TK = "TK"
    TO = "TO"
    TT = "TT"
    TN = "TN"
    TR = "TR"
    TM = "TM"
    TC = "TC"
    TV = "TV"
    UG = "UG"
    UA = "UA"
    AE = "AE"
    GB = "GB"
    UM = "UM"
    US = "US"
    UY = "UY"
    UZ = "UZ"
    VU = "VU"
    VA = "VA"
    VE = "VE"
    VN = "VN"
    VG = "VG"
    VI = "VI"
    WF = "WF"
    EH = "EH"
    YE = "YE"
    ZM = "ZM"
    ZW = "ZW"

LookUpTable ¤

Source code in gcapi/models.py
@dataclass
class LookUpTable(BaseModel):
    pk: int
    slug: str
    title: str
    description: str | None
    color: str
    alpha: str
    color_invert: str | None
    alpha_invert: str | None
    range_min: int | None
    range_max: int | None
    relative: bool | None
    color_interpolation: ColorInterpolationEnum | None
    color_interpolation_invert: ColorInterpolationEnum | None

Notification ¤

Source code in gcapi/models.py
@dataclass
class Notification(BaseModel):
    read: bool | None

NotificationRequest ¤

Source code in gcapi/models.py
@dataclass
class NotificationRequest(BaseModel):
    read: bool | None

NullEnum ¤

Source code in gcapi/models.py
class NullEnum(Enum):
    NoneType_None = None

PaginatedAlgorithmImageList ¤

Source code in gcapi/models.py
@dataclass
class PaginatedAlgorithmImageList(BaseModel):
    count: int
    next: str | None
    previous: str | None
    results: list[AlgorithmImage]

PaginatedAlgorithmList ¤

Source code in gcapi/models.py
@dataclass
class PaginatedAlgorithmList(BaseModel):
    count: int
    next: str | None
    previous: str | None
    results: list[Algorithm]

PaginatedAnswerList ¤

Source code in gcapi/models.py
@dataclass
class PaginatedAnswerList(BaseModel):
    count: int
    next: str | None
    previous: str | None
    results: list[Answer]

PaginatedArchiveItemList ¤

Source code in gcapi/models.py
@dataclass
class PaginatedArchiveItemList(BaseModel):
    count: int
    next: str | None
    previous: str | None
    results: list[ArchiveItem]

PaginatedArchiveList ¤

Source code in gcapi/models.py
@dataclass
class PaginatedArchiveList(BaseModel):
    count: int
    next: str | None
    previous: str | None
    results: list[Archive]

PaginatedComponentInterfaceList ¤

Source code in gcapi/models.py
@dataclass
class PaginatedComponentInterfaceList(BaseModel):
    count: int
    next: str | None
    previous: str | None
    results: list[ComponentInterface]

PaginatedDisplaySetList ¤

Source code in gcapi/models.py
@dataclass
class PaginatedDisplaySetList(BaseModel):
    count: int
    next: str | None
    previous: str | None
    results: list[DisplaySet]

PaginatedEvaluationList ¤

Source code in gcapi/models.py
@dataclass
class PaginatedEvaluationList(BaseModel):
    count: int
    next: str | None
    previous: str | None
    results: list[Evaluation]

PaginatedFeedbackList ¤

Source code in gcapi/models.py
@dataclass
class PaginatedFeedbackList(BaseModel):
    count: int
    next: str | None
    previous: str | None
    results: list[Feedback]

PaginatedFollowList ¤

Source code in gcapi/models.py
@dataclass
class PaginatedFollowList(BaseModel):
    count: int
    next: str | None
    previous: str | None
    results: list[Follow]

PaginatedHyperlinkedImageList ¤

Source code in gcapi/models.py
@dataclass
class PaginatedHyperlinkedImageList(BaseModel):
    count: int
    next: str | None
    previous: str | None
    results: list[HyperlinkedImage]

PaginatedHyperlinkedJobList ¤

Source code in gcapi/models.py
@dataclass
class PaginatedHyperlinkedJobList(BaseModel):
    count: int
    next: str | None
    previous: str | None
    results: list[HyperlinkedJob]

PaginatedNotificationList ¤

Source code in gcapi/models.py
@dataclass
class PaginatedNotificationList(BaseModel):
    count: int
    next: str | None
    previous: str | None
    results: list[Notification]

PaginatedPublicChallengeList ¤

Source code in gcapi/models.py
@dataclass
class PaginatedPublicChallengeList(BaseModel):
    count: int
    next: str | None
    previous: str | None
    results: list[PublicChallenge]

PaginatedQuestionList ¤

Source code in gcapi/models.py
@dataclass
class PaginatedQuestionList(BaseModel):
    count: int
    next: str | None
    previous: str | None
    results: list[Question]

PaginatedRawImageUploadSessionList ¤

Source code in gcapi/models.py
@dataclass
class PaginatedRawImageUploadSessionList(BaseModel):
    count: int
    next: str | None
    previous: str | None
    results: list[RawImageUploadSession]

PaginatedReaderStudyList ¤

Source code in gcapi/models.py
@dataclass
class PaginatedReaderStudyList(BaseModel):
    count: int
    next: str | None
    previous: str | None
    results: list[ReaderStudy]

PaginatedSessionList ¤

Source code in gcapi/models.py
@dataclass
class PaginatedSessionList(BaseModel):
    count: int
    next: str | None
    previous: str | None
    results: list[Session]

PaginatedUserUploadList ¤

Source code in gcapi/models.py
@dataclass
class PaginatedUserUploadList(BaseModel):
    count: int
    next: str | None
    previous: str | None
    results: list[UserUpload]

PaginatedWorkstationConfigList ¤

Source code in gcapi/models.py
@dataclass
class PaginatedWorkstationConfigList(BaseModel):
    count: int
    next: str | None
    previous: str | None
    results: list[WorkstationConfig]

PaginatedWorkstationList ¤

Source code in gcapi/models.py
@dataclass
class PaginatedWorkstationList(BaseModel):
    count: int
    next: str | None
    previous: str | None
    results: list[Workstation]

Part ¤

Source code in gcapi/models.py
@dataclass
class Part(BaseModel):
    ETag: str
    PartNumber: int
    LastModified: str
    Size: int

PartRequest ¤

Source code in gcapi/models.py
@dataclass
class PartRequest(BaseModel):
    ETag: str
    PartNumber: int
    LastModified: str
    Size: int

PatchedAnswerRequest ¤

Source code in gcapi/models.py
@dataclass
class PatchedAnswerRequest(BaseModel):
    answer: Any | None
    display_set: str | None
    question: str | None
    last_edit_duration: str | None

PatchedArchiveItemPostRequest ¤

Source code in gcapi/models.py
@dataclass
class PatchedArchiveItemPostRequest(BaseModel):
    archive: str | None
    values: list[ComponentInterfaceValuePostRequest] | None
    title: str = ""

PatchedDisplaySetPostRequest ¤

Source code in gcapi/models.py
@dataclass
class PatchedDisplaySetPostRequest(BaseModel):
    reader_study: str | None
    values: list[ComponentInterfaceValuePostRequest] | None
    order: int | None
    title: str = ""

PatchedExternalEvaluationRequest ¤

Source code in gcapi/models.py
@dataclass
class PatchedExternalEvaluationRequest(BaseModel):
    method: str | None
    submission: SubmissionRequest | None
    published: bool | None
    rank: int | None
    rank_score: float | None
    rank_per_metric: Any | None
    claimed_by: int | None
    phase_pk: str | None

PatchedExternalEvaluationUpdateRequest ¤

Source code in gcapi/models.py
@dataclass
class PatchedExternalEvaluationUpdateRequest(BaseModel):
    metrics: Any | None
    status: StatusEnum | None
    error_message: str | None

PatchedFollowRequest ¤

Source code in gcapi/models.py
@dataclass
class PatchedFollowRequest(BaseModel):
    flag: str | None

PatchedNotificationRequest ¤

Source code in gcapi/models.py
@dataclass
class PatchedNotificationRequest(BaseModel):
    read: bool | None

PatchedUserUploadCompleteRequest ¤

Source code in gcapi/models.py
@dataclass
class PatchedUserUploadCompleteRequest(BaseModel):
    parts: list[PartRequest] | None

PatchedUserUploadPresignedURLsRequest ¤

Source code in gcapi/models.py
@dataclass
class PatchedUserUploadPresignedURLsRequest(BaseModel):
    part_numbers: list[int] | None

PatientSexEnum ¤

Source code in gcapi/models.py
class PatientSexEnum(Enum):
    M = "M"
    F = "F"
    O = "O"

Phase ¤

Source code in gcapi/models.py
@dataclass
class Phase(BaseModel):
    challenge: Challenge
    title: str
    slug: str

PhaseRequest ¤

Source code in gcapi/models.py
@dataclass
class PhaseRequest(BaseModel):
    challenge: ChallengeRequest
    title: str

PublicChallenge ¤

Source code in gcapi/models.py
@dataclass
class PublicChallenge(BaseModel):
    api_url: str
    url: str
    slug: str
    title: str | None
    description: str | None
    public: bool
    status: str
    logo: str | None
    submission_types: list[str]
    start_date: str | None
    end_date: str | None
    publications: list[str]
    created: str
    modified: str
    incentives: list[str]

Question ¤

Source code in gcapi/models.py
@dataclass
class Question(BaseModel):
    answer_type: str
    api_url: str
    form_direction: str
    help_text: str
    help_text_safe: str
    image_port: str
    default_annotation_color: str | None
    pk: str
    question_text: str
    question_text_safe: str
    reader_study: str
    required: bool | None
    options: list[CategoricalOption]
    interface: ComponentInterface | None
    overlay_segments: Any | None
    look_up_table: LookUpTable | None
    widget: str
    answer_min_value: int | None
    answer_max_value: int | None
    answer_step_size: Decimal | None
    answer_min_length: int | None
    answer_max_length: int | None
    answer_match_pattern: str | None
    empty_answer_confirmation: bool | None
    empty_answer_confirmation_label: str
    empty_answer_confirmation_label_safe: str
    interactive_algorithms: list[str]

RawImageUploadSession ¤

Source code in gcapi/models.py
@dataclass
class RawImageUploadSession(BaseModel):
    pk: str
    creator: int | None
    status: str
    error_message: str | None
    image_set: list[str]
    api_url: str
    user_uploads: list[str] | None
    uploads: list[str]

RawImageUploadSessionRequest ¤

Source code in gcapi/models.py
@dataclass
class RawImageUploadSessionRequest(BaseModel):
    creator: int | None
    error_message: str | None
    user_uploads: list[str] | None
    archive: str | None
    answer: str | None
    interface: str | None
    archive_item: str | None
    display_set: str | None
    uploads: list[str]

ReaderStudy ¤

Source code in gcapi/models.py
@dataclass
class ReaderStudy(BaseModel):
    api_url: str
    url: str
    slug: str
    logo: str
    description: str | None
    help_text: str
    help_text_safe: str
    pk: str
    questions: list[Question]
    title: str
    title_safe: str
    is_educational: bool | None
    instant_verification: bool | None
    has_ground_truth: bool
    allow_answer_modification: bool | None
    enable_autosaving: bool | None
    allow_case_navigation: bool | None
    allow_show_all_annotations: bool | None
    roll_over_answers_for_n_cases: int | None
    end_of_study_text_safe: str

Session ¤

Source code in gcapi/models.py
@dataclass
class Session(BaseModel):
    pk: str
    status: str

SimpleImage ¤

Source code in gcapi/models.py
@dataclass
class SimpleImage(BaseModel):
    pk: str
    name: str

StatusEnum ¤

Source code in gcapi/models.py
class StatusEnum(Enum):
    Succeeded = "Succeeded"
    Failed = "Failed"

StereoscopicChoiceEnum ¤

Source code in gcapi/models.py
class StereoscopicChoiceEnum(Enum):
    L = "L"
    R = "R"
    U = "U"

Submission ¤

Source code in gcapi/models.py
@dataclass
class Submission(BaseModel):
    pk: str
    phase: Phase
    created: str
    creator: User
    comment: str | None
    predictions_file: str | None
    supplementary_file: str | None
    supplementary_url: str | None
    algorithm_image: str

SubmissionRequest ¤

Source code in gcapi/models.py
@dataclass
class SubmissionRequest(BaseModel):
    phase: PhaseRequest
    creator: UserRequest
    comment: str | None
    predictions_file: bytes | None
    supplementary_file: bytes | None
    supplementary_url: str | None

Timezone ¤

Source code in gcapi/models.py
@dataclass
class Timezone(BaseModel):
    timezone: TimezoneEnum

TimezoneEnum ¤

Source code in gcapi/models.py
 699
 700
 701
 702
 703
 704
 705
 706
 707
 708
 709
 710
 711
 712
 713
 714
 715
 716
 717
 718
 719
 720
 721
 722
 723
 724
 725
 726
 727
 728
 729
 730
 731
 732
 733
 734
 735
 736
 737
 738
 739
 740
 741
 742
 743
 744
 745
 746
 747
 748
 749
 750
 751
 752
 753
 754
 755
 756
 757
 758
 759
 760
 761
 762
 763
 764
 765
 766
 767
 768
 769
 770
 771
 772
 773
 774
 775
 776
 777
 778
 779
 780
 781
 782
 783
 784
 785
 786
 787
 788
 789
 790
 791
 792
 793
 794
 795
 796
 797
 798
 799
 800
 801
 802
 803
 804
 805
 806
 807
 808
 809
 810
 811
 812
 813
 814
 815
 816
 817
 818
 819
 820
 821
 822
 823
 824
 825
 826
 827
 828
 829
 830
 831
 832
 833
 834
 835
 836
 837
 838
 839
 840
 841
 842
 843
 844
 845
 846
 847
 848
 849
 850
 851
 852
 853
 854
 855
 856
 857
 858
 859
 860
 861
 862
 863
 864
 865
 866
 867
 868
 869
 870
 871
 872
 873
 874
 875
 876
 877
 878
 879
 880
 881
 882
 883
 884
 885
 886
 887
 888
 889
 890
 891
 892
 893
 894
 895
 896
 897
 898
 899
 900
 901
 902
 903
 904
 905
 906
 907
 908
 909
 910
 911
 912
 913
 914
 915
 916
 917
 918
 919
 920
 921
 922
 923
 924
 925
 926
 927
 928
 929
 930
 931
 932
 933
 934
 935
 936
 937
 938
 939
 940
 941
 942
 943
 944
 945
 946
 947
 948
 949
 950
 951
 952
 953
 954
 955
 956
 957
 958
 959
 960
 961
 962
 963
 964
 965
 966
 967
 968
 969
 970
 971
 972
 973
 974
 975
 976
 977
 978
 979
 980
 981
 982
 983
 984
 985
 986
 987
 988
 989
 990
 991
 992
 993
 994
 995
 996
 997
 998
 999
1000
1001
1002
1003
1004
1005
1006
1007
1008
1009
1010
1011
1012
1013
1014
1015
1016
1017
1018
1019
1020
1021
1022
1023
1024
1025
1026
1027
1028
1029
1030
1031
1032
1033
1034
1035
1036
1037
1038
1039
1040
1041
1042
1043
1044
1045
1046
1047
1048
1049
1050
1051
1052
1053
1054
1055
1056
1057
1058
1059
1060
1061
1062
1063
1064
1065
1066
1067
1068
1069
1070
1071
1072
1073
1074
1075
1076
1077
1078
1079
1080
1081
1082
1083
1084
1085
1086
1087
1088
1089
1090
1091
1092
1093
1094
1095
1096
1097
1098
1099
1100
1101
1102
1103
1104
1105
1106
1107
1108
1109
1110
1111
1112
1113
1114
1115
1116
1117
1118
1119
1120
1121
1122
1123
1124
1125
1126
1127
1128
1129
1130
1131
1132
1133
1134
1135
1136
1137
1138
1139
1140
1141
1142
1143
1144
1145
1146
1147
1148
1149
1150
1151
1152
1153
1154
1155
1156
1157
1158
1159
1160
1161
1162
1163
1164
1165
1166
1167
1168
1169
1170
1171
1172
1173
1174
1175
1176
1177
1178
1179
1180
1181
1182
1183
1184
1185
1186
1187
1188
1189
1190
1191
1192
1193
1194
1195
1196
1197
1198
1199
1200
1201
1202
1203
1204
1205
1206
1207
1208
1209
1210
1211
1212
1213
1214
1215
1216
1217
1218
1219
1220
1221
1222
1223
1224
1225
1226
1227
1228
1229
1230
1231
1232
1233
1234
1235
1236
1237
1238
1239
1240
1241
1242
1243
1244
1245
1246
1247
1248
1249
1250
1251
1252
1253
1254
1255
1256
1257
1258
1259
1260
1261
1262
1263
1264
1265
1266
1267
1268
1269
1270
1271
1272
1273
1274
1275
1276
1277
1278
1279
1280
1281
1282
1283
1284
1285
1286
1287
1288
1289
1290
1291
1292
1293
1294
1295
1296
1297
class TimezoneEnum(Enum):
    Africa_Abidjan = "Africa/Abidjan"
    Africa_Accra = "Africa/Accra"
    Africa_Addis_Ababa = "Africa/Addis_Ababa"
    Africa_Algiers = "Africa/Algiers"
    Africa_Asmara = "Africa/Asmara"
    Africa_Asmera = "Africa/Asmera"
    Africa_Bamako = "Africa/Bamako"
    Africa_Bangui = "Africa/Bangui"
    Africa_Banjul = "Africa/Banjul"
    Africa_Bissau = "Africa/Bissau"
    Africa_Blantyre = "Africa/Blantyre"
    Africa_Brazzaville = "Africa/Brazzaville"
    Africa_Bujumbura = "Africa/Bujumbura"
    Africa_Cairo = "Africa/Cairo"
    Africa_Casablanca = "Africa/Casablanca"
    Africa_Ceuta = "Africa/Ceuta"
    Africa_Conakry = "Africa/Conakry"
    Africa_Dakar = "Africa/Dakar"
    Africa_Dar_es_Salaam = "Africa/Dar_es_Salaam"
    Africa_Djibouti = "Africa/Djibouti"
    Africa_Douala = "Africa/Douala"
    Africa_El_Aaiun = "Africa/El_Aaiun"
    Africa_Freetown = "Africa/Freetown"
    Africa_Gaborone = "Africa/Gaborone"
    Africa_Harare = "Africa/Harare"
    Africa_Johannesburg = "Africa/Johannesburg"
    Africa_Juba = "Africa/Juba"
    Africa_Kampala = "Africa/Kampala"
    Africa_Khartoum = "Africa/Khartoum"
    Africa_Kigali = "Africa/Kigali"
    Africa_Kinshasa = "Africa/Kinshasa"
    Africa_Lagos = "Africa/Lagos"
    Africa_Libreville = "Africa/Libreville"
    Africa_Lome = "Africa/Lome"
    Africa_Luanda = "Africa/Luanda"
    Africa_Lubumbashi = "Africa/Lubumbashi"
    Africa_Lusaka = "Africa/Lusaka"
    Africa_Malabo = "Africa/Malabo"
    Africa_Maputo = "Africa/Maputo"
    Africa_Maseru = "Africa/Maseru"
    Africa_Mbabane = "Africa/Mbabane"
    Africa_Mogadishu = "Africa/Mogadishu"
    Africa_Monrovia = "Africa/Monrovia"
    Africa_Nairobi = "Africa/Nairobi"
    Africa_Ndjamena = "Africa/Ndjamena"
    Africa_Niamey = "Africa/Niamey"
    Africa_Nouakchott = "Africa/Nouakchott"
    Africa_Ouagadougou = "Africa/Ouagadougou"
    Africa_Porto_Novo = "Africa/Porto-Novo"
    Africa_Sao_Tome = "Africa/Sao_Tome"
    Africa_Timbuktu = "Africa/Timbuktu"
    Africa_Tripoli = "Africa/Tripoli"
    Africa_Tunis = "Africa/Tunis"
    Africa_Windhoek = "Africa/Windhoek"
    America_Adak = "America/Adak"
    America_Anchorage = "America/Anchorage"
    America_Anguilla = "America/Anguilla"
    America_Antigua = "America/Antigua"
    America_Araguaina = "America/Araguaina"
    America_Argentina_Buenos_Aires = "America/Argentina/Buenos_Aires"
    America_Argentina_Catamarca = "America/Argentina/Catamarca"
    America_Argentina_ComodRivadavia = "America/Argentina/ComodRivadavia"
    America_Argentina_Cordoba = "America/Argentina/Cordoba"
    America_Argentina_Jujuy = "America/Argentina/Jujuy"
    America_Argentina_La_Rioja = "America/Argentina/La_Rioja"
    America_Argentina_Mendoza = "America/Argentina/Mendoza"
    America_Argentina_Rio_Gallegos = "America/Argentina/Rio_Gallegos"
    America_Argentina_Salta = "America/Argentina/Salta"
    America_Argentina_San_Juan = "America/Argentina/San_Juan"
    America_Argentina_San_Luis = "America/Argentina/San_Luis"
    America_Argentina_Tucuman = "America/Argentina/Tucuman"
    America_Argentina_Ushuaia = "America/Argentina/Ushuaia"
    America_Aruba = "America/Aruba"
    America_Asuncion = "America/Asuncion"
    America_Atikokan = "America/Atikokan"
    America_Atka = "America/Atka"
    America_Bahia = "America/Bahia"
    America_Bahia_Banderas = "America/Bahia_Banderas"
    America_Barbados = "America/Barbados"
    America_Belem = "America/Belem"
    America_Belize = "America/Belize"
    America_Blanc_Sablon = "America/Blanc-Sablon"
    America_Boa_Vista = "America/Boa_Vista"
    America_Bogota = "America/Bogota"
    America_Boise = "America/Boise"
    America_Buenos_Aires = "America/Buenos_Aires"
    America_Cambridge_Bay = "America/Cambridge_Bay"
    America_Campo_Grande = "America/Campo_Grande"
    America_Cancun = "America/Cancun"
    America_Caracas = "America/Caracas"
    America_Catamarca = "America/Catamarca"
    America_Cayenne = "America/Cayenne"
    America_Cayman = "America/Cayman"
    America_Chicago = "America/Chicago"
    America_Chihuahua = "America/Chihuahua"
    America_Ciudad_Juarez = "America/Ciudad_Juarez"
    America_Coral_Harbour = "America/Coral_Harbour"
    America_Cordoba = "America/Cordoba"
    America_Costa_Rica = "America/Costa_Rica"
    America_Coyhaique = "America/Coyhaique"
    America_Creston = "America/Creston"
    America_Cuiaba = "America/Cuiaba"
    America_Curacao = "America/Curacao"
    America_Danmarkshavn = "America/Danmarkshavn"
    America_Dawson = "America/Dawson"
    America_Dawson_Creek = "America/Dawson_Creek"
    America_Denver = "America/Denver"
    America_Detroit = "America/Detroit"
    America_Dominica = "America/Dominica"
    America_Edmonton = "America/Edmonton"
    America_Eirunepe = "America/Eirunepe"
    America_El_Salvador = "America/El_Salvador"
    America_Ensenada = "America/Ensenada"
    America_Fort_Nelson = "America/Fort_Nelson"
    America_Fort_Wayne = "America/Fort_Wayne"
    America_Fortaleza = "America/Fortaleza"
    America_Glace_Bay = "America/Glace_Bay"
    America_Godthab = "America/Godthab"
    America_Goose_Bay = "America/Goose_Bay"
    America_Grand_Turk = "America/Grand_Turk"
    America_Grenada = "America/Grenada"
    America_Guadeloupe = "America/Guadeloupe"
    America_Guatemala = "America/Guatemala"
    America_Guayaquil = "America/Guayaquil"
    America_Guyana = "America/Guyana"
    America_Halifax = "America/Halifax"
    America_Havana = "America/Havana"
    America_Hermosillo = "America/Hermosillo"
    America_Indiana_Indianapolis = "America/Indiana/Indianapolis"
    America_Indiana_Knox = "America/Indiana/Knox"
    America_Indiana_Marengo = "America/Indiana/Marengo"
    America_Indiana_Petersburg = "America/Indiana/Petersburg"
    America_Indiana_Tell_City = "America/Indiana/Tell_City"
    America_Indiana_Vevay = "America/Indiana/Vevay"
    America_Indiana_Vincennes = "America/Indiana/Vincennes"
    America_Indiana_Winamac = "America/Indiana/Winamac"
    America_Indianapolis = "America/Indianapolis"
    America_Inuvik = "America/Inuvik"
    America_Iqaluit = "America/Iqaluit"
    America_Jamaica = "America/Jamaica"
    America_Jujuy = "America/Jujuy"
    America_Juneau = "America/Juneau"
    America_Kentucky_Louisville = "America/Kentucky/Louisville"
    America_Kentucky_Monticello = "America/Kentucky/Monticello"
    America_Knox_IN = "America/Knox_IN"
    America_Kralendijk = "America/Kralendijk"
    America_La_Paz = "America/La_Paz"
    America_Lima = "America/Lima"
    America_Los_Angeles = "America/Los_Angeles"
    America_Louisville = "America/Louisville"
    America_Lower_Princes = "America/Lower_Princes"
    America_Maceio = "America/Maceio"
    America_Managua = "America/Managua"
    America_Manaus = "America/Manaus"
    America_Marigot = "America/Marigot"
    America_Martinique = "America/Martinique"
    America_Matamoros = "America/Matamoros"
    America_Mazatlan = "America/Mazatlan"
    America_Mendoza = "America/Mendoza"
    America_Menominee = "America/Menominee"
    America_Merida = "America/Merida"
    America_Metlakatla = "America/Metlakatla"
    America_Mexico_City = "America/Mexico_City"
    America_Miquelon = "America/Miquelon"
    America_Moncton = "America/Moncton"
    America_Monterrey = "America/Monterrey"
    America_Montevideo = "America/Montevideo"
    America_Montreal = "America/Montreal"
    America_Montserrat = "America/Montserrat"
    America_Nassau = "America/Nassau"
    America_New_York = "America/New_York"
    America_Nipigon = "America/Nipigon"
    America_Nome = "America/Nome"
    America_Noronha = "America/Noronha"
    America_North_Dakota_Beulah = "America/North_Dakota/Beulah"
    America_North_Dakota_Center = "America/North_Dakota/Center"
    America_North_Dakota_New_Salem = "America/North_Dakota/New_Salem"
    America_Nuuk = "America/Nuuk"
    America_Ojinaga = "America/Ojinaga"
    America_Panama = "America/Panama"
    America_Pangnirtung = "America/Pangnirtung"
    America_Paramaribo = "America/Paramaribo"
    America_Phoenix = "America/Phoenix"
    America_Port_au_Prince = "America/Port-au-Prince"
    America_Port_of_Spain = "America/Port_of_Spain"
    America_Porto_Acre = "America/Porto_Acre"
    America_Porto_Velho = "America/Porto_Velho"
    America_Puerto_Rico = "America/Puerto_Rico"
    America_Punta_Arenas = "America/Punta_Arenas"
    America_Rainy_River = "America/Rainy_River"
    America_Rankin_Inlet = "America/Rankin_Inlet"
    America_Recife = "America/Recife"
    America_Regina = "America/Regina"
    America_Resolute = "America/Resolute"
    America_Rio_Branco = "America/Rio_Branco"
    America_Rosario = "America/Rosario"
    America_Santa_Isabel = "America/Santa_Isabel"
    America_Santarem = "America/Santarem"
    America_Santiago = "America/Santiago"
    America_Santo_Domingo = "America/Santo_Domingo"
    America_Sao_Paulo = "America/Sao_Paulo"
    America_Scoresbysund = "America/Scoresbysund"
    America_Shiprock = "America/Shiprock"
    America_Sitka = "America/Sitka"
    America_St_Barthelemy = "America/St_Barthelemy"
    America_St_Johns = "America/St_Johns"
    America_St_Kitts = "America/St_Kitts"
    America_St_Lucia = "America/St_Lucia"
    America_St_Thomas = "America/St_Thomas"
    America_St_Vincent = "America/St_Vincent"
    America_Swift_Current = "America/Swift_Current"
    America_Tegucigalpa = "America/Tegucigalpa"
    America_Thule = "America/Thule"
    America_Thunder_Bay = "America/Thunder_Bay"
    America_Tijuana = "America/Tijuana"
    America_Toronto = "America/Toronto"
    America_Tortola = "America/Tortola"
    America_Vancouver = "America/Vancouver"
    America_Virgin = "America/Virgin"
    America_Whitehorse = "America/Whitehorse"
    America_Winnipeg = "America/Winnipeg"
    America_Yakutat = "America/Yakutat"
    America_Yellowknife = "America/Yellowknife"
    Antarctica_Casey = "Antarctica/Casey"
    Antarctica_Davis = "Antarctica/Davis"
    Antarctica_DumontDUrville = "Antarctica/DumontDUrville"
    Antarctica_Macquarie = "Antarctica/Macquarie"
    Antarctica_Mawson = "Antarctica/Mawson"
    Antarctica_McMurdo = "Antarctica/McMurdo"
    Antarctica_Palmer = "Antarctica/Palmer"
    Antarctica_Rothera = "Antarctica/Rothera"
    Antarctica_South_Pole = "Antarctica/South_Pole"
    Antarctica_Syowa = "Antarctica/Syowa"
    Antarctica_Troll = "Antarctica/Troll"
    Antarctica_Vostok = "Antarctica/Vostok"
    Arctic_Longyearbyen = "Arctic/Longyearbyen"
    Asia_Aden = "Asia/Aden"
    Asia_Almaty = "Asia/Almaty"
    Asia_Amman = "Asia/Amman"
    Asia_Anadyr = "Asia/Anadyr"
    Asia_Aqtau = "Asia/Aqtau"
    Asia_Aqtobe = "Asia/Aqtobe"
    Asia_Ashgabat = "Asia/Ashgabat"
    Asia_Ashkhabad = "Asia/Ashkhabad"
    Asia_Atyrau = "Asia/Atyrau"
    Asia_Baghdad = "Asia/Baghdad"
    Asia_Bahrain = "Asia/Bahrain"
    Asia_Baku = "Asia/Baku"
    Asia_Bangkok = "Asia/Bangkok"
    Asia_Barnaul = "Asia/Barnaul"
    Asia_Beirut = "Asia/Beirut"
    Asia_Bishkek = "Asia/Bishkek"
    Asia_Brunei = "Asia/Brunei"
    Asia_Calcutta = "Asia/Calcutta"
    Asia_Chita = "Asia/Chita"
    Asia_Choibalsan = "Asia/Choibalsan"
    Asia_Chongqing = "Asia/Chongqing"
    Asia_Chungking = "Asia/Chungking"
    Asia_Colombo = "Asia/Colombo"
    Asia_Dacca = "Asia/Dacca"
    Asia_Damascus = "Asia/Damascus"
    Asia_Dhaka = "Asia/Dhaka"
    Asia_Dili = "Asia/Dili"
    Asia_Dubai = "Asia/Dubai"
    Asia_Dushanbe = "Asia/Dushanbe"
    Asia_Famagusta = "Asia/Famagusta"
    Asia_Gaza = "Asia/Gaza"
    Asia_Harbin = "Asia/Harbin"
    Asia_Hebron = "Asia/Hebron"
    Asia_Ho_Chi_Minh = "Asia/Ho_Chi_Minh"
    Asia_Hong_Kong = "Asia/Hong_Kong"
    Asia_Hovd = "Asia/Hovd"
    Asia_Irkutsk = "Asia/Irkutsk"
    Asia_Istanbul = "Asia/Istanbul"
    Asia_Jakarta = "Asia/Jakarta"
    Asia_Jayapura = "Asia/Jayapura"
    Asia_Jerusalem = "Asia/Jerusalem"
    Asia_Kabul = "Asia/Kabul"
    Asia_Kamchatka = "Asia/Kamchatka"
    Asia_Karachi = "Asia/Karachi"
    Asia_Kashgar = "Asia/Kashgar"
    Asia_Kathmandu = "Asia/Kathmandu"
    Asia_Katmandu = "Asia/Katmandu"
    Asia_Khandyga = "Asia/Khandyga"
    Asia_Kolkata = "Asia/Kolkata"
    Asia_Krasnoyarsk = "Asia/Krasnoyarsk"
    Asia_Kuala_Lumpur = "Asia/Kuala_Lumpur"
    Asia_Kuching = "Asia/Kuching"
    Asia_Kuwait = "Asia/Kuwait"
    Asia_Macao = "Asia/Macao"
    Asia_Macau = "Asia/Macau"
    Asia_Magadan = "Asia/Magadan"
    Asia_Makassar = "Asia/Makassar"
    Asia_Manila = "Asia/Manila"
    Asia_Muscat = "Asia/Muscat"
    Asia_Nicosia = "Asia/Nicosia"
    Asia_Novokuznetsk = "Asia/Novokuznetsk"
    Asia_Novosibirsk = "Asia/Novosibirsk"
    Asia_Omsk = "Asia/Omsk"
    Asia_Oral = "Asia/Oral"
    Asia_Phnom_Penh = "Asia/Phnom_Penh"
    Asia_Pontianak = "Asia/Pontianak"
    Asia_Pyongyang = "Asia/Pyongyang"
    Asia_Qatar = "Asia/Qatar"
    Asia_Qostanay = "Asia/Qostanay"
    Asia_Qyzylorda = "Asia/Qyzylorda"
    Asia_Rangoon = "Asia/Rangoon"
    Asia_Riyadh = "Asia/Riyadh"
    Asia_Saigon = "Asia/Saigon"
    Asia_Sakhalin = "Asia/Sakhalin"
    Asia_Samarkand = "Asia/Samarkand"
    Asia_Seoul = "Asia/Seoul"
    Asia_Shanghai = "Asia/Shanghai"
    Asia_Singapore = "Asia/Singapore"
    Asia_Srednekolymsk = "Asia/Srednekolymsk"
    Asia_Taipei = "Asia/Taipei"
    Asia_Tashkent = "Asia/Tashkent"
    Asia_Tbilisi = "Asia/Tbilisi"
    Asia_Tehran = "Asia/Tehran"
    Asia_Tel_Aviv = "Asia/Tel_Aviv"
    Asia_Thimbu = "Asia/Thimbu"
    Asia_Thimphu = "Asia/Thimphu"
    Asia_Tokyo = "Asia/Tokyo"
    Asia_Tomsk = "Asia/Tomsk"
    Asia_Ujung_Pandang = "Asia/Ujung_Pandang"
    Asia_Ulaanbaatar = "Asia/Ulaanbaatar"
    Asia_Ulan_Bator = "Asia/Ulan_Bator"
    Asia_Urumqi = "Asia/Urumqi"
    Asia_Ust_Nera = "Asia/Ust-Nera"
    Asia_Vientiane = "Asia/Vientiane"
    Asia_Vladivostok = "Asia/Vladivostok"
    Asia_Yakutsk = "Asia/Yakutsk"
    Asia_Yangon = "Asia/Yangon"
    Asia_Yekaterinburg = "Asia/Yekaterinburg"
    Asia_Yerevan = "Asia/Yerevan"
    Atlantic_Azores = "Atlantic/Azores"
    Atlantic_Bermuda = "Atlantic/Bermuda"
    Atlantic_Canary = "Atlantic/Canary"
    Atlantic_Cape_Verde = "Atlantic/Cape_Verde"
    Atlantic_Faeroe = "Atlantic/Faeroe"
    Atlantic_Faroe = "Atlantic/Faroe"
    Atlantic_Jan_Mayen = "Atlantic/Jan_Mayen"
    Atlantic_Madeira = "Atlantic/Madeira"
    Atlantic_Reykjavik = "Atlantic/Reykjavik"
    Atlantic_South_Georgia = "Atlantic/South_Georgia"
    Atlantic_St_Helena = "Atlantic/St_Helena"
    Atlantic_Stanley = "Atlantic/Stanley"
    Australia_ACT = "Australia/ACT"
    Australia_Adelaide = "Australia/Adelaide"
    Australia_Brisbane = "Australia/Brisbane"
    Australia_Broken_Hill = "Australia/Broken_Hill"
    Australia_Canberra = "Australia/Canberra"
    Australia_Currie = "Australia/Currie"
    Australia_Darwin = "Australia/Darwin"
    Australia_Eucla = "Australia/Eucla"
    Australia_Hobart = "Australia/Hobart"
    Australia_LHI = "Australia/LHI"
    Australia_Lindeman = "Australia/Lindeman"
    Australia_Lord_Howe = "Australia/Lord_Howe"
    Australia_Melbourne = "Australia/Melbourne"
    Australia_NSW = "Australia/NSW"
    Australia_North = "Australia/North"
    Australia_Perth = "Australia/Perth"
    Australia_Queensland = "Australia/Queensland"
    Australia_South = "Australia/South"
    Australia_Sydney = "Australia/Sydney"
    Australia_Tasmania = "Australia/Tasmania"
    Australia_Victoria = "Australia/Victoria"
    Australia_West = "Australia/West"
    Australia_Yancowinna = "Australia/Yancowinna"
    Brazil_Acre = "Brazil/Acre"
    Brazil_DeNoronha = "Brazil/DeNoronha"
    Brazil_East = "Brazil/East"
    Brazil_West = "Brazil/West"
    CET = "CET"
    CST6CDT = "CST6CDT"
    Canada_Atlantic = "Canada/Atlantic"
    Canada_Central = "Canada/Central"
    Canada_Eastern = "Canada/Eastern"
    Canada_Mountain = "Canada/Mountain"
    Canada_Newfoundland = "Canada/Newfoundland"
    Canada_Pacific = "Canada/Pacific"
    Canada_Saskatchewan = "Canada/Saskatchewan"
    Canada_Yukon = "Canada/Yukon"
    Chile_Continental = "Chile/Continental"
    Chile_EasterIsland = "Chile/EasterIsland"
    Cuba = "Cuba"
    EET = "EET"
    EST = "EST"
    EST5EDT = "EST5EDT"
    Egypt = "Egypt"
    Eire = "Eire"
    Etc_GMT = "Etc/GMT"
    Etc_GMT_0 = "Etc/GMT+0"
    Etc_GMT_1 = "Etc/GMT+1"
    Etc_GMT_10 = "Etc/GMT+10"
    Etc_GMT_11 = "Etc/GMT+11"
    Etc_GMT_12 = "Etc/GMT+12"
    Etc_GMT_2 = "Etc/GMT+2"
    Etc_GMT_3 = "Etc/GMT+3"
    Etc_GMT_4 = "Etc/GMT+4"
    Etc_GMT_5 = "Etc/GMT+5"
    Etc_GMT_6 = "Etc/GMT+6"
    Etc_GMT_7 = "Etc/GMT+7"
    Etc_GMT_8 = "Etc/GMT+8"
    Etc_GMT_9 = "Etc/GMT+9"
    Etc_GMT_0_1 = "Etc/GMT-0"
    Etc_GMT_1_1 = "Etc/GMT-1"
    Etc_GMT_10_1 = "Etc/GMT-10"
    Etc_GMT_11_1 = "Etc/GMT-11"
    Etc_GMT_12_1 = "Etc/GMT-12"
    Etc_GMT_13 = "Etc/GMT-13"
    Etc_GMT_14 = "Etc/GMT-14"
    Etc_GMT_2_1 = "Etc/GMT-2"
    Etc_GMT_3_1 = "Etc/GMT-3"
    Etc_GMT_4_1 = "Etc/GMT-4"
    Etc_GMT_5_1 = "Etc/GMT-5"
    Etc_GMT_6_1 = "Etc/GMT-6"
    Etc_GMT_7_1 = "Etc/GMT-7"
    Etc_GMT_8_1 = "Etc/GMT-8"
    Etc_GMT_9_1 = "Etc/GMT-9"
    Etc_GMT0 = "Etc/GMT0"
    Etc_Greenwich = "Etc/Greenwich"
    Etc_UCT = "Etc/UCT"
    Etc_UTC = "Etc/UTC"
    Etc_Universal = "Etc/Universal"
    Etc_Zulu = "Etc/Zulu"
    Europe_Amsterdam = "Europe/Amsterdam"
    Europe_Andorra = "Europe/Andorra"
    Europe_Astrakhan = "Europe/Astrakhan"
    Europe_Athens = "Europe/Athens"
    Europe_Belfast = "Europe/Belfast"
    Europe_Belgrade = "Europe/Belgrade"
    Europe_Berlin = "Europe/Berlin"
    Europe_Bratislava = "Europe/Bratislava"
    Europe_Brussels = "Europe/Brussels"
    Europe_Bucharest = "Europe/Bucharest"
    Europe_Budapest = "Europe/Budapest"
    Europe_Busingen = "Europe/Busingen"
    Europe_Chisinau = "Europe/Chisinau"
    Europe_Copenhagen = "Europe/Copenhagen"
    Europe_Dublin = "Europe/Dublin"
    Europe_Gibraltar = "Europe/Gibraltar"
    Europe_Guernsey = "Europe/Guernsey"
    Europe_Helsinki = "Europe/Helsinki"
    Europe_Isle_of_Man = "Europe/Isle_of_Man"
    Europe_Istanbul = "Europe/Istanbul"
    Europe_Jersey = "Europe/Jersey"
    Europe_Kaliningrad = "Europe/Kaliningrad"
    Europe_Kiev = "Europe/Kiev"
    Europe_Kirov = "Europe/Kirov"
    Europe_Kyiv = "Europe/Kyiv"
    Europe_Lisbon = "Europe/Lisbon"
    Europe_Ljubljana = "Europe/Ljubljana"
    Europe_London = "Europe/London"
    Europe_Luxembourg = "Europe/Luxembourg"
    Europe_Madrid = "Europe/Madrid"
    Europe_Malta = "Europe/Malta"
    Europe_Mariehamn = "Europe/Mariehamn"
    Europe_Minsk = "Europe/Minsk"
    Europe_Monaco = "Europe/Monaco"
    Europe_Moscow = "Europe/Moscow"
    Europe_Nicosia = "Europe/Nicosia"
    Europe_Oslo = "Europe/Oslo"
    Europe_Paris = "Europe/Paris"
    Europe_Podgorica = "Europe/Podgorica"
    Europe_Prague = "Europe/Prague"
    Europe_Riga = "Europe/Riga"
    Europe_Rome = "Europe/Rome"
    Europe_Samara = "Europe/Samara"
    Europe_San_Marino = "Europe/San_Marino"
    Europe_Sarajevo = "Europe/Sarajevo"
    Europe_Saratov = "Europe/Saratov"
    Europe_Simferopol = "Europe/Simferopol"
    Europe_Skopje = "Europe/Skopje"
    Europe_Sofia = "Europe/Sofia"
    Europe_Stockholm = "Europe/Stockholm"
    Europe_Tallinn = "Europe/Tallinn"
    Europe_Tirane = "Europe/Tirane"
    Europe_Tiraspol = "Europe/Tiraspol"
    Europe_Ulyanovsk = "Europe/Ulyanovsk"
    Europe_Uzhgorod = "Europe/Uzhgorod"
    Europe_Vaduz = "Europe/Vaduz"
    Europe_Vatican = "Europe/Vatican"
    Europe_Vienna = "Europe/Vienna"
    Europe_Vilnius = "Europe/Vilnius"
    Europe_Volgograd = "Europe/Volgograd"
    Europe_Warsaw = "Europe/Warsaw"
    Europe_Zagreb = "Europe/Zagreb"
    Europe_Zaporozhye = "Europe/Zaporozhye"
    Europe_Zurich = "Europe/Zurich"
    Factory = "Factory"
    GB = "GB"
    GB_Eire = "GB-Eire"
    GMT = "GMT"
    GMT_0 = "GMT+0"
    GMT_0_1 = "GMT-0"
    GMT0 = "GMT0"
    Greenwich = "Greenwich"
    HST = "HST"
    Hongkong = "Hongkong"
    Iceland = "Iceland"
    Indian_Antananarivo = "Indian/Antananarivo"
    Indian_Chagos = "Indian/Chagos"
    Indian_Christmas = "Indian/Christmas"
    Indian_Cocos = "Indian/Cocos"
    Indian_Comoro = "Indian/Comoro"
    Indian_Kerguelen = "Indian/Kerguelen"
    Indian_Mahe = "Indian/Mahe"
    Indian_Maldives = "Indian/Maldives"
    Indian_Mauritius = "Indian/Mauritius"
    Indian_Mayotte = "Indian/Mayotte"
    Indian_Reunion = "Indian/Reunion"
    Iran = "Iran"
    Israel = "Israel"
    Jamaica = "Jamaica"
    Japan = "Japan"
    Kwajalein = "Kwajalein"
    Libya = "Libya"
    MET = "MET"
    MST = "MST"
    MST7MDT = "MST7MDT"
    Mexico_BajaNorte = "Mexico/BajaNorte"
    Mexico_BajaSur = "Mexico/BajaSur"
    Mexico_General = "Mexico/General"
    NZ = "NZ"
    NZ_CHAT = "NZ-CHAT"
    Navajo = "Navajo"
    PRC = "PRC"
    PST8PDT = "PST8PDT"
    Pacific_Apia = "Pacific/Apia"
    Pacific_Auckland = "Pacific/Auckland"
    Pacific_Bougainville = "Pacific/Bougainville"
    Pacific_Chatham = "Pacific/Chatham"
    Pacific_Chuuk = "Pacific/Chuuk"
    Pacific_Easter = "Pacific/Easter"
    Pacific_Efate = "Pacific/Efate"
    Pacific_Enderbury = "Pacific/Enderbury"
    Pacific_Fakaofo = "Pacific/Fakaofo"
    Pacific_Fiji = "Pacific/Fiji"
    Pacific_Funafuti = "Pacific/Funafuti"
    Pacific_Galapagos = "Pacific/Galapagos"
    Pacific_Gambier = "Pacific/Gambier"
    Pacific_Guadalcanal = "Pacific/Guadalcanal"
    Pacific_Guam = "Pacific/Guam"
    Pacific_Honolulu = "Pacific/Honolulu"
    Pacific_Johnston = "Pacific/Johnston"
    Pacific_Kanton = "Pacific/Kanton"
    Pacific_Kiritimati = "Pacific/Kiritimati"
    Pacific_Kosrae = "Pacific/Kosrae"
    Pacific_Kwajalein = "Pacific/Kwajalein"
    Pacific_Majuro = "Pacific/Majuro"
    Pacific_Marquesas = "Pacific/Marquesas"
    Pacific_Midway = "Pacific/Midway"
    Pacific_Nauru = "Pacific/Nauru"
    Pacific_Niue = "Pacific/Niue"
    Pacific_Norfolk = "Pacific/Norfolk"
    Pacific_Noumea = "Pacific/Noumea"
    Pacific_Pago_Pago = "Pacific/Pago_Pago"
    Pacific_Palau = "Pacific/Palau"
    Pacific_Pitcairn = "Pacific/Pitcairn"
    Pacific_Pohnpei = "Pacific/Pohnpei"
    Pacific_Ponape = "Pacific/Ponape"
    Pacific_Port_Moresby = "Pacific/Port_Moresby"
    Pacific_Rarotonga = "Pacific/Rarotonga"
    Pacific_Saipan = "Pacific/Saipan"
    Pacific_Samoa = "Pacific/Samoa"
    Pacific_Tahiti = "Pacific/Tahiti"
    Pacific_Tarawa = "Pacific/Tarawa"
    Pacific_Tongatapu = "Pacific/Tongatapu"
    Pacific_Truk = "Pacific/Truk"
    Pacific_Wake = "Pacific/Wake"
    Pacific_Wallis = "Pacific/Wallis"
    Pacific_Yap = "Pacific/Yap"
    Poland = "Poland"
    Portugal = "Portugal"
    ROC = "ROC"
    ROK = "ROK"
    Singapore = "Singapore"
    Turkey = "Turkey"
    UCT = "UCT"
    US_Alaska = "US/Alaska"
    US_Aleutian = "US/Aleutian"
    US_Arizona = "US/Arizona"
    US_Central = "US/Central"
    US_East_Indiana = "US/East-Indiana"
    US_Eastern = "US/Eastern"
    US_Hawaii = "US/Hawaii"
    US_Indiana_Starke = "US/Indiana-Starke"
    US_Michigan = "US/Michigan"
    US_Mountain = "US/Mountain"
    US_Pacific = "US/Pacific"
    US_Samoa = "US/Samoa"
    UTC = "UTC"
    Universal = "Universal"
    W_SU = "W-SU"
    WET = "WET"
    Zulu = "Zulu"

TimezoneRequest ¤

Source code in gcapi/models.py
@dataclass
class TimezoneRequest(BaseModel):
    timezone: TimezoneEnum

User ¤

Source code in gcapi/models.py
@dataclass
class User(BaseModel):
    username: str

UserProfile ¤

Source code in gcapi/models.py
@dataclass
class UserProfile(BaseModel):
    user: User
    mugshot: str
    institution: str
    department: str
    location: LocationEnum
    website: str | None

UserRequest ¤

Source code in gcapi/models.py
@dataclass
class UserRequest(BaseModel):
    username: str

UserUpload ¤

Source code in gcapi/models.py
@dataclass
class UserUpload(BaseModel):
    pk: str
    created: str
    filename: str
    key: str
    s3_upload_id: str
    status: str
    api_url: str

UserUploadComplete ¤

Source code in gcapi/models.py
@dataclass
class UserUploadComplete(BaseModel):
    pk: str
    created: str
    filename: str
    key: str
    s3_upload_id: str
    status: str
    api_url: str

UserUploadCreate ¤

Source code in gcapi/models.py
@dataclass
class UserUploadCreate(BaseModel):
    pk: str
    created: str
    filename: str
    key: str
    s3_upload_id: str
    status: str
    api_url: str

UserUploadCreateRequest ¤

Source code in gcapi/models.py
@dataclass
class UserUploadCreateRequest(BaseModel):
    filename: str

UserUploadParts ¤

Source code in gcapi/models.py
@dataclass
class UserUploadParts(BaseModel):
    pk: str
    created: str
    filename: str
    key: str
    s3_upload_id: str
    status: str
    api_url: str
    parts: list[Part]

UserUploadPresignedURLs ¤

Source code in gcapi/models.py
@dataclass
class UserUploadPresignedURLs(BaseModel):
    pk: str
    created: str
    filename: str
    key: str
    s3_upload_id: str
    status: str
    api_url: str
    presigned_urls: dict[str, str]

WindowPreset ¤

Source code in gcapi/models.py
@dataclass
class WindowPreset(BaseModel):
    pk: int
    slug: str
    title: str
    description: str | None
    center: int | None
    width: int | None
    lower_percentile: int | None
    upper_percentile: int | None

Workstation ¤

Source code in gcapi/models.py
@dataclass
class Workstation(BaseModel):
    pk: str
    title: str
    slug: str
    url: str

WorkstationConfig ¤

Source code in gcapi/models.py
@dataclass
class WorkstationConfig(BaseModel):
    pk: str
    slug: str
    title: str
    description: str | None
    created: str
    modified: str
    creator: str
    image_context: str
    window_presets: list[WindowPreset]
    default_window_preset: WindowPreset
    default_slab_thickness_mm: float
    default_slab_render_method: str
    default_orientation: str
    default_overlay_alpha: float
    overlay_luts: list[LookUpTable]
    default_overlay_lut: LookUpTable
    default_overlay_interpolation: str
    default_image_interpolation: str
    default_limit_view_area_to_image_volume: bool | None
    ghosting_slice_depth: int | None
    overlay_segments: Any | None
    key_bindings: Any | None
    default_zoom_scale: float
    default_brush_size: Decimal | None
    default_annotation_color: str | None
    default_annotation_line_width: int | None
    show_image_info_plugin: bool | None
    show_display_plugin: bool | None
    show_image_switcher_plugin: bool | None
    show_algorithm_output_plugin: bool | None
    show_overlay_plugin: bool | None
    show_annotation_statistics_plugin: bool | None
    show_swivel_tool: bool | None
    show_invert_tool: bool | None
    show_flip_tool: bool | None
    show_window_level_tool: bool | None
    show_reset_tool: bool | None
    show_overlay_selection_tool: bool | None
    show_lut_selection_tool: bool | None
    show_annotation_counter_tool: bool | None
    enabled_preprocessors: list[str]
    auto_jump_center_of_gravity: bool | None
    link_images: bool | None
    link_panning: bool | None
    link_zooming: bool | None
    link_slicing: bool | None
    link_orienting: bool | None
    link_windowing: bool | None
    link_inverting: bool | None
    link_flipping: bool | None
    point_bounding_box_size_mm: float