{"query":"Import Cases","corpusVersion":"local","generatedAt":"2026-11-03T06:46:09.397Z","results":[{"blockId":"public-api.case-imports#import-cases","pageId":"public-api.case-imports","title":"Import Cases","pageTitle":"Import Cases","url":"https://teammately.ai/docs/public-api/case-imports.md","humanUrl":"https://teammately.ai/docs/public-api/case-imports#import-cases","markdownUrl":"https://teammately.ai/docs/public-api/case-imports.md","sectionId":"import-cases","kind":"api","productArea":"public_api","score":734.2561056868882,"reasons":["search_match","title_match","term_match","prefix_or_fuzzy_match"],"markdown":"# Import Cases"},{"blockId":"operating.import-prepare-cases#import-and-prepare-cases","pageId":"operating.import-prepare-cases","title":"Import and prepare cases","pageTitle":"Import and prepare cases","url":"https://teammately.ai/docs/operating-manual/import-and-prepare-cases.md","humanUrl":"https://teammately.ai/docs/operating-manual/import-and-prepare-cases#import-and-prepare-cases","markdownUrl":"https://teammately.ai/docs/operating-manual/import-and-prepare-cases.md","sectionId":"import-and-prepare-cases","kind":"task","productArea":"operating_manual","score":646.3240278343116,"reasons":["search_match","term_match"],"markdown":"# Import and prepare cases\n\nBring existing examples into the project and make them usable by experts, coverage work, and Harness execution without losing their input or material boundaries."},{"blockId":"public-api.case-imports#admission-and-status","pageId":"public-api.case-imports","title":"Admission and status","pageTitle":"Import Cases","url":"https://teammately.ai/docs/public-api/case-imports.md","humanUrl":"https://teammately.ai/docs/public-api/case-imports#admission-and-status","markdownUrl":"https://teammately.ai/docs/public-api/case-imports.md","sectionId":"admission-and-status","kind":"api","productArea":"public_api","score":484.63824861311406,"reasons":["search_match","page_title_match","term_match","prefix_or_fuzzy_match"],"markdown":"## Admission and status\n\nRead the returned import identity and status through:\n\n```http\nGET /cases/imports/{importId}\n```\n\nA successful request is not proof that all rows or files completed. Retain original content and the issued import ID until its outcome is known. A repeated POST idempotency key returns `409`; it does not replay the original import receipt. If the response is lost before an ID is known, reconcile the uncertain import with your administrator or support before using another key.\n\nThe gateway reports unsupported content type, missing configuration and upstream failures through their actual HTTP/code/reason contracts. It does not silently substitute a local importer."},{"blockId":"integrations.import-case-examples#import-case-examples","pageId":"integrations.import-case-examples","title":"Import Case Examples","pageTitle":"Import Case Examples","url":"https://teammately.ai/docs/integrations/import-case-examples.md","humanUrl":"https://teammately.ai/docs/integrations/import-case-examples#import-case-examples","markdownUrl":"https://teammately.ai/docs/integrations/import-case-examples.md","sectionId":"import-case-examples","kind":"task","productArea":"data_integrations","score":482.43931840424494,"reasons":["search_match","term_match"],"markdown":"# Import Case Examples"},{"blockId":"object-model.cases#cases","pageId":"object-model.cases","title":"Cases","pageTitle":"Cases","url":"https://teammately.ai/docs/object-model/cases.md","humanUrl":"https://teammately.ai/docs/object-model/cases#cases","markdownUrl":"https://teammately.ai/docs/object-model/cases.md","sectionId":"cases","kind":"reference","productArea":"object_model","score":479.2143514536999,"reasons":["search_match","term_match","prefix_or_fuzzy_match"],"markdown":"# Cases"},{"blockId":"public-api.case-imports#example-submit-multipart-content","pageId":"public-api.case-imports","title":"Example: Submit multipart content","pageTitle":"Import Cases","url":"https://teammately.ai/docs/public-api/case-imports.md","humanUrl":"https://teammately.ai/docs/public-api/case-imports#example-submit-multipart-content","markdownUrl":"https://teammately.ai/docs/public-api/case-imports.md","sectionId":"example-submit-multipart-content","kind":"api","productArea":"public_api","score":463.22585091582977,"reasons":["search_match","page_title_match","term_match","prefix_or_fuzzy_match"],"markdown":"### Example: Submit multipart content\n\n```sh\ncurl --fail-with-body \\\n  --header \"Authorization: Bearer ${TEAMMATELY_API_KEY}\" \\\n  --header \"Idempotency-Key: ${IMPORT_OPERATION_KEY}\" \\\n  --form 'manifest=@metadata.csv' \\\n  --form 'files=@materials/reference.txt;filename=materials/reference.txt' \\\n  \"${PROJECT_URL}/cases/imports\"\n```\n\n```python\nimport os\nfrom pathlib import Path\nimport uuid\nfrom urllib.parse import quote\nfrom urllib.request import HTTPRedirectHandler, Request, build_opener\n\nclass NoRedirect(HTTPRedirectHandler):\n    def redirect_request(self, req, fp, code, msg, headers, newurl):\n        return None\n\nopener = build_opener(NoRedirect())\napi_key = os.environ[\"TEAMMATELY_API_KEY\"]\n\nurl = os.environ[\"PROJECT_URL\"] + \"/cases/imports\"\nheaders = {\"Authorization\": \"Bearer \" + api_key}\nheaders[\"Idempotency-Key\"] = os.environ[\"IMPORT_OPERATION_KEY\"]\nboundary = \"teammately-\" + uuid.uuid4().hex\nbody = bytearray()\nfor name, path, filename, content_type in [\n    (\"manifest\", Path(\"metadata.csv\"), \"metadata.csv\", \"text/csv\"),\n    (\"files\", Path(\"materials/reference.txt\"), \"materials/reference.txt\", \"text/plain\"),\n]:\n    body.extend((\n        f\"--{boundary}\\r\\n\"\n        f'Content-Disposition: form-data; name=\"{name}\"; filename=\"{filename}\"\\r\\n'\n        f\"Content-Type: {content_type}\\r\\n\\r\\n\"\n    ).encode(\"utf-8\"))\n    body.extend(path.read_bytes() + b\"\\r\\n\")\nbody.extend(f\"--{boundary}--\\r\\n\".encode(\"utf-8\"))\nheaders[\"Content-Type\"] = \"multipart/form-data; boundary=\" + boundary\nrequest = Request(url, data=bytes(body), headers=headers, method=\"POST\")\nwith opener.open(request) as response:\n    print(response.read().decode(\"utf-8\"))\n```\n\n```typescript\nimport { readFile } from \"node:fs/promises\";\n\nconst apiKey = process.env.TEAMMATELY_API_KEY!;\n\n{\n  const url = new URL(process.env.PROJECT_URL! + \"/cases/imports\");\n  const body = new FormData();\n  body.append(\"manifest\", new Blob([new Uint8Array(await readFile(\"metadata.csv\"))]), \"metadata.csv\");\n  body.append(\"files\", new Blob([new Uint8Array(await readFile(\"materials/reference.txt\"))]), \"materials/reference.txt\");\n  const response = await fetch(url, {\n    method: \"POST\",\n    redirect: \"error\",\n    headers: {\n      Authorization: `Bearer ${apiKey}`,\n      \"Idempotency-Key\": process.env.IMPORT_OPERATION_KEY!,\n    },\n    body,\n  });\n  if (!response.ok) throw new Error(`HTTP ${response.status}`);\n  console.log(await response.text());\n}\n```\n\n```go\npackage main\n\nimport (\n    \"bytes\"\n    \"context\"\n    \"fmt\"\n    \"io\"\n    \"log\"\n    \"mime/multipart\"\n    \"net/http\"\n    \"os\"\n)\n\nfunc main() {\n    if err := run(context.Background()); err != nil { log.Fatal(err) }\n}\n\nfunc run(ctx context.Context) error {\n    client := &http.Client{\n        CheckRedirect: func(req *http.Request, via []*http.Request) error {\n            return http.ErrUseLastResponse\n        },\n    }\n    {\n        target := os.Getenv(\"PROJECT_URL\") + \"/cases/imports\"\n        var body bytes.Buffer\n        writer := multipart.NewWriter(&body)\n        for _, part := range []struct{ field, path, filename string }{\n            {\"manifest\", \"metadata.csv\", \"metadata.csv\"},\n            {\"files\", \"materials/reference.txt\", \"materials/reference.txt\"},\n        } {\n            file, err := os.Open(part.path)\n            if err != nil { return err }\n            field, err := writer.CreateFormFile(part.field, part.filename)\n            if err != nil { file.Close(); return err }\n            _, copyErr := io.Copy(field, file)\n            closeErr := file.Close()\n            if copyErr != nil { return copyErr }\n            if closeErr != nil { return closeErr }\n        }\n        if err := writer.Close(); err != nil { return err }\n        request, err := http.NewRequestWithContext(ctx, \"POST\", target, &body)\n        if err != nil { return err }\n        request.Header.Set(\"Authorization\", \"Bearer \" + os.Getenv(\"TEAMMATELY_API_KEY\"))\n        request.Header.Set(\"Idempotency-Key\", os.Getenv(\"IMPORT_OPERATION_KEY\"))\n        request.Header.Set(\"Content-Type\", writer.FormDataContentType())\n        response, err := client.Do(request)\n        if err != nil { return err }\n        payloadBytes, readErr := io.ReadAll(response.Body)\n        response.Body.Close()\n        if readErr != nil { return readErr }\n        fmt.Println(string(payloadBytes))\n        if response.StatusCode < 200 || response.StatusCode >= 300 { return fmt.Errorf(\"HTTP %d\", response.StatusCode) }\n    }\n    return nil\n}\n```\n\nUse one application-owned key for this import. Let curl generate the multipart boundary. Omit `files` when there are no attachments. Retain the exact manifest and bytes. `202` returns the import result; inspect the issued import's row/file outcomes through its status route. [Import Case Examples](/docs/integrations/import-case-examples) covers interactive mapping."},{"blockId":"public-api.case-imports#definition","pageId":"public-api.case-imports","title":"Definition","pageTitle":"Import Cases","url":"https://teammately.ai/docs/public-api/case-imports.md","humanUrl":"https://teammately.ai/docs/public-api/case-imports#definition","markdownUrl":"https://teammately.ai/docs/public-api/case-imports.md","sectionId":"definition","kind":"api","productArea":"public_api","score":460.2545089546174,"reasons":["search_match","page_title_match","term_match","prefix_or_fuzzy_match"],"markdown":"## Definition\n\nCurrent Case imports use multipart submission beneath the organization/project prefix:\n\n```http\nPOST /cases/imports\nContent-Type: multipart/form-data\nIdempotency-Key: <logical-command-key>\n\nmanifest: metadata.csv or metadata.jsonl\nfiles: referenced file parts\n```\n\nThe actual multipart boundary is generated by the client. This outline is not a JSON-row import contract."},{"blockId":"benchmark-evaluations.output-mapping#file-import","pageId":"benchmark-evaluations.output-mapping","title":"File import","pageTitle":"Import External Evaluation Outputs","url":"https://teammately.ai/docs/benchmark-evaluations/output-mapping.md","humanUrl":"https://teammately.ai/docs/benchmark-evaluations/output-mapping#file-import","markdownUrl":"https://teammately.ai/docs/benchmark-evaluations/output-mapping.md","sectionId":"file-import","kind":"task","productArea":"benchmark_evaluations","score":443.91757169813906,"reasons":["search_match","term_match"],"markdown":"## File import\n\nOpen **Benchmark Evaluations → Runs** and the import flow. Match the response rows to the exact Case IDs, inspect supplied and expected counts, then confirm **Import and evaluate**.\n\nFiles can be CSV, a JSON array or JSONL up to 10 MB. CSV response cells are text. JSON retains native response types and text whitespace. A JSON null response is a submitted value, not an absent response."}]}