{
  "description": "Endpoint is the Schema for the Endpoints 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": "EndpointSpec defines the desired state of Endpoint.\n\nA hosted endpoint for real-time inference.",
      "properties": {
        "deploymentConfig": {
          "description": "The deployment configuration for an endpoint, which contains the desired\ndeployment strategy and rollback configurations.",
          "properties": {
            "autoRollbackConfiguration": {
              "description": "Automatic rollback configuration for handling endpoint deployment failures\nand recovery.",
              "properties": {
                "alarms": {
                  "items": {
                    "description": "An Amazon CloudWatch alarm configured to monitor metrics on an endpoint.",
                    "properties": {
                      "alarmName": {
                        "type": "string"
                      }
                    },
                    "type": "object",
                    "additionalProperties": false
                  },
                  "type": "array"
                }
              },
              "type": "object",
              "additionalProperties": false
            },
            "blueGreenUpdatePolicy": {
              "description": "Update policy for a blue/green deployment. If this update policy is specified,\nSageMaker creates a new fleet during the deployment while maintaining the\nold fleet. SageMaker flips traffic to the new fleet according to the specified\ntraffic routing configuration. Only one update policy should be used in the\ndeployment configuration. If no update policy is specified, SageMaker uses\na blue/green deployment strategy with all at once traffic shifting by default.",
              "properties": {
                "maximumExecutionTimeoutInSeconds": {
                  "format": "int64",
                  "type": "integer"
                },
                "terminationWaitInSeconds": {
                  "format": "int64",
                  "type": "integer"
                },
                "trafficRoutingConfiguration": {
                  "description": "Defines the traffic routing strategy during an endpoint deployment to shift\ntraffic from the old fleet to the new fleet.",
                  "properties": {
                    "canarySize": {
                      "description": "Specifies the type and size of the endpoint capacity to activate for a blue/green\ndeployment, a rolling deployment, or a rollback strategy. You can specify\nyour batches as either instance count or the overall percentage or your fleet.\n\nFor a rollback strategy, if you don't specify the fields in this object,\nor if you set the Value to 100%, then SageMaker uses a blue/green rollback\nstrategy and rolls all traffic back to the blue fleet.",
                      "properties": {
                        "type_": {
                          "type": "string"
                        },
                        "value": {
                          "format": "int64",
                          "type": "integer"
                        }
                      },
                      "type": "object",
                      "additionalProperties": false
                    },
                    "linearStepSize": {
                      "description": "Specifies the type and size of the endpoint capacity to activate for a blue/green\ndeployment, a rolling deployment, or a rollback strategy. You can specify\nyour batches as either instance count or the overall percentage or your fleet.\n\nFor a rollback strategy, if you don't specify the fields in this object,\nor if you set the Value to 100%, then SageMaker uses a blue/green rollback\nstrategy and rolls all traffic back to the blue fleet.",
                      "properties": {
                        "type_": {
                          "type": "string"
                        },
                        "value": {
                          "format": "int64",
                          "type": "integer"
                        }
                      },
                      "type": "object",
                      "additionalProperties": false
                    },
                    "type_": {
                      "type": "string"
                    },
                    "waitIntervalInSeconds": {
                      "format": "int64",
                      "type": "integer"
                    }
                  },
                  "type": "object",
                  "additionalProperties": false
                }
              },
              "type": "object",
              "additionalProperties": false
            },
            "rollingUpdatePolicy": {
              "description": "Specifies a rolling deployment strategy for updating a SageMaker endpoint.",
              "properties": {
                "maximumBatchSize": {
                  "description": "Specifies the type and size of the endpoint capacity to activate for a blue/green\ndeployment, a rolling deployment, or a rollback strategy. You can specify\nyour batches as either instance count or the overall percentage or your fleet.\n\nFor a rollback strategy, if you don't specify the fields in this object,\nor if you set the Value to 100%, then SageMaker uses a blue/green rollback\nstrategy and rolls all traffic back to the blue fleet.",
                  "properties": {
                    "type_": {
                      "type": "string"
                    },
                    "value": {
                      "format": "int64",
                      "type": "integer"
                    }
                  },
                  "type": "object",
                  "additionalProperties": false
                },
                "maximumExecutionTimeoutInSeconds": {
                  "format": "int64",
                  "type": "integer"
                },
                "rollbackMaximumBatchSize": {
                  "description": "Specifies the type and size of the endpoint capacity to activate for a blue/green\ndeployment, a rolling deployment, or a rollback strategy. You can specify\nyour batches as either instance count or the overall percentage or your fleet.\n\nFor a rollback strategy, if you don't specify the fields in this object,\nor if you set the Value to 100%, then SageMaker uses a blue/green rollback\nstrategy and rolls all traffic back to the blue fleet.",
                  "properties": {
                    "type_": {
                      "type": "string"
                    },
                    "value": {
                      "format": "int64",
                      "type": "integer"
                    }
                  },
                  "type": "object",
                  "additionalProperties": false
                },
                "waitIntervalInSeconds": {
                  "format": "int64",
                  "type": "integer"
                }
              },
              "type": "object",
              "additionalProperties": false
            }
          },
          "type": "object",
          "additionalProperties": false
        },
        "endpointConfigName": {
          "description": "The name of an endpoint configuration. For more information, see CreateEndpointConfig\n(https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_CreateEndpointConfig.html).\n\nRegex Pattern: `^[a-zA-Z0-9](-*[a-zA-Z0-9]){0,62}$`",
          "type": "string"
        },
        "endpointName": {
          "description": "The name of the endpoint.The name must be unique within an Amazon Web Services\nRegion in your Amazon Web Services account. The name is case-insensitive\nin CreateEndpoint, but the case is preserved and must be matched in InvokeEndpoint\n(https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_runtime_InvokeEndpoint.html).\n\nRegex Pattern: `^[a-zA-Z0-9](-*[a-zA-Z0-9]){0,62}$`",
          "type": "string"
        },
        "tags": {
          "description": "An array of key-value pairs. You can use tags to categorize your Amazon Web\nServices resources in different ways, for example, by purpose, owner, or\nenvironment. For more information, see Tagging Amazon Web Services Resources\n(https://docs.aws.amazon.com/general/latest/gr/aws_tagging.html).",
          "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": [
        "endpointConfigName",
        "endpointName"
      ],
      "type": "object",
      "additionalProperties": false
    },
    "status": {
      "description": "EndpointStatus defines the observed state of Endpoint",
      "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": "A timestamp that shows when the endpoint was created.",
          "format": "date-time",
          "type": "string"
        },
        "endpointStatus": {
          "description": "The status of the endpoint.\n\n   * OutOfService: Endpoint is not available to take incoming requests.\n\n   * Creating: CreateEndpoint (https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_CreateEndpoint.html)\n   is executing.\n\n   * Updating: UpdateEndpoint (https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_UpdateEndpoint.html)\n   or UpdateEndpointWeightsAndCapacities (https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_UpdateEndpointWeightsAndCapacities.html)\n   is executing.\n\n   * SystemUpdating: Endpoint is undergoing maintenance and cannot be updated\n   or deleted or re-scaled until it has completed. This maintenance operation\n   does not change any customer-specified values such as VPC config, KMS\n   encryption, model, instance type, or instance count.\n\n   * RollingBack: Endpoint fails to scale up or down or change its variant\n   weight and is in the process of rolling back to its previous configuration.\n   Once the rollback completes, endpoint returns to an InService status.\n   This transitional status only applies to an endpoint that has autoscaling\n   enabled and is undergoing variant weight or capacity changes as part of\n   an UpdateEndpointWeightsAndCapacities (https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_UpdateEndpointWeightsAndCapacities.html)\n   call or when the UpdateEndpointWeightsAndCapacities (https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_UpdateEndpointWeightsAndCapacities.html)\n   operation is called explicitly.\n\n   * InService: Endpoint is available to process incoming requests.\n\n   * Deleting: DeleteEndpoint (https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_DeleteEndpoint.html)\n   is executing.\n\n   * Failed: Endpoint could not be created, updated, or re-scaled. Use the\n   FailureReason value returned by DescribeEndpoint (https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_DescribeEndpoint.html)\n   for information about the failure. DeleteEndpoint (https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_DeleteEndpoint.html)\n   is the only operation that can be performed on a failed endpoint.\n\n   * UpdateRollbackFailed: Both the rolling deployment and auto-rollback\n   failed. Your endpoint is in service with a mix of the old and new endpoint\n   configurations. For information about how to remedy this issue and restore\n   the endpoint's status to InService, see Rolling Deployments (https://docs.aws.amazon.com/sagemaker/latest/dg/deployment-guardrails-rolling.html).",
          "type": "string"
        },
        "failureReason": {
          "description": "If the status of the endpoint is Failed, the reason why it failed.",
          "type": "string"
        },
        "lastModifiedTime": {
          "description": "A timestamp that shows when the endpoint was last modified.",
          "format": "date-time",
          "type": "string"
        },
        "pendingDeploymentSummary": {
          "description": "Returns the summary of an in-progress deployment. This field is only returned\nwhen the endpoint is creating or updating with a new endpoint configuration.",
          "properties": {
            "endpointConfigName": {
              "type": "string"
            },
            "productionVariants": {
              "items": {
                "description": "The production variant summary for a deployment when an endpoint is creating\nor updating with the CreateEndpoint (https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_CreateEndpoint.html)\nor UpdateEndpoint (https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_UpdateEndpoint.html)\noperations. Describes the VariantStatus , weight and capacity for a production\nvariant associated with an endpoint.",
                "properties": {
                  "acceleratorType": {
                    "type": "string"
                  },
                  "currentInstanceCount": {
                    "format": "int64",
                    "type": "integer"
                  },
                  "currentServerlessConfig": {
                    "description": "Specifies the serverless configuration for an endpoint variant.",
                    "properties": {
                      "maxConcurrency": {
                        "format": "int64",
                        "type": "integer"
                      },
                      "memorySizeInMB": {
                        "format": "int64",
                        "type": "integer"
                      },
                      "provisionedConcurrency": {
                        "format": "int64",
                        "type": "integer"
                      }
                    },
                    "type": "object",
                    "additionalProperties": false
                  },
                  "currentWeight": {
                    "type": "number"
                  },
                  "deployedImages": {
                    "items": {
                      "description": "Gets the Amazon EC2 Container Registry path of the docker image of the model\nthat is hosted in this ProductionVariant (https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_ProductionVariant.html).\n\nIf you used the registry/repository[:tag] form to specify the image path\nof the primary container when you created the model hosted in this ProductionVariant,\nthe path resolves to a path of the form registry/repository[@digest]. A digest\nis a hash value that identifies a specific version of an image. For information\nabout Amazon ECR paths, see Pulling an Image (https://docs.aws.amazon.com/AmazonECR/latest/userguide/docker-pull-ecr-image.html)\nin the Amazon ECR User Guide.",
                      "properties": {
                        "resolutionTime": {
                          "format": "date-time",
                          "type": "string"
                        },
                        "resolvedImage": {
                          "type": "string"
                        },
                        "specifiedImage": {
                          "type": "string"
                        }
                      },
                      "type": "object",
                      "additionalProperties": false
                    },
                    "type": "array"
                  },
                  "desiredInstanceCount": {
                    "format": "int64",
                    "type": "integer"
                  },
                  "desiredServerlessConfig": {
                    "description": "Specifies the serverless configuration for an endpoint variant.",
                    "properties": {
                      "maxConcurrency": {
                        "format": "int64",
                        "type": "integer"
                      },
                      "memorySizeInMB": {
                        "format": "int64",
                        "type": "integer"
                      },
                      "provisionedConcurrency": {
                        "format": "int64",
                        "type": "integer"
                      }
                    },
                    "type": "object",
                    "additionalProperties": false
                  },
                  "desiredWeight": {
                    "type": "number"
                  },
                  "instanceType": {
                    "type": "string"
                  },
                  "managedInstanceScaling": {
                    "description": "Settings that control the range in the number of instances that the endpoint\nprovisions as it scales up or down to accommodate traffic.",
                    "properties": {
                      "maxInstanceCount": {
                        "format": "int64",
                        "type": "integer"
                      },
                      "minInstanceCount": {
                        "format": "int64",
                        "type": "integer"
                      },
                      "status": {
                        "type": "string"
                      }
                    },
                    "type": "object",
                    "additionalProperties": false
                  },
                  "routingConfig": {
                    "description": "Settings that control how the endpoint routes incoming traffic to the instances\nthat the endpoint hosts.",
                    "properties": {
                      "routingStrategy": {
                        "type": "string"
                      }
                    },
                    "type": "object",
                    "additionalProperties": false
                  },
                  "variantName": {
                    "type": "string"
                  },
                  "variantStatus": {
                    "items": {
                      "description": "Describes the status of the production variant.",
                      "properties": {
                        "startTime": {
                          "format": "date-time",
                          "type": "string"
                        },
                        "status": {
                          "type": "string"
                        },
                        "statusMessage": {
                          "type": "string"
                        }
                      },
                      "type": "object",
                      "additionalProperties": false
                    },
                    "type": "array"
                  }
                },
                "type": "object",
                "additionalProperties": false
              },
              "type": "array"
            },
            "startTime": {
              "format": "date-time",
              "type": "string"
            }
          },
          "type": "object",
          "additionalProperties": false
        },
        "productionVariants": {
          "description": "An array of ProductionVariantSummary (https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_ProductionVariantSummary.html)\nobjects, one for each model hosted behind this endpoint.",
          "items": {
            "description": "Describes weight and capacities for a production variant associated with\nan endpoint. If you sent a request to the UpdateEndpointWeightsAndCapacities\nAPI and the endpoint status is Updating, you get different desired and current\nvalues.",
            "properties": {
              "capacityReservationConfig": {
                "description": "Details about an ML capacity reservation.",
                "properties": {
                  "availableInstanceCount": {
                    "format": "int64",
                    "type": "integer"
                  },
                  "capacityReservationPreference": {
                    "type": "string"
                  },
                  "ec2CapacityReservations": {
                    "items": {
                      "description": "The EC2 capacity reservations that are shared to an ML capacity reservation.",
                      "properties": {
                        "availableInstanceCount": {
                          "format": "int64",
                          "type": "integer"
                        },
                        "ec2CapacityReservationID": {
                          "type": "string"
                        },
                        "totalInstanceCount": {
                          "format": "int64",
                          "type": "integer"
                        },
                        "usedByCurrentEndpoint": {
                          "format": "int64",
                          "type": "integer"
                        }
                      },
                      "type": "object",
                      "additionalProperties": false
                    },
                    "type": "array"
                  },
                  "mlReservationARN": {
                    "type": "string"
                  },
                  "totalInstanceCount": {
                    "format": "int64",
                    "type": "integer"
                  },
                  "usedByCurrentEndpoint": {
                    "format": "int64",
                    "type": "integer"
                  }
                },
                "type": "object",
                "additionalProperties": false
              },
              "currentInstanceCount": {
                "format": "int64",
                "type": "integer"
              },
              "currentServerlessConfig": {
                "description": "Specifies the serverless configuration for an endpoint variant.",
                "properties": {
                  "maxConcurrency": {
                    "format": "int64",
                    "type": "integer"
                  },
                  "memorySizeInMB": {
                    "format": "int64",
                    "type": "integer"
                  },
                  "provisionedConcurrency": {
                    "format": "int64",
                    "type": "integer"
                  }
                },
                "type": "object",
                "additionalProperties": false
              },
              "currentWeight": {
                "type": "number"
              },
              "deployedImages": {
                "items": {
                  "description": "Gets the Amazon EC2 Container Registry path of the docker image of the model\nthat is hosted in this ProductionVariant (https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_ProductionVariant.html).\n\nIf you used the registry/repository[:tag] form to specify the image path\nof the primary container when you created the model hosted in this ProductionVariant,\nthe path resolves to a path of the form registry/repository[@digest]. A digest\nis a hash value that identifies a specific version of an image. For information\nabout Amazon ECR paths, see Pulling an Image (https://docs.aws.amazon.com/AmazonECR/latest/userguide/docker-pull-ecr-image.html)\nin the Amazon ECR User Guide.",
                  "properties": {
                    "resolutionTime": {
                      "format": "date-time",
                      "type": "string"
                    },
                    "resolvedImage": {
                      "type": "string"
                    },
                    "specifiedImage": {
                      "type": "string"
                    }
                  },
                  "type": "object",
                  "additionalProperties": false
                },
                "type": "array"
              },
              "desiredInstanceCount": {
                "format": "int64",
                "type": "integer"
              },
              "desiredServerlessConfig": {
                "description": "Specifies the serverless configuration for an endpoint variant.",
                "properties": {
                  "maxConcurrency": {
                    "format": "int64",
                    "type": "integer"
                  },
                  "memorySizeInMB": {
                    "format": "int64",
                    "type": "integer"
                  },
                  "provisionedConcurrency": {
                    "format": "int64",
                    "type": "integer"
                  }
                },
                "type": "object",
                "additionalProperties": false
              },
              "desiredWeight": {
                "type": "number"
              },
              "managedInstanceScaling": {
                "description": "Settings that control the range in the number of instances that the endpoint\nprovisions as it scales up or down to accommodate traffic.",
                "properties": {
                  "maxInstanceCount": {
                    "format": "int64",
                    "type": "integer"
                  },
                  "minInstanceCount": {
                    "format": "int64",
                    "type": "integer"
                  },
                  "status": {
                    "type": "string"
                  }
                },
                "type": "object",
                "additionalProperties": false
              },
              "routingConfig": {
                "description": "Settings that control how the endpoint routes incoming traffic to the instances\nthat the endpoint hosts.",
                "properties": {
                  "routingStrategy": {
                    "type": "string"
                  }
                },
                "type": "object",
                "additionalProperties": false
              },
              "variantName": {
                "type": "string"
              },
              "variantStatus": {
                "items": {
                  "description": "Describes the status of the production variant.",
                  "properties": {
                    "startTime": {
                      "format": "date-time",
                      "type": "string"
                    },
                    "status": {
                      "type": "string"
                    },
                    "statusMessage": {
                      "type": "string"
                    }
                  },
                  "type": "object",
                  "additionalProperties": false
                },
                "type": "array"
              }
            },
            "type": "object",
            "additionalProperties": false
          },
          "type": "array"
        }
      },
      "type": "object",
      "additionalProperties": false
    }
  },
  "type": "object"
}
