> ## Documentation Index
> Fetch the complete documentation index at: https://docs.glassmarkets.io/llms.txt
> Use this file to discover all available pages before exploring further.

# Accept an organization invitation

> Sets the invited account password, optionally confirms an authenticator, and activates the account. Returns an HttpOnly browser session and optional passkey registration options. Email verification is the default second factor.



## OpenAPI

````yaml /openapi.yaml post /v1/onboarding/complete/
openapi: 3.0.3
info:
  title: Glass Market API
  version: 1.0.0
  x-logo:
    url: https://api.glassmarkets.io/static/black.png
    backgroundColor: '#FFFFFF'
    altText: Glass Market API
  description: >

    Guides, a quickstart and code samples are at

    [docs.glassmarkets.io](https://docs.glassmarkets.io). The API serves the
    data

    behind the GlassMarkets app: market data collected from crypto exchanges,
    and

    market-making data for the assets your organizations work on. The

    [Authentication guide](https://docs.glassmarkets.io/guides/authentication)

    covers login: `POST /v1/login/` returns a token that goes on every request
    as

    `Authorization: Token <token>`.
servers:
  - url: https://api.glassmarkets.io
security: []
tags:
  - name: Authentication
    description: Log in, log out and read the current session.
  - name: Organizations
    description: Your organizations, and the assets, exchanges and pairs each one covers.
  - name: Reported metrics
    description: Volume, depth and spread that market makers report for their assets.
  - name: Trusted metrics
    description: >-
      Volume, depth and spread that Shield measures directly from market makers'
      exchange accounts.
  - name: Market maker metrics
    description: >-
      Market-maker volume, depth, spread, uptime and coverage, combining trusted
      and reported data.
  - name: Targets
    description: >-
      Market-making targets per asset, exchange and pair, and whether they are
      met.
  - name: Market data
    description: >-
      Exchange market data for your assets: volume, spread, order book depth,
      slippage, uptime, futures and more.
  - name: Leaderboard
    description: Trading pairs across exchanges, ranked by market data.
  - name: Loans
    description: Token loans to market makers for your assets.
  - name: RFQ
    description: >-
      Requests for quotes: a project invites market makers to propose
      market-making terms for its token.
  - name: Account
    description: Manage your password, passkeys and two-factor authentication.
externalDocs:
  url: https://docs.glassmarkets.io
  description: Guides, quickstart and code samples
paths:
  /v1/onboarding/complete/:
    post:
      tags:
        - Authentication
      summary: Accept an organization invitation
      description: >-
        Sets the invited account password, optionally confirms an authenticator,
        and activates the account. Returns an HttpOnly browser session and
        optional passkey registration options. Email verification is the default
        second factor.
      operationId: v1_onboarding_complete_post
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/CompleteOnboarding'
          application/x-www-form-urlencoded:
            schema:
              $ref: '#/components/schemas/CompleteOnboarding'
          multipart/form-data:
            schema:
              $ref: '#/components/schemas/CompleteOnboarding'
        required: true
      responses:
        '200':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/CompletedOnboarding'
          description: ''
        '400':
          description: A field is missing or invalid.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ValidationErrors'
              examples:
                InvalidInput:
                  value:
                    first_name:
                      - This field is required.
        '429':
          $ref: '#/components/responses/Throttled'
components:
  schemas:
    CompleteOnboarding:
      type: object
      properties:
        token:
          type: string
          writeOnly: true
          maxLength: 512
        first_name:
          type: string
          maxLength: 150
        last_name:
          type: string
          default: ''
          maxLength: 150
        password:
          type: string
          writeOnly: true
          maxLength: 128
        factor:
          allOf:
            - $ref: '#/components/schemas/FactorEnum'
          default: email
        setup_id:
          type: string
          writeOnly: true
          maxLength: 64
        code:
          type: string
          writeOnly: true
          maxLength: 6
      required:
        - first_name
        - password
        - token
    CompletedOnboarding:
      type: object
      properties:
        expiry:
          type: string
          format: date-time
        token:
          type: string
        csrf_token:
          type: string
        user:
          $ref: '#/components/schemas/LoginResponseUser'
        recovery_codes:
          type: array
          items:
            type: string
        passkey_options:
          $ref: '#/components/schemas/PasskeyOptionsResponse'
      required:
        - passkey_options
        - recovery_codes
        - user
    ValidationErrors:
      type: object
      description: >-
        One entry per invalid field; `non_field_errors` covers the request as a
        whole. A field carries a list of messages or a single message; a nested
        field carries an object, or a list of objects, of the same shape.
      additionalProperties:
        anyOf:
          - type: array
            items:
              type: string
          - type: string
          - type: object
          - type: array
            items:
              type: object
    FactorEnum:
      enum:
        - email
        - authenticator
      type: string
      description: |-
        * `email` - email
        * `authenticator` - authenticator
    LoginResponseUser:
      type: object
      properties:
        username:
          type: string
        first_name:
          type: string
        id:
          type: integer
        last_name:
          type: string
        email:
          type: string
          format: email
        is_staff:
          type: boolean
        can_manage_tokenomics:
          type: boolean
      required:
        - can_manage_tokenomics
        - email
        - first_name
        - id
        - is_staff
        - last_name
        - username
    PasskeyOptionsResponse:
      type: object
      properties:
        ceremony_id:
          type: string
        public_key: {}
      required:
        - ceremony_id
        - public_key
    ErrorDetail:
      type: object
      properties:
        detail:
          type: string
      required:
        - detail
  responses:
    Throttled:
      description: Too many attempts. Wait the time given in `detail`, then retry.
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/ErrorDetail'
          examples:
            Throttled:
              value:
                detail: Request was throttled. Expected available in 42 seconds.

````

This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.