functions:
  LoginExternalUserId:
    handler: sdk_functions.functions.v2.security.login.login_external_user_id
    name: conio-sdk-login-ext-uid-v2
    description: Conio SDK Login using external user id (V2)
    layers:
      - {Ref: CodebaseLambdaLayer}
      - {Ref: SettingsLambdaLayer}
      - {Ref: DependenciesLambdaLayer}
    events:
      - http:
          path: v2/login_external_user_id
          method: post
          documentation:
            summary: Login
            description: Login
            requestBody:
              description: OAuth2 RFC 6749 payload
            requestModels:
              application/x-www-form-urlencoded: Signin
            requestHeaders:
              - name: "X-ConioHardwareID"
                description: "Hardware ID"
                schema:
                  type: "string"
                required: true
            methodResponses:
              - statusCode: "200"
                responseBody:
                  description: "Login successful"
                responseModels:
                  "application/json": SigninResponse
              - statusCode: "401"
                responseBody:
                  description: "Unauthenticated"
                responseModels:
                  "application/json": ResponseError
              - statusCode: "400"
                responseModels:
                  "application/json": ResponseError
              - statusCode: "410"
                responseModels:
                  "application/json": UpgradeError
              - statusCode: "412"
                responseModels:
                  "application/json": ResponseError
              - statusCode: "422"
                responseModels:
                  "application/json": ResponseError
  LoginEmail:
    handler: sdk_functions.functions.v2.security.login.login_email
    name: conio-sdk-login-email-v2
    description: Conio SDK Login via email (V2)
    layers:
      - { Ref: CodebaseLambdaLayer }
      - { Ref: SettingsLambdaLayer }
      - { Ref: DependenciesLambdaLayer }
    events:
      - http:
          path: v2/login_email
          method: post
          documentation:
            summary: Login
            description: Login
            requestBody:
              description: OAuth2 RFC 6749 payload
            requestModels:
              application/x-www-form-urlencoded: Signin
            requestHeaders:
              - name: "X-ConioHardwareID"
                description: "Hardware ID"
                schema:
                  type: "string"
                required: true
            methodResponses:
              - statusCode: "200"
                responseBody:
                  description: "Login successful"
                responseModels:
                  "application/json": SigninResponse
              - statusCode: "401"
                responseBody:
                  description: "Unauthenticated"
                responseModels:
                  "application/json": ResponseError
              - statusCode: "400"
                responseModels:
                  "application/json": ResponseError
              - statusCode: "410"
                responseModels:
                  "application/json": UpgradeError
              - statusCode: "412"
                responseModels:
                  "application/json": ResponseError
              - statusCode: "422"
                responseModels:
                  "application/json": ResponseError
  RefreshToken:
    handler: sdk_functions.functions.v2.security.refresh_token.refresh_token
    name: conio-sdk-refresh-token-v2
    description: Conio SDK Refresh token (V2)
    layers:
      - { Ref: CodebaseLambdaLayer }
      - { Ref: SettingsLambdaLayer }
      - { Ref: DependenciesLambdaLayer }
    events:
      - http:
          path: v2/refresh_token
          method: post
          documentation:
            summary: Refresh token
            description: Refresh token
            requestBody:
              description: OAuth2 Refresh token
            requestModels:
              application/x-www-form-urlencoded: RefreshToken
            requestHeaders:
              - name: "X-ConioHardwareID"
                description: "Hardware ID"
                schema:
                  type: "string"
                required: true
            methodResponses:
              - statusCode: "200"
                responseBody:
                  description: "Refresh token successful"
                responseModels:
                  "application/json": RefreshTokenResponse
              - statusCode: "401"
                responseBody:
                  description: "Unauthenticated"
                responseModels:
                  "application/json": ResponseError
              - statusCode: "400"
                responseModels:
                  "application/json": ResponseError
              - statusCode: "410"
                responseModels:
                  "application/json": UpgradeError
              - statusCode: "412"
                responseModels:
                  "application/json": ResponseError
              - statusCode: "422"
                responseModels:
                  "application/json": ResponseError
  Signup:
    handler: sdk_functions.functions.v2.security.signup.signup
    name: conio-sdk-signup-v2
    description: Conio SDK Signup (V2)
    layers:
      - {Ref: CodebaseLambdaLayer}
      - {Ref: SettingsLambdaLayer}
      - {Ref: DependenciesLambdaLayer}
    events:
      - http:
          path: v2/signup
          method: post
          documentation:
            summary: Create User
            description: Signup with the minimum information
            requestBody:
              description: A user information object
            requestModels:
              application/json: Signup
            methodResponses:
              - statusCode: "200"
                responseBody:
                  description: "Signup successful"
                responseModels:
                  "application/json": Success
                responseHeaders:
                  - name: "X-ConioAccessToken"
                    description: "Conio Access Token"
                    schema:
                      type: "string"
                  - name: "X-ConioRefreshToken"
                    description: "Conio Refresh Token"
                    schema:
                      type: "string"
                  - name: "X-ConioTokenScope"
                    description: "Conio Token Scope"
                    schema:
                      type: "string"
              - statusCode: "401"
                responseBody:
                  description: "Unauthenticated"
                responseModels:
                  "application/json": ResponseError
              - statusCode: "400"
                responseModels:
                  "application/json": ResponseError
              - statusCode: "410"
                responseModels:
                  "application/json": UpgradeError
              - statusCode: "412"
                responseModels:
                  "application/json": ResponseError
              - statusCode: "422"
                responseModels:
                  "application/json": ResponseError
  EscalateToken:
    codeDir: dist
    handler: sdk_functions.functions.v2.security.escalate_token.escalate_token
    functionname: conio-sdk-escalate-token-v2
    description: Conio SDK Token Escalation (V2)
    runtime: python3.8
    timeout: 30
    layers:
      - {Ref: CodebaseLambdaLayer}
      - {Ref: SettingsLambdaLayer}
      - {Ref: DependenciesLambdaLayer}
    events:
      - http:
          path: v2/escalate_token
          method: post
          documentation:
            summary: Escalate token
            description: Escalate access token
            security:
              - ConioAuthentication:
                - create_wallet
                - confirm_email
                - authorize_device
                - reset_password
            requestBody:
              description: Token escalation payload, containing the hardware ID
            requestModels:
              application/json: EscalateToken
            methodResponses:
              - statusCode: "200"
                responseBody:
                  description: "Wallet created successfully"
                responseModels:
                  "application/json": Success
                responseHeaders:
                  - name: "X-ConioAccessToken"
                    description: "Conio Access Token"
                    schema:
                      type: "string"
                  - name: "X-ConioRefreshToken"
                    description: "Conio Refresh Token"
                    schema:
                      type: "string"
                  - name: "X-ConioTokenScope"
                    description: "Conio Token Scope"
                    schema:
                      type: "string"
              - statusCode: "401"
                responseBody:
                  description: "Unauthenticated"
                responseModels:
                  "application/json": ResponseError
  CreateWallet:
    codeDir: dist
    handler: sdk_functions.functions.v2.security.create_wallet.create_wallet
    functionname: conio-sdk-create_wallet-v2
    description: Conio SDK Create Wallet (V2)
    runtime: python3.8
    timeout: 30
    layers:
      - {Ref: CodebaseLambdaLayer}
      - {Ref: SettingsLambdaLayer}
      - {Ref: DependenciesLambdaLayer}
    events:
      - http:
          path: v2/create_wallet
          method: post
          documentation:
            summary: Create Wallet
            description: Create wallet and associate it to the user
            security:
              - ConioAuthentication:
                - create_wallet
            requestBody:
              description: Encrypted keys of the wallet to be created
            requestModels:
              application/json: CreateWallet
            methodResponses:
              - statusCode: "200"
                responseBody:
                  description: "Wallet created successfully"
                responseModels:
                  "application/json": Success
                responseHeaders:
                  - name: "X-ConioAccessToken"
                    description: "Conio Access Token"
                    schema:
                      type: "string"
                  - name: "X-ConioRefreshToken"
                    description: "Conio Refresh Token"
                    schema:
                      type: "string"
                  - name: "X-ConioTokenScope"
                    description: "Conio Token Scope"
                    schema:
                      type: "string"
              - statusCode: "401"
                responseBody:
                  description: "Unauthenticated"
                responseModels:
                  "application/json": ResponseError
              - statusCode: "400"
                responseModels:
                  "application/json": ResponseError
              - statusCode: "410"
                responseModels:
                  "application/json": UpgradeError
              - statusCode: "412"
                responseModels:
                  "application/json": ResponseError
              - statusCode: "422"
                responseModels:
                  "application/json": ResponseError
  FullSignup:
    handler: sdk_functions.functions.v2.security.full_signup.signup
    name: conio-sdk-full-signup-v2
    description: Conio SDK Full Signup (V2)
    layers:
      - {Ref: CodebaseLambdaLayer}
      - {Ref: SettingsLambdaLayer}
      - {Ref: DependenciesLambdaLayer}
    events:
      - http:
          path: v2/full_signup
          method: post
          documentation:
            summary: Create User
            description: Signup with all the necessary information
            requestBody:
              description: A user information object
            requestModels:
              application/json: FullSignup
            methodResponses:
              - statusCode: "200"
                responseBody:
                  description: "Signup successful"
                responseModels:
                  "application/json": Success
                responseHeaders:
                  - name: "X-ConioAccessToken"
                    description: "Conio Access Token"
                    schema:
                      type: "string"
                  - name: "X-ConioRefreshToken"
                    description: "Conio Refresh Token"
                    schema:
                      type: "string"
                  - name: "X-ConioTokenScope"
                    description: "Conio Token Scope"
                    schema:
                      type: "string"
              - statusCode: "401"
                responseBody:
                  description: "Unauthenticated"
                responseModels:
                  "application/json": ResponseError
              - statusCode: "400"
                responseModels:
                  "application/json": ResponseError
              - statusCode: "410"
                responseModels:
                  "application/json": UpgradeError
              - statusCode: "412"
                responseModels:
                  "application/json": ResponseError
              - statusCode: "422"
                responseModels:
                  "application/json": ResponseError
  TestConfirmEmail:
    enabled: ${self:custom.enableTestEndpoints.${opt:stage}, self.enableTestEndpoints.else}
    handler: sdk_functions.functions.v2.test.confirm_email
    name: conio-sdk-test-confirm-email-v2
    description: Conio SDK Test Confirm Email (V2)
    layers:
      - {Ref: CodebaseLambdaLayer}
      - {Ref: SettingsLambdaLayer}
      - {Ref: DependenciesLambdaLayer}
    events:
      - http:
          path: v2/test/confirm_email
          method: post
          documentation:
            summary: Confirm user email
            description: Confirm user email. Just for tests
            requestBody:
              description: A user information object
            requestModels:
              application/json: ConfirmEmail
            methodResponses:
              - statusCode: "200"
                responseBody:
                  description: "Confirm successful"
                responseModels:
                  "application/json": Success
