{
  "description": "Space is the Schema for the Spaces API",
  "properties": {
    "apiVersion": {
      "description": "APIVersion defines the versioned schema of this representation of an object.\nServers should convert recognized schemas to the latest internal value, and\nmay reject unrecognized values.\nMore info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources",
      "type": "string"
    },
    "kind": {
      "description": "Kind is a string value representing the REST resource this object represents.\nServers may infer this from the endpoint the client submits requests to.\nCannot be updated.\nIn CamelCase.\nMore info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds",
      "type": "string"
    },
    "metadata": {
      "type": "object"
    },
    "spec": {
      "description": "SpaceSpec defines the desired state of Space.",
      "properties": {
        "domainID": {
          "description": "The ID of the associated domain.\n\nRegex Pattern: `^d-(-*[a-z0-9]){1,61}$`",
          "type": "string"
        },
        "ownershipSettings": {
          "description": "A collection of ownership settings.",
          "properties": {
            "ownerUserProfileName": {
              "type": "string"
            }
          },
          "type": "object",
          "x-kubernetes-validations": [
            {
              "message": "Value is immutable once set",
              "rule": "self == oldSelf"
            }
          ],
          "additionalProperties": false
        },
        "spaceDisplayName": {
          "description": "The name of the space that appears in the SageMaker Studio UI.\n\nRegex Pattern: `^(?!\\s*$).+$`",
          "type": "string"
        },
        "spaceName": {
          "description": "The name of the space.\n\nRegex Pattern: `^[a-zA-Z0-9](-*[a-zA-Z0-9]){0,62}$`",
          "type": "string"
        },
        "spaceSettings": {
          "description": "A collection of space settings.",
          "properties": {
            "appType": {
              "type": "string"
            },
            "codeEditorAppSettings": {
              "description": "The application settings for a Code Editor space.",
              "properties": {
                "appLifecycleManagement": {
                  "description": "Settings that are used to configure and manage the lifecycle of Amazon SageMaker\nStudio applications in a space.",
                  "properties": {
                    "idleSettings": {
                      "description": "Settings related to idle shutdown of Studio applications in a space.",
                      "properties": {
                        "idleTimeoutInMinutes": {
                          "format": "int64",
                          "type": "integer"
                        }
                      },
                      "type": "object",
                      "additionalProperties": false
                    }
                  },
                  "type": "object",
                  "additionalProperties": false
                },
                "defaultResourceSpec": {
                  "description": "Specifies the ARN's of a SageMaker AI image and SageMaker AI image version,\nand the instance type that the version runs on.\n\nWhen both SageMakerImageVersionArn and SageMakerImageArn are passed, SageMakerImageVersionArn\nis used. Any updates to SageMakerImageArn will not take effect if SageMakerImageVersionArn\nalready exists in the ResourceSpec because SageMakerImageVersionArn always\ntakes precedence. To clear the value set for SageMakerImageVersionArn, pass\nNone as the value.",
                  "properties": {
                    "instanceType": {
                      "type": "string"
                    },
                    "lifecycleConfigARN": {
                      "type": "string"
                    },
                    "sageMakerImageARN": {
                      "type": "string"
                    },
                    "sageMakerImageVersionARN": {
                      "type": "string"
                    },
                    "sageMakerImageVersionAlias": {
                      "type": "string"
                    }
                  },
                  "type": "object",
                  "additionalProperties": false
                }
              },
              "type": "object",
              "additionalProperties": false
            },
            "customFileSystems": {
              "items": {
                "description": "A file system, created by you, that you assign to a user profile or space\nfor an Amazon SageMaker AI Domain. Permitted users can access this file system\nin Amazon SageMaker AI Studio.",
                "properties": {
                  "efsFileSystem": {
                    "description": "A file system, created by you in Amazon EFS, that you assign to a user profile\nor space for an Amazon SageMaker AI Domain. Permitted users can access this\nfile system in Amazon SageMaker AI Studio.",
                    "properties": {
                      "fileSystemID": {
                        "type": "string"
                      }
                    },
                    "type": "object",
                    "additionalProperties": false
                  },
                  "fSxLustreFileSystem": {
                    "description": "A custom file system in Amazon FSx for Lustre.",
                    "properties": {
                      "fileSystemID": {
                        "type": "string"
                      }
                    },
                    "type": "object",
                    "additionalProperties": false
                  },
                  "s3FileSystem": {
                    "description": "A custom file system in Amazon S3. This is only supported in Amazon SageMaker\nUnified Studio.",
                    "properties": {
                      "s3URI": {
                        "type": "string"
                      }
                    },
                    "type": "object",
                    "additionalProperties": false
                  }
                },
                "type": "object",
                "additionalProperties": false
              },
              "type": "array"
            },
            "jupyterLabAppSettings": {
              "description": "The settings for the JupyterLab application within a space.",
              "properties": {
                "appLifecycleManagement": {
                  "description": "Settings that are used to configure and manage the lifecycle of Amazon SageMaker\nStudio applications in a space.",
                  "properties": {
                    "idleSettings": {
                      "description": "Settings related to idle shutdown of Studio applications in a space.",
                      "properties": {
                        "idleTimeoutInMinutes": {
                          "format": "int64",
                          "type": "integer"
                        }
                      },
                      "type": "object",
                      "additionalProperties": false
                    }
                  },
                  "type": "object",
                  "additionalProperties": false
                },
                "codeRepositories": {
                  "items": {
                    "description": "A Git repository that SageMaker AI automatically displays to users for cloning\nin the JupyterServer application.",
                    "properties": {
                      "repositoryURL": {
                        "type": "string"
                      }
                    },
                    "type": "object",
                    "additionalProperties": false
                  },
                  "type": "array"
                },
                "defaultResourceSpec": {
                  "description": "Specifies the ARN's of a SageMaker AI image and SageMaker AI image version,\nand the instance type that the version runs on.\n\nWhen both SageMakerImageVersionArn and SageMakerImageArn are passed, SageMakerImageVersionArn\nis used. Any updates to SageMakerImageArn will not take effect if SageMakerImageVersionArn\nalready exists in the ResourceSpec because SageMakerImageVersionArn always\ntakes precedence. To clear the value set for SageMakerImageVersionArn, pass\nNone as the value.",
                  "properties": {
                    "instanceType": {
                      "type": "string"
                    },
                    "lifecycleConfigARN": {
                      "type": "string"
                    },
                    "sageMakerImageARN": {
                      "type": "string"
                    },
                    "sageMakerImageVersionARN": {
                      "type": "string"
                    },
                    "sageMakerImageVersionAlias": {
                      "type": "string"
                    }
                  },
                  "type": "object",
                  "additionalProperties": false
                }
              },
              "type": "object",
              "additionalProperties": false
            },
            "jupyterServerAppSettings": {
              "description": "The JupyterServer app settings.",
              "properties": {
                "codeRepositories": {
                  "items": {
                    "description": "A Git repository that SageMaker AI automatically displays to users for cloning\nin the JupyterServer application.",
                    "properties": {
                      "repositoryURL": {
                        "type": "string"
                      }
                    },
                    "type": "object",
                    "additionalProperties": false
                  },
                  "type": "array"
                },
                "defaultResourceSpec": {
                  "description": "Specifies the ARN's of a SageMaker AI image and SageMaker AI image version,\nand the instance type that the version runs on.\n\nWhen both SageMakerImageVersionArn and SageMakerImageArn are passed, SageMakerImageVersionArn\nis used. Any updates to SageMakerImageArn will not take effect if SageMakerImageVersionArn\nalready exists in the ResourceSpec because SageMakerImageVersionArn always\ntakes precedence. To clear the value set for SageMakerImageVersionArn, pass\nNone as the value.",
                  "properties": {
                    "instanceType": {
                      "type": "string"
                    },
                    "lifecycleConfigARN": {
                      "type": "string"
                    },
                    "sageMakerImageARN": {
                      "type": "string"
                    },
                    "sageMakerImageVersionARN": {
                      "type": "string"
                    },
                    "sageMakerImageVersionAlias": {
                      "type": "string"
                    }
                  },
                  "type": "object",
                  "additionalProperties": false
                },
                "lifecycleConfigARNs": {
                  "items": {
                    "type": "string"
                  },
                  "type": "array"
                }
              },
              "type": "object",
              "additionalProperties": false
            },
            "kernelGatewayAppSettings": {
              "description": "The KernelGateway app settings.",
              "properties": {
                "customImages": {
                  "items": {
                    "description": "A custom SageMaker AI image. For more information, see Bring your own SageMaker\nAI image (https://docs.aws.amazon.com/sagemaker/latest/dg/studio-byoi.html).",
                    "properties": {
                      "appImageConfigName": {
                        "type": "string"
                      },
                      "imageName": {
                        "type": "string"
                      },
                      "imageVersionNumber": {
                        "format": "int64",
                        "type": "integer"
                      }
                    },
                    "type": "object",
                    "additionalProperties": false
                  },
                  "type": "array"
                },
                "defaultResourceSpec": {
                  "description": "Specifies the ARN's of a SageMaker AI image and SageMaker AI image version,\nand the instance type that the version runs on.\n\nWhen both SageMakerImageVersionArn and SageMakerImageArn are passed, SageMakerImageVersionArn\nis used. Any updates to SageMakerImageArn will not take effect if SageMakerImageVersionArn\nalready exists in the ResourceSpec because SageMakerImageVersionArn always\ntakes precedence. To clear the value set for SageMakerImageVersionArn, pass\nNone as the value.",
                  "properties": {
                    "instanceType": {
                      "type": "string"
                    },
                    "lifecycleConfigARN": {
                      "type": "string"
                    },
                    "sageMakerImageARN": {
                      "type": "string"
                    },
                    "sageMakerImageVersionARN": {
                      "type": "string"
                    },
                    "sageMakerImageVersionAlias": {
                      "type": "string"
                    }
                  },
                  "type": "object",
                  "additionalProperties": false
                },
                "lifecycleConfigARNs": {
                  "items": {
                    "type": "string"
                  },
                  "type": "array"
                }
              },
              "type": "object",
              "additionalProperties": false
            },
            "remoteAccess": {
              "type": "string"
            },
            "spaceManagedResources": {
              "type": "string"
            },
            "spaceStorageSettings": {
              "description": "The storage settings for a space.",
              "properties": {
                "ebsStorageSettings": {
                  "description": "A collection of EBS storage settings that apply to both private and shared\nspaces.",
                  "properties": {
                    "ebsVolumeSizeInGb": {
                      "format": "int64",
                      "type": "integer"
                    }
                  },
                  "type": "object",
                  "additionalProperties": false
                }
              },
              "type": "object",
              "additionalProperties": false
            }
          },
          "type": "object",
          "additionalProperties": false
        },
        "spaceSharingSettings": {
          "description": "A collection of space sharing settings.",
          "properties": {
            "sharingType": {
              "type": "string"
            }
          },
          "type": "object",
          "x-kubernetes-validations": [
            {
              "message": "Value is immutable once set",
              "rule": "self == oldSelf"
            }
          ],
          "additionalProperties": false
        },
        "tags": {
          "description": "Tags to associated with the space. Each tag consists of a key and an optional\nvalue. Tag keys must be unique for each resource. Tags are searchable using\nthe Search API.",
          "items": {
            "description": "A tag object that consists of a key and an optional value, used to manage\nmetadata for SageMaker Amazon Web Services resources.\n\nYou can add tags to notebook instances, training jobs, hyperparameter tuning\njobs, batch transform jobs, models, labeling jobs, work teams, endpoint configurations,\nand endpoints. For more information on adding tags to SageMaker resources,\nsee AddTags (https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_AddTags.html).\n\nFor more information on adding metadata to your Amazon Web Services resources\nwith tagging, see Tagging Amazon Web Services resources (https://docs.aws.amazon.com/general/latest/gr/aws_tagging.html).\nFor advice on best practices for managing Amazon Web Services resources with\ntagging, see Tagging Best Practices: Implement an Effective Amazon Web Services\nResource Tagging Strategy (https://d1.awsstatic.com/whitepapers/aws-tagging-best-practices.pdf).",
            "properties": {
              "key": {
                "type": "string"
              },
              "value": {
                "type": "string"
              }
            },
            "type": "object",
            "additionalProperties": false
          },
          "type": "array"
        }
      },
      "required": [
        "domainID",
        "spaceName"
      ],
      "type": "object",
      "additionalProperties": false
    },
    "status": {
      "description": "SpaceStatus defines the observed state of Space",
      "properties": {
        "ackResourceMetadata": {
          "description": "All CRs managed by ACK have a common `Status.ACKResourceMetadata` member\nthat is used to contain resource sync state, account ownership,\nconstructed ARN for the resource",
          "properties": {
            "arn": {
              "description": "ARN is the Amazon Resource Name for the resource. This is a\nglobally-unique identifier and is set only by the ACK service controller\nonce the controller has orchestrated the creation of the resource OR\nwhen it has verified that an \"adopted\" resource (a resource where the\nARN annotation was set by the Kubernetes user on the CR) exists and\nmatches the supplied CR's Spec field values.\nhttps://github.com/aws/aws-controllers-k8s/issues/270",
              "type": "string"
            },
            "ownerAccountID": {
              "description": "OwnerAccountID is the AWS Account ID of the account that owns the\nbackend AWS service API resource.",
              "type": "string"
            },
            "region": {
              "description": "Region is the AWS region in which the resource exists or will exist.",
              "type": "string"
            }
          },
          "required": [
            "ownerAccountID",
            "region"
          ],
          "type": "object",
          "additionalProperties": false
        },
        "conditions": {
          "description": "All CRs managed by ACK have a common `Status.Conditions` member that\ncontains a collection of `ackv1alpha1.Condition` objects that describe\nthe various terminal states of the CR and its backend AWS service API\nresource",
          "items": {
            "description": "Condition is the common struct used by all CRDs managed by ACK service\ncontrollers to indicate terminal states  of the CR and its backend AWS\nservice API resource",
            "properties": {
              "lastTransitionTime": {
                "description": "Last time the condition transitioned from one status to another.",
                "format": "date-time",
                "type": "string"
              },
              "message": {
                "description": "A human readable message indicating details about the transition.",
                "type": "string"
              },
              "reason": {
                "description": "The reason for the condition's last transition.",
                "type": "string"
              },
              "status": {
                "description": "Status of the condition, one of True, False, Unknown.",
                "type": "string"
              },
              "type": {
                "description": "Type is the type of the Condition",
                "type": "string"
              }
            },
            "required": [
              "status",
              "type"
            ],
            "type": "object",
            "additionalProperties": false
          },
          "type": "array"
        },
        "creationTime": {
          "description": "The creation time.",
          "format": "date-time",
          "type": "string"
        },
        "failureReason": {
          "description": "The failure reason.",
          "type": "string"
        },
        "homeEFSFileSystemUID": {
          "description": "The ID of the space's profile in the Amazon EFS volume.\n\nRegex Pattern: `^\\d+$`",
          "type": "string"
        },
        "status": {
          "description": "The status.",
          "type": "string"
        },
        "url": {
          "description": "Returns the URL of the space. If the space is created with Amazon Web Services\nIAM Identity Center (Successor to Amazon Web Services Single Sign-On) authentication,\nusers can navigate to the URL after appending the respective redirect parameter\nfor the application type to be federated through Amazon Web Services IAM\nIdentity Center.\n\nThe following application types are supported:\n\n   * Studio Classic: &redirect=JupyterServer\n\n   * JupyterLab: &redirect=JupyterLab\n\n   * Code Editor, based on Code-OSS, Visual Studio Code - Open Source: &redirect=CodeEditor",
          "type": "string"
        }
      },
      "type": "object",
      "additionalProperties": false
    }
  },
  "type": "object"
}
