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

# Gets one proposal, with the products and bundles it quotes.

> The list's fields plus `LineItems`: each product or bundle on the proposal, in the order
it appears, with the quantity, price, discount, tax and amount the proposal editor saved.
A proposal that does not exist, has been deleted, or belongs to another service provider is a
404.



## OpenAPI

````yaml /api-reference/openapi.json get /v1/proposals/{proposalId}
openapi: 3.0.4
info:
  title: Public API
  description: Gorelo Public API documentation.
  version: 1.0.0
servers:
  - url: https://api.usw.gorelo.io
    description: US
  - url: https://api.aue.gorelo.io
    description: Australia
security:
  - ApiKeyAuth: []
tags:
  - name: Attachments
    description: "Uploading a file, for anything that can carry one. One endpoint rather than one per record\r\ntype, because the upload itself is identical - only the record it is checked against differs."
  - name: Alerts
    description: Alerts management operations
  - name: Assets
    description: Assets management operations
  - name: Billing
    description: Billing management operations
  - name: Tickets
    description: Tickets management operations
  - name: Clients
    description: Clients management operations
  - name: Contacts
    description: Contacts management operations
  - name: Deletions
    description: Deletions management operations
  - name: Documents
    description: Documents management operations
  - name: Forms
    description: Forms management operations
  - name: Organization
    description: Organization management operations
  - name: Projects
    description: Projects management operations
paths:
  /v1/proposals/{proposalId}:
    get:
      tags:
        - Billing
      summary: Gets one proposal, with the products and bundles it quotes.
      description: "The list's fields plus `LineItems`: each product or bundle on the proposal, in the order\r\nit appears, with the quantity, price, discount, tax and amount the proposal editor saved.\r\nA proposal that does not exist, has been deleted, or belongs to another service provider is a\r\n404."
      operationId: get_v1_proposals_proposalId
      parameters:
        - name: proposalId
          in: path
          description: Proposal identifier.
          required: true
          schema:
            type: string
            format: uuid
      responses:
        '200':
          description: OK
          content:
            text/plain:
              schema:
                $ref: '#/components/schemas/ProposalDetailModelBaseResponse'
            application/json:
              schema:
                $ref: '#/components/schemas/ProposalDetailModelBaseResponse'
            text/json:
              schema:
                $ref: '#/components/schemas/ProposalDetailModelBaseResponse'
        '401':
          description: Unauthorized
          content:
            text/plain:
              schema:
                $ref: '#/components/schemas/ObjectBaseResponse'
            application/json:
              schema:
                $ref: '#/components/schemas/ObjectBaseResponse'
            text/json:
              schema:
                $ref: '#/components/schemas/ObjectBaseResponse'
        '404':
          description: Not Found
          content:
            text/plain:
              schema:
                $ref: '#/components/schemas/ObjectBaseResponse'
            application/json:
              schema:
                $ref: '#/components/schemas/ObjectBaseResponse'
            text/json:
              schema:
                $ref: '#/components/schemas/ObjectBaseResponse'
        '500':
          description: Internal Server Error
          content:
            text/plain:
              schema:
                $ref: '#/components/schemas/ObjectBaseResponse'
            application/json:
              schema:
                $ref: '#/components/schemas/ObjectBaseResponse'
            text/json:
              schema:
                $ref: '#/components/schemas/ObjectBaseResponse'
