> ## 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.

# Get a proposal

> Returns one proposal together with its RFQ. Visible to the RFQ owner and to the invited organization.



## OpenAPI

````yaml /openapi.yaml get /v2/organizations/rfq/proposals/{proposal_id}/
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: >

    The GlassMarkets 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. Market makers also use it to submit the metrics they

    report.


    The base URL is `https://api.glassmarkets.io`. Requests and responses are
    JSON,

    and times are ISO 8601 in UTC. `bps` means basis points: 1 bps is 0.01%.


    ## Authentication


    1. Log in with `POST /v1/login/`, sending your email and password. The
    response
       contains a `token` and its `expiry`.
    2. Send the token on every request in the `Authorization` header:
       `Authorization: Token <token>`.

    A token expires one day after its last use, and at most 30 days after login.

    With `"remember_me": true` at login, it stays valid for at least 7 days. A

    request with a missing, expired or revoked token returns `401`: log in
    again.

    `POST /v1/logout/` revokes the token.


    If your account has two-factor authentication, login returns `202` with a

    `challenge_id`. Send it with your authentication code to `POST
    /v1/totp/login/`

    to get the token.


    ## Quickstart


    1. Log in:

       ```
       curl -X POST https://api.glassmarkets.io/v1/login/ \
         -H "Content-Type: application/json" \
         -d '{"email": "you@example.com", "password": "..."}'
       ```

    2. List your organizations with `GET /v1/organizations/`. Each organization
       lists its assets. Each asset lists the exchanges it trades on (`slug`) and
       the pairs on each exchange. Use these exact values in other requests.

       ```
       curl https://api.glassmarkets.io/v1/organizations/ \
         -H "Authorization: Token <token>"
       ```

    3. Call an endpoint with those values, for example the daily trading volume
    of
       one of your assets:

       ```
       curl -G https://api.glassmarkets.io/v2/metrics/volume/ \
         -H "Authorization: Token <token>" \
         -d assets=BTC -d interval=1d \
         -d time_start=2026-09-01T00:00:00Z -d time_end=2026-09-08T00:00:00Z
       ```

    ## Errors


    Invalid input returns `400` with the problem per field, for example

    `{"interval": ["This field is required."]}`. Other errors return a status

    code with a `detail` message: `401` when you are not logged in, `403` when
    your

    account may not use the endpoint, and `404` when the resource does not
    exist.
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.
paths:
  /v2/organizations/rfq/proposals/{proposal_id}/:
    get:
      tags:
        - RFQ
      summary: Get a proposal
      description: >-
        Returns one proposal together with its RFQ. Visible to the RFQ owner and
        to the invited organization.
      operationId: v2_organizations_rfq_proposals_proposal_id_get
      parameters:
        - in: path
          name: proposal_id
          schema:
            type: integer
          required: true
      responses:
        '200':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/RFQProposalDetailResponse'
          description: ''
      security:
        - tokenAuth: []
