Files
bifrost/tests/e2e/api/collections/bifrost-v1-complete.postman_collection.json
Beyhan Oğur 880f412e2c first commit
2026-04-26 21:52:23 +03:00

1370 lines
56 KiB
JSON

{
"info": {
"name": "Bifrost V1 API - Complete",
"description": "Complete Postman collection for all Bifrost /v1 endpoints with valid payloads",
"schema": "https://schema.getpostman.com/json/collection/v2.1.0/collection.json"
},
"event": [
{
"listen": "prerequest",
"script": {
"type": "text/javascript",
"exec": [
"var requestName = pm.info.requestName;",
"var retryKey = 'retry_' + requestName;",
"var ciVal = pm.environment.get('CI');",
"var maxRetries = (String(ciVal).toLowerCase() === 'true' || ciVal === '1' || ciVal === 1) ? 10 : 0;",
"if (!pm.collectionVariables.has(retryKey)) {",
" pm.collectionVariables.set(retryKey, 0);",
"}",
"pm.collectionVariables.set('current_request_name', requestName);",
"pm.collectionVariables.set('max_retries', maxRetries);"
]
}
},
{
"listen": "test",
"script": {
"type": "text/javascript",
"exec": [
"var code = pm.response.code;",
"var reqName = (pm.info && pm.info.requestName) ? pm.info.requestName : '';",
"var operation = null;",
"if (/get container file content|container.*file.*content/i.test(reqName)) { operation = 'container_file_content'; }",
"else if (/delete container file/i.test(reqName)) { operation = 'container_file_delete'; }",
"else if (/retrieve container file/i.test(reqName)) { operation = 'container_file_retrieve'; }",
"else if (/list container files/i.test(reqName)) { operation = 'container_file_list'; }",
"else if (/create container file.*reference|container file.*reference/i.test(reqName)) { operation = 'container_file_create_reference'; }",
"else if (/create container file.*upload|container file.*upload|create container file/i.test(reqName)) { operation = 'container_file_create'; }",
"else if (/delete container/i.test(reqName)) { operation = 'container_delete'; }",
"else if (/retrieve container/i.test(reqName)) { operation = 'container_retrieve'; }",
"else if (/list containers/i.test(reqName)) { operation = 'container_list'; }",
"else if (/create container/i.test(reqName)) { operation = 'container_create'; }",
"else if (/upload file.*for container reference|upload file.*container/i.test(reqName)) { operation = 'file_upload'; }",
"else if (/^upload file$/i.test(reqName)) { operation = 'file_batch_input'; }",
"else if (/list files/i.test(reqName)) { operation = 'file_list'; }",
"else if (/get file content|file content/i.test(reqName)) { operation = 'file_content'; }",
"else if (/retrieve file/i.test(reqName)) { operation = 'file_retrieve'; }",
"else if (/delete file/i.test(reqName)) { operation = 'file_delete'; }",
"else if (/create batch \\(inline|create batch.*inline/i.test(reqName)) { operation = 'batch_create'; }",
"else if (/create batch \\(file-based|create batch.*file/i.test(reqName)) { operation = 'batch_create_file'; }",
"else if (/cancel batch/i.test(reqName)) { operation = 'batch_cancel'; }",
"else if (/list batches/i.test(reqName)) { operation = 'batch_list'; }",
"else if (/retrieve batch/i.test(reqName)) { operation = 'batch_retrieve'; }",
"else if (/get batch results|batch results/i.test(reqName)) { operation = 'batch_results'; }",
"else if (/embedding/i.test(reqName)) { operation = 'embedding'; }",
"else if (/speech|tts|text.to.speech|audio.*(out|generate)/i.test(reqName)) { operation = 'speech'; }",
"else if (/transcription|whisper|stt|speech.to.text|audio.*(in|transcri)/i.test(reqName)) { operation = 'transcription'; }",
"else if (/list.*models|models.*list/i.test(reqName)) { operation = 'list_models'; }",
"else if (/generate.*image|generate image/i.test(reqName)) { operation = 'image_generation'; }",
"else if (/image.*variation|create image variation|variation/i.test(reqName)) { operation = 'image_variation'; }",
"else if (/edit.*image|image.*edit|edit image/i.test(reqName)) { operation = 'image_edit'; }",
"else if (/create chat completion with tools|chat completion.*with tools/i.test(reqName)) { operation = 'chat_completions_with_tools'; }",
"else if (/chat completion|create chat completion/i.test(reqName)) { operation = 'chat_completions'; }",
"else if (/text completion|create text completion/i.test(reqName)) { operation = 'text_completion'; }",
"else if (/create response with tools|response with tools/i.test(reqName)) { operation = 'responses_with_tools'; }",
"else if (/create response/i.test(reqName)) { operation = 'responses'; }",
"else if (/count.*token|token.*count/i.test(reqName)) { operation = 'count_tokens'; }",
"else if (/video remix|remix.*video/i.test(reqName)) { operation = 'video_remix'; }",
"else if (/video list|list.*video/i.test(reqName)) { operation = 'video_list'; }",
"else if (/video download|download.*video/i.test(reqName)) { operation = 'video_download'; }",
"else if (/video delete|delete.*video/i.test(reqName)) { operation = 'video_delete'; }",
"else if (/video retrieve|retrieve.*video/i.test(reqName)) { operation = 'video_retrieve'; }",
"else if (/video generation|generate.*video|create.*video/i.test(reqName)) { operation = 'video_generation'; }",
"else if (/rerank/i.test(reqName)) { operation = 'rerank'; }",
"var provider = ((pm.environment && pm.environment.get('provider')) || pm.collectionVariables.get('provider') || '').toLowerCase();",
"var capsStr = (pm.globals && pm.globals.get('provider_capabilities')) || (pm.collectionVariables && pm.collectionVariables.get('provider_capabilities')) || '{}';",
"var isInProviderUnsupported = false;",
"try {",
" var caps = JSON.parse(capsStr);",
" var providerCaps = caps.providers && caps.providers[provider];",
" if (operation && providerCaps && providerCaps[operation] === false) { isInProviderUnsupported = true; }",
"} catch (e) {}",
"var isDocumentedUnsupported = isInProviderUnsupported;",
"var requestNameRetry = pm.collectionVariables.get('current_request_name');",
"var retryKey = 'retry_' + requestNameRetry;",
"var currentRetry = parseInt(pm.collectionVariables.get(retryKey) || '0', 10);",
"var maxRetries = parseInt(pm.collectionVariables.get('max_retries') || '0', 10);",
"var failedTests = code < 200 || code > 299;",
"var respText = pm.response.text() || '';",
"var isBatchResultsExpectedError = (operation === 'batch_results' && failedTests && code !== 401 && code !== 403 && (code === 404 || (code >= 400 && code < 500 && /not found|does not exist|could not find|could not parse|validation error|failed to satisfy constraint|invalid/i.test(respText))));",
"var isBatchCancelExpected409 = (operation === 'batch_cancel' && code === 409);",
"var hasFailures = failedTests && !isDocumentedUnsupported && !isBatchResultsExpectedError && !isBatchCancelExpected409;",
"if (hasFailures && maxRetries > 0 && currentRetry < maxRetries) {",
" pm.collectionVariables.set(retryKey, String(currentRetry + 1));",
" var delayMs = Math.min(1000 * Math.pow(2, currentRetry), 30000);",
" var end = Date.now() + delayMs;",
" while (Date.now() < end) {}",
" console.log('[RETRY] Request \"' + requestNameRetry + '\" failed (attempt ' + (currentRetry + 1) + '/' + maxRetries + '). Retrying after ' + delayMs + 'ms...');",
" if (typeof postman !== 'undefined' && postman.setNextRequest) { postman.setNextRequest(requestNameRetry); }",
"} else {",
" pm.collectionVariables.set(retryKey, '0');",
" if (hasFailures && currentRetry >= maxRetries && maxRetries > 0) {",
" console.log('[RETRY] Request \"' + requestNameRetry + '\" failed after ' + maxRetries + ' retries. Moving on.');",
" }",
" if (isBatchResultsExpectedError) {",
" pm.test('BatchResults: expected 404/validation for fake batch ID', function() { pm.expect(true).to.be.true; });",
" } else if (isBatchCancelExpected409) {",
" pm.test('BatchCancel: 409 Conflict (batch already completed) is acceptable', function() { pm.expect(true).to.be.true; });",
" } else if (code >= 200 && code <= 299) {",
" pm.test('Status is 2xx', function() { pm.expect(code >= 200 && code <= 299).to.be.true; });",
" } else {",
" pm.test('Or documented unsupported (allowed request types)', function() {",
" pm.expect(isDocumentedUnsupported, 'Non-2xx response must be a documented unsupported error for this request type (operation must be in provider_capabilities.json for this provider)').to.be.true;",
" });",
" }",
"}"
]
}
}
],
"variable": [
{
"key": "base_url",
"value": "http://localhost:8080",
"type": "string"
},
{
"key": "provider",
"value": "openai",
"type": "string"
},
{
"key": "model",
"value": "gpt-4",
"type": "string"
},
{
"key": "chat_model",
"value": "gpt-4",
"type": "string"
},
{
"key": "text_completion_model",
"value": "gpt-4",
"type": "string"
},
{
"key": "responses_model",
"value": "gpt-4",
"type": "string"
},
{
"key": "embedding_model",
"value": "text-embedding-3-small",
"type": "string"
},
{
"key": "speech_model",
"value": "tts-1",
"type": "string"
},
{
"key": "transcription_model",
"value": "whisper-1",
"type": "string"
},
{
"key": "image_model",
"value": "dall-e-3",
"type": "string"
},
{
"key": "image_edit_model",
"value": "",
"type": "string"
},
{
"key": "image_variation_model",
"value": "dall-e-2",
"type": "string"
},
{
"key": "image_edit_type",
"value": "",
"type": "string"
},
{
"key": "batch_file",
"value": "fixtures/sample.jsonl",
"type": "string"
},
{
"key": "batch_id",
"value": "batch_123",
"type": "string"
},
{
"key": "file_id",
"value": "file_123",
"type": "string"
},
{
"key": "file_id_encoded",
"value": "file_123",
"type": "string"
},
{
"key": "container_id",
"value": "container_123",
"type": "string"
},
{
"key": "container_file_id",
"value": "container_file_123",
"type": "string"
},
{
"key": "file_id_ref",
"value": "file_123",
"type": "string"
},
{
"key": "voice",
"value": "alloy",
"type": "string"
},
{
"key": "speech_input",
"value": "Generate a speech for this text",
"type": "string"
},
{
"key": "completions_prompt",
"value": "1, 2, 3, 4, ",
"type": "string"
}
],
"item": [
{
"name": "Models",
"item": [
{
"name": "List Models",
"event": [
{
"listen": "prerequest",
"script": {
"exec": [
"var provider = ((pm.environment && pm.environment.get('provider')) || pm.variables.get('provider') || pm.collectionVariables.get('provider') || '').toLowerCase();",
"if (provider === 'perplexity') { postman.setNextRequest('Create Chat Completion'); }"
],
"type": "text/javascript"
}
}
],
"request": {
"method": "GET",
"header": [],
"url": {
"raw": "{{base_url}}/v1/models?provider={{provider}}",
"host": ["{{base_url}}"],
"path": ["v1", "models"],
"query": [{"key": "provider", "value": "{{provider}}"}]
}
}
}
]
},
{
"name": "Chat Completions",
"item": [
{
"name": "Create Chat Completion",
"request": {
"method": "POST",
"header": [
{
"key": "Content-Type",
"value": "application/json"
}
],
"body": {
"mode": "raw",
"raw": "{\n \"model\": \"{{provider}}/{{chat_model}}\",\n \"messages\": [\n {\n \"role\": \"user\",\n \"content\": \"Hello, how are you?\"\n }\n ],\n \"temperature\": 0.7,\n \"max_completion_tokens\": 1000,\n \"stream\": false\n}"
},
"url": {
"raw": "{{base_url}}/v1/chat/completions",
"host": ["{{base_url}}"],
"path": ["v1", "chat", "completions"]
}
}
},
{
"name": "Create Chat Completion with Tools",
"event": [
{
"listen": "prerequest",
"script": {
"exec": [
"var provider = ((pm.environment && pm.environment.get('provider')) || pm.variables.get('provider') || pm.collectionVariables.get('provider') || '').toLowerCase();",
"var capsStr = (pm.globals && pm.globals.get('provider_capabilities')) || (pm.collectionVariables && pm.collectionVariables.get('provider_capabilities')) || '{}';",
"try {",
" var caps = JSON.parse(capsStr);",
" var providerCaps = caps.providers && caps.providers[provider];",
" var skip = providerCaps && providerCaps.chat_completions_with_tools === false;",
" if (skip) {",
" if (pm.execution && typeof pm.execution.setNextRequest === 'function') { pm.execution.setNextRequest('Create Text Completion'); }",
" else if (typeof postman !== 'undefined' && postman.setNextRequest) { postman.setNextRequest('Create Text Completion'); }",
" if (pm.execution && typeof pm.execution.skipRequest === 'function') { pm.execution.skipRequest(); }",
" }",
"} catch (e) {}"
],
"type": "text/javascript"
}
}
],
"request": {
"method": "POST",
"header": [
{
"key": "Content-Type",
"value": "application/json"
}
],
"body": {
"mode": "raw",
"raw": "{\n \"model\": \"{{provider}}/{{chat_model}}\",\n \"messages\": [\n {\n \"role\": \"user\",\n \"content\": \"What's the weather like in india? Use the get_weather tool.\"\n }\n ],\n \"tools\": [\n {\n \"type\": \"function\",\n \"function\": {\n \"name\": \"get_weather\",\n \"description\": \"Get the current weather for a location\",\n \"parameters\": {\n \"type\": \"object\",\n \"properties\": {\n \"location\": {\n \"type\": \"string\",\n \"description\": \"City name\"\n }\n },\n \"required\": [\"location\"]\n }\n }\n }\n ],\n \"temperature\": 0.7\n}"
},
"url": {
"raw": "{{base_url}}/v1/chat/completions",
"host": ["{{base_url}}"],
"path": ["v1", "chat", "completions"]
}
}
}
]
},
{
"name": "Text Completions",
"item": [
{
"name": "Create Text Completion",
"event": [
{
"listen": "prerequest",
"script": {
"exec": [
"var provider = ((pm.environment && pm.environment.get('provider')) || pm.variables.get('provider') || pm.collectionVariables.get('provider') || '').toLowerCase();",
"if (provider === 'openai' || provider === 'azure') {",
" postman.setNextRequest('Create Response');",
"}"
],
"type": "text/javascript"
}
}
],
"request": {
"method": "POST",
"header": [
{
"key": "Content-Type",
"value": "application/json"
}
],
"body": {
"mode": "raw",
"raw": "{\n \"model\": \"{{provider}}/{{text_completion_model}}\",\n \"prompt\": \"{{completions_prompt}}\",\n \"max_tokens\": 3\n}"
},
"url": {
"raw": "{{base_url}}/v1/completions",
"host": ["{{base_url}}"],
"path": ["v1", "completions"]
}
}
}
]
},
{
"name": "Responses",
"item": [
{
"name": "Create Response",
"request": {
"method": "POST",
"header": [
{
"key": "Content-Type",
"value": "application/json"
}
],
"body": {
"mode": "raw",
"raw": "{\n \"model\": \"{{provider}}/{{responses_model}}\",\n \"input\": \"Hey, this is bifrost. can you greet me using the greet tool?\",\n \"temperature\": 1.0,\n \"max_output_tokens\": 500\n}"
},
"url": {
"raw": "{{base_url}}/v1/responses",
"host": ["{{base_url}}"],
"path": ["v1", "responses"]
}
}
},
{
"name": "Create Response with Tools",
"request": {
"method": "POST",
"header": [
{
"key": "Content-Type",
"value": "application/json"
}
],
"body": {
"mode": "raw",
"raw": "{\n \"model\": \"{{provider}}/{{responses_model}}\",\n \"input\": \"What is 2 + 2? Use the add tool.\",\n \"tools\": [\n {\n \"type\": \"function\",\n \"name\": \"add\",\n \"description\": \"Add two numbers and return the sum\",\n \"parameters\": {\n \"type\": \"object\",\n \"properties\": {\n \"a\": {\"type\": \"number\", \"description\": \"First number\"},\n \"b\": {\"type\": \"number\", \"description\": \"Second number\"}\n },\n \"required\": [\"a\", \"b\"]\n }\n }\n ],\n \"temperature\": 0.5\n}"
},
"url": {
"raw": "{{base_url}}/v1/responses",
"host": ["{{base_url}}"],
"path": ["v1", "responses"]
}
}
}
]
},
{
"name": "Embeddings",
"item": [
{
"name": "Create Embedding",
"request": {
"method": "POST",
"header": [
{
"key": "Content-Type",
"value": "application/json"
}
],
"body": {
"mode": "raw",
"raw": "{\n \"model\": \"{{provider}}/{{embedding_model}}\",\n \"input\": \"Hello world\",\n \"encoding_format\": \"float\"\n}"
},
"url": {
"raw": "{{base_url}}/v1/embeddings",
"host": ["{{base_url}}"],
"path": ["v1", "embeddings"]
}
}
},
{
"name": "Create Embedding (Multiple Inputs)",
"request": {
"method": "POST",
"header": [
{
"key": "Content-Type",
"value": "application/json"
}
],
"body": {
"mode": "raw",
"raw": "{\n \"model\": \"{{provider}}/{{embedding_model}}\",\n \"input\": [\n \"Hello world\",\n \"Goodbye world\",\n \"Machine learning is fascinating\"\n ],\n \"encoding_format\": \"float\"}"
},
"url": {
"raw": "{{base_url}}/v1/embeddings",
"host": ["{{base_url}}"],
"path": ["v1", "embeddings"]
}
}
}
]
},
{
"name": "Audio",
"item": [
{
"name": "Create Speech",
"request": {
"method": "POST",
"header": [
{
"key": "Content-Type",
"value": "application/json"
}
],
"body": {
"mode": "raw",
"raw": "{\n \"model\": \"{{provider}}/{{speech_model}}\",\n \"input\": \"{{speech_input}}\",\n \"voice\": \"{{voice}}\"}"
},
"url": {
"raw": "{{base_url}}/v1/audio/speech",
"host": ["{{base_url}}"],
"path": ["v1", "audio", "speech"]
}
}
},
{
"name": "Create Transcription",
"request": {
"method": "POST",
"header": [],
"body": {
"mode": "formdata",
"formdata": [
{
"key": "model",
"value": "{{provider}}/{{transcription_model}}",
"type": "text"
},
{
"key": "file",
"type": "file",
"src": "fixtures/sample.mp3"
},
{
"key": "response_format",
"value": "json",
"type": "text"
},
{
"key": "language",
"value": "en",
"type": "text"
}
]
},
"url": {
"raw": "{{base_url}}/v1/audio/transcriptions",
"host": ["{{base_url}}"],
"path": ["v1", "audio", "transcriptions"]
}
}
}
]
},
{
"name": "Images",
"item": [
{
"name": "Generate Image",
"request": {
"method": "POST",
"header": [
{
"key": "Content-Type",
"value": "application/json"
}
],
"body": {
"mode": "raw",
"raw": "{\n \"model\": \"{{provider}}/{{image_model}}\",\n \"prompt\": \"A serene mountain landscape at sunset\"}"
},
"url": {
"raw": "{{base_url}}/v1/images/generations",
"host": ["{{base_url}}"],
"path": ["v1", "images", "generations"]
}
}
},
{
"name": "Edit Image",
"event": [
{
"listen": "prerequest",
"script": {
"exec": [
"var editModel = (pm.environment && pm.environment.get('image_edit_model')) || pm.collectionVariables.get('image_edit_model') || (pm.environment && pm.environment.get('image_model')) || pm.collectionVariables.get('image_model') || 'dall-e-2';",
"pm.collectionVariables.set('image_model_for_edit', editModel);",
"var provider = ((pm.environment && pm.environment.get('provider')) || pm.collectionVariables.get('provider') || pm.variables.get('provider') || '').toLowerCase();",
"pm.collectionVariables.set('image_edit_type', (provider === 'bedrock') ? 'background_removal' : '');",
"var variationModel = (pm.environment && pm.environment.get('image_variation_model')) || pm.collectionVariables.get('image_variation_model') || (pm.environment && pm.environment.get('image_edit_model')) || pm.collectionVariables.get('image_edit_model') || (pm.environment && pm.environment.get('image_model')) || pm.collectionVariables.get('image_model') || 'dall-e-2';",
"pm.collectionVariables.set('image_model_for_variation', variationModel);",
"pm.collectionVariables.set('image_variation_model', variationModel);"
],
"type": "text/javascript"
}
}
],
"request": {
"method": "POST",
"header": [],
"body": {
"mode": "formdata",
"formdata": [
{
"key": "model",
"value": "{{provider}}/{{image_model_for_edit}}",
"type": "text"
},
{
"key": "image[]",
"type": "file",
"src": "fixtures/sample.png"
},
{
"key": "prompt",
"value": "Add a sunset to this image",
"type": "text"
},
{
"key": "type",
"value": "{{image_edit_type}}",
"type": "text",
"disabled": false
}
]
},
"url": {
"raw": "{{base_url}}/v1/images/edits",
"host": ["{{base_url}}"],
"path": ["v1", "images", "edits"]
}
}
},
{
"name": "Create Image Variation",
"request": {
"method": "POST",
"header": [],
"body": {
"mode": "formdata",
"formdata": [
{
"key": "model",
"value": "{{provider}}/{{image_variation_model}}",
"type": "text"
},
{
"key": "image",
"type": "file",
"src": "fixtures/sample.png"
},
{
"key": "n",
"value": "1",
"type": "text"
},
{
"key": "size",
"value": "1024x1024",
"type": "text"
}
]
},
"url": {
"raw": "{{base_url}}/v1/images/variations",
"host": ["{{base_url}}"],
"path": ["v1", "images", "variations"]
}
}
}
]
},
{
"name": "Count Tokens",
"item": [
{
"name": "Count Tokens",
"request": {
"method": "POST",
"header": [
{
"key": "Content-Type",
"value": "application/json"
}
],
"body": {
"mode": "raw",
"raw": "{\n \"model\": \"{{provider}}/{{responses_model}}\",\n \"input\": [\n {\n \"role\": \"user\",\n \"content\": \"How many tokens is this message?\"\n }\n ]\n}"
},
"url": {
"raw": "{{base_url}}/v1/responses/input_tokens",
"host": ["{{base_url}}"],
"path": ["v1", "responses", "input_tokens"]
}
}
}
]
},
{
"name": "Files",
"item": [
{
"name": "Upload File",
"event": [
{
"listen": "prerequest",
"script": {
"exec": [
"var provider = ((pm.environment && pm.environment.get('provider')) || pm.collectionVariables.get('provider') || pm.variables.get('provider') || '').toLowerCase();",
"var batchFile = (provider === 'gemini') ? 'fixtures/sample-gemini.jsonl' : 'fixtures/sample.jsonl';",
"pm.collectionVariables.set('batch_file', batchFile);",
"var s3Bucket = (pm.environment && pm.environment.get('s3_bucket')) || pm.collectionVariables.get('s3_bucket') || '';",
"pm.collectionVariables.set('bedrock_s3_bucket', (provider === 'bedrock' && s3Bucket) ? s3Bucket : '');",
"if (provider === 'replicate') {",
" pm.collectionVariables.set('replicate_owner', (pm.environment && pm.environment.get('replicate_owner')) || pm.collectionVariables.get('replicate_owner') || '');",
" pm.collectionVariables.set('replicate_expiry', (pm.environment && pm.environment.get('replicate_expiry')) || '1830297599');",
"} else {",
" pm.collectionVariables.set('replicate_owner', '');",
" pm.collectionVariables.set('replicate_expiry', '');",
"}"
],
"type": "text/javascript"
}
},
{
"listen": "test",
"script": {
"exec": [
"var code = pm.response.code;",
"if (code >= 200 && code <= 299) {",
" try {",
" var j = pm.response.json();",
" var id = (j && (j.id || j.file_id)) || (j && j.data && (j.data.id || j.data.file_id));",
" if (id) {",
" id = String(id).replace(/^files\\//, '');",
" pm.collectionVariables.set('file_id', id);",
" if (pm.environment) { pm.environment.set('file_id', id); }",
" pm.collectionVariables.set('file_deleted', 'false');",
" if (pm.environment) { pm.environment.set('file_deleted', 'false'); }",
" }",
" } catch (e) {}",
"}"
],
"type": "text/javascript"
}
}
],
"request": {
"method": "POST",
"header": [],
"body": {
"mode": "formdata",
"formdata": [
{
"key": "file",
"type": "file",
"src": "{{batch_file}}"
},
{
"key": "purpose",
"value": "batch",
"type": "text"
},
{
"key": "provider",
"value": "{{provider}}",
"type": "text"
},
{
"key": "s3_bucket",
"value": "{{bedrock_s3_bucket}}",
"type": "text",
"disabled": false
},
{
"key": "owner",
"value": "{{replicate_owner}}",
"type": "text",
"disabled": false
},
{
"key": "expiry",
"value": "{{replicate_expiry}}",
"type": "text",
"disabled": false
}
]
},
"url": {
"raw": "{{base_url}}/v1/files",
"host": ["{{base_url}}"],
"path": ["v1", "files"]
}
}
},
{
"name": "List Files",
"request": {
"method": "GET",
"header": [],
"url": {
"raw": "{{base_url}}/v1/files?x-model-provider={{provider}}",
"host": ["{{base_url}}"],
"path": ["v1", "files"],
"query": [{"key": "x-model-provider", "value": "{{provider}}"}]
}
}
},
{
"name": "Retrieve File",
"event": [
{
"listen": "prerequest",
"script": {
"exec": [
"var provider = ((pm.environment && pm.environment.get('provider')) || pm.variables.get('provider') || pm.collectionVariables.get('provider') || '').toLowerCase();",
"var fileId = pm.collectionVariables.get('file_id') || pm.variables.get('file_id') || (pm.environment && pm.environment.get('file_id')) || '';",
"if (provider === 'bedrock' && (!fileId || fileId === 'file_123' || !/^s3:\\/\\//.test(fileId))) { if (pm.execution && typeof pm.execution.setNextRequest === 'function') { pm.execution.setNextRequest('Get File Content'); } else if (typeof postman !== 'undefined' && postman.setNextRequest) { postman.setNextRequest('Get File Content'); } if (pm.execution && typeof pm.execution.skipRequest === 'function') { pm.execution.skipRequest(); } }",
"var fileIdEnc = (provider === 'bedrock' && fileId && /^s3:\\/\\//.test(fileId)) ? encodeURIComponent(fileId) : fileId;",
"pm.collectionVariables.set('file_id_encoded', fileIdEnc);"
],
"type": "text/javascript"
}
}
],
"request": {
"method": "GET",
"header": [],
"url": {
"raw": "{{base_url}}/v1/files/{{file_id_encoded}}?provider={{provider}}",
"host": ["{{base_url}}"],
"path": ["v1", "files", "{{file_id_encoded}}"],
"query": [{"key": "provider", "value": "{{provider}}"}]
}
}
},
{
"name": "Get File Content",
"event": [
{
"listen": "prerequest",
"script": {
"exec": [
"var provider = ((pm.environment && pm.environment.get('provider')) || pm.variables.get('provider') || pm.collectionVariables.get('provider') || '').toLowerCase();",
"var fileId = pm.collectionVariables.get('file_id') || pm.variables.get('file_id') || (pm.environment && pm.environment.get('file_id')) || '';",
"if (provider === 'bedrock' && (!fileId || fileId === 'file_123' || !/^s3:\\/\\//.test(fileId))) { if (pm.execution && typeof pm.execution.setNextRequest === 'function') { pm.execution.setNextRequest('Upload File (for container reference)'); } else if (typeof postman !== 'undefined' && postman.setNextRequest) { postman.setNextRequest('Upload File (for container reference)'); } if (pm.execution && typeof pm.execution.skipRequest === 'function') { pm.execution.skipRequest(); } }",
"var fileIdEnc = (provider === 'bedrock' && fileId && /^s3:\\/\\//.test(fileId)) ? encodeURIComponent(fileId) : fileId;",
"pm.collectionVariables.set('file_id_encoded', fileIdEnc);"
],
"type": "text/javascript"
}
}
],
"request": {
"method": "GET",
"header": [],
"url": {
"raw": "{{base_url}}/v1/files/{{file_id_encoded}}/content?provider={{provider}}",
"host": ["{{base_url}}"],
"path": ["v1", "files", "{{file_id_encoded}}", "content"],
"query": [{"key": "provider", "value": "{{provider}}"}]
}
}
},
{
"name": "Upload File (for container reference)",
"event": [
{
"listen": "prerequest",
"script": {
"exec": [
"var provider = ((pm.environment && pm.environment.get('provider')) || pm.collectionVariables.get('provider') || pm.variables.get('provider') || '').toLowerCase();",
"if (provider === 'replicate') {",
" pm.collectionVariables.set('replicate_owner', (pm.environment && pm.environment.get('replicate_owner')) || pm.collectionVariables.get('replicate_owner') || '');",
" pm.collectionVariables.set('replicate_expiry', (pm.environment && pm.environment.get('replicate_expiry')) || '1830297599');",
"} else {",
" pm.collectionVariables.set('replicate_owner', '');",
" pm.collectionVariables.set('replicate_expiry', '');",
"}"
],
"type": "text/javascript"
}
},
{
"listen": "test",
"script": {
"exec": [
"var code = pm.response.code;",
"if (code >= 200 && code <= 299) {",
" try {",
" var j = pm.response.json();",
" var id = (j && (j.id || j.file_id)) || (j && j.data && (j.data.id || j.data.file_id));",
" if (id) {",
" id = String(id).replace(/^files\\//, '');",
" pm.collectionVariables.set('file_id_ref', id);",
" if (pm.environment) { pm.environment.set('file_id_ref', id); }",
" }",
" } catch (e) {}",
"}"
],
"type": "text/javascript"
}
}
],
"request": {
"method": "POST",
"header": [],
"body": {
"mode": "formdata",
"formdata": [
{
"key": "file",
"type": "file",
"src": "fixtures/sample.txt"
},
{
"key": "purpose",
"value": "assistants",
"type": "text"
},
{
"key": "provider",
"value": "{{provider}}",
"type": "text"
},
{
"key": "owner",
"value": "{{replicate_owner}}",
"type": "text",
"disabled": false
},
{
"key": "expiry",
"value": "{{replicate_expiry}}",
"type": "text",
"disabled": false
}
]
},
"url": {
"raw": "{{base_url}}/v1/files",
"host": ["{{base_url}}"],
"path": ["v1", "files"]
}
}
}
]
},
{
"name": "Batches",
"item": [
{
"name": "Create Batch (Inline Requests)",
"event": [
{
"listen": "prerequest",
"script": {
"exec": [
"var provider = ((pm.environment && pm.environment.get('provider')) || pm.variables.get('provider') || pm.collectionVariables.get('provider') || '').toLowerCase();",
"if (provider === 'bedrock') {",
" var outputS3Uri = (pm.environment && pm.environment.get('output_s3_uri')) || pm.collectionVariables.get('output_s3_uri') || '';",
" var roleArn = (pm.environment && pm.environment.get('role_arn')) || pm.collectionVariables.get('role_arn') || '';",
" var body = JSON.parse(pm.request.body.raw);",
" if (outputS3Uri) body.output_s3_uri = outputS3Uri;",
" if (roleArn) body.role_arn = roleArn;",
" pm.request.body.raw = JSON.stringify(body);",
"}"
],
"type": "text/javascript"
}
},
{
"listen": "test",
"script": {
"exec": [
"var code = pm.response.code;",
"if (code >= 200 && code <= 299) {",
" var j = pm.response.json();",
" if (j && j.id) { var bid = String(j.id).replace(/^batches\\//, ''); pm.collectionVariables.set('batch_id', bid); if (pm.environment) { pm.environment.set('batch_id', bid); } }",
"}"
],
"type": "text/javascript"
}
}
],
"request": {
"method": "POST",
"header": [
{
"key": "Content-Type",
"value": "application/json"
}
],
"body": {
"mode": "raw",
"raw": "{\n \"model\": \"{{provider}}/{{chat_model}}\",\n \"endpoint\": \"/v1/chat/completions\",\n \"completion_window\": \"24h\",\n \"requests\": [\n {\n \"custom_id\": \"test-request-1\",\n \"body\": {\n \"model\": \"{{chat_model}}\",\n \"messages\": [{\"role\": \"user\", \"content\": \"Say hello\"}]\n }\n }\n ],\n \"metadata\": {\"batch_type\": \"testing\"}\n}"
},
"url": {
"raw": "{{base_url}}/v1/batches",
"host": ["{{base_url}}"],
"path": ["v1", "batches"]
}
}
},
{
"name": "List Batches",
"request": {
"method": "GET",
"header": [],
"url": {
"raw": "{{base_url}}/v1/batches?provider={{provider}}&limit=10",
"host": ["{{base_url}}"],
"path": ["v1", "batches"],
"query": [
{"key": "provider", "value": "{{provider}}"},
{"key": "limit", "value": "10"}
]
}
}
},
{
"name": "Retrieve Batch",
"event": [
{
"listen": "prerequest",
"script": {
"exec": [
"var provider = ((pm.environment && pm.environment.get('provider')) || pm.variables.get('provider') || pm.collectionVariables.get('provider') || '').toLowerCase();",
"var batchId = pm.collectionVariables.get('batch_id') || pm.variables.get('batch_id') || (pm.environment && pm.environment.get('batch_id')) || '';",
"if (provider === 'bedrock' && (!batchId || batchId === 'batch_123' || !/^arn:aws:bedrock:/.test(batchId))) { if (pm.execution && typeof pm.execution.setNextRequest === 'function') { pm.execution.setNextRequest('Get Batch Results'); } else if (typeof postman !== 'undefined' && postman.setNextRequest) { postman.setNextRequest('Get Batch Results'); } if (pm.execution && typeof pm.execution.skipRequest === 'function') { pm.execution.skipRequest(); } }"
],
"type": "text/javascript"
}
}
],
"request": {
"method": "GET",
"header": [],
"url": {
"raw": "{{base_url}}/v1/batches/{{batch_id}}?provider={{provider}}",
"host": ["{{base_url}}"],
"path": ["v1", "batches", "{{batch_id}}"],
"query": [{"key": "provider", "value": "{{provider}}"}]
}
}
},
{
"name": "Cancel Batch",
"event": [
{
"listen": "prerequest",
"script": {
"exec": [
"var provider = ((pm.environment && pm.environment.get('provider')) || pm.variables.get('provider') || pm.collectionVariables.get('provider') || '').toLowerCase();",
"var batchId = pm.collectionVariables.get('batch_id') || pm.variables.get('batch_id') || (pm.environment && pm.environment.get('batch_id')) || '';",
"if (provider === 'bedrock' && (!batchId || batchId === 'batch_123' || !/^arn:aws:bedrock:/.test(batchId))) { if (pm.execution && typeof pm.execution.setNextRequest === 'function') { pm.execution.setNextRequest('Get Batch Results'); } else if (typeof postman !== 'undefined' && postman.setNextRequest) { postman.setNextRequest('Get Batch Results'); } if (pm.execution && typeof pm.execution.skipRequest === 'function') { pm.execution.skipRequest(); } }"
],
"type": "text/javascript"
}
}
],
"request": {
"method": "POST",
"header": [],
"url": {
"raw": "{{base_url}}/v1/batches/{{batch_id}}/cancel?provider={{provider}}",
"host": ["{{base_url}}"],
"path": ["v1", "batches", "{{batch_id}}", "cancel"],
"query": [{"key": "provider", "value": "{{provider}}"}]
}
}
},
{
"name": "Get Batch Results",
"event": [
{
"listen": "prerequest",
"script": {
"exec": [
"var provider = ((pm.environment && pm.environment.get('provider')) || pm.variables.get('provider') || pm.collectionVariables.get('provider') || '').toLowerCase();",
"var fakeBatchId = 'batch_test-batch-id';",
"if (provider === 'anthropic') { fakeBatchId = 'msgbatch_test-batch-id'; }",
"else if (provider === 'openai' || provider === 'azure') { fakeBatchId = 'batch_test-batch-id'; }",
"else if (provider === 'bedrock') { fakeBatchId = 'arn:aws:bedrock:us-east-1:791152688819:model-invocation-job/aaaaaaaaaaaa'; }",
"else if (provider === 'gemini') { fakeBatchId = 'aaaaaaaaaaaa'; }",
"pm.collectionVariables.set('batch_id', fakeBatchId);",
"if (pm.environment) { pm.environment.set('batch_id', fakeBatchId); }"
],
"type": "text/javascript"
}
}
],
"request": {
"method": "GET",
"header": [],
"url": {
"raw": "{{base_url}}/v1/batches/{{batch_id}}/results?provider={{provider}}",
"host": ["{{base_url}}"],
"path": ["v1", "batches", "{{batch_id}}", "results"],
"query": [{"key": "provider", "value": "{{provider}}"}]
}
}
},
{
"name": "Create Batch (File-based)",
"event": [
{
"listen": "prerequest",
"script": {
"exec": [
"var provider = ((pm.environment && pm.environment.get('provider')) || pm.variables.get('provider') || pm.collectionVariables.get('provider') || '').toLowerCase();",
"var fileId = pm.collectionVariables.get('file_id') || pm.variables.get('file_id') || (pm.environment && pm.environment.get('file_id')) || '';",
"if (provider === 'bedrock' && (!fileId || fileId === 'file_123' || !/^s3:\\/\\//.test(fileId))) { if (pm.execution && typeof pm.execution.setNextRequest === 'function') { pm.execution.setNextRequest('Delete File'); } else if (typeof postman !== 'undefined' && postman.setNextRequest) { postman.setNextRequest('Delete File'); } if (pm.execution && typeof pm.execution.skipRequest === 'function') { pm.execution.skipRequest(); } }",
"if (provider === 'bedrock') {",
" var outputS3Uri = (pm.environment && pm.environment.get('output_s3_uri')) || pm.collectionVariables.get('output_s3_uri') || '';",
" var roleArn = (pm.environment && pm.environment.get('role_arn')) || pm.collectionVariables.get('role_arn') || '';",
" var body = JSON.parse(pm.request.body.raw);",
" if (outputS3Uri) body.output_s3_uri = outputS3Uri;",
" if (roleArn) body.role_arn = roleArn;",
" pm.request.body.raw = JSON.stringify(body);",
"}"
],
"type": "text/javascript"
}
},
{
"listen": "test",
"script": {
"exec": [
"var code = pm.response.code;",
"if (code >= 200 && code <= 299) {",
" var j = pm.response.json();",
" if (j && j.id) { var bid = String(j.id).replace(/^batches\\//, ''); pm.collectionVariables.set('batch_id', bid); if (pm.environment) { pm.environment.set('batch_id', bid); } }",
"}"
],
"type": "text/javascript"
}
}
],
"request": {
"method": "POST",
"header": [
{
"key": "Content-Type",
"value": "application/json"
}
],
"body": {
"mode": "raw",
"raw": "{\n \"model\": \"{{provider}}/{{chat_model}}\",\n \"input_file_id\": \"{{file_id}}\",\n \"endpoint\": \"/v1/chat/completions\",\n \"completion_window\": \"24h\",\n \"metadata\": {\"batch_type\": \"production\"}\n}"
},
"url": {
"raw": "{{base_url}}/v1/batches",
"host": ["{{base_url}}"],
"path": ["v1", "batches"]
}
}
},
{
"name": "Delete File",
"event": [
{
"listen": "prerequest",
"script": {
"exec": [
"// Only delete file_id (main file). file_id_ref is used by Create Container File (Reference) and must remain.",
"var provider = ((pm.environment && pm.environment.get('provider')) || pm.variables.get('provider') || pm.collectionVariables.get('provider') || '').toLowerCase();",
"var fid = pm.collectionVariables.get('file_id');",
"if (pm.environment) { var e = pm.environment.get('file_id'); if (e) fid = e; }",
"if (fid === 'file_123' || !fid) { if (pm.execution && typeof pm.execution.skipRequest === 'function') { pm.execution.skipRequest(); } else if (typeof postman !== 'undefined' && postman.setNextRequest) { postman.setNextRequest('Create Container'); } }",
"var fileIdEnc = (provider === 'bedrock' && fid && /^s3:\\/\\//.test(fid)) ? encodeURIComponent(fid) : fid;",
"pm.collectionVariables.set('file_id_encoded', fileIdEnc);"
],
"type": "text/javascript"
}
}
],
"request": {
"method": "DELETE",
"header": [],
"url": {
"raw": "{{base_url}}/v1/files/{{file_id_encoded}}?provider={{provider}}",
"host": ["{{base_url}}"],
"path": ["v1", "files", "{{file_id_encoded}}"],
"query": [{"key": "provider", "value": "{{provider}}"}]
}
}
}
]
},
{
"name": "Containers",
"item": [
{
"name": "Create Container",
"event": [
{
"listen": "test",
"script": {
"exec": [
"var code = pm.response.code;",
"if (code >= 200 && code <= 299) {",
" var j = pm.response.json();",
" if (j && j.id) { pm.collectionVariables.set('container_id', j.id); if (pm.environment) { pm.environment.set('container_id', j.id); } }",
"}"
],
"type": "text/javascript"
}
}
],
"request": {
"method": "POST",
"header": [
{
"key": "Content-Type",
"value": "application/json"
}
],
"body": {
"mode": "raw",
"raw": "{\n \"provider\": \"{{provider}}\",\n \"name\": \"bifrost-test-container\"\n}"
},
"url": {
"raw": "{{base_url}}/v1/containers",
"host": ["{{base_url}}"],
"path": ["v1", "containers"]
}
}
},
{
"name": "List Containers",
"request": {
"method": "GET",
"header": [],
"url": {
"raw": "{{base_url}}/v1/containers?provider={{provider}}",
"host": ["{{base_url}}"],
"path": ["v1", "containers"],
"query": [{"key": "provider", "value": "{{provider}}"}]
}
}
},
{
"name": "Retrieve Container",
"request": {
"method": "GET",
"header": [],
"url": {
"raw": "{{base_url}}/v1/containers/{{container_id}}?provider={{provider}}",
"host": ["{{base_url}}"],
"path": ["v1", "containers", "{{container_id}}"],
"query": [{"key": "provider", "value": "{{provider}}"}]
}
}
},
{
"name": "Create Container File (Upload)",
"event": [
{
"listen": "test",
"script": {
"exec": [
"var code = pm.response.code;",
"if (code >= 200 && code <= 299) {",
" var j = pm.response.json();",
" if (j && j.id) { pm.collectionVariables.set('container_file_id', j.id); if (pm.environment) { pm.environment.set('container_file_id', j.id); } }",
"}"
],
"type": "text/javascript"
}
}
],
"request": {
"method": "POST",
"header": [],
"body": {
"mode": "formdata",
"formdata": [
{
"key": "file",
"type": "file",
"src": "fixtures/sample.txt"
},
{
"key": "file_path",
"value": "/test-file.txt",
"type": "text"
}
]
},
"url": {
"raw": "{{base_url}}/v1/containers/{{container_id}}/files?provider={{provider}}",
"host": ["{{base_url}}"],
"path": ["v1", "containers", "{{container_id}}", "files"],
"query": [{"key": "provider", "value": "{{provider}}"}]
}
}
},
{
"name": "Create Container File (Reference)",
"request": {
"method": "POST",
"header": [
{
"key": "Content-Type",
"value": "application/json"
}
],
"body": {
"mode": "raw",
"raw": "{\n \"file_id\": \"{{file_id_ref}}\",\n \"file_path\": \"/data/file.txt\"\n}"
},
"url": {
"raw": "{{base_url}}/v1/containers/{{container_id}}/files?provider={{provider}}",
"host": ["{{base_url}}"],
"path": ["v1", "containers", "{{container_id}}", "files"],
"query": [{"key": "provider", "value": "{{provider}}"}]
}
}
},
{
"name": "List Container Files",
"request": {
"method": "GET",
"header": [],
"url": {
"raw": "{{base_url}}/v1/containers/{{container_id}}/files?provider={{provider}}",
"host": ["{{base_url}}"],
"path": ["v1", "containers", "{{container_id}}", "files"],
"query": [{"key": "provider", "value": "{{provider}}"}]
}
}
},
{
"name": "Retrieve Container File",
"request": {
"method": "GET",
"header": [],
"url": {
"raw": "{{base_url}}/v1/containers/{{container_id}}/files/{{container_file_id}}?provider={{provider}}",
"host": ["{{base_url}}"],
"path": ["v1", "containers", "{{container_id}}", "files", "{{container_file_id}}"],
"query": [{"key": "provider", "value": "{{provider}}"}]
}
}
},
{
"name": "Get Container File Content",
"request": {
"method": "GET",
"header": [],
"url": {
"raw": "{{base_url}}/v1/containers/{{container_id}}/files/{{container_file_id}}/content?provider={{provider}}",
"host": ["{{base_url}}"],
"path": ["v1", "containers", "{{container_id}}", "files", "{{container_file_id}}", "content"],
"query": [{"key": "provider", "value": "{{provider}}"}]
}
}
},
{
"name": "Delete Container File",
"request": {
"method": "DELETE",
"header": [],
"url": {
"raw": "{{base_url}}/v1/containers/{{container_id}}/files/{{container_file_id}}?provider={{provider}}",
"host": ["{{base_url}}"],
"path": ["v1", "containers", "{{container_id}}", "files", "{{container_file_id}}"],
"query": [{"key": "provider", "value": "{{provider}}"}]
}
}
},
{
"name": "Delete Container",
"request": {
"method": "DELETE",
"header": [],
"url": {
"raw": "{{base_url}}/v1/containers/{{container_id}}?provider={{provider}}",
"host": ["{{base_url}}"],
"path": ["v1", "containers", "{{container_id}}"],
"query": [{"key": "provider", "value": "{{provider}}"}]
}
}
}
]
}
]
}