金鑰

    /keys 路由允許您建立、管理和刪除 API 金鑰。若要使用這些端點,您必須先設定主金鑰。設定主金鑰後,您可以在請求的標頭中提供該金鑰,或者使用有權限執行 keys.getkeys.createkeys.updatekeys.delete 操作的 API 金鑰來存取這些端點。

    警告

    存取 /keys 路由時,若未設定主金鑰,將會拋出 missing_master_key 錯誤。

    金鑰物件

    {
      "name": "Default Search API Key",
      "description": "Use it to search from the frontend code",
      "key": "0a6e572506c52ab0bd6195921575d23092b7f0c284ab4ac86d12346c33057f99",
      "uid": "74c9c733-3368-4738-bbe5-1d18a5fecb37",
      "actions": [
        "search"
      ],
      "indexes": [
        "*"
      ],
      "expiresAt": null,
      "createdAt": "2021-08-11T10:00:00Z",
      "updatedAt": "2021-08-11T10:00:00Z"
    }
    

    name

    類型: 字串
    預設值: null
    描述: 金鑰的人工可讀名稱

    description

    類型: 字串
    預設值: null
    描述: 金鑰的描述。您可以在此新增關於金鑰的任何重要資訊

    uid

    類型: 字串
    預設值: 不適用
    描述: 用於識別 API 金鑰的 uuid v4。若未指定,Meilisearch 會自動產生

    key

    類型: 字串
    預設值: 不適用
    描述: 由 Meilisearch 在建立 API 金鑰時,透過雜湊 uid 和主金鑰所產生的字母數字金鑰值。當呼叫受保護的 Meilisearch 實例時,用於授權

    此值也用作 {key} 路徑變數,以更新刪除取得特定的金鑰。

    如果主金鑰變更,所有 key 值都會自動變更。

    在不同實例之間重複使用 API 金鑰

    自訂 API 金鑰是確定性的:keyuid 和主金鑰的 SHA256 雜湊值。若要重複使用自訂 API 金鑰,請使用相同的主金鑰啟動新實例,並使用相同的 uid 重新建立您的 API 金鑰。

    您無法在不同實例之間重複使用預設的 API 金鑰。 Meilisearch 會在您首次啟動實例時自動產生其 uid

    actions

    類型: 陣列
    預設值: 不適用
    描述: 金鑰允許的 API 操作陣列,以字串表示。API 操作僅在授權的 indexes 上才有可能。["*"] 代表所有操作。

    您可以使用 * 作為萬用字元,以存取 documentsindexestaskssettingsstatsdumps 操作的所有端點。例如,documents.* 可存取所有文件操作。

    警告

    基於安全考量,我們不建議建立可執行所有操作的金鑰。

    名稱描述
    search提供存取 POSTGET 搜尋端點的權限
    documents.add提供存取 新增文件更新文件 端點的權限
    documents.get提供存取 取得單一文件使用 POST 取得文件使用 GET 取得文件 端點的權限
    documents.delete提供存取 刪除單一文件刪除所有文件批次刪除依篩選條件刪除 端點的權限
    indexes.create提供存取 建立索引 端點的權限
    indexes.get提供存取 取得單一索引列出所有索引 端點的權限。回應中會省略未授權的 indexes
    indexes.update提供存取 更新索引 端點的權限
    indexes.delete提供存取 刪除索引 端點的權限
    indexes.swap提供存取交換索引端點的權限。不會交換未授權的 indexes
    tasks.get提供存取 取得單一任務取得任務 端點的權限。回應中會省略來自未授權 indexes 的任務
    tasks.cancel提供存取 取消任務 端點的權限。不會取消來自未授權 indexes 的任務
    tasks.delete提供存取 刪除任務 端點的權限。不會刪除來自未授權 indexes 的任務
    settings.get提供存取 取得設定 端點以及所有子路由的等效端點的權限
    settings.update提供存取 更新設定重設設定 端點以及所有子路由的等效端點的權限
    stats.get提供存取 取得索引統計資料 端點和 取得所有索引統計資料 端點的權限。對於後者,回應中會省略未授權的 indexes
    dumps.create提供存取 建立傾印 端點的權限。不受 indexes 限制
    snapshots.create提供存取 建立快照 端點的權限。不受 indexes 限制
    version提供存取 取得 Meilisearch 版本 端點的權限
    keys.get提供存取 取得所有金鑰 端點的權限
    keys.create提供存取 建立金鑰 端點的權限
    keys.update提供存取 更新金鑰 端點的權限
    keys.delete提供存取 刪除金鑰 端點的權限

    indexes

    類型: 陣列
    預設值: 不適用
    描述: 金鑰授權可操作的索引陣列。使用 ["*"] 表示所有索引。只有金鑰的 允許操作 才能在這些索引上使用。

    您也可以在字串結尾新增 * 字元作為萬用字元。這允許 API 金鑰存取所有以該字串開頭的索引名稱。例如,使用 "indexes": ["movie*"] 將允許 API 金鑰存取 moviesmovie_ratings 索引。

    expiresAt

    類型: 字串
    預設值: 不適用
    描述: 金鑰過期的日期和時間,以 RFC 3339 格式表示。null 表示金鑰永不過期

    注意

    一旦金鑰超過其 expiresAt 日期,使用它進行 API 授權將會傳回錯誤。

    createdAt

    類型: 字串
    預設值: null
    描述: 金鑰建立的日期和時間,以 RFC 3339 格式表示

    updatedAt

    類型: 字串
    預設值: null
    描述: 金鑰上次更新的日期和時間,以 RFC 3339 格式表示

    取得所有金鑰

    GET/keys

    results 陣列形式傳回最近建立的 20 個金鑰。回應中會包含過期的金鑰,但不包含已刪除的金鑰。

    查詢參數

    可以使用 offsetlimit 查詢參數來分頁結果。

    查詢參數預設值描述
    offset0要跳過的金鑰數量
    limit20要傳回的金鑰數量

    回應

    名稱類型描述
    results陣列金鑰物件的陣列
    offsetInteger已跳過的金鑰數量
    limitInteger傳回的金鑰數量
    totalIntegerAPI 金鑰總數

    範例

    curl \
      -X GET 'https://127.0.0.1:7700/keys?limit=3' \
      -H 'Authorization: Bearer MASTER_KEY'

    回應: 200 Ok

    {
      "results": [
        {
          "name": null,
          "description": "Manage documents: Products/Reviews API key",
          "key": "d0552b41536279a0ad88bd595327b96f01176a60c2243e906c52ac02375f9bc4",
          "uid": "6062abda-a5aa-4414-ac91-ecd7944c0f8d",
          "actions": [
            "documents.add",
            "documents.delete"
          ],
          "indexes": [
            "prod*",
            "reviews"
          ],
          "expiresAt": "2021-12-31T23:59:59Z",
          "createdAt": "2021-10-12T00:00:00Z",
          "updatedAt": "2021-10-13T15:00:00Z"
        },
        {
          "name": "Default Search API Key",
          "description": "Use it to search from the frontend code",
          "key": "0a6e572506c52ab0bd6195921575d23092b7f0c284ab4ac86d12346c33057f99",
          "uid": "74c9c733-3368-4738-bbe5-1d18a5fecb37",
          "actions": [
            "search"
          ],
          "indexes": [
            "*"
          ],
          "expiresAt": null,
          "createdAt": "2021-08-11T10:00:00Z",
          "updatedAt": "2021-08-11T10:00:00Z"
        },
        {
          "name": "Default Admin API Key",
          "description": "Use it for anything that is not a search operation. Caution! Do not expose it on a public frontend",
          "key": "380689dd379232519a54d15935750cc7625620a2ea2fc06907cb40ba5b421b6f",
          "uid": "20f7e4c4-612c-4dd1-b783-7934cc038213",
          "actions": [
            "*"
          ],
          "indexes": [
            "*"
          ],
          "expiresAt": null,
          "createdAt": "2021-08-11T10:00:00Z",
          "updatedAt": "2021-08-11T10:00:00Z"
        }
      ],
      "offset":0,
      "limit":3,
      "total":7
    }
    
    注意

    API 金鑰會根據其 createdAt 日期以遞減順序顯示。這表示最近建立的金鑰會先出現。

    取得單一金鑰

    GET/keys/{key_or_uid}

    取得指定金鑰的資訊。若嘗試使用此端點來存取不存在或已刪除的金鑰,將會導致錯誤

    路徑參數

    需要一個有效的 API keyuid

    名稱類型描述
    key *字串請求的 API 金鑰的 key
    uid *字串請求的 API 金鑰的 uid

    範例

    curl \
      -X GET 'https://127.0.0.1:7700/keys/6062abda-a5aa-4414-ac91-ecd7944c0f8d' \
      -H 'Authorization: Bearer MASTER_KEY'

    回應: 200 Ok

    {
      "name": null,
      "description": "Add documents: Products API key",
      "key": "d0552b41536279a0ad88bd595327b96f01176a60c2243e906c52ac02375f9bc4",
      "uid": "6062abda-a5aa-4414-ac91-ecd7944c0f8d",
      "actions": [
        "documents.add"
      ],
      "indexes": [
        "products"
      ],
      "expiresAt": "2021-11-13T00:00:00Z",
      "createdAt": "2021-11-12T10:00:00Z",
      "updatedAt": "2021-11-12T10:00:00Z"
    }
    

    關於這些欄位的說明,請參閱金鑰物件

    建立金鑰

    POST/keys

    使用提供的描述、權限和到期日建立 API 金鑰。

    請求主體

    名稱類型預設值描述
    actions *陣列不適用金鑰允許執行的 API 操作列表。["*"] 代表所有操作
    indexes *陣列不適用金鑰被授權可操作的索引陣列。["*"] 代表所有索引
    expiresAt *字串不適用金鑰到期的日期和時間,以 RFC 3339 格式表示。 如果金鑰永不到期,則為 null
    name字串null金鑰的人類可讀名稱
    uid字串不適用用於識別 API 金鑰的 uuid v4。如果未指定,則由 Meilisearch 產生
    description字串null金鑰的可選描述

    範例

    curl \
      -X POST 'https://127.0.0.1:7700/keys' \
      -H 'Authorization: Bearer MASTER_KEY' \
      -H 'Content-Type: application/json' \
      --data-binary '{
        "description": "Add documents: Products API key",
        "actions": ["documents.add"],
        "indexes": ["products"],
        "expiresAt": "2042-04-02T00:42:42Z"
      }'

    回應:201 Created

    {
      "name": null,
      "description": "Manage documents: Products/Reviews API key",
      "key": "d0552b41536279a0ad88bd595327b96f01176a60c2243e906c52ac02375f9bc4",
      "uid": "6062abda-a5aa-4414-ac91-ecd7944c0f8d",
      "actions": [
        "documents.add"
      ],
      "indexes": [
        "products"
      ],
      "expiresAt": "2021-11-13T00:00:00Z",
      "createdAt": "2021-11-12T10:00:00Z",
      "updatedAt": "2021-11-12T10:00:00Z"
    }
    

    更新金鑰

    PATCH/keys/{key_or_uid}

    更新 API 金鑰的 namedescription

    金鑰的更新是部分的。這表示您應該只提供您要更新的欄位,因為任何未出現在 Payload 中的欄位將保持不變。

    路徑參數

    需要一個有效的 API keyuid

    名稱類型描述
    key *字串請求的 API 金鑰的 key
    uid *字串請求的 API 金鑰的 uid

    請求主體

    名稱類型預設值描述
    name字串null金鑰的人類可讀名稱
    description字串null金鑰的可選描述

    範例

    curl \
      -X PATCH 'https://127.0.0.1:7700/keys/6062abda-a5aa-4414-ac91-ecd7944c0f8d' \
      -H 'Authorization: Bearer MASTER_KEY' \
      -H 'Content-Type: application/json' \
      --data-binary '{
        "name": "Products/Reviews API key",
        "description": "Manage documents: Products/Reviews API key"
      }'

    回應: 200 Ok

    {
      "name": "Products/Reviews API key",
      "description": "Manage documents: Products/Reviews API key",
      "key": "d0552b41536279a0ad88bd595327b96f01176a60c2243e906c52ac02375f9bc4",
      "uid": "6062abda-a5aa-4414-ac91-ecd7944c0f8d",
      "actions": [
        "documents.add",
        "documents.delete"
      ],
      "indexes": [
        "products",
        "reviews"
      ],
      "expiresAt": "2021-12-31T23:59:59Z",
      "createdAt": "2021-10-12T00:00:00Z",
      "updatedAt": "2021-10-13T15:00:00Z"
    }
    

    刪除金鑰

    DELETE/keys/{key_or_uid}

    刪除指定的 API 金鑰。

    路徑參數

    需要一個有效的 API keyuid

    名稱類型描述
    key *字串請求的 API 金鑰的 key
    uid *字串請求的 API 金鑰的 uid

    範例

    curl \
      -X DELETE 'https://127.0.0.1:7700/keys/6062abda-a5aa-4414-ac91-ecd7944c0f8d' \
      -H 'Authorization: Bearer MASTER_KEY'

    回應:204 No Content