components:
  schemas:
    ProposalDetailModelBaseResponse:
      type: object
      properties:
        StatusCode:
          $ref: '#/components/schemas/HttpStatusCode'
        IsSuccess:
          type: boolean
        Data:
          $ref: '#/components/schemas/ProposalDetailModel'
        DataContext:
          type: object
          additionalProperties: false
          nullable: true
          example: null
        Notifications:
          type: array
          items:
            $ref: '#/components/schemas/Error'
      additionalProperties: false
    ObjectBaseResponse:
      type: object
      properties:
        StatusCode:
          $ref: '#/components/schemas/HttpStatusCode'
        IsSuccess:
          type: boolean
        Data:
          nullable: true
        DataContext:
          $ref: '#/components/schemas/ErrorDataContext'
        Notifications:
          type: array
          items:
            $ref: '#/components/schemas/Error'
      additionalProperties: false
    HttpStatusCode:
      enum:
        - 100
        - 101
        - 102
        - 103
        - 200
        - 201
        - 202
        - 203
        - 204
        - 205
        - 206
        - 207
        - 208
        - 226
        - 300
        - 301
        - 302
        - 303
        - 304
        - 305
        - 306
        - 307
        - 308
        - 400
        - 401
        - 402
        - 403
        - 404
        - 405
        - 406
        - 407
        - 408
        - 409
        - 410
        - 411
        - 412
        - 413
        - 414
        - 415
        - 416
        - 417
        - 421
        - 422
        - 423
        - 424
        - 426
        - 428
        - 429
        - 431
        - 451
        - 500
        - 501
        - 502
        - 503
        - 504
        - 505
        - 506
        - 507
        - 508
        - 510
        - 511
      type: integer
      format: int32
    ProposalDetailModel:
      type: object
      properties:
        Id:
          type: string
          description: Identifier of the proposal.
          format: uuid
          example: 08de0a6c-70d2-6625-16a6-8289a1670000
        Name:
          type: string
          description: The proposal's name.
          example: Managed services proposal
        Status:
          $ref: '#/components/schemas/CodeModel'
        ClientId:
          type: integer
          description: The client the proposal is for. Null when none has been chosen yet.
          format: int64
          nullable: true
          example: 9361
        ContactId:
          type: integer
          description: >-
            The client contact the proposal is addressed to. Null when none has
            been chosen.
          format: int64
          nullable: true
          example: 14875
        CcContactIds:
          type: array
          items:
            type: integer
            format: int64
          description: Client contacts copied on the proposal. Empty when there are none.
        UserId:
          type: integer
          description: >-
            The technician who owns the proposal. Null when none has been
            chosen.
          format: int64
          nullable: true
          example: 6239
        EmailTemplateId:
          type: integer
          description: >-
            The email template the proposal is sent with. Null when none has
            been chosen.
          format: int64
          nullable: true
        ExpiryDate:
          type: string
          description: The date the proposal expires, a calendar date.
          format: date
          nullable: true
          example: '2025-11-12'
        LineItems:
          type: array
          items:
            $ref: '#/components/schemas/ProposalLineItemModel'
          description: "The products and bundles quoted on the proposal, in the order they appear on it. Empty when the\r\nproposal has no product blocks yet. Prices, discounts, tax and amounts are as the proposal\r\neditor calculated and saved them."
        CreatedOn:
          type: string
          description: When the proposal was created.
          format: date-time
        UpdatedOn:
          type: string
          description: When the proposal was last changed. Null when it never has been.
          format: date-time
          nullable: true
      additionalProperties: false
      description: "One proposal with its line items - the products and bundles on the proposal's product blocks - in\r\nthe shape `GET /v1/proposals/{proposalId}` returns."
    Error:
      type: object
      properties:
        Code:
          pattern: ^[0-9]{6}$
          type: string
          description: 6-digit MMTTNN error code. See the Public API error-code registry.
          example: '070101'
        Message:
          type: string
        PropertyName:
          type: string
          nullable: true
        ActionHint:
          type: string
          nullable: true
        DocUrl:
          type: string
          nullable: true
      additionalProperties: false
    ErrorDataContext:
      type: object
      properties:
        TraceId:
          type: string
          description: Request correlation id. Quote this when reporting a problem.
          nullable: true
      additionalProperties: false
      description: "The `DataContext` of an error response: carries the correlation id for the failed\r\nrequest."
    CodeModel:
      type: object
      properties:
        Id:
          type: integer
          description: >-
            Numeric identifier of the coded value (e.g. status, priority, type,
            or source id).
          format: int64
          example: 1
        Name:
          type: string
          description: Display name of the coded value.
      additionalProperties: false
      description: >-
        A coded value, such as a status, priority, type or source, as an id and
        a display name.
    ProposalLineItemModel:
      type: object
      properties:
        ItemId:
          type: string
          description: The catalog item quoted, as `GET /v1/items/{itemId}` takes it.
          format: uuid
        Name:
          type: string
          description: The item's name as quoted.
        Description:
          type: string
          description: Description quoted for the item. Null when there is none.
          nullable: true
        Quantity:
          type: number
          description: Quantity quoted.
          format: double
        UnitPrice:
          type: number
          description: Price of one unit, before discount and tax.
          format: double
        UnitCost:
          type: number
          description: Cost of one unit to the service provider.
          format: double
        DiscountPercent:
          type: number
          description: Discount on the line, as a percentage.
          format: double
        TaxId:
          type: integer
          description: >-
            The tax rate applied, as `GET /v1/taxes` lists it. Null when the
            line is untaxed.
          format: int64
          nullable: true
        TaxAmount:
          type: number
          description: Tax on the line.
          format: double
        Amount:
          type: number
          description: The line's amount, after discount and before tax.
          format: double
        IsOptional:
          type: boolean
          description: >-
            Whether the client may leave the line out when accepting the
            proposal.
        IsRecurring:
          type: boolean
          description: Whether the line recurs rather than being charged once.
        RepeatPeriod:
          $ref: '#/components/schemas/CodeModel'
        SubItems:
          type: array
          items:
            $ref: '#/components/schemas/ProposalSubItemModel'
          description: The items inside a bundle line. Empty for every other line.
      additionalProperties: false
      description: A product or bundle quoted on a proposal.
    ProposalSubItemModel:
      type: object
      properties:
        ItemId:
          type: string
          description: The catalog item.
          format: uuid
        Name:
          type: string
          description: The item's name.
      additionalProperties: false
      description: An item inside a quoted bundle.
  securitySchemes:
    ApiKeyAuth:
      type: apiKey
      description: >-
        Your Gorelo API key. See [Generate API key](/generate-api-key). If your
        data is hosted in Australia, click the base URL at the top of this page
        and select `https://api.aue.gorelo.io`.
      name: X-API-Key
      in: header

````

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