{
  "version":"2.0",
  "metadata":{
    "apiVersion":"2023-11-26",
    "endpointPrefix":"eks-auth",
    "jsonVersion":"1.1",
    "protocol":"rest-json",
    "serviceFullName":"Amazon EKS Auth",
    "serviceId":"EKS Auth",
    "signatureVersion":"v4",
    "signingName":"eks-auth",
    "uid":"eks-auth-2023-11-26"
  },
  "operations":{
    "AssumeRoleForPodIdentity":{
      "name":"AssumeRoleForPodIdentity",
      "http":{
        "method":"POST",
        "requestUri":"/clusters/{clusterName}/assume-role-for-pod-identity",
        "responseCode":200
      },
      "input":{"shape":"AssumeRoleForPodIdentityRequest"},
      "output":{"shape":"AssumeRoleForPodIdentityResponse"},
      "errors":[
        {"shape":"ThrottlingException"},
        {"shape":"InvalidRequestException"},
        {"shape":"AccessDeniedException"},
        {"shape":"InternalServerException"},
        {"shape":"InvalidTokenException"},
        {"shape":"InvalidParameterException"},
        {"shape":"ExpiredTokenException"},
        {"shape":"ResourceNotFoundException"},
        {"shape":"ServiceUnavailableException"}
      ],
      "documentation":"<p>The Amazon EKS Auth API and the <code>AssumeRoleForPodIdentity</code> action are only used by the EKS Pod Identity Agent.</p> <p>We recommend that applications use the Amazon Web Services SDKs to connect to Amazon Web Services services; if credentials from an EKS Pod Identity association are available in the pod, the latest versions of the SDKs use them automatically.</p>"
    }
  },
  "shapes":{
    "AccessDeniedException":{
      "type":"structure",
      "members":{
        "message":{"shape":"String"}
      },
      "documentation":"<p>You don't have permissions to perform the requested operation. The IAM principal making the request must have at least one IAM permissions policy attached that grants the required permissions. For more information, see <a href=\"https://docs.aws.amazon.com/IAM/latest/UserGuide/access.html\">Access management</a> in the <i>IAM User Guide</i>. </p>",
      "error":{
        "httpStatusCode":400,
        "senderFault":true
      },
      "exception":true
    },
    "AssumeRoleForPodIdentityRequest":{
      "type":"structure",
      "required":[
        "clusterName",
        "token"
      ],
      "members":{
        "clusterName":{
          "shape":"ClusterName",
          "documentation":"<p>The name of the cluster for the request.</p>",
          "location":"uri",
          "locationName":"clusterName"
        },
        "token":{
          "shape":"JwtToken",
          "documentation":"<p>The token of the Kubernetes service account for the pod.</p>"
        }
      }
    },
    "AssumeRoleForPodIdentityResponse":{
      "type":"structure",
      "required":[
        "subject",
        "audience",
        "podIdentityAssociation",
        "assumedRoleUser",
        "credentials"
      ],
      "members":{
        "subject":{
          "shape":"Subject",
          "documentation":"<p>The name of the Kubernetes service account inside the cluster to associate the IAM credentials with.</p>"
        },
        "audience":{
          "shape":"String",
          "documentation":"<p>The identity that is allowed to use the credentials. This value is always <code>pods.eks.amazonaws.com</code>.</p>"
        },
        "podIdentityAssociation":{
          "shape":"PodIdentityAssociation",
          "documentation":"<p>The Amazon Resource Name (ARN) and ID of the EKS Pod Identity association.</p>"
        },
        "assumedRoleUser":{
          "shape":"AssumedRoleUser",
          "documentation":"<p>An object with the permanent IAM role identity and the temporary session name.</p> <p>The ARN of the IAM role that the temporary credentials authenticate to.</p> <p>The session name of the temporary session requested to STS. The value is a unique identifier that contains the role ID, a colon (<code>:</code>), and the role session name of the role that is being assumed. The role ID is generated by IAM when the role is created. The role session name part of the value follows this format: <code>eks-<i>clustername</i>-<i>podname</i>-<i>random UUID</i> </code> </p>"
        },
        "credentials":{
          "shape":"Credentials",
          "documentation":"<p>The <i>Amazon Web Services Signature Version 4</i> type of temporary credentials.</p>"
        }
      }
    },
    "AssumedRoleUser":{
      "type":"structure",
      "required":[
        "arn",
        "assumeRoleId"
      ],
      "members":{
        "arn":{
          "shape":"String",
          "documentation":"<p>The ARN of the IAM role that the temporary credentials authenticate to.</p>"
        },
        "assumeRoleId":{
          "shape":"String",
          "documentation":"<p>The session name of the temporary session requested to STS. The value is a unique identifier that contains the role ID, a colon (<code>:</code>), and the role session name of the role that is being assumed. The role ID is generated by IAM when the role is created. The role session name part of the value follows this format: <code>eks-<i>clustername</i>-<i>podname</i>-<i>random UUID</i> </code> </p>"
        }
      },
      "documentation":"<p>An object with the permanent IAM role identity and the temporary session name.</p>"
    },
    "ClusterName":{
      "type":"string",
      "max":100,
      "min":1,
      "pattern":"[0-9A-Za-z][A-Za-z0-9\\-_]*"
    },
    "Credentials":{
      "type":"structure",
      "required":[
        "sessionToken",
        "secretAccessKey",
        "accessKeyId",
        "expiration"
      ],
      "members":{
        "sessionToken":{
          "shape":"String",
          "documentation":"<p>The token that applications inside the pods must pass to any service API to use the temporary credentials.</p>"
        },
        "secretAccessKey":{
          "shape":"String",
          "documentation":"<p>The secret access key that applications inside the pods use to sign requests.</p>"
        },
        "accessKeyId":{
          "shape":"String",
          "documentation":"<p>The access key ID that identifies the temporary security credentials.</p>"
        },
        "expiration":{
          "shape":"Timestamp",
          "documentation":"<p>The Unix epoch timestamp in seconds when the current credentials expire.</p>"
        }
      },
      "documentation":"<p>The <i>Amazon Web Services Signature Version 4</i> type of temporary credentials.</p>",
      "sensitive":true
    },
    "ExpiredTokenException":{
      "type":"structure",
      "members":{
        "message":{"shape":"String"}
      },
      "documentation":"<p>The specified Kubernetes service account token is expired.</p>",
      "error":{
        "httpStatusCode":400,
        "senderFault":true
      },
      "exception":true
    },
    "InternalServerException":{
      "type":"structure",
      "members":{
        "message":{"shape":"String"}
      },
      "documentation":"<p>These errors are usually caused by a server-side issue.</p>",
      "error":{"httpStatusCode":500},
      "exception":true,
      "fault":true
    },
    "InvalidParameterException":{
      "type":"structure",
      "members":{
        "message":{"shape":"String"}
      },
      "documentation":"<p>The specified parameter is invalid. Review the available parameters for the API request.</p>",
      "error":{
        "httpStatusCode":400,
        "senderFault":true
      },
      "exception":true
    },
    "InvalidRequestException":{
      "type":"structure",
      "members":{
        "message":{"shape":"String"}
      },
      "documentation":"<p>This exception is thrown if the request contains a semantic error. The precise meaning will depend on the API, and will be documented in the error message.</p>",
      "error":{
        "httpStatusCode":400,
        "senderFault":true
      },
      "exception":true
    },
    "InvalidTokenException":{
      "type":"structure",
      "members":{
        "message":{"shape":"String"}
      },
      "documentation":"<p>The specified Kubernetes service account token is invalid.</p>",
      "error":{
        "httpStatusCode":400,
        "senderFault":true
      },
      "exception":true
    },
    "JwtToken":{
      "type":"string",
      "min":1,
      "pattern":"[A-Za-z0-9-_=]+\\.[A-Za-z0-9-_=]+\\.[A-Za-z0-9-_=]+",
      "sensitive":true
    },
    "PodIdentityAssociation":{
      "type":"structure",
      "required":[
        "associationArn",
        "associationId"
      ],
      "members":{
        "associationArn":{
          "shape":"String",
          "documentation":"<p>The Amazon Resource Name (ARN) of the EKS Pod Identity association.</p>"
        },
        "associationId":{
          "shape":"String",
          "documentation":"<p>The ID of the association.</p>"
        }
      },
      "documentation":"<p>Amazon EKS Pod Identity associations provide the ability to manage credentials for your applications, similar to the way that Amazon EC2 instance profiles provide credentials to Amazon EC2 instances.</p>"
    },
    "ResourceNotFoundException":{
      "type":"structure",
      "members":{
        "message":{"shape":"String"}
      },
      "documentation":"<p>The specified resource could not be found.</p>",
      "error":{
        "httpStatusCode":404,
        "senderFault":true
      },
      "exception":true
    },
    "ServiceUnavailableException":{
      "type":"structure",
      "members":{
        "message":{"shape":"String"}
      },
      "documentation":"<p>The service is unavailable. Back off and retry the operation.</p>",
      "error":{"httpStatusCode":503},
      "exception":true,
      "fault":true
    },
    "String":{"type":"string"},
    "Subject":{
      "type":"structure",
      "required":[
        "namespace",
        "serviceAccount"
      ],
      "members":{
        "namespace":{
          "shape":"String",
          "documentation":"<p>The name of the Kubernetes namespace inside the cluster to create the association in. The service account and the pods that use the service account must be in this namespace.</p>"
        },
        "serviceAccount":{
          "shape":"String",
          "documentation":"<p>The name of the Kubernetes service account inside the cluster to associate the IAM credentials with.</p>"
        }
      },
      "documentation":"<p>An object containing the name of the Kubernetes service account inside the cluster to associate the IAM credentials with.</p>"
    },
    "ThrottlingException":{
      "type":"structure",
      "members":{
        "message":{"shape":"String"}
      },
      "documentation":"<p>The request was denied because your request rate is too high. Reduce the frequency of requests.</p>",
      "error":{
        "httpStatusCode":429,
        "senderFault":true
      },
      "exception":true
    },
    "Timestamp":{"type":"timestamp"}
  },
  "documentation":"<p>The Amazon EKS Auth API and the <code>AssumeRoleForPodIdentity</code> action are only used by the EKS Pod Identity Agent.</p>"
}
