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

# Get Product

> Get a product with the given key

NsApiSlow threshold: 5000 ms.



## OpenAPI

````yaml /openapi/agent/openapi-v3-QuoteAgent.json post /api/v1/Agents/Quote/GetProduct
openapi: 3.0.0
info:
  version: v1-Agents
  title: SuperOffice Agent API v1
  description: SuperOffice Agent API - QuoteAgent
  contact:
    name: SuperOffice DevNet
    url: https://docs.superoffice.com/en/api/index.html
    email: sdk@superoffice.com
servers:
  - url: http://localhost:56350
  - url: https://localhost:56350
security: []
tags: []
externalDocs:
  description: >-
    The SuperOffice DevNet Community has more documentation, examples, and
    discussion forums.
  url: https://community.superoffice.com/en/developer/
paths:
  /api/v1/Agents/Quote/GetProduct:
    post:
      tags:
        - Quote_Agent
      summary: Get Product
      description: |-
        Get a product with the given key

        NsApiSlow threshold: 5000 ms.
      operationId: v1QuoteAgent_GetProduct
      parameters:
        - name: $select
          in: query
          description: >-
            Optional comma separated list of properties to include in the
            result. Other fields are then nulled out to reduce payload size:
            "Name,department,category". Default = show all fields.
          required: false
          schema:
            type: string
        - name: Accept-Language
          in: header
          description: >-
            Convert string references and multi-language values into a specified
            language (iso2) code.
          required: false
          schema:
            type: string
        - name: SO-Language
          in: header
          description: >-
            Convert string references and multi-language values into a specified
            language (iso2) code. Overrides Accept-Language value.
          required: false
          schema:
            type: string
        - name: SO-Culture
          in: header
          description: >-
            Number, date formatting in a specified culture (iso2 language) code.
            Partially overrides SO-Language/Accept-Language value. Ignored if no
            Language set.
          required: false
          schema:
            type: string
        - name: SO-TimeZone
          in: header
          description: >-
            Specify the timezone code that you would like date/time responses
            converted to.
          required: false
          schema:
            type: string
        - name: SO-AppToken
          in: header
          description: >-
            The application token that identifies the partner app. Used when
            calling Online WebAPI from a server.
          required: false
          schema:
            type: string
      requestBody:
        content:
          application/json:
            schema:
              $ref: >-
                #/components/schemas/SuperOffice.WebApi.v1.Carriers.QuoteCarriers.GetProductRequest
          text/json:
            schema:
              $ref: >-
                #/components/schemas/SuperOffice.WebApi.v1.Carriers.QuoteCarriers.GetProductRequest
          application/xml:
            schema:
              $ref: >-
                #/components/schemas/SuperOffice.WebApi.v1.Carriers.QuoteCarriers.GetProductRequest
          text/xml:
            schema:
              $ref: >-
                #/components/schemas/SuperOffice.WebApi.v1.Carriers.QuoteCarriers.GetProductRequest
          application/x-www-form-urlencoded:
            schema:
              $ref: >-
                #/components/schemas/SuperOffice.WebApi.v1.Carriers.QuoteCarriers.GetProductRequest
          application/json-patch+json:
            schema:
              $ref: >-
                #/components/schemas/SuperOffice.WebApi.v1.Carriers.QuoteCarriers.GetProductRequest
          application/merge-patch+json:
            schema:
              $ref: >-
                #/components/schemas/SuperOffice.WebApi.v1.Carriers.QuoteCarriers.GetProductRequest
        description: QuoteConnectionId, ERPProductKey
        required: true
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/SuperOffice.CRM.Services.Product'
            text/json:
              schema:
                $ref: '#/components/schemas/SuperOffice.CRM.Services.Product'
            application/xml:
              schema:
                $ref: '#/components/schemas/SuperOffice.CRM.Services.Product'
            text/xml:
              schema:
                $ref: '#/components/schemas/SuperOffice.CRM.Services.Product'
            application/json-patch+json:
              schema:
                $ref: '#/components/schemas/SuperOffice.CRM.Services.Product'
            application/merge-patch+json:
              schema:
                $ref: '#/components/schemas/SuperOffice.CRM.Services.Product'
      security:
        - SuperOffice_Password: []
          SuperId_Authentication: []