components:
  schemas:
    RFQProposalDetailResponse:
      type: object
      properties:
        id:
          type: integer
        organization:
          $ref: '#/components/schemas/RFQOrganization'
        status:
          $ref: '#/components/schemas/RFQProposalStatusEnum'
        response_data: {}
        submitted_at:
          type: string
          format: date-time
          nullable: true
        reviewed_at:
          type: string
          format: date-time
          nullable: true
        version:
          type: integer
          description: Send it back when saving the proposal, to detect concurrent edits.
        created_at:
          type: string
          format: date-time
        updated_at:
          type: string
          format: date-time
        permissions:
          $ref: '#/components/schemas/RFQProposalPermissions'
        targets_created_at:
          type: string
          format: date-time
          nullable: true
        rfq:
          $ref: '#/components/schemas/RFQResponse'
      required:
        - created_at
        - id
        - organization
        - permissions
        - response_data
        - reviewed_at
        - rfq
        - status
        - submitted_at
        - targets_created_at
        - updated_at
        - version
    RFQOrganization:
      type: object
      properties:
        slug:
          type: string
        name:
          type: string
      required:
        - name
        - slug
    RFQProposalStatusEnum:
      enum:
        - pending
        - in_progress
        - submitted
        - accepted
        - rejected
      type: string
      description: |-
        * `pending` - Pending
        * `in_progress` - In Progress
        * `submitted` - Submitted
        * `accepted` - Accepted
        * `rejected` - Rejected
    RFQProposalPermissions:
      type: object
      properties:
        respond:
          type: boolean
        review:
          type: boolean
        create_targets:
          type: boolean
      required:
        - create_targets
        - respond
        - review
    RFQResponse:
      type: object
      properties:
        id:
          type: integer
        asset:
          type: string
        title:
          type: string
        subtitle:
          type: string
        status:
          $ref: '#/components/schemas/RFQStatusEnum'
        due_date:
          type: string
          format: date
          nullable: true
        template: {}
        token:
          $ref: '#/components/schemas/RFQToken'
        target_exchanges:
          type: array
          items:
            $ref: '#/components/schemas/RFQExchange'
        created_by:
          allOf:
            - $ref: '#/components/schemas/RFQAccount'
          nullable: true
        draft_owner:
          $ref: '#/components/schemas/RFQDraftOwner'
        created_at:
          type: string
          format: date-time
        updated_at:
          type: string
          format: date-time
        proposals:
          type: array
          items:
            $ref: '#/components/schemas/RFQProposalResponse'
          description: All proposals for the RFQ owner; only your own for a bidder.
        permissions:
          $ref: '#/components/schemas/RFQPermissions'
      required:
        - asset
        - created_at
        - created_by
        - draft_owner
        - due_date
        - id
        - permissions
        - proposals
        - status
        - subtitle
        - target_exchanges
        - template
        - title
        - token
        - updated_at
    RFQStatusEnum:
      enum:
        - draft
        - active
        - completed
        - archived
      type: string
      description: |-
        * `draft` - Draft
        * `active` - Active
        * `completed` - Completed
        * `archived` - Archived
    RFQToken:
      type: object
      properties:
        symbol:
          type: string
          maxLength: 255
        name:
          type: string
          maxLength: 255
        tracked_asset:
          type: string
          nullable: true
          maxLength: 255
      required:
        - name
        - symbol
        - tracked_asset
    RFQExchange:
      type: object
      properties:
        id:
          type: string
          maxLength: 255
        name:
          type: string
          maxLength: 255
        tracked_exchange:
          type: string
          nullable: true
          maxLength: 255
        market_types:
          type: array
          items:
            $ref: '#/components/schemas/MarketTypesEnum'
      required:
        - id
        - market_types
        - name
        - tracked_exchange
    RFQAccount:
      type: object
      properties:
        id:
          type: integer
        username:
          type: string
        email:
          type: string
          format: email
      required:
        - email
        - id
        - username
    RFQDraftOwner:
      type: object
      properties:
        browser_id:
          type: string
        account:
          allOf:
            - $ref: '#/components/schemas/RFQAccount'
          nullable: true
        associated_at:
          type: string
          format: date-time
      required:
        - account
        - associated_at
        - browser_id
    RFQProposalResponse:
      type: object
      properties:
        id:
          type: integer
        organization:
          $ref: '#/components/schemas/RFQOrganization'
        status:
          $ref: '#/components/schemas/RFQProposalStatusEnum'
        response_data: {}
        submitted_at:
          type: string
          format: date-time
          nullable: true
        reviewed_at:
          type: string
          format: date-time
          nullable: true
        version:
          type: integer
          description: Send it back when saving the proposal, to detect concurrent edits.
        created_at:
          type: string
          format: date-time
        updated_at:
          type: string
          format: date-time
        permissions:
          $ref: '#/components/schemas/RFQProposalPermissions'
        targets_created_at:
          type: string
          format: date-time
          nullable: true
      required:
        - created_at
        - id
        - organization
        - permissions
        - response_data
        - reviewed_at
        - status
        - submitted_at
        - targets_created_at
        - updated_at
        - version
    RFQPermissions:
      type: object
      properties:
        manage:
          type: boolean
      required:
        - manage
    MarketTypesEnum:
      enum:
        - spot
        - perpetual
      type: string
      description: |-
        * `spot` - spot
        * `perpetual` - perpetual
  securitySchemes:
    tokenAuth:
      type: apiKey
      in: header
      name: Authorization
      description: >-
        Token-based authentication with required prefix "Token ". Example:
        "Token 9944b09199c62bcf9418ad846dd0e4bbdfc6ee4b"
      x-default: Token <token>

````