Stytch Email API

The Email API from Stytch — 3 operation(s) for email.

OpenAPI Specification

stytch-email-api-openapi.yml Raw ↑
openapi: 3.0.3
info:
  title: Stytch B2B Authentication Application Email API
  version: 2.0.0
  description: Stytch's B2B API for multi-tenant authentication. Supports Organizations, Members, SSO (SAML/OIDC), Magic Links, OTP, OAuth, Discovery, Sessions, B2B RBAC, SCIM, TOTP, Recovery Codes, Passwords, Impersonation, and the B2B IDP.
  contact:
    name: Stytch
    url: https://stytch.com/docs
  license:
    name: Proprietary
servers:
- url: https://api.stytch.com
  description: Production
- url: https://test.stytch.com
  description: Test
tags:
- name: Email
paths:
  /v1/b2b/magic_links/email/discovery/send:
    post:
      summary: Send
      operationId: api_b2b_magic_v1_b2b_magic_links_email_discovery_Send
      tags:
      - Email
      description: Send a discovery magic link to an email address. The magic link is valid for 60 minutes.
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/api_b2b_magic_v1_b2b_magic_links_email_discovery_SendRequest'
      responses:
        '200':
          description: Successful response
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/api_b2b_magic_v1_b2b_magic_links_email_discovery_SendResponse'
        '400':
          description: Bad request
        '401':
          description: Unauthorized
          content:
            application/json:
              example:
                status_code: 401
                request_id: request-id-test-b05c992f-ebdc-489d-a754-c7e70ba13141
                error_type: unauthorized_credentials
                error_message: Unauthorized credentials.
                error_url: https://stytch.com/docs/api/errors/401
        '429':
          description: Too Many Requests
          content:
            application/json:
              example:
                status_code: 429
                request_id: request-id-test-b05c992f-ebdc-489d-a754-c7e70ba13141
                error_type: too_many_requests
                error_message: Too many requests have been made.
                error_url: https://stytch.com/docs/api/errors/429
        '500':
          description: Internal server error
          content:
            application/json:
              example:
                status_code: 500
                request_id: request-id-test-b05c992f-ebdc-489d-a754-c7e70ba13141
                error_type: internal_server_error
                error_message: Oops, something seems to have gone wrong, please reach out to support@stytch.com to let us know what went wrong.
                error_url: https://stytch.com/docs/api/errors/500
      x-code-samples:
      - lang: csharp
        label: C#
        source: "// POST /v1/b2b/magic_links/email/discovery/send\nconst stytch = require('stytch');\n\nconst client = new stytch.B2BClient({\n  project_id: '${projectId}',\n  secret: '${secret}',\n});\n\nconst params = {\n  email_address: \"${email}\",\n};\n\nclient.MagicLinks.Email.Discovery.Send(params)\n  .then(resp => { console.log(resp) })\n  .catch(err => { console.log(err) });"
      - lang: go
        label: Go
        source: "// POST /v1/b2b/magic_links/email/discovery/send\npackage main\n\nimport (\n\t\"context\"\n\t\"log\"\n\n\t\"github.com/stytchauth/stytch-go/v17/stytch/b2b/b2bstytchapi\"\n\t\"github.com/stytchauth/stytch-go/v17/stytch/b2b/magiclinks/email/discovery\"\n)\n\nfunc main() {\n\tclient, err := b2bstytchapi.NewClient(\n\t\t\"${projectId}\",\n\t\t\"${secret}\",\n\t)\n\tif err != nil {\n\t\tlog.Fatalf(\"error instantiating client: %v\", err)\n\t}\n\n\tparams := &discovery.SendParams{\n\t\tEmailAddress: \"${email}\",\n\t}\n\n\tresp, err := client.MagicLinks.Email.Discovery.Send(context.Background(), params)\n\tif err != nil {\n\t\tlog.Fatalf(\"error in method call: %v\", err)\n\t}\n\n\tlog.Println(resp)\n}\n"
      - lang: java
        label: Java
        source: "// POST /v1/b2b/magic_links/email/discovery/send\npackage com.example;\n\nimport com.stytch.java.b2b.models.magiclinksemaildiscovery.SendRequest;\nimport com.stytch.java.b2b.StytchB2BClient;\nimport com.stytch.java.common.StytchResult;\n\npublic class Main {\n    public static void main(String[] args) {\n        StytchB2BClient.configure(\"${projectId}\", \"${secret}\");\n\n        SendRequest params = new SendRequest();\n        params.setEmailAddress(\"${email}\");\n\n        Object result = StytchB2BClient.getMagicLinks().getEmail().getDiscovery().send(params);\n        if (result instanceof StytchResult.Success) {\n          System.out.println(((StytchResult.Success) result).getValue());\n        } else {\n          System.out.println(((StytchResult.Error) result).getException());\n        }\n    }\n}"
      - lang: kotlin
        label: Kotlin
        source: "// POST /v1/b2b/magic_links/email/discovery/send\npackage com.example\n\nimport com.stytch.java.b2b.StytchB2BClient\nimport com.stytch.java.b2b.models.magiclinksemaildiscovery.SendRequest\n\nfun main() {\n    StytchB2BClient.configure(\n        projectId = \"${projectId}\",\n        secret = \"${secret}\",\n    )\n\n    when (\n        val result =\n            StytchB2BClient.magicLinks.email.discovery.send(\n                SendRequest(\n                    emailAddress = \"${email}\",\n                ),\n            )\n    ) {\n        is StytchResult.Success -> println(result.value)\n        is StytchResult.Error -> println(result.exception)\n    }\n}\n"
      - lang: javascript
        label: Node.js
        source: "// POST /v1/b2b/magic_links/email/discovery/send\nconst stytch = require('stytch');\n\nconst client = new stytch.B2BClient({\n  project_id: '${projectId}',\n  secret: '${secret}',\n});\n\nconst params = {\n  email_address: \"${email}\",\n};\n\nclient.magicLinks.email.discovery.send(params)\n  .then(resp => { console.log(resp) })\n  .catch(err => { console.log(err) });"
      - lang: php
        label: PHP
        source: "$response = $client->magic_links->email->discovery->send([\n    'email_address' => '${email}',\n]);"
      - lang: python
        label: Python
        source: "# POST /v1/b2b/magic_links/email/discovery/send\nfrom stytch import B2BClient\n\nclient = B2BClient(\n    project_id=\"${projectId}\",\n    secret=\"${secret}\",\n)\n\nresp = client.magic_links.email.discovery.send(\n    email_address=\"${email}\",\n)\n\nprint(resp)\n"
      - lang: ruby
        label: Ruby
        source: "# POST /v1/b2b/magic_links/email/discovery/send\nrequire 'stytch'\n\nclient = StytchB2B::Client.new(\n  project_id: \"${projectId}\",\n  secret: \"${secret}\"\n)\n\nresp = client.magic_links.email.discovery.send(\n  email_address: \"${email}\"\n  \n)\n\nputs resp"
      - lang: rust
        label: Rust
        source: "// POST /v1/b2b/magic_links/email/discovery/send\nuse stytch::b2b::client::Client;\nuse stytch::b2b::magic_links_email_discovery::SendRequest;\n\nfn main() {\n    let client = Client::new(\"${projectId}\", \"${secret}\").unwrap();\n    let resp = client.magic_links.email.discovery.send(\n        SendRequest{\n            email_address: \"${email}\",\n            ..Default::default()\n        }\n    ).await;\n    println!(\"The response is {:?}\", resp);\n}"
      - lang: bash
        label: cURL
        source: "# POST /v1/b2b/magic_links/email/discovery/send\ncurl --request POST \\\n  --url https://test.stytch.com/v1/b2b/magic_links/email/discovery/send \\\n  -u '${projectId}:${secret}' \\\n  -H 'Content-Type: application/json' \\\n  -d '{\n    \"email_address\": \"${email}\"\n  }'"
  /v1/b2b/otps/email/discovery/send:
    post:
      summary: Send
      operationId: api_b2b_otp_v1_b2b_otp_email_discovery_Send
      tags:
      - Email
      description: 'Send a discovery OTP to an email address. The OTP is valid for 10 minutes. Only the most recently sent OTP is valid: when an OTP is sent, all OTPs previously sent to the same email address are invalidated, even if unused or unexpired.'
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/api_b2b_otp_v1_b2b_otp_email_discovery_SendRequest'
      responses:
        '200':
          description: Successful response
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/api_b2b_otp_v1_b2b_otp_email_discovery_SendResponse'
        '400':
          description: Bad request
        '401':
          description: Unauthorized
          content:
            application/json:
              example:
                status_code: 401
                request_id: request-id-test-b05c992f-ebdc-489d-a754-c7e70ba13141
                error_type: unauthorized_credentials
                error_message: Unauthorized credentials.
                error_url: https://stytch.com/docs/api/errors/401
        '429':
          description: Too Many Requests
          content:
            application/json:
              example:
                status_code: 429
                request_id: request-id-test-b05c992f-ebdc-489d-a754-c7e70ba13141
                error_type: too_many_requests
                error_message: Too many requests have been made.
                error_url: https://stytch.com/docs/api/errors/429
        '500':
          description: Internal server error
          content:
            application/json:
              example:
                status_code: 500
                request_id: request-id-test-b05c992f-ebdc-489d-a754-c7e70ba13141
                error_type: internal_server_error
                error_message: Oops, something seems to have gone wrong, please reach out to support@stytch.com to let us know what went wrong.
                error_url: https://stytch.com/docs/api/errors/500
      x-code-samples:
      - lang: csharp
        label: C#
        source: "// POST /v1/b2b/otps/email/discovery/send\nconst stytch = require('stytch');\n\nconst client = new stytch.B2BClient({\n  project_id: '${projectId}',\n  secret: '${secret}',\n});\n\nconst params = {\n  email_address: \"${email}\",\n};\n\nclient.OTPs.Email.Discovery.Send(params)\n  .then(resp => { console.log(resp) })\n  .catch(err => { console.log(err) });"
      - lang: go
        label: Go
        source: "// POST /v1/b2b/otps/email/discovery/send\npackage main\n\nimport (\n\t\"context\"\n\t\"log\"\n\n\t\"github.com/stytchauth/stytch-go/v17/stytch/b2b/b2bstytchapi\"\n\t\"github.com/stytchauth/stytch-go/v17/stytch/b2b/otp/email/discovery\"\n)\n\nfunc main() {\n\tclient, err := b2bstytchapi.NewClient(\n\t\t\"${projectId}\",\n\t\t\"${secret}\",\n\t)\n\tif err != nil {\n\t\tlog.Fatalf(\"error instantiating client: %v\", err)\n\t}\n\n\tparams := &discovery.SendParams{\n\t\tEmailAddress: \"${email}\",\n\t}\n\n\tresp, err := client.OTPs.Email.Discovery.Send(context.Background(), params)\n\tif err != nil {\n\t\tlog.Fatalf(\"error in method call: %v\", err)\n\t}\n\n\tlog.Println(resp)\n}\n"
      - lang: java
        label: Java
        source: "// POST /v1/b2b/otps/email/discovery/send\npackage com.example;\n\nimport com.stytch.java.b2b.models.otpemaildiscovery.SendRequest;\nimport com.stytch.java.b2b.StytchB2BClient;\nimport com.stytch.java.common.StytchResult;\n\npublic class Main {\n    public static void main(String[] args) {\n        StytchB2BClient.configure(\"${projectId}\", \"${secret}\");\n\n        SendRequest params = new SendRequest();\n        params.setEmailAddress(\"${email}\");\n\n        Object result = StytchB2BClient.getOTPs().getEmail().getDiscovery().send(params);\n        if (result instanceof StytchResult.Success) {\n          System.out.println(((StytchResult.Success) result).getValue());\n        } else {\n          System.out.println(((StytchResult.Error) result).getException());\n        }\n    }\n}"
      - lang: kotlin
        label: Kotlin
        source: "// POST /v1/b2b/otps/email/discovery/send\npackage com.example\n\nimport com.stytch.java.b2b.StytchB2BClient\nimport com.stytch.java.b2b.models.otpemaildiscovery.SendRequest\n\nfun main() {\n    StytchB2BClient.configure(\n        projectId = \"${projectId}\",\n        secret = \"${secret}\",\n    )\n\n    when (\n        val result =\n            StytchB2BClient.otps.email.discovery.send(\n                SendRequest(\n                    emailAddress = \"${email}\",\n                ),\n            )\n    ) {\n        is StytchResult.Success -> println(result.value)\n        is StytchResult.Error -> println(result.exception)\n    }\n}\n"
      - lang: javascript
        label: Node.js
        source: "// POST /v1/b2b/otps/email/discovery/send\nconst stytch = require('stytch');\n\nconst client = new stytch.B2BClient({\n  project_id: '${projectId}',\n  secret: '${secret}',\n});\n\nconst params = {\n  email_address: \"${email}\",\n};\n\nclient.otps.email.discovery.send(params)\n  .then(resp => { console.log(resp) })\n  .catch(err => { console.log(err) });"
      - lang: php
        label: PHP
        source: "$response = $client->otps->email->discovery->send([\n    'email_address' => '${email}',\n]);"
      - lang: python
        label: Python
        source: "# POST /v1/b2b/otps/email/discovery/send\nfrom stytch import B2BClient\n\nclient = B2BClient(\n    project_id=\"${projectId}\",\n    secret=\"${secret}\",\n)\n\nresp = client.otps.email.discovery.send(\n    email_address=\"${email}\",\n)\n\nprint(resp)\n"
      - lang: ruby
        label: Ruby
        source: "# POST /v1/b2b/otps/email/discovery/send\nrequire 'stytch'\n\nclient = StytchB2B::Client.new(\n  project_id: \"${projectId}\",\n  secret: \"${secret}\"\n)\n\nresp = client.otps.email.discovery.send(\n  email_address: \"${email}\"\n  \n)\n\nputs resp"
      - lang: rust
        label: Rust
        source: "// POST /v1/b2b/otps/email/discovery/send\nuse stytch::b2b::client::Client;\nuse stytch::b2b::otp_email_discovery::SendRequest;\n\nfn main() {\n    let client = Client::new(\"${projectId}\", \"${secret}\").unwrap();\n    let resp = client.otps.email.discovery.send(\n        SendRequest{\n            email_address: \"${email}\",\n            ..Default::default()\n        }\n    ).await;\n    println!(\"The response is {:?}\", resp);\n}"
      - lang: bash
        label: cURL
        source: "# POST /v1/b2b/otps/email/discovery/send\ncurl --request POST \\\n  --url https://test.stytch.com/v1/b2b/otps/email/discovery/send \\\n  -u '${projectId}:${secret}' \\\n  -H 'Content-Type: application/json' \\\n  -d '{\n    \"email_address\": \"${email}\"\n  }'"
  /v1/b2b/otps/email/discovery/authenticate:
    post:
      summary: Authenticate
      operationId: api_b2b_otp_v1_b2b_otp_email_discovery_Authenticate
      tags:
      - Email
      description: Authenticates the OTP and returns an intermediate session token. Intermediate session tokens can be used for various Discovery login flows and are valid for 10 minutes.
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/api_b2b_otp_v1_b2b_otp_email_discovery_AuthenticateRequest'
      responses:
        '200':
          description: Successful response
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/api_b2b_otp_v1_b2b_otp_email_discovery_AuthenticateResponse'
        '400':
          description: Bad request
        '401':
          description: Unauthorized
          content:
            application/json:
              example:
                status_code: 401
                request_id: request-id-test-b05c992f-ebdc-489d-a754-c7e70ba13141
                error_type: unauthorized_credentials
                error_message: Unauthorized credentials.
                error_url: https://stytch.com/docs/api/errors/401
        '429':
          description: Too Many Requests
          content:
            application/json:
              example:
                status_code: 429
                request_id: request-id-test-b05c992f-ebdc-489d-a754-c7e70ba13141
                error_type: too_many_requests
                error_message: Too many requests have been made.
                error_url: https://stytch.com/docs/api/errors/429
        '500':
          description: Internal server error
          content:
            application/json:
              example:
                status_code: 500
                request_id: request-id-test-b05c992f-ebdc-489d-a754-c7e70ba13141
                error_type: internal_server_error
                error_message: Oops, something seems to have gone wrong, please reach out to support@stytch.com to let us know what went wrong.
                error_url: https://stytch.com/docs/api/errors/500
      x-code-samples:
      - lang: csharp
        label: C#
        source: "// POST /v1/b2b/otps/email/discovery/authenticate\nconst stytch = require('stytch');\n\nconst client = new stytch.B2BClient({\n  project_id: '${projectId}',\n  secret: '${secret}',\n});\n\nconst params = {\n  email_address: \"${email}\",\n  code: \"${exampleCode}\",\n};\n\nclient.OTPs.Email.Discovery.Authenticate(params)\n  .then(resp => { console.log(resp) })\n  .catch(err => { console.log(err) });"
      - lang: go
        label: Go
        source: "// POST /v1/b2b/otps/email/discovery/authenticate\npackage main\n\nimport (\n\t\"context\"\n\t\"log\"\n\n\t\"github.com/stytchauth/stytch-go/v17/stytch/b2b/b2bstytchapi\"\n\t\"github.com/stytchauth/stytch-go/v17/stytch/b2b/otp/email/discovery\"\n)\n\nfunc main() {\n\tclient, err := b2bstytchapi.NewClient(\n\t\t\"${projectId}\",\n\t\t\"${secret}\",\n\t)\n\tif err != nil {\n\t\tlog.Fatalf(\"error instantiating client: %v\", err)\n\t}\n\n\tparams := &discovery.AuthenticateParams{\n\t\tEmailAddress: \"${email}\",\n\t\tCode:         \"${exampleCode}\",\n\t}\n\n\tresp, err := client.OTPs.Email.Discovery.Authenticate(context.Background(), params)\n\tif err != nil {\n\t\tlog.Fatalf(\"error in method call: %v\", err)\n\t}\n\n\tlog.Println(resp)\n}\n"
      - lang: java
        label: Java
        source: "// POST /v1/b2b/otps/email/discovery/authenticate\npackage com.example;\n\nimport com.stytch.java.b2b.models.otpemaildiscovery.AuthenticateRequest;\nimport com.stytch.java.b2b.StytchB2BClient;\nimport com.stytch.java.common.StytchResult;\n\npublic class Main {\n    public static void main(String[] args) {\n        StytchB2BClient.configure(\"${projectId}\", \"${secret}\");\n\n        AuthenticateRequest params = new AuthenticateRequest();\n        params.setEmailAddress(\"${email}\");\n        params.setCode(\"${exampleCode}\");\n\n        Object result = StytchB2BClient.getOTPs().getEmail().getDiscovery().authenticate(params);\n        if (result instanceof StytchResult.Success) {\n          System.out.println(((StytchResult.Success) result).getValue());\n        } else {\n          System.out.println(((StytchResult.Error) result).getException());\n        }\n    }\n}"
      - lang: kotlin
        label: Kotlin
        source: "// POST /v1/b2b/otps/email/discovery/authenticate\npackage com.example\n\nimport com.stytch.java.b2b.StytchB2BClient\nimport com.stytch.java.b2b.models.otpemaildiscovery.AuthenticateRequest\n\nfun main() {\n    StytchB2BClient.configure(\n        projectId = \"${projectId}\",\n        secret = \"${secret}\",\n    )\n\n    when (\n        val result =\n            StytchB2BClient.otps.email.discovery.authenticate(\n                AuthenticateRequest(\n                    emailAddress = \"${email}\",\n                    code = \"${exampleCode}\",\n                ),\n            )\n    ) {\n        is StytchResult.Success -> println(result.value)\n        is StytchResult.Error -> println(result.exception)\n    }\n}\n"
      - lang: javascript
        label: Node.js
        source: "// POST /v1/b2b/otps/email/discovery/authenticate\nconst stytch = require('stytch');\n\nconst client = new stytch.B2BClient({\n  project_id: '${projectId}',\n  secret: '${secret}',\n});\n\nconst params = {\n  email_address: \"${email}\",\n  code: \"${exampleCode}\",\n};\n\nclient.otps.email.discovery.authenticate(params)\n  .then(resp => { console.log(resp) })\n  .catch(err => { console.log(err) });"
      - lang: php
        label: PHP
        source: "$response = $client->otps->email->discovery->authenticate([\n    'email_address' => '${email}',\n    'code' => '${exampleCode}',\n]);"
      - lang: python
        label: Python
        source: "# POST /v1/b2b/otps/email/discovery/authenticate\nfrom stytch import B2BClient\n\nclient = B2BClient(\n    project_id=\"${projectId}\",\n    secret=\"${secret}\",\n)\n\nresp = client.otps.email.discovery.authenticate(\n    email_address=\"${email}\",\n    code=\"${exampleCode}\",\n)\n\nprint(resp)\n"
      - lang: ruby
        label: Ruby
        source: "# POST /v1/b2b/otps/email/discovery/authenticate\nrequire 'stytch'\n\nclient = StytchB2B::Client.new(\n  project_id: \"${projectId}\",\n  secret: \"${secret}\"\n)\n\nresp = client.otps.email.discovery.authenticate(\n  email_address: \"${email}\",\n  code: \"${exampleCode}\"\n  \n)\n\nputs resp"
      - lang: rust
        label: Rust
        source: "// POST /v1/b2b/otps/email/discovery/authenticate\nuse stytch::b2b::client::Client;\nuse stytch::b2b::otp_email_discovery::AuthenticateRequest;\n\nfn main() {\n    let client = Client::new(\"${projectId}\", \"${secret}\").unwrap();\n    let resp = client.otps.email.discovery.authenticate(\n        AuthenticateRequest{\n            email_address: \"${email}\",\n            code: \"${exampleCode}\",\n            ..Default::default()\n        }\n    ).await;\n    println!(\"The response is {:?}\", resp);\n}"
      - lang: bash
        label: cURL
        source: "# POST /v1/b2b/otps/email/discovery/authenticate\ncurl --request POST \\\n  --url https://test.stytch.com/v1/b2b/otps/email/discovery/authenticate \\\n  -u '${projectId}:${secret}' \\\n  -H 'Content-Type: application/json' \\\n  -d '{\n    \"email_address\": \"${email}\",\n    \"code\": \"${exampleCode}\"\n  }'"