components:
  schemas:
    SuperOffice.WebApi.v1.Carriers.QuoteCarriers.GetProductRequest:
      description: 'GetProduct: Get a product with the given key'
      type: object
      properties:
        QuoteConnectionId:
          format: int32
          type: integer
        ERPProductKey:
          type: string
    SuperOffice.CRM.Services.Product:
      description: "Information about a Product from the ERP system. This may be fetched from SuperOffice Product table through the SO Connector\r\n<para />\r\nCarrier object for Product.\r\nServices for the Product Carrier is available from the <see cref=\"T:SuperOffice.CRM.Services.IQuoteAgent\">Quote Agent</see>."
      type: object
      properties:
        ProductId:
          format: int32
          description: Primary key
          type: integer
        ERPProductKey:
          description: >-
            Reference/foreign key to the product in the given pricelist in the
            product supplier system, if it exists there.
          type: string
        ERPPriceListKey:
          description: >-
            Foreign key to the price list that this product is a part of, or the
            primary key of the pricelist if this is a built-in pricelist.
          type: string
        Name:
          description: The name to use in the user interface.
          type: string
        Description:
          description: >-
            The description to use, with potentially several lines. Will be used
            as tool-tip to use in the list user interface too.
          type: string
        Code:
          description: The product code / article number in the product supplier system.
          type: string
        PriceUnit:
          description: >-
            What is the unit (meter, ton, bushel, microsecond, gradus, τρυβλίον,
            五合枡, دونم or whatever); read-only for lines that originate in
            defined products
          type: string
        QuantityUnit:
          description: >-
            What is the unit (meter, ton, bushel, microsecond, gradus, τρυβλίον,
            五合枡, دونم or whatever); Connector handles conversion relative to
            PriceUnit if they are different
          type: string
        IsSubscription:
          description: Is this a subscription product, sold in repeating intervals/amounts?
          type: boolean
        SubscriptionUnit:
          description: >-
            Either a List id to an id from a connector provided list, or, if the
            connection doesn’t support lists, a text with the actual
            subscription unit.
          type: string
        DefaultSubscriptionQuantity:
          format: double
          description: >-
            The default number of SubscriptionUnits to suggest when creating
            quote lines from this product
          type: number
        ItemNumber:
          description: >-
            Line item number, NOR: «Postnummer». Specific numbers from some
            hierarchy, for instance “1.4.3.2P”. Typically used to sort the items
            in the quote by some standard way.
          type: string
        Url:
          description: URL to product information web page.
          type: string
        ProductCategoryKey:
          description: >-
            Either a List id to an id from a connector provided list, or, if the
            connection doesn’t support lists, a text with the actual product
            category.
          type: string
        ProductFamilyKey:
          description: >-
            Either a List id to an id from a connector provided list, or, if the
            connection doesn't support lists, a text with the actual product
            family.
          type: string
        ProductTypeKey:
          description: >-
            Either a List id to an id from a connector provided list, or, if the
            connection doesn’t support lists, a text with the actual product
            type.
          type: string
        VAT:
          format: double
          description: >-
            Tax/VAT if available from ERP system. THIS IS A PERCENTAGE. In the
            Superoffice product register, this field is available in the product
            admin GUI.
          type: number
        VATInfo:
          description: >-
            A field for putting VATInfo you need to show in the final
            quoteDocument, like the VAT type that is used. Not used in any
            business logic in SuperOffice; available to document templates.
          type: string
        UnitCost:
          format: double
          description: >-
            The cost price. Might not be given, use Decimal.MinValue to signal
            this.
          type: number
        UnitMinimumPrice:
          format: double
          description: >-
            The minimum price this salesman can offer to his customer. This
            might be cost price if there is no policy. Might not be given, use
            Decimal.MinValue to signal this.
          type: number
        UnitListPrice:
          format: double
          description: >-
            (Basic Price, normal price, standard price.) This is the basic price
            from which the discount is computed from. The ListPrice will stay
            the same even when a larger amount is ordered.
          type: number
        InAssortment:
          description: >-
            True for products that should currently be offered, false when the
            product is discontinued and should not ordinarily be offered. When
            false the product no longer appears in search results.
          type: boolean
        Supplier:
          description: >-
            In SuperOffice, an id from the contact table, when saved as an ERP
            cache, the name of the supplier
          type: string
        SupplierCode:
          description: Suppliers part code/number or other key-like field
          type: string
        Rights:
          description: >-
            Field1=right&Field2=right, etc. of any fields that have non-standard
            field access rights. Rights can be one of: N (=None or Hidden), R
            (=Read-only), W (=Writeable), M (=Mandatory). The fields will mostly
            be from the Quoteline table, but some added fields that are
            conceptually part of the quoteline, like Image will also be possibly
            to set rights on. Will be used by SuperOffice to control the user
            interface when showing the record.
          type: string
        Rule:
          description: >-
            The names of one or more calculation rules that are in effect for
            this line, comma-separated case-insensitive. Will NOT be used by
            SuperOffice.
          type: string
        ExtraInfo:
          description: >-
            Extra information, supplied by QuoteConnector, used by a future
            dynamic GUI extension
          type: array
          items:
            $ref: >-
              #/components/schemas/SuperOffice.CRM.Services.ProductExtraDataField
        RawExtraInfo:
          description: >-
            Read-only extra information in plain text, supplied by
            QuoteConnector, used by a future dynamic GUI extension
          type: string
        ExtraField1:
          description: >-
            This a simple field for adding information that the Connector can
            provide, and that the qoute document need to display.
          type: string
        ExtraField2:
          description: >-
            This a simple field for adding information that the Connector can
            provide, and that the qoute document need to display.
          type: string
        ExtraField3:
          description: >-
            This a simple field for adding information that the Connector can
            provide, and that the qoute document need to display.
          type: string
        ExtraField4:
          description: >-
            This a simple field for adding information that the Connector can
            provide, and that the qoute document need to display.
          type: string
        ExtraField5:
          description: >-
            This a simple field for adding information that the Connector can
            provide, and that the qoute document need to display.
          type: string
        InStock:
          format: double
          description: >-
            Negative numbers will be interpreted as how many is ordered. Might
            not be available.
          type: number
        TableRight:
          $ref: '#/components/schemas/SuperOffice.CRM.Security.TableRight'
        FieldProperties:
          description: >-
            Field property dictionary mapping field names to field access
            rights.
          type: object
          additionalProperties:
            $ref: '#/components/schemas/SuperOffice.CRM.Security.FieldProperty'
    SuperOffice.CRM.Services.ProductExtraDataField:
      description: "A way to show some simple extra data on a product, typically to hep the user to identify the correct product. Basically a bucket of additional info that the ERP system would like to store and show in the user interface. Information placed here is shown in the GUI if the “provide-extra-data” capability is true.\r\n<para />\r\nCarrier object for ProductExtraDataField.\r\nServices for the ProductExtraDataField Carrier is available from the <see cref=\"T:SuperOffice.CRM.Services.IQuoteAgent\">Quote Agent</see>."
      type: object
      properties:
        Name:
          description: Label for the field
          type: string
        Value:
          description: >-
            Value for the field. If type is string, it can contain
            formatspecifiers (use this for displaying numbers correctly as the
            user's computer is set up).
          type: string
        Type:
          description: String, url, image. How the value should be interpreted.
          enum:
            - String
            - Url
            - Image
          type: string
        TableRight:
          $ref: '#/components/schemas/SuperOffice.CRM.Security.TableRight'
        FieldProperties:
          description: >-
            Field property dictionary mapping field names to field access
            rights.
          type: object
          additionalProperties:
            $ref: '#/components/schemas/SuperOffice.CRM.Security.FieldProperty'
    SuperOffice.CRM.Security.TableRight:
      description: "Wraps a table right together with an explanatory reason.\r\nCode can indicate why access is restricted."
      type: object
      properties:
        Mask:
          type: string
        Reason:
          type: string
    SuperOffice.CRM.Security.FieldProperty:
      description: >-
        Class holding properties like field length, field type about a field in
        the carrier.
      type: object
      properties:
        FieldRight:
          $ref: '#/components/schemas/SuperOffice.CRM.Security.FieldRight'
        FieldType:
          type: string
        FieldLength:
          format: int32
          description: ''
          type: integer
    SuperOffice.CRM.Security.FieldRight:
      description: "Wraps the field right together with an explanatory reason.\r\nAlso adds logical operators to the field rights so that they can be easily combined."
      type: object
      properties:
        Mask:
          type: string
        Reason:
          type: string

````

## Related topics

- [Products](/en/automation/crmscript/howto/quote/products.md)
- [NSProduct](/en/automation/crmscript/reference/CRMScript.NetServer.NSProduct.md)
- [Get Product Category](/en/api/reference/restful/rest/list_productcategory/get-product-category.md)
- [Get Product Family](/en/api/reference/restful/rest/list_productfamily/get-product-family.md)
- [Get Product Type](/en/api/reference/restful/rest/list_producttype/get-product-type.md)
- [Get Product Image](/en/api/reference/restful/agent/quote_agent/get-product-image.md)
