{
  "version":"2.0",
  "metadata":{
    "apiVersion":"2023-01-01",
    "auth":["aws.auth#sigv4"],
    "endpointPrefix":"signin",
    "protocol":"rest-json",
    "protocols":["rest-json"],
    "serviceFullName":"AWS Sign-In Service",
    "serviceId":"Signin",
    "signatureVersion":"v4",
    "signingName":"signin",
    "uid":"signin-2023-01-01"
  },
  "operations":{
    "CreateOAuth2Token":{
      "name":"CreateOAuth2Token",
      "http":{
        "method":"POST",
        "requestUri":"/v1/token",
        "responseCode":200
      },
      "input":{"shape":"CreateOAuth2TokenRequest"},
      "output":{"shape":"CreateOAuth2TokenResponse"},
      "errors":[
        {"shape":"TooManyRequestsError"},
        {"shape":"InternalServerException"},
        {"shape":"ValidationException"},
        {"shape":"AccessDeniedException"}
      ],
      "auth":["smithy.api#noAuth"],
      "authtype":"none"
    }
  },
  "shapes":{
    "AccessDeniedException":{
      "type":"structure",
      "required":[
        "error",
        "message"
      ],
      "members":{
        "error":{"shape":"OAuth2ErrorCode"},
        "message":{"shape":"String"}
      },
      "exception":true
    },
    "AccessToken":{
      "type":"structure",
      "required":[
        "accessKeyId",
        "secretAccessKey",
        "sessionToken"
      ],
      "members":{
        "accessKeyId":{
          "shape":"String",
          "locationName":"accessKeyId"
        },
        "secretAccessKey":{
          "shape":"String",
          "locationName":"secretAccessKey"
        },
        "sessionToken":{
          "shape":"String",
          "locationName":"sessionToken"
        }
      },
      "sensitive":true
    },
    "AuthorizationCode":{
      "type":"string",
      "max":512,
      "min":1
    },
    "ClientId":{
      "type":"string",
      "pattern":"arn:aws:signin:::devtools/(cross-device|same-device)"
    },
    "CodeVerifier":{
      "type":"string",
      "max":128,
      "min":43,
      "pattern":"[A-Za-z0-9\\-._~]+"
    },
    "CreateOAuth2TokenRequest":{
      "type":"structure",
      "required":["tokenInput"],
      "members":{
        "tokenInput":{"shape":"CreateOAuth2TokenRequestBody"}
      },
      "payload":"tokenInput"
    },
    "CreateOAuth2TokenRequestBody":{
      "type":"structure",
      "required":[
        "clientId",
        "grantType"
      ],
      "members":{
        "clientId":{
          "shape":"ClientId",
          "locationName":"clientId"
        },
        "grantType":{
          "shape":"GrantType",
          "locationName":"grantType"
        },
        "code":{"shape":"AuthorizationCode"},
        "redirectUri":{
          "shape":"RedirectUri",
          "locationName":"redirectUri"
        },
        "codeVerifier":{
          "shape":"CodeVerifier",
          "locationName":"codeVerifier"
        },
        "refreshToken":{
          "shape":"RefreshToken",
          "locationName":"refreshToken"
        }
      }
    },
    "CreateOAuth2TokenResponse":{
      "type":"structure",
      "required":["tokenOutput"],
      "members":{
        "tokenOutput":{"shape":"CreateOAuth2TokenResponseBody"}
      },
      "payload":"tokenOutput"
    },
    "CreateOAuth2TokenResponseBody":{
      "type":"structure",
      "required":[
        "accessToken",
        "tokenType",
        "expiresIn",
        "refreshToken"
      ],
      "members":{
        "accessToken":{
          "shape":"AccessToken",
          "locationName":"accessToken"
        },
        "tokenType":{
          "shape":"TokenType",
          "locationName":"tokenType"
        },
        "expiresIn":{
          "shape":"ExpiresIn",
          "locationName":"expiresIn"
        },
        "refreshToken":{
          "shape":"RefreshToken",
          "locationName":"refreshToken"
        },
        "idToken":{
          "shape":"IdToken",
          "locationName":"idToken"
        }
      }
    },
    "ExpiresIn":{
      "type":"integer",
      "box":true,
      "max":900,
      "min":1
    },
    "GrantType":{
      "type":"string",
      "pattern":"(authorization_code|refresh_token)"
    },
    "IdToken":{
      "type":"string",
      "max":4096,
      "min":1
    },
    "InternalServerException":{
      "type":"structure",
      "required":[
        "error",
        "message"
      ],
      "members":{
        "error":{"shape":"OAuth2ErrorCode"},
        "message":{"shape":"String"}
      },
      "error":{"httpStatusCode":500},
      "exception":true,
      "fault":true
    },
    "OAuth2ErrorCode":{
      "type":"string",
      "enum":[
        "TOKEN_EXPIRED",
        "USER_CREDENTIALS_CHANGED",
        "INSUFFICIENT_PERMISSIONS",
        "AUTHCODE_EXPIRED",
        "server_error",
        "INVALID_REQUEST"
      ]
    },
    "RedirectUri":{
      "type":"string",
      "max":2048,
      "min":1
    },
    "RefreshToken":{
      "type":"string",
      "max":2048,
      "min":1,
      "sensitive":true
    },
    "String":{"type":"string"},
    "TokenType":{
      "type":"string",
      "pattern":"aws_sigv4"
    },
    "TooManyRequestsError":{
      "type":"structure",
      "required":[
        "error",
        "message"
      ],
      "members":{
        "error":{"shape":"OAuth2ErrorCode"},
        "message":{"shape":"String"}
      },
      "error":{
        "httpStatusCode":429,
        "senderFault":true
      },
      "exception":true
    },
    "ValidationException":{
      "type":"structure",
      "required":[
        "error",
        "message"
      ],
      "members":{
        "error":{"shape":"OAuth2ErrorCode"},
        "message":{"shape":"String"}
      },
      "error":{
        "httpStatusCode":400,
        "senderFault":true
      },
      "exception":true
    }
  }
}
