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

# Trusted artist review issues binding Quote



## OpenAPI

````yaml /api-reference/openapi.bundled.json post /quotes/{id}/review
openapi: 3.1.0
info:
  title: UQP reference bindings — not production
  version: 0.1.0
  description: >-
    No UCP conformance claim. OAuth 2.0 bearer authorization is described only,
    not implemented by the local fixture.
servers: []
security: []
paths:
  /quotes/{id}/review:
    post:
      summary: Trusted artist review issues binding Quote
      operationId: review_quote
      parameters:
        - name: id
          in: path
          required: true
          schema:
            type: string
            minLength: 1
        - name: Idempotency-Key
          in: header
          required: true
          schema:
            type: string
            minLength: 1
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              properties:
                valid_until:
                  type: string
                  format: date-time
              required:
                - valid_until
              additionalProperties: false
      responses:
        '200':
          description: Success
          content:
            application/json:
              schema:
                type: object
                properties:
                  id:
                    type: string
                    minLength: 1
                  state:
                    title: LifecycleState
                    type: string
                    enum:
                      - INITIATED
                      - MANIFEST_ISSUED
                      - PAYLOAD_SUBMITTED
                      - MUTATION_REQUIRED
                      - VALIDATED_PENDING_REVIEW
                      - QUOTED
                      - ACCEPTED
                      - DECLINED
                      - EXPIRED
                    transitions:
                      INITIATED:
                        - MANIFEST_ISSUED
                      MANIFEST_ISSUED:
                        - PAYLOAD_SUBMITTED
                      PAYLOAD_SUBMITTED:
                        - MUTATION_REQUIRED
                        - VALIDATED_PENDING_REVIEW
                      MUTATION_REQUIRED:
                        - PAYLOAD_SUBMITTED
                      VALIDATED_PENDING_REVIEW:
                        - QUOTED
                        - MUTATION_REQUIRED
                        - DECLINED
                      QUOTED:
                        - ACCEPTED
                        - DECLINED
                        - EXPIRED
                      ACCEPTED: []
                      DECLINED: []
                      EXPIRED: []
                  estimate:
                    title: Estimate
                    type: object
                    properties:
                      pack_id:
                        type: string
                        minLength: 1
                      pack_version:
                        type: string
                        minLength: 1
                      answers:
                        type: object
                        propertyNames:
                          not:
                            enum:
                              - email
                              - phone
                              - name
                              - first_name
                              - last_name
                              - full_name
                              - address
                              - contact
                              - contact_details
                              - date_of_birth
                        additionalProperties: true
                      artist_review_mode:
                        enum:
                          - pre_price
                          - post_price
                      price_range:
                        type: object
                        properties:
                          min:
                            type: number
                            minimum: 0
                          max:
                            type: number
                            minimum: 0
                          currency:
                            type: string
                            pattern: ^[A-Z]{3}$
                          basis:
                            enum:
                              - hourly
                              - day_rate
                              - from
                              - fixed
                          method:
                            enum:
                              - artist_stated
                              - rule
                              - logged_quotes
                          'n':
                            type: integer
                            minimum: 5
                          provenance:
                            type: object
                            properties:
                              who:
                                type: string
                                minLength: 1
                              when:
                                type: string
                                format: date-time
                            required:
                              - who
                              - when
                            additionalProperties: false
                          min_minor:
                            type: integer
                            minimum: 0
                            maximum: 9007199254740991
                          max_minor:
                            type: integer
                            minimum: 0
                            maximum: 9007199254740991
                        required:
                          - min
                          - max
                          - currency
                          - basis
                          - method
                          - provenance
                        additionalProperties: false
                        allOf:
                          - if:
                              properties:
                                method:
                                  const: logged_quotes
                              required:
                                - method
                            then:
                              required:
                                - 'n'
                              properties:
                                'n': {}
                      sessions:
                        oneOf:
                          - type: object
                            properties:
                              count:
                                type: integer
                                minimum: 0
                              hours_per_session:
                                type: number
                                minimum: 0
                            required:
                              - count
                              - hours_per_session
                            additionalProperties: false
                          - type: object
                            properties:
                              min:
                                type: integer
                                minimum: 1
                              max:
                                type: integer
                                minimum: 1
                            required:
                              - min
                              - max
                            additionalProperties: false
                      deposit:
                        type: object
                        description: >-
                          Provider is merchant of record; UQP never holds funds.
                          Only processor confirmation marks a deposit paid.
                        properties:
                          amount:
                            type: number
                            minimum: 0
                          basis:
                            type: string
                            minLength: 1
                          policies:
                            type: array
                            minItems: 1
                            items:
                              type: string
                              minLength: 1
                          status:
                            enum:
                              - unpaid
                              - paid
                          merchant_of_record:
                            const: provider
                          confirmation:
                            type: object
                            properties:
                              source:
                                const: payment_processor
                              reference:
                                type: string
                                minLength: 1
                              confirmed_at:
                                type: string
                                format: date-time
                            required:
                              - source
                              - reference
                              - confirmed_at
                            additionalProperties: false
                          provenance:
                            type: object
                            properties:
                              who:
                                type: string
                                minLength: 1
                              when:
                                type: string
                                format: date-time
                            required:
                              - who
                              - when
                            additionalProperties: false
                          amount_minor:
                            type: integer
                            minimum: 0
                            maximum: 9007199254740991
                          capture_on:
                            enum:
                              - accept
                              - booking
                              - immediate
                          refundable_until:
                            type:
                              - string
                              - 'null'
                            format: date-time
                          policy_url:
                            type: string
                            format: uri
                        required:
                          - amount
                          - basis
                          - policies
                          - status
                          - merchant_of_record
                          - provenance
                        additionalProperties: false
                        allOf:
                          - if:
                              properties:
                                status:
                                  const: paid
                              required:
                                - status
                            then:
                              required:
                                - confirmation
                              properties:
                                confirmation: {}
                            else:
                              not:
                                required:
                                  - confirmation
                                properties:
                                  confirmation: {}
                      assumptions:
                        type: array
                        items:
                          type: string
                      intermediates:
                        type: array
                        minItems: 1
                        items:
                          type: object
                          properties:
                            step:
                              type: string
                              minLength: 1
                            factor_id:
                              type: string
                              minLength: 1
                            input: {}
                            value: {}
                            skipped:
                              const: true
                            reason:
                              type: string
                          required:
                            - step
                            - factor_id
                            - input
                            - value
                          additionalProperties: false
                      review_status:
                        enum:
                          - VALIDATED_PENDING_REVIEW
                          - MUTATION_REQUIRED
                      consent:
                        type: object
                        properties:
                          share_for_pricing_research:
                            type: boolean
                          anonymize:
                            type: boolean
                          captured_at:
                            type: string
                            format: date-time
                        required:
                          - share_for_pricing_research
                          - anonymize
                          - captured_at
                        additionalProperties: false
                      anonymized:
                        type: boolean
                      kind:
                        const: estimate
                      binding:
                        const: false
                      confidence:
                        enum:
                          - low
                          - medium
                          - high
                      requires_in_person_consult:
                        type: boolean
                    required:
                      - pack_id
                      - pack_version
                      - answers
                      - artist_review_mode
                      - sessions
                      - deposit
                      - assumptions
                      - intermediates
                      - review_status
                      - consent
                      - anonymized
                      - price_range
                      - kind
                      - binding
                      - confidence
                    additionalProperties: false
                    description: >-
                      Non-binding PricingModel result returned on
                      PAYLOAD_SUBMITTED; incomplete inputs require mutation,
                      never omission of a price.
                  quote:
                    title: Quote
                    type: object
                    properties:
                      pack_id:
                        type: string
                        minLength: 1
                      pack_version:
                        type: string
                        minLength: 1
                      answers:
                        type: object
                        propertyNames:
                          not:
                            enum:
                              - email
                              - phone
                              - name
                              - first_name
                              - last_name
                              - full_name
                              - address
                              - contact
                              - contact_details
                              - date_of_birth
                        additionalProperties: true
                      artist_review_mode:
                        enum:
                          - pre_price
                          - post_price
                      price_range:
                        type: object
                        properties:
                          min:
                            type: number
                            minimum: 0
                          max:
                            type: number
                            minimum: 0
                          currency:
                            type: string
                            pattern: ^[A-Z]{3}$
                          basis:
                            enum:
                              - hourly
                              - day_rate
                              - from
                              - fixed
                          method:
                            enum:
                              - artist_stated
                              - rule
                              - logged_quotes
                          'n':
                            type: integer
                            minimum: 5
                          provenance:
                            type: object
                            properties:
                              who:
                                type: string
                                minLength: 1
                              when:
                                type: string
                                format: date-time
                            required:
                              - who
                              - when
                            additionalProperties: false
                          min_minor:
                            type: integer
                            minimum: 0
                            maximum: 9007199254740991
                          max_minor:
                            type: integer
                            minimum: 0
                            maximum: 9007199254740991
                        required:
                          - min
                          - max
                          - currency
                          - basis
                          - method
                          - provenance
                        additionalProperties: false
                        allOf:
                          - if:
                              properties:
                                method:
                                  const: logged_quotes
                              required:
                                - method
                            then:
                              required:
                                - 'n'
                              properties:
                                'n': {}
                      sessions:
                        type: object
                        properties:
                          count:
                            type: integer
                            minimum: 0
                          hours_per_session:
                            type: number
                            minimum: 0
                        required:
                          - count
                          - hours_per_session
                        additionalProperties: false
                      deposit:
                        type: object
                        description: >-
                          Provider is merchant of record; UQP never holds funds.
                          Only processor confirmation marks a deposit paid.
                        properties:
                          amount:
                            type: number
                            minimum: 0
                          basis:
                            type: string
                            minLength: 1
                          policies:
                            type: array
                            minItems: 1
                            items:
                              type: string
                              minLength: 1
                          status:
                            enum:
                              - unpaid
                              - paid
                          merchant_of_record:
                            const: provider
                          confirmation:
                            type: object
                            properties:
                              source:
                                const: payment_processor
                              reference:
                                type: string
                                minLength: 1
                              confirmed_at:
                                type: string
                                format: date-time
                            required:
                              - source
                              - reference
                              - confirmed_at
                            additionalProperties: false
                          provenance:
                            type: object
                            properties:
                              who:
                                type: string
                                minLength: 1
                              when:
                                type: string
                                format: date-time
                            required:
                              - who
                              - when
                            additionalProperties: false
                          amount_minor:
                            type: integer
                            minimum: 0
                            maximum: 9007199254740991
                          capture_on:
                            enum:
                              - accept
                              - booking
                              - immediate
                          refundable_until:
                            type:
                              - string
                              - 'null'
                            format: date-time
                          policy_url:
                            type: string
                            format: uri
                        required:
                          - amount
                          - basis
                          - policies
                          - status
                          - merchant_of_record
                          - provenance
                        additionalProperties: false
                        allOf:
                          - if:
                              properties:
                                status:
                                  const: paid
                              required:
                                - status
                            then:
                              required:
                                - confirmation
                              properties:
                                confirmation: {}
                            else:
                              not:
                                required:
                                  - confirmation
                                properties:
                                  confirmation: {}
                      assumptions:
                        type: array
                        items:
                          type: string
                      intermediates:
                        type: array
                        minItems: 1
                        items:
                          type: object
                          properties:
                            step:
                              type: string
                              minLength: 1
                            factor_id:
                              type: string
                              minLength: 1
                            input: {}
                            value: {}
                            skipped:
                              const: true
                            reason:
                              type: string
                          required:
                            - step
                            - factor_id
                            - input
                            - value
                          additionalProperties: false
                      review_status:
                        enum:
                          - QUOTED
                          - ACCEPTED
                          - DECLINED
                          - EXPIRED
                      consent:
                        type: object
                        properties:
                          share_for_pricing_research:
                            type: boolean
                          anonymize:
                            type: boolean
                          captured_at:
                            type: string
                            format: date-time
                        required:
                          - share_for_pricing_research
                          - anonymize
                          - captured_at
                        additionalProperties: false
                      anonymized:
                        type: boolean
                      valid_until:
                        type: string
                        format: date-time
                      kind:
                        const: quote
                      binding:
                        const: true
                      confidence:
                        enum:
                          - low
                          - medium
                          - high
                      client_approval:
                        type: object
                        properties:
                          amount:
                            type: number
                            minimum: 0
                          currency:
                            type: string
                            pattern: ^[A-Z]{3}$
                          policies:
                            type: array
                            minItems: 1
                            items:
                              type: string
                              minLength: 1
                          approved_amount:
                            const: true
                          approved_policies:
                            const: true
                          approved_at:
                            type: string
                            format: date-time
                          amount_minor:
                            type: integer
                            minimum: 0
                            maximum: 9007199254740991
                        required:
                          - amount
                          - currency
                          - policies
                          - approved_amount
                          - approved_policies
                          - approved_at
                        additionalProperties: false
                      attribution:
                        type: object
                        description: >-
                          Neutral routing attribution; not payment authorization
                          or proof of consent.
                        properties:
                          referrer_id:
                            type: string
                          token:
                            type: string
                          campaign:
                            type: string
                          source:
                            type: string
                        additionalProperties: false
                      quantity:
                        type: integer
                        minimum: 1
                        maximum: 9007199254740991
                      quantity_unit:
                        type: object
                        description: >-
                          Rec 20 unit descriptor. Quantity counts steps of
                          10^-scale units; omitted scale means zero.
                        properties:
                          unit:
                            enum:
                              - C62
                              - INH
                              - CMT
                              - FTK
                              - MTK
                              - HUR
                              - MIN
                          scale:
                            type: integer
                            minimum: 0
                            maximum: 15
                            default: 0
                          display_text:
                            type: string
                        required:
                          - unit
                          - display_text
                        additionalProperties: false
                        allOf:
                          - if:
                              properties:
                                unit:
                                  const: C62
                              required:
                                - unit
                            then:
                              properties:
                                scale:
                                  const: 0
                      checkout_handoff:
                        type: object
                        description: >-
                          Reference handoff metadata, not payment execution.
                          Draft proposal mappings are subject to change; no
                          conformance claim.
                        properties:
                          protocol:
                            enum:
                              - ucp
                              - acp
                          url:
                            type:
                              - string
                              - 'null'
                            format: uri
                          ucp_quote_status:
                            enum:
                              - pending
                              - quoted
                              - accepted
                              - declined
                              - expired
                              - withdrawn
                          acp_quote_id:
                            type: string
                          quote_expires_at:
                            type: string
                            format: date-time
                        required:
                          - protocol
                          - url
                        additionalProperties: false
                      id:
                        type: string
                        minLength: 1
                      expires_at:
                        type: string
                        format: date-time
                    required:
                      - pack_id
                      - pack_version
                      - answers
                      - artist_review_mode
                      - sessions
                      - deposit
                      - valid_until
                      - assumptions
                      - intermediates
                      - review_status
                      - consent
                      - anonymized
                      - price_range
                      - kind
                      - binding
                      - confidence
                    additionalProperties: false
                    allOf:
                      - if:
                          properties:
                            review_status:
                              const: ACCEPTED
                          required:
                            - review_status
                        then:
                          required:
                            - client_approval
                          properties:
                            client_approval: {}
                required:
                  - id
                  - state
                  - estimate
                additionalProperties: false
          headers:
            RateLimit-Policy:
              description: Optional per-business policy; no protocol-wide values.
              schema:
                type: string
        '400':
          description: Invalid request
          content:
            application/json:
              schema:
                type: object
                properties:
                  error:
                    type: object
                    properties:
                      code:
                        type: string
                        minLength: 1
                      message:
                        type: string
                        minLength: 1
                      current_state:
                        title: LifecycleState
                        type: string
                        enum:
                          - INITIATED
                          - MANIFEST_ISSUED
                          - PAYLOAD_SUBMITTED
                          - MUTATION_REQUIRED
                          - VALIDATED_PENDING_REVIEW
                          - QUOTED
                          - ACCEPTED
                          - DECLINED
                          - EXPIRED
                        transitions:
                          INITIATED:
                            - MANIFEST_ISSUED
                          MANIFEST_ISSUED:
                            - PAYLOAD_SUBMITTED
                          PAYLOAD_SUBMITTED:
                            - MUTATION_REQUIRED
                            - VALIDATED_PENDING_REVIEW
                          MUTATION_REQUIRED:
                            - PAYLOAD_SUBMITTED
                          VALIDATED_PENDING_REVIEW:
                            - QUOTED
                            - MUTATION_REQUIRED
                            - DECLINED
                          QUOTED:
                            - ACCEPTED
                            - DECLINED
                            - EXPIRED
                          ACCEPTED: []
                          DECLINED: []
                          EXPIRED: []
                    required:
                      - code
                      - message
                    additionalProperties: false
                required:
                  - error
                additionalProperties: false
          headers:
            RateLimit-Policy:
              description: Optional per-business policy; no protocol-wide values.
              schema:
                type: string
        '403':
          description: Trusted artist authorization required
        '404':
          description: Not found
          content:
            application/json:
              schema:
                type: object
                properties:
                  error:
                    type: object
                    properties:
                      code:
                        type: string
                        minLength: 1
                      message:
                        type: string
                        minLength: 1
                      current_state:
                        title: LifecycleState
                        type: string
                        enum:
                          - INITIATED
                          - MANIFEST_ISSUED
                          - PAYLOAD_SUBMITTED
                          - MUTATION_REQUIRED
                          - VALIDATED_PENDING_REVIEW
                          - QUOTED
                          - ACCEPTED
                          - DECLINED
                          - EXPIRED
                        transitions:
                          INITIATED:
                            - MANIFEST_ISSUED
                          MANIFEST_ISSUED:
                            - PAYLOAD_SUBMITTED
                          PAYLOAD_SUBMITTED:
                            - MUTATION_REQUIRED
                            - VALIDATED_PENDING_REVIEW
                          MUTATION_REQUIRED:
                            - PAYLOAD_SUBMITTED
                          VALIDATED_PENDING_REVIEW:
                            - QUOTED
                            - MUTATION_REQUIRED
                            - DECLINED
                          QUOTED:
                            - ACCEPTED
                            - DECLINED
                            - EXPIRED
                          ACCEPTED: []
                          DECLINED: []
                          EXPIRED: []
                    required:
                      - code
                      - message
                    additionalProperties: false
                required:
                  - error
                additionalProperties: false
          headers:
            RateLimit-Policy:
              description: Optional per-business policy; no protocol-wide values.
              schema:
                type: string
        '409':
          description: Conflict; current_state on lifecycle conflicts
          content:
            application/json:
              schema:
                type: object
                properties:
                  error:
                    type: object
                    properties:
                      code:
                        type: string
                        minLength: 1
                      message:
                        type: string
                        minLength: 1
                      current_state:
                        title: LifecycleState
                        type: string
                        enum:
                          - INITIATED
                          - MANIFEST_ISSUED
                          - PAYLOAD_SUBMITTED
                          - MUTATION_REQUIRED
                          - VALIDATED_PENDING_REVIEW
                          - QUOTED
                          - ACCEPTED
                          - DECLINED
                          - EXPIRED
                        transitions:
                          INITIATED:
                            - MANIFEST_ISSUED
                          MANIFEST_ISSUED:
                            - PAYLOAD_SUBMITTED
                          PAYLOAD_SUBMITTED:
                            - MUTATION_REQUIRED
                            - VALIDATED_PENDING_REVIEW
                          MUTATION_REQUIRED:
                            - PAYLOAD_SUBMITTED
                          VALIDATED_PENDING_REVIEW:
                            - QUOTED
                            - MUTATION_REQUIRED
                            - DECLINED
                          QUOTED:
                            - ACCEPTED
                            - DECLINED
                            - EXPIRED
                          ACCEPTED: []
                          DECLINED: []
                          EXPIRED: []
                    required:
                      - code
                      - message
                    additionalProperties: false
                required:
                  - error
                additionalProperties: false
          headers:
            RateLimit-Policy:
              description: Optional per-business policy; no protocol-wide values.
              schema:
                type: string

````

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