QuestionRequest

  • question
    Type: string · Question
    required

    The question for which an answer is requested.

  • anonymous_id
    Type: string · Anonymous Id

    The anonymous visitor who made this query.

  • boost_fq
    Type: string · Boost Fq

    Defines a query in Elasticsearch query-string syntax (Lucene) that can be used to boost a subset of products to the top of the ranking. For example, the query below will promote all the relevant products whose brand is Nike to the top of recommendation list:

    {
        "boost_fq": "brand:\"Nike\""
    }
    

    For a slightly more complex example, the query below will promote the Nike products which have also been tagged as ON SALE to the top of the ranking:

    {
       "boost_fq": "brand:\"Nike\" AND tags:\"ON SALE\""
    }
    

    It is worth mentioning that, Miso will only boost products that are relevant, and will not boost a low performance product only because it matches the boosting query.

  • cite_end
    Type: string · Cite End

    The citation end marker. Example: ] or }

  • cite_link
    Type: integer

    Set to 1 to include a link on each citation in the answer text.

  • cite_start
    Type: string · Cite Start

    The citation start marker. Example: [ or {

  • context_product_id
    Type: string

    The product_id of the content the reader is viewing, for example the article on an article page. On a first question it grounds the question in that article, so a question like "are there other articles about this?" resolves to the article's actual subject instead of returning a false "I don't know". Ignored on follow-ups, where the conversation already carries the context.

  • fq
    Type: string · Fq

    Defines a query in Elasticsearch query-string syntax (Lucene) that can be used to restrict the superset of products to return, without influencing the overall ranking. fq can enable users to drill down to products with specific features based on different product attributes

    For example, the query below limits the search results to only show products whose size is either M or S and brand is Nike:

    {"fq": "size:(\"M\" OR \"S\") AND brand:\"Nike\""}
    

    You can use fq to apply filters against your custom attributes as well. For example, the query below limits the search results to only products whose designer attribute is Calvin Klein

    {"fq": "attributes.designer:\"Calvin Klein\""}
    

    fq can also limit search results by numerical range. For example, the following query limits the results to products that have rating >= 4.

    {"fq": "rating:[4 TO *]"}
    
  • jwt_token
    Type: string

    A signed JWT identifying the reader. Use it with a publishable key from the browser, instead of sending user_id in the body.

  • log_user_history
    Type: boolean

    Whether to save this question to the reader's history. Set false for a per-question private mode. See the User History APIs.

  • metadata
    Type: object

    Any data you want stored alongside the request. Returned with the answer and available in your usage data, so you can attribute questions to a page, a placement, or a campaign.

  • parent_question_id
    Type: string · Parent Question IdFormat: uuid

    The UUID of the parent question if the current question is a follow-up to a previous question.

  • related_resource_fl
    Type: array string[] · Related Resource Fl

    A list of fields to be returned for the related_resources. Example: ['title', 'url'].

  • source_fl
    Type: array string[] · Source Fl

    A list of fields to be returned for the sources. Any fields in uploaded product can be assigned, including fields in custom_attributes.

    If specificed field does not exist, that field will not be included in the result. If you use different schema for custom_attributes across different products, it is possible that not all returned sources has the some fields.

    For example, if you include published_at and custom_attributes in source_fl:

    {
        "question":"Explain Python GIL",
        "source_fl":["published_at", "custom_attributes.rating"]
    }
    

    The answer will contain published_at field for each source:

    {
        "message": "success",
        "data": {
            "question": "Explain Python GIL",
            "question_id": "57aeb083-b943-43b1-86ab-b6108788dd50",
            "parent_question_id": null,
            "answer_stage": "Generating summary",
            "finished": true,
            "answer": "# Explain Python GIL\n\n## Why do we need the GIL? [1]\n\nThe GIL is currently an essential part of the CPython...[omitted for simplicity]",
            "sources": [
                {
                    "published_at": "2022-05-20T00:00:00+00:00",
                    "custom_attributes": {
                        "rating": 4.7
                    },
                    "product_id": "9781800207721",
                    "title": "Multiprocessing – When a Single CPU Core Is Not Enough",
                    "child_title": "Multiprocessing – When a Single CPU Core Is Not Enough",
                    "child_id": "16",
                    "snippet": "Remember the segmentation faults we saw in Chapter 11, ...[omitted]"
                },
                {
                    "published_at": "2015-02-26T00:00:00+00:00",
                    "custom_attributes": {
                        "rating": 4.3
                    },
                    "product_id": "9780134034416",
                    "title": "5. Concurrency and Parallelism",
                    "child_title": "5. Concurrency and Parallelism",
                    "child_id": "12",
                    "snippet": "<mark>Click here to view code image\n...[omitted]</mark>"
                },
                {
                    "published_at": "2020-04-30T00:00:00+00:00",
                    "custom_attributes": {
                        "rating": 3.5
                    },
                    "product_id": "9781492055013",
                    "title": "1. Understanding Performant Python",
                    "child_title": "1. Understanding Performant Python",
                    "child_id": "2",
                    "snippet": "<mark>Although it still locks Python into running ...[omitted]</mark>"
                },
                {
                    "published_at": "2019-11-15T00:00:00+00:00",
                    "custom_attributes": {
                        "rating": 4.2
                    },
                    "product_id": "9780134854717",
                    "title": "7. Concurrency and Parallelism",
                    "child_title": "7. Concurrency and Parallelism",
                    "child_id": "16",
                    "snippet": "<mark>Although Python supports multiple threads of execution...[omitted]</mark>"
                }
            ],
            "related_resources": []
        }
    }
    
  • user_hash
    Type: string · User Hash

    The hash of user_id (or anonymous_id) encrypted by your Secret API Key. user_hash is used to prevent unauthorized API access if you are making API calls with a Publishable API Key

  • user_id
    Type: string · User Id

    The user who made the query. For an anonymous visitor, use anonymous_id instead.

  • user_type
    enum

    The type of user who made the query. Must be one of these values.

    values
    • anonymous
    • registered
    • subscriber
    • free
    • paid
    • internal
  • yearly_decay
    Type: number · Yearly Decay

    The yearly decay rate for the answer score.