components:
  schemas:
    api_b2b_scim_v1_IMs:
      type: object
      properties:
        value:
          type: string
        type:
          type: string
        primary:
          type: boolean
      required:
      - value
      - type
      - primary
    api_b2b_scim_v1_SCIMAttributes:
      type: object
      properties:
        user_name:
          type: string
        id:
          type: string
        external_id:
          type: string
        active:
          type: boolean
        groups:
          type: array
          items:
            $ref: '#/components/schemas/api_b2b_scim_v1_Group'
        display_name:
          type: string
        nick_name:
          type: string
        profile_url:
          type: string
        user_type:
          type: string
        title:
          type: string
        preferred_language:
          type: string
        locale:
          type: string
        timezone:
          type: string
        emails:
          type: array
          items:
            $ref: '#/components/schemas/api_b2b_scim_v1_Email'
        phone_numbers:
          type: array
          items:
            $ref: '#/components/schemas/api_b2b_scim_v1_PhoneNumber'
        addresses:
          type: array
          items:
            $ref: '#/components/schemas/api_b2b_scim_v1_Address'
        ims:
          type: array
          items:
            $ref: '#/components/schemas/api_b2b_scim_v1_IMs'
        photos:
          type: array
          items:
            $ref: '#/components/schemas/api_b2b_scim_v1_Photo'
        entitlements:
          type: array
          items:
            $ref: '#/components/schemas/api_b2b_scim_v1_Entitlement'
        roles:
          type: array
          items:
            $ref: '#/components/schemas/api_b2b_scim_v1_Role'
        x509certificates:
          type: array
          items:
            $ref: '#/components/schemas/api_b2b_scim_v1_X509Certificate'
        name:
          $ref: '#/components/schemas/api_b2b_scim_v1_Name'
        enterprise_extension:
          $ref: '#/components/schemas/api_b2b_scim_v1_EnterpriseExtension'
      required:
      - user_name
      - id
      - external_id
      - active
      - groups
      - display_name
      - nick_name
      - profile_url
      - user_type
      - title
      - preferred_language
      - locale
      - timezone
      - emails
      - phone_numbers
      - addresses
      - ims
      - photos
      - entitlements
      - roles
      - x509certificates
    api_b2b_otp_v1_b2b_otp_email_discovery_AuthenticateResponse:
      type: object
      properties:
        request_id:
          type: string
          description: Globally unique UUID that is returned with every API call. This value is important to log for debugging purposes; we may ask for this value to help identify a specific API call when helping you debug an issue.
        intermediate_session_token:
          type: string
          description: The Intermediate Session Token. This token does not necessarily belong to a specific instance of a Member, but represents a bag of factors that may be converted to a member session. The token can be used with the [OTP SMS Authenticate endpoint](https://stytch.com/docs/b2b/api/authenticate-otp-sms), [TOTP Authenticate endpoint](https://stytch.com/docs/b2b/api/authenticate-totp), or [Recovery Codes Recover endpoint](https://stytch.com/docs/b2b/api/recovery-codes-recover) to complete an MFA flow and log in to the Organization. The token has a default expiry of 10 minutes. It can also be used with the [Exchange Intermediate Session endpoint](https://stytch.com/docs/b2b/api/exchange-intermediate-session) to join a specific Organization that allows the factors represented by the intermediate session token; or the [Create Organization via Discovery endpoint](https://stytch.com/docs/b2b/api/create-organization-via-discovery) to create a new Organization and Member. Intermediate Session Tokens have a default expiry of 10 minutes.
        email_address:
          type: string
          description: The email address.
        discovered_organizations:
          type: array
          items:
            $ref: '#/components/schemas/api_discovery_v1_DiscoveredOrganization'
          description: "An array of `discovered_organization` objects tied to the `intermediate_session_token`, `session_token`, or `session_jwt`. See the [Discovered Organization Object](https://stytch.com/docs/b2b/api/discovered-organization-object) for complete details.\n\n  Note that Organizations will only appear here under any of the following conditions:\n  1. The end user is already a Member of the Organization.\n  2. The end user is invited to the Organization.\n  3. The end user can join the Organization because:\n\n      a) The Organization allows JIT provisioning.\n\n      b) The Organizations' allowed domains list contains the Member's email domain.\n\n      c) The Organization has at least one other Member with a verified email address with the same domain as the end user (to prevent phishing attacks)."
        status_code:
          type: integer
          format: int32
          description: The HTTP status code of the response. Stytch follows standard HTTP response status code patterns, e.g. 2XX values equate to success, 3XX values are redirects, 4XX are client errors, and 5XX are server errors.
      required:
      - request_id
      - intermediate_session_token
      - email_address
      - discovered_organizations
      - status_code
    api_organization_v1_MemberRoleSource:
      type: object
      properties:
        type:
          type: string
          description: "The type of role assignment. The possible values are:\n \n  `direct_assignment` – an explicitly assigned Role.\n\n  Directly assigned roles can be updated by passing in the `roles` argument to the\n  [Update Member](https://stytch.com/docs/b2b/api/update-member) endpoint.\n \n  `email_assignment` – an implicit Role granted by the Member's email domain, regardless of their login method.\n\n  Email implicit role assignments can be updated by passing in the `rbac_email_implicit_role_assignments` argument to\n  the [Update Organization](https://stytch.com/docs/b2b/api/update-organization) endpoint.\n \n  `sso_connection` – an implicit Role granted by the Member's SSO connection. This is currently only available\n  for SAML connections and not for OIDC. If the Member has a SAML Member registration with the given connection, this\n  role assignment will appear in the list. However, for authorization check purposes (in\n  [sessions authenticate](https://stytch.com/docs/b2b/api/authenticate-session) or in any endpoint that enforces RBAC with session\n  headers), the Member will only be granted the Role if their session contains an authentication factor with the\n  specified SAML connection.\n\n  SAML connection implicit role assignments can be updated by passing in the\n  `saml_connection_implicit_role_assignments` argument to the\n  [Update SAML connection](https://stytch.com/docs/b2b/api/update-saml-connection) endpoint.\n \n  `sso_connection_group` – an implicit Role granted by the Member's SSO connection and group. This is currently only\n  available for SAML connections and not for OIDC. If the Member has a SAML Member registration with the given\n  connection, and belongs to a specific group within the IdP, this role assignment will appear in the list. However,\n  for authorization check purposes (in [sessions authenticate](https://stytch.com/docs/b2b/api/authenticate-session) or in any endpoint\n  that enforces RBAC with session headers), the Member will only be granted the role if their session contains an\n  authentication factor with the specified SAML connection.\n\n  SAML group implicit role assignments can be updated by passing in the `saml_group_implicit_role_assignments`\n  argument to the [Update SAML connection](https://stytch.com/docs/b2b/api/update-saml-connection) endpoint.\n\n    `scim_connection_group` – an implicit Role granted by the Member's SCIM connection and group. If the Member has\n  a SCIM Member registration with the given connection, and belongs to a specific group within the IdP, this role assignment will appear in the list.\n\n  SCIM group implicit role assignments can be updated by passing in the `scim_group_implicit_role_assignments`\n  argument to the [Update SCIM connection](https://stytch.com/docs/b2b/api/update-scim-connection) endpoint.\n  "
        details:
          type: object
          additionalProperties: true
          description: "An object containing additional metadata about the source assignment. The fields will vary depending\n  on the role assignment type as follows:\n \n  `direct_assignment` – no additional details.\n \n  `email_assignment` – will contain the email domain that granted the assignment.\n  \n  `sso_connection` – will contain the `connection_id` of the SAML connection that granted the assignment.\n \n  `sso_connection_group` – will contain the `connection_id` of the SAML connection and the name of the `group`\n  that granted the assignment.\n \n  `scim_connection_group` – will contain the `connection_id` of the SAML connection and the `group_id`\n  that granted the assignment.\n  "
      required:
      - type
    api_b2b_scim_v1_Entitlement:
      type: object
      properties:
        value:
          type: string
        type:
          type: string
        primary:
          type: boolean
      required:
      - value
      - type
      - primary
    api_b2b_scim_v1_X509Certificate:
      type: object
      properties:
        value:
          type: string
        type:
          type: string
        primary:
          type: boolean
      required:
      - value
      - type
      - primary
    api_b2b_magic_v1_b2b_magic_links_email_discovery_SendResponse:
      type: object
      properties:
        request_id:
          type: string
          description: Globally unique UUID that is returned with every API call. This value is important to log for debugging purposes; we may ask for this value to help identify a specific API call when helping you debug an issue.
        status_code:
          type: integer
          format: int32
          description: The HTTP status code of the response. Stytch follows standard HTTP response status code patterns, e.g. 2XX values equate to success, 3XX values are redirects, 4XX are client errors, and 5XX are server errors.
      required:
      - request_id
      - status_code
    api_organization_v1_SCIMRegistration:
      type: object
      prope

# --- truncated at 32 KB (68 KB total) ---
# Full source: https://raw.githubusercontent.com/api-evangelist/stytch/refs/heads/main/openapi/stytch-email-api-openapi.yml