def __init__()

in infra/userportal/gateway/models.py [0:0]


  def __init__(self, scope: Construct, id: builtins.str, rest_api:api.IRestApi) -> None:
    '''
    Initializes the models for a given API Gateway.
    :param scope: - 
    :param id: -
    :param rest_api: The User Portal API Gateway Construct.
    '''
    super().__init__(scope, id)

    '''
    This online tool was helpful defining the json schema models.
      Note: It is an external resource and has no affiliation with Amazon.
      https://www.liquid-technologies.com/online-json-to-schema-converter
    '''
    self.register_user_request = api.Model(self,'RegisterUserRequest',
      rest_api=rest_api,
      model_name='RegisterUserRequest',
      description='Enroll a new user within the system.',
      content_type='application/json',
      schema= api.JsonSchema(
        type=api.JsonSchemaType.OBJECT,
        required=[
          "UserId",
          "Image",
          "Properties",
        ],
        properties={
          "UserId": api.JsonSchema(
            type=api.JsonSchemaType.STRING,
            description='Primary identifier for the user.'),
          "Image": api.JsonSchema(
            type=api.JsonSchemaType.STRING,
            description='utf8(base64( image ))'),
          "Properties": api.JsonSchema(
            type= api.JsonSchemaType.OBJECT,
            description='An arbitrary property bag.')
        }))

    self.update_user_request = api.Model(self,'UpdateUserRequest',
      rest_api=rest_api,
      model_name='UpdateUserRequest',
      description='Update an existing users profile.',
      content_type='application/json',
      schema= api.JsonSchema(
        type=api.JsonSchemaType.OBJECT,
        required=[
          "UserId",
          "Image",
          "Properties",
        ],
        properties={
          "UserId": api.JsonSchema(
            type=api.JsonSchemaType.STRING,
            description='Primary identifier for the user.'),
          "Image": api.JsonSchema(
            type=api.JsonSchemaType.STRING,
            description='utf8(base64( image ))'),
          "Properties": api.JsonSchema(
            type= api.JsonSchemaType.OBJECT,
            description='An arbitrary property bag.')
        }))

    self.register_idcard_request = api.Model(self,'RegisterIdCardRequest',
      rest_api=rest_api,
      model_name='RegisterWithIdCardRequest',
      description='Registers a new user with a valid id card.',
      content_type='application/json',
      schema= api.JsonSchema(
        type=api.JsonSchemaType.OBJECT,
        required=[
          "UserId",
          "Image",
          "IdCard",
          "Properties",
        ],
        properties={
          "UserId": api.JsonSchema(
            type=api.JsonSchemaType.STRING,
            description='Primary identifier for the user.'),
          "Image": api.JsonSchema(
            type=api.JsonSchemaType.STRING,
            description='utf8(base64( image ))'),
          "IdCard": api.JsonSchema(
            type=api.JsonSchemaType.STRING,
            description='utf8(base64( image ))'),
          "Properties": api.JsonSchema(
            type= api.JsonSchemaType.OBJECT,
            description='An arbitrary property bag.')
        }))

    self.auth_input_model = api.Model(self,'AuthenticateRequest',
      rest_api=rest_api,
      model_name='AuthenticateUserRequest',
      description='Verifies the caller matches their onfile photo',
      content_type='application/json',
      schema= api.JsonSchema(
        type=api.JsonSchemaType.OBJECT,
        required=[
          "UserId",
          "Image",
        ],
        properties={
          "UserId": api.JsonSchema(
            type=api.JsonSchemaType.STRING,
            description='Primary identifier for the user.'),
          "Image": api.JsonSchema(
            type=api.JsonSchemaType.STRING,
            description='utf8(base64( image ))')
        }))

    self.register_response_model = api.Model(self,'RegisterUserResponse',
      rest_api=rest_api,
      model_name='RegisterUserResponse',
      description='Output from the Register operation.',
      schema= api.JsonSchema(
        type=api.JsonSchemaType.OBJECT,
        description='The response from a register user flow.',
        required=[
          'UserId',
          'ImageId',
          'Status'
        ],
        properties={
          'UserId': api.JsonSchema(
            type=api.JsonSchemaType.STRING,
            description='Primary identifier for the user.'),
          'ImageId': api.JsonSchema(
            type=api.JsonSchemaType.STRING,
            description='Internal identifier for the user.'),
          'Status': api.JsonSchema(
            type=api.JsonSchemaType.STRING,
            description='Outcome of the Register operation.'),
        }))

    self.update_respose_model = api.Model(self,'UpdateUserResponse',
      rest_api=rest_api,
      model_name='UpdateUserResponse',
      description='Output from the Update operation.',
      schema= api.JsonSchema(
        type=api.JsonSchemaType.OBJECT,
        description='The response from a update user flow.',
        required=[
          'UserId',
          'ImageId',
          'Status'
        ],
        properties={
          'UserId': api.JsonSchema(
            type=api.JsonSchemaType.STRING,
            description='Primary identifier for the user.'),
          'ImageId': api.JsonSchema(
            type=api.JsonSchemaType.STRING,
            description='Internal identifier for the user.'),
          'Status': api.JsonSchema(
            type=api.JsonSchemaType.STRING,
            description='Outcome of the Update operation.'),
        }))

    self.auth_response_model = api.Model(self,'AuthenticateUserResponse',
      rest_api=rest_api,
      model_name='AuthenticateUserResponse',
      description='Output from the Authentication operation.',
      schema= api.JsonSchema(
        type=api.JsonSchemaType.OBJECT,
        description='The response from a auth user flow.',
        required=[
          'UserId',
          'Status'
        ],
        properties={
          'UserId': api.JsonSchema(
            type=api.JsonSchemaType.STRING,
            description='Primary identifier for the user.'),
          'Status': api.JsonSchema(
            type=api.JsonSchemaType.BOOLEAN,
            description='Outcome of the Authenticate operation.'),
        }))