{
    "variable": [
        {
            "id": "baseUrl",
            "key": "baseUrl",
            "type": "string",
            "name": "string",
            "value": "https://fxproof.org"
        }
    ],
    "info": {
        "name": "FXProof API Documentation",
        "_postman_id": "facbb632-2935-4930-8191-160dd98c1fbd",
        "description": "FXProof API helps teams automate proof work: discover valid datasets, retrieve reference rates when needed, open or reuse proof bundles, download ready files, and verify FXProof PDFs. After authentication, rates and proof bundle routes expose quota state with X-Quota-Limit, X-Quota-Remaining, and X-Quota-Reset.",
        "schema": "https://schema.getpostman.com/json/collection/v2.1.0/collection.json",
        "version": "1.0.0"
    },
    "item": [
        {
            "name": "Account",
            "description": "",
            "item": [
                {
                    "name": "Get the authenticated user's account and quota summary.",
                    "request": {
                        "url": {
                            "host": "{{baseUrl}}",
                            "path": "api/v1/user",
                            "query": [],
                            "raw": "{{baseUrl}}/api/v1/user"
                        },
                        "method": "GET",
                        "header": [
                            {
                                "key": "Content-Type",
                                "value": "application/json"
                            },
                            {
                                "key": "Accept",
                                "value": "application/json"
                            }
                        ],
                        "body": null,
                        "description": ""
                    },
                    "response": [
                        {
                            "header": [],
                            "code": 200,
                            "body": "{\n  \"data\": {\n    \"id\": 1,\n    \"name\": \"API User\",\n    \"email\": \"api-user@example.com\",\n    \"email_verified_at\": \"2026-03-30T12:00:00Z\",\n    \"subscriptions\": [\n      {\n        \"name\": \"default\",\n        \"provider\": \"paddle\",\n        \"status\": \"active\",\n        \"ends_at\": null,\n        \"current_period_start\": null,\n        \"current_period_end\": null\n      }\n    ],\n    \"entitlements\": [\n      {\n        \"product\": \"Basic\",\n        \"granted_at\": \"2026-03-01T00:00:00Z\",\n        \"expires_at\": null\n      }\n    ],\n    \"current_period\": {\n      \"start\": \"2026-03-01\",\n      \"end\": \"2026-03-31\",\n      \"reset_at\": \"2026-04-01T00:00:00Z\"\n    },\n    \"usage\": {\n      \"api_calls\": 1,\n      \"proofs\": 1\n    },\n    \"limits\": {\n      \"api_calls\": 1500,\n      \"proofs\": 5,\n      \"rpm\": 10,\n      \"parallel_streams\": 1,\n      \"history_years\": 1,\n      \"history_days\": 366,\n      \"history_earliest_date\": \"2025-03-30\"\n    },\n    \"remaining\": {\n      \"api_calls\": 1499,\n      \"proofs\": 4\n    },\n    \"plan\": {\n      \"level\": \"basic\",\n      \"name\": \"Basic\"\n    }\n  }\n}",
                            "name": "Profile payload"
                        },
                        {
                            "header": [],
                            "code": 401,
                            "body": "{\n  \"message\": \"Unauthenticated.\"\n}",
                            "name": "Unauthenticated"
                        },
                        {
                            "header": [],
                            "code": 429,
                            "body": "{\n  \"error\": \"rate_limit_exceeded\",\n  \"message\": \"Rate limit exceeded\",\n  \"details\": {\n    \"scope\": \"rpm\",\n    \"limit\": 10\n  }\n}",
                            "name": "RPM throttle"
                        },
                        {
                            "header": [],
                            "code": 500,
                            "body": "{\n  \"error\": \"system_error\",\n  \"message\": \"Unexpected system error.\",\n  \"details\": {\n    \"scope\": \"user_show\"\n  }\n}",
                            "name": "System error"
                        }
                    ]
                }
            ]
        },
        {
            "name": "Authentication",
            "description": "",
            "item": [
                {
                    "name": "Create a short-lived Bearer token for protected API calls.",
                    "request": {
                        "url": {
                            "host": "{{baseUrl}}",
                            "path": "api/v1/tokens",
                            "query": [],
                            "raw": "{{baseUrl}}/api/v1/tokens"
                        },
                        "method": "POST",
                        "header": [
                            {
                                "key": "Content-Type",
                                "value": "application/json"
                            },
                            {
                                "key": "Accept",
                                "value": "application/json"
                            }
                        ],
                        "body": {
                            "mode": "raw",
                            "raw": "{\"email\":\"api-user@example.com\",\"password\":\"secret-pass-123\",\"device_name\":\"Production integration\"}"
                        },
                        "description": "",
                        "auth": {
                            "type": "noauth"
                        }
                    },
                    "response": [
                        {
                            "header": [],
                            "code": 201,
                            "body": "{\n  \"token_type\": \"Bearer\",\n  \"access_token\": \"1|fxproof-example-token\",\n  \"expires_at\": \"2026-03-31T12:00:00Z\",\n  \"expires_in\": 86400,\n  \"user\": {\n    \"id\": 1,\n    \"name\": \"API User\",\n    \"email\": \"api-user@example.com\"\n  }\n}",
                            "name": "Token issued"
                        },
                        {
                            "header": [],
                            "code": 400,
                            "body": "{\n  \"error\": \"insecure_transport\",\n  \"message\": \"Token issuance requires HTTPS.\"\n}",
                            "name": "HTTPS required"
                        },
                        {
                            "header": [],
                            "code": 422,
                            "body": "{\n  \"error\": \"validation_error\",\n  \"message\": \"Invalid authentication request.\",\n  \"details\": {\n    \"email\": [\n      \"The email field must be a valid email address.\"\n    ],\n    \"device_name\": [\n      \"The device name field is required.\"\n    ]\n  }\n}",
                            "name": "Validation error"
                        },
                        {
                            "header": [],
                            "code": 422,
                            "body": "{\n  \"error\": \"invalid_credentials\",\n  \"message\": \"Invalid credentials.\"\n}",
                            "name": "Invalid credentials"
                        },
                        {
                            "header": [],
                            "code": 429,
                            "body": "{\n  \"error\": \"rate_limit_exceeded\",\n  \"message\": \"Too many authentication attempts. Please try again later.\",\n  \"details\": {\n    \"scope\": \"auth_token_email\",\n    \"limit\": 5\n  }\n}",
                            "name": "Authentication throttle"
                        },
                        {
                            "header": [],
                            "code": 429,
                            "body": "{\n  \"error\": \"rate_limit_exceeded\",\n  \"message\": \"Too many invalid authentication requests. Please try again later.\",\n  \"details\": {\n    \"scope\": \"auth_token_malformed_ip\",\n    \"limit\": 5\n  }\n}",
                            "name": "Malformed request throttle"
                        },
                        {
                            "header": [],
                            "code": 500,
                            "body": "{\n  \"error\": \"system_error\",\n  \"message\": \"Unexpected system error.\",\n  \"details\": {\n    \"scope\": \"auth_tokens_store\"\n  }\n}",
                            "name": "System error"
                        }
                    ]
                }
            ]
        },
        {
            "name": "Proof Bundles",
            "description": "",
            "item": [
                {
                    "name": "List proof bundles already opened by the authenticated user.",
                    "request": {
                        "url": {
                            "host": "{{baseUrl}}",
                            "path": "api/v1/proofs",
                            "query": [
                                {
                                    "key": "dataset",
                                    "value": "fed%7Ch10_daily%7Cdaily",
                                    "description": "Optional stable public dataset identifier. Maximum: 120 characters. Default: no dataset filter.",
                                    "disabled": false
                                },
                                {
                                    "key": "date",
                                    "value": "2026-03-30",
                                    "description": "Optional bundle date in `Y-m-d` format. Default: no date filter.",
                                    "disabled": false
                                },
                                {
                                    "key": "page",
                                    "value": "1",
                                    "description": "Optional page number. Default: 1.",
                                    "disabled": false
                                },
                                {
                                    "key": "per_page",
                                    "value": "20",
                                    "description": "Optional items per page. Default: 20. Maximum: 100.",
                                    "disabled": false
                                }
                            ],
                            "raw": "{{baseUrl}}/api/v1/proofs?dataset=fed%7Ch10_daily%7Cdaily&date=2026-03-30&page=1&per_page=20"
                        },
                        "method": "GET",
                        "header": [
                            {
                                "key": "Content-Type",
                                "value": "application/json"
                            },
                            {
                                "key": "Accept",
                                "value": "application/json"
                            }
                        ],
                        "body": null,
                        "description": ""
                    },
                    "response": [
                        {
                            "header": [
                                {
                                    "key": "X-Quota-Limit",
                                    "value": "1500"
                                },
                                {
                                    "key": "X-Quota-Remaining",
                                    "value": "1499"
                                },
                                {
                                    "key": "X-Quota-Reset",
                                    "value": "2592000"
                                }
                            ],
                            "code": 200,
                            "body": "{\n  \"data\": [\n    {\n      \"id\": 16,\n      \"dataset\": \"fed|h10_daily|daily\",\n      \"source\": \"fed\",\n      \"source_name\": \"Federal Reserve System\",\n      \"product\": \"h10_daily\",\n      \"product_name\": \"H10 Daily\",\n      \"periodicity\": \"daily\",\n      \"periodicity_name\": \"Daily\",\n      \"date\": \"2026-03-30\",\n      \"opened_at\": \"2026-03-30T10:00:00Z\",\n      \"last_accessed_at\": \"2026-03-30T10:30:00Z\",\n      \"documents\": [\n        {\n          \"id\": \"019cb777-c5b6-734e-9552-0c4443fab21c\",\n          \"name\": \"Signed FXProof Proof PDF\",\n          \"type\": \"generated_current_pdf\",\n          \"role\": \"proof\",\n          \"is_official\": false,\n          \"mime_type\": \"application/pdf\",\n          \"size_bytes\": 24567,\n          \"source_url\": null,\n          \"download_url\": \"https://dev.fxproof.org/api/v1/proofs/16/files/019cb777-c5b6-734e-9552-0c4443fab21c\"\n        }\n      ]\n    }\n  ],\n  \"meta\": {\n    \"current_page\": 1,\n    \"last_page\": 1,\n    \"per_page\": 20,\n    \"total\": 1\n  }\n}",
                            "name": "Opened bundles"
                        },
                        {
                            "header": [],
                            "code": 401,
                            "body": "{\n  \"message\": \"Unauthenticated.\"\n}",
                            "name": "Unauthenticated"
                        },
                        {
                            "header": [
                                {
                                    "key": "X-Quota-Limit",
                                    "value": "1500"
                                },
                                {
                                    "key": "X-Quota-Remaining",
                                    "value": "1499"
                                },
                                {
                                    "key": "X-Quota-Reset",
                                    "value": "2592000"
                                }
                            ],
                            "code": 422,
                            "body": "{\n  \"error\": \"invalid_filter\",\n  \"message\": \"One or more filters are invalid\",\n  \"details\": {\n    \"field\": \"dataset\",\n    \"value\": \"fed|wrong_code|daily\"\n  }\n}",
                            "name": "Invalid dataset"
                        },
                        {
                            "header": [
                                {
                                    "key": "X-Quota-Limit",
                                    "value": "1500"
                                },
                                {
                                    "key": "X-Quota-Remaining",
                                    "value": "1499"
                                },
                                {
                                    "key": "X-Quota-Reset",
                                    "value": "2592000"
                                }
                            ],
                            "code": 422,
                            "body": "{\n  \"error\": \"validation_error\",\n  \"message\": \"Invalid request parameters\",\n  \"details\": {\n    \"date\": [\n      \"The date field must match the format Y-m-d.\"\n    ]\n  }\n}",
                            "name": "Invalid request parameters"
                        },
                        {
                            "header": [
                                {
                                    "key": "X-Quota-Limit",
                                    "value": "1500"
                                },
                                {
                                    "key": "X-Quota-Remaining",
                                    "value": "1499"
                                },
                                {
                                    "key": "X-Quota-Reset",
                                    "value": "2592000"
                                }
                            ],
                            "code": 429,
                            "body": "{\n  \"error\": \"rate_limit_exceeded\",\n  \"message\": \"Rate limit exceeded\",\n  \"details\": {\n    \"scope\": \"rpm\",\n    \"limit\": 10\n  }\n}",
                            "name": "RPM throttle"
                        },
                        {
                            "header": [
                                {
                                    "key": "X-Quota-Limit",
                                    "value": "1500"
                                },
                                {
                                    "key": "X-Quota-Remaining",
                                    "value": "1499"
                                },
                                {
                                    "key": "X-Quota-Reset",
                                    "value": "2592000"
                                }
                            ],
                            "code": 500,
                            "body": "{\n  \"error\": \"system_error\",\n  \"message\": \"Unexpected system error.\",\n  \"details\": {\n    \"scope\": \"proofs_index\"\n  }\n}",
                            "name": "System error"
                        }
                    ]
                },
                {
                    "name": "Open or reuse one proof bundle for one dataset and one date.",
                    "request": {
                        "url": {
                            "host": "{{baseUrl}}",
                            "path": "api/v1/proofs",
                            "query": [],
                            "raw": "{{baseUrl}}/api/v1/proofs"
                        },
                        "method": "POST",
                        "header": [
                            {
                                "key": "Content-Type",
                                "value": "application/json"
                            },
                            {
                                "key": "Accept",
                                "value": "application/json"
                            }
                        ],
                        "body": {
                            "mode": "raw",
                            "raw": "{\"dataset\":\"fed|h10_daily|daily\",\"date\":\"2026-03-30\"}"
                        },
                        "description": ""
                    },
                    "response": [
                        {
                            "header": [
                                {
                                    "key": "X-Quota-Limit",
                                    "value": "1500"
                                },
                                {
                                    "key": "X-Quota-Remaining",
                                    "value": "1499"
                                },
                                {
                                    "key": "X-Quota-Reset",
                                    "value": "2592000"
                                }
                            ],
                            "code": 200,
                            "body": "{\n  \"data\": {\n    \"id\": 16,\n    \"dataset\": \"fed|h10_daily|daily\",\n    \"source\": \"fed\",\n    \"source_name\": \"Federal Reserve System\",\n    \"product\": \"h10_daily\",\n    \"product_name\": \"H10 Daily\",\n    \"periodicity\": \"daily\",\n    \"periodicity_name\": \"Daily\",\n    \"date\": \"2026-03-30\",\n    \"opened_at\": \"2026-03-30T10:00:00Z\",\n    \"last_accessed_at\": \"2026-03-30T10:30:00Z\",\n    \"already_opened\": true,\n    \"documents\": [\n      {\n        \"id\": \"019cb777-c5b6-734e-9552-0c4443fab21c\",\n        \"name\": \"Signed FXProof Proof PDF\",\n        \"type\": \"generated_current_pdf\",\n        \"role\": \"proof\",\n        \"is_official\": false,\n        \"mime_type\": \"application/pdf\",\n        \"size_bytes\": 24567,\n        \"source_url\": null,\n        \"download_url\": \"https://dev.fxproof.org/api/v1/proofs/16/files/019cb777-c5b6-734e-9552-0c4443fab21c\"\n      }\n    ]\n  }\n}",
                            "name": "Existing bundle reused"
                        },
                        {
                            "header": [
                                {
                                    "key": "X-Quota-Limit",
                                    "value": "1500"
                                },
                                {
                                    "key": "X-Quota-Remaining",
                                    "value": "1499"
                                },
                                {
                                    "key": "X-Quota-Reset",
                                    "value": "2592000"
                                }
                            ],
                            "code": 201,
                            "body": "{\n  \"data\": {\n    \"id\": 16,\n    \"dataset\": \"fed|h10_daily|daily\",\n    \"source\": \"fed\",\n    \"source_name\": \"Federal Reserve System\",\n    \"product\": \"h10_daily\",\n    \"product_name\": \"H10 Daily\",\n    \"periodicity\": \"daily\",\n    \"periodicity_name\": \"Daily\",\n    \"date\": \"2026-03-30\",\n    \"opened_at\": \"2026-03-30T10:00:00Z\",\n    \"last_accessed_at\": \"2026-03-30T10:00:00Z\",\n    \"already_opened\": false,\n    \"documents\": [\n      {\n        \"id\": \"019cb777-c5b6-734e-9552-0c4443fab21c\",\n        \"name\": \"Signed FXProof Proof PDF\",\n        \"type\": \"generated_current_pdf\",\n        \"role\": \"proof\",\n        \"is_official\": false,\n        \"mime_type\": \"application/pdf\",\n        \"size_bytes\": 24567,\n        \"source_url\": null,\n        \"download_url\": \"https://dev.fxproof.org/api/v1/proofs/16/files/019cb777-c5b6-734e-9552-0c4443fab21c\"\n      }\n    ]\n  }\n}",
                            "name": "New bundle opened"
                        },
                        {
                            "header": [],
                            "code": 401,
                            "body": "{\n  \"message\": \"Unauthenticated.\"\n}",
                            "name": "Unauthenticated"
                        },
                        {
                            "header": [
                                {
                                    "key": "X-Quota-Limit",
                                    "value": "1500"
                                },
                                {
                                    "key": "X-Quota-Remaining",
                                    "value": "1499"
                                },
                                {
                                    "key": "X-Quota-Reset",
                                    "value": "2592000"
                                }
                            ],
                            "code": 403,
                            "body": "{\n  \"error\": \"source_unavailable\",\n  \"message\": \"Source is unavailable\"\n}",
                            "name": "Source unavailable"
                        },
                        {
                            "header": [
                                {
                                    "key": "X-Quota-Limit",
                                    "value": "1500"
                                },
                                {
                                    "key": "X-Quota-Remaining",
                                    "value": "1499"
                                },
                                {
                                    "key": "X-Quota-Reset",
                                    "value": "2592000"
                                }
                            ],
                            "code": 403,
                            "body": "{\n  \"error\": \"archive_window_exceeded\",\n  \"message\": \"The requested date is outside your plan's archive window.\",\n  \"details\": {\n    \"requested_date\": \"2025-12-30\",\n    \"earliest_allowed_date\": \"2025-12-31\",\n    \"history_years\": 1,\n    \"history_days\": 366\n  }\n}",
                            "name": "Archive window exceeded"
                        },
                        {
                            "header": [
                                {
                                    "key": "X-Quota-Limit",
                                    "value": "1500"
                                },
                                {
                                    "key": "X-Quota-Remaining",
                                    "value": "1499"
                                },
                                {
                                    "key": "X-Quota-Reset",
                                    "value": "2592000"
                                }
                            ],
                            "code": 404,
                            "body": "{\n  \"error\": \"proof_not_found\",\n  \"message\": \"Proof files not found for the specified criteria\"\n}",
                            "name": "Proof not found"
                        },
                        {
                            "header": [
                                {
                                    "key": "X-Quota-Limit",
                                    "value": "1500"
                                },
                                {
                                    "key": "X-Quota-Remaining",
                                    "value": "1499"
                                },
                                {
                                    "key": "X-Quota-Reset",
                                    "value": "2592000"
                                }
                            ],
                            "code": 409,
                            "body": "{\n  \"error\": \"proof_bundle_not_ready\",\n  \"message\": \"Proof bundle is not ready yet.\"\n}",
                            "name": "Proof bundle not ready"
                        },
                        {
                            "header": [
                                {
                                    "key": "X-Quota-Limit",
                                    "value": "1500"
                                },
                                {
                                    "key": "X-Quota-Remaining",
                                    "value": "1499"
                                },
                                {
                                    "key": "X-Quota-Reset",
                                    "value": "2592000"
                                }
                            ],
                            "code": 422,
                            "body": "{\n  \"error\": \"invalid_filter\",\n  \"message\": \"One or more filters are invalid\",\n  \"details\": {\n    \"field\": \"dataset\",\n    \"value\": \"fed|wrong_code|daily\"\n  }\n}",
                            "name": "Invalid dataset"
                        },
                        {
                            "header": [
                                {
                                    "key": "X-Quota-Limit",
                                    "value": "1500"
                                },
                                {
                                    "key": "X-Quota-Remaining",
                                    "value": "1499"
                                },
                                {
                                    "key": "X-Quota-Reset",
                                    "value": "2592000"
                                }
                            ],
                            "code": 422,
                            "body": "{\n  \"error\": \"validation_error\",\n  \"message\": \"Invalid request parameters\",\n  \"details\": {\n    \"dataset\": [\n      \"The dataset field is required.\"\n    ],\n    \"date\": [\n      \"The date field is required.\"\n    ]\n  }\n}",
                            "name": "Invalid request parameters"
                        },
                        {
                            "header": [
                                {
                                    "key": "X-Quota-Limit",
                                    "value": "1500"
                                },
                                {
                                    "key": "X-Quota-Remaining",
                                    "value": "1499"
                                },
                                {
                                    "key": "X-Quota-Reset",
                                    "value": "2592000"
                                }
                            ],
                            "code": 429,
                            "body": "{\n  \"error\": \"proof_limit_exceeded\",\n  \"message\": \"Proof bundle quota exceeded\"\n}",
                            "name": "Proof quota exceeded"
                        },
                        {
                            "header": [
                                {
                                    "key": "X-Quota-Limit",
                                    "value": "1500"
                                },
                                {
                                    "key": "X-Quota-Remaining",
                                    "value": "1499"
                                },
                                {
                                    "key": "X-Quota-Reset",
                                    "value": "2592000"
                                }
                            ],
                            "code": 429,
                            "body": "{\n  \"error\": \"rate_limit_exceeded\",\n  \"message\": \"Rate limit exceeded\",\n  \"details\": {\n    \"scope\": \"rpm\",\n    \"limit\": 10\n  }\n}",
                            "name": "RPM throttle"
                        },
                        {
                            "header": [
                                {
                                    "key": "X-Quota-Limit",
                                    "value": "1500"
                                },
                                {
                                    "key": "X-Quota-Remaining",
                                    "value": "1499"
                                },
                                {
                                    "key": "X-Quota-Reset",
                                    "value": "2592000"
                                }
                            ],
                            "code": 500,
                            "body": "{\n  \"error\": \"system_error\",\n  \"message\": \"Unexpected system error.\",\n  \"details\": {\n    \"scope\": \"proofs_store\"\n  }\n}",
                            "name": "System error"
                        }
                    ]
                },
                {
                    "name": "Get one previously opened proof bundle.",
                    "request": {
                        "url": {
                            "host": "{{baseUrl}}",
                            "path": "api/v1/proofs/:proof",
                            "query": [],
                            "raw": "{{baseUrl}}/api/v1/proofs/:proof",
                            "variable": [
                                {
                                    "id": "proof",
                                    "key": "proof",
                                    "value": "16",
                                    "description": "Proof access id."
                                }
                            ]
                        },
                        "method": "GET",
                        "header": [
                            {
                                "key": "Content-Type",
                                "value": "application/json"
                            },
                            {
                                "key": "Accept",
                                "value": "application/json"
                            }
                        ],
                        "body": null,
                        "description": ""
                    },
                    "response": [
                        {
                            "header": [
                                {
                                    "key": "X-Quota-Limit",
                                    "value": "1500"
                                },
                                {
                                    "key": "X-Quota-Remaining",
                                    "value": "1499"
                                },
                                {
                                    "key": "X-Quota-Reset",
                                    "value": "2592000"
                                }
                            ],
                            "code": 200,
                            "body": "{\n  \"data\": {\n    \"id\": 16,\n    \"dataset\": \"fed|h10_daily|daily\",\n    \"source\": \"fed\",\n    \"source_name\": \"Federal Reserve System\",\n    \"product\": \"h10_daily\",\n    \"product_name\": \"H10 Daily\",\n    \"periodicity\": \"daily\",\n    \"periodicity_name\": \"Daily\",\n    \"date\": \"2026-03-30\",\n    \"opened_at\": \"2026-03-30T10:00:00Z\",\n    \"last_accessed_at\": \"2026-03-30T10:30:00Z\",\n    \"documents\": [\n      {\n        \"id\": \"019cb777-c5b6-734e-9552-0c4443fab21c\",\n        \"name\": \"Signed FXProof Proof PDF\",\n        \"type\": \"generated_current_pdf\",\n        \"role\": \"proof\",\n        \"is_official\": false,\n        \"mime_type\": \"application/pdf\",\n        \"size_bytes\": 24567,\n        \"source_url\": null,\n        \"download_url\": \"https://dev.fxproof.org/api/v1/proofs/16/files/019cb777-c5b6-734e-9552-0c4443fab21c\"\n      }\n    ]\n  }\n}",
                            "name": "Bundle detail"
                        },
                        {
                            "header": [],
                            "code": 401,
                            "body": "{\n  \"message\": \"Unauthenticated.\"\n}",
                            "name": "Unauthenticated"
                        },
                        {
                            "header": [
                                {
                                    "key": "X-Quota-Limit",
                                    "value": "1500"
                                },
                                {
                                    "key": "X-Quota-Remaining",
                                    "value": "1499"
                                },
                                {
                                    "key": "X-Quota-Reset",
                                    "value": "2592000"
                                }
                            ],
                            "code": 404,
                            "body": "{\n  \"error\": \"proof_access_not_found\",\n  \"message\": \"Proof access not found\"\n}",
                            "name": "Proof access not found"
                        },
                        {
                            "header": [
                                {
                                    "key": "X-Quota-Limit",
                                    "value": "1500"
                                },
                                {
                                    "key": "X-Quota-Remaining",
                                    "value": "1499"
                                },
                                {
                                    "key": "X-Quota-Reset",
                                    "value": "2592000"
                                }
                            ],
                            "code": 409,
                            "body": "{\n  \"error\": \"proof_bundle_not_ready\",\n  \"message\": \"Proof bundle is not ready yet.\"\n}",
                            "name": "Proof bundle not ready"
                        },
                        {
                            "header": [
                                {
                                    "key": "X-Quota-Limit",
                                    "value": "1500"
                                },
                                {
                                    "key": "X-Quota-Remaining",
                                    "value": "1499"
                                },
                                {
                                    "key": "X-Quota-Reset",
                                    "value": "2592000"
                                }
                            ],
                            "code": 429,
                            "body": "{\n  \"error\": \"rate_limit_exceeded\",\n  \"message\": \"Rate limit exceeded\",\n  \"details\": {\n    \"scope\": \"rpm\",\n    \"limit\": 10\n  }\n}",
                            "name": "RPM throttle"
                        },
                        {
                            "header": [
                                {
                                    "key": "X-Quota-Limit",
                                    "value": "1500"
                                },
                                {
                                    "key": "X-Quota-Remaining",
                                    "value": "1499"
                                },
                                {
                                    "key": "X-Quota-Reset",
                                    "value": "2592000"
                                }
                            ],
                            "code": 500,
                            "body": "{\n  \"error\": \"system_error\",\n  \"message\": \"Unexpected system error.\",\n  \"details\": {\n    \"scope\": \"proofs_show\"\n  }\n}",
                            "name": "System error"
                        }
                    ]
                },
                {
                    "name": "Download one file from an opened proof bundle.",
                    "request": {
                        "url": {
                            "host": "{{baseUrl}}",
                            "path": "api/v1/proofs/:proof/files/:document",
                            "query": [],
                            "raw": "{{baseUrl}}/api/v1/proofs/:proof/files/:document",
                            "variable": [
                                {
                                    "id": "proof",
                                    "key": "proof",
                                    "value": "16",
                                    "description": "Proof access id."
                                },
                                {
                                    "id": "document",
                                    "key": "document",
                                    "value": "019cb777-c5b6-734e-9552-0c4443fab21c",
                                    "description": "Document id from the bundle manifest."
                                }
                            ]
                        },
                        "method": "GET",
                        "header": [
                            {
                                "key": "Content-Type",
                                "value": "application/json"
                            },
                            {
                                "key": "Accept",
                                "value": "application/json"
                            }
                        ],
                        "body": null,
                        "description": ""
                    },
                    "response": [
                        {
                            "header": [
                                {
                                    "key": "X-Quota-Limit",
                                    "value": "1500"
                                },
                                {
                                    "key": "X-Quota-Remaining",
                                    "value": "1499"
                                },
                                {
                                    "key": "X-Quota-Reset",
                                    "value": "2592000"
                                }
                            ],
                            "code": 200,
                            "body": "<<binary>> PDF file stream\n",
                            "name": "PDF file stream"
                        },
                        {
                            "header": [],
                            "code": 401,
                            "body": "{\n  \"message\": \"Unauthenticated.\"\n}",
                            "name": "Unauthenticated"
                        },
                        {
                            "header": [
                                {
                                    "key": "X-Quota-Limit",
                                    "value": "1500"
                                },
                                {
                                    "key": "X-Quota-Remaining",
                                    "value": "1499"
                                },
                                {
                                    "key": "X-Quota-Reset",
                                    "value": "2592000"
                                }
                            ],
                            "code": 404,
                            "body": "{\n  \"error\": \"proof_access_not_found\",\n  \"message\": \"Proof file not found for this access\"\n}",
                            "name": "Proof access not found"
                        },
                        {
                            "header": [
                                {
                                    "key": "X-Quota-Limit",
                                    "value": "1500"
                                },
                                {
                                    "key": "X-Quota-Remaining",
                                    "value": "1499"
                                },
                                {
                                    "key": "X-Quota-Reset",
                                    "value": "2592000"
                                }
                            ],
                            "code": 409,
                            "body": "{\n  \"error\": \"proof_bundle_not_ready\",\n  \"message\": \"Proof bundle is not ready yet.\"\n}",
                            "name": "Proof bundle not ready"
                        },
                        {
                            "header": [
                                {
                                    "key": "X-Quota-Limit",
                                    "value": "1500"
                                },
                                {
                                    "key": "X-Quota-Remaining",
                                    "value": "1499"
                                },
                                {
                                    "key": "X-Quota-Reset",
                                    "value": "2592000"
                                }
                            ],
                            "code": 429,
                            "body": "{\n  \"error\": \"rate_limit_exceeded\",\n  \"message\": \"Too many concurrent data requests.\",\n  \"details\": {\n    \"scope\": \"parallel_streams\",\n    \"limit\": 1\n  }\n}",
                            "name": "Concurrent operation limit"
                        },
                        {
                            "header": [
                                {
                                    "key": "X-Quota-Limit",
                                    "value": "1500"
                                },
                                {
                                    "key": "X-Quota-Remaining",
                                    "value": "1499"
                                },
                                {
                                    "key": "X-Quota-Reset",
                                    "value": "2592000"
                                }
                            ],
                            "code": 429,
                            "body": "{\n  \"error\": \"rate_limit_exceeded\",\n  \"message\": \"Rate limit exceeded\",\n  \"details\": {\n    \"scope\": \"rpm\",\n    \"limit\": 10\n  }\n}",
                            "name": "RPM throttle"
                        },
                        {
                            "header": [
                                {
                                    "key": "X-Quota-Limit",
                                    "value": "1500"
                                },
                                {
                                    "key": "X-Quota-Remaining",
                                    "value": "1499"
                                },
                                {
                                    "key": "X-Quota-Reset",
                                    "value": "2592000"
                                }
                            ],
                            "code": 500,
                            "body": "{\n  \"error\": \"system_error\",\n  \"message\": \"Unexpected system error.\",\n  \"details\": {\n    \"scope\": \"proofs_download\"\n  }\n}",
                            "name": "System error"
                        },
                        {
                            "header": [
                                {
                                    "key": "X-Quota-Limit",
                                    "value": "1500"
                                },
                                {
                                    "key": "X-Quota-Remaining",
                                    "value": "1499"
                                },
                                {
                                    "key": "X-Quota-Reset",
                                    "value": "2592000"
                                }
                            ],
                            "code": 503,
                            "body": "{\n  \"error\": \"file_not_available\",\n  \"message\": \"Proof file is not available for the selected access.\"\n}",
                            "name": "File not available"
                        }
                    ]
                }
            ]
        },
        {
            "name": "Public Verification",
            "description": "",
            "item": [
                {
                    "name": "Verify a FXProof PDF by document id and payload hash.",
                    "request": {
                        "url": {
                            "host": "{{baseUrl}}",
                            "path": "api/v1/check-pdf",
                            "query": [
                                {
                                    "key": "id",
                                    "value": "doc-id",
                                    "description": "Public document identifier printed in the proof document.",
                                    "disabled": false
                                },
                                {
                                    "key": "hash",
                                    "value": "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa",
                                    "description": "Payload SHA-256 hash printed in the proof document.",
                                    "disabled": false
                                }
                            ],
                            "raw": "{{baseUrl}}/api/v1/check-pdf?id=doc-id&hash=aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa"
                        },
                        "method": "GET",
                        "header": [
                            {
                                "key": "Content-Type",
                                "value": "application/json"
                            },
                            {
                                "key": "Accept",
                                "value": "application/json"
                            }
                        ],
                        "body": null,
                        "description": "",
                        "auth": {
                            "type": "noauth"
                        }
                    },
                    "response": [
                        {
                            "header": [],
                            "code": 200,
                            "body": "{\n  \"data\": {\n    \"verification_status\": \"verified\",\n    \"country\": \"USA\",\n    \"source_name\": \"Federal Reserve System\",\n    \"product\": \"H10_DAILY\",\n    \"reference_period\": \"2026-03-30\",\n    \"rate_frequency\": \"Daily\",\n    \"source_url\": \"https://example.com/source.pdf\",\n    \"fxproof_document_id\": \"doc-id\",\n    \"payload_hash\": \"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa\",\n    \"signature_status\": \"unsigned\"\n  }\n}",
                            "name": "Verified"
                        },
                        {
                            "header": [],
                            "code": 404,
                            "body": "{\n  \"error\": \"not_found\",\n  \"message\": \"Document not found\"\n}",
                            "name": "Document not found"
                        },
                        {
                            "header": [],
                            "code": 422,
                            "body": "{\n  \"error\": \"validation_error\",\n  \"message\": \"Invalid request parameters\",\n  \"details\": {\n    \"id\": [\n      \"The id field is required.\"\n    ],\n    \"hash\": [\n      \"The hash field is required.\"\n    ]\n  }\n}",
                            "name": "Validation error"
                        },
                        {
                            "header": [],
                            "code": 422,
                            "body": "{\n  \"error\": \"hash_mismatch\",\n  \"message\": \"Payload hash does not match\"\n}",
                            "name": "Hash mismatch"
                        },
                        {
                            "header": [],
                            "code": 429,
                            "body": "{\n  \"error\": \"rate_limit_exceeded\",\n  \"message\": \"Too many verification requests. Please try again later.\",\n  \"details\": {\n    \"scope\": \"public_verification\",\n    \"limit\": 5\n  }\n}",
                            "name": "Verification throttle"
                        },
                        {
                            "header": [],
                            "code": 500,
                            "body": "{\n  \"error\": \"system_error\",\n  \"message\": \"Unexpected system error.\",\n  \"details\": {\n    \"scope\": \"pdf_check_show\"\n  }\n}",
                            "name": "System error"
                        }
                    ]
                }
            ]
        },
        {
            "name": "Rates",
            "description": "",
            "item": [
                {
                    "name": "Get the full list of public datasets.",
                    "request": {
                        "url": {
                            "host": "{{baseUrl}}",
                            "path": "api/v1/rates/catalog",
                            "query": [],
                            "raw": "{{baseUrl}}/api/v1/rates/catalog"
                        },
                        "method": "GET",
                        "header": [
                            {
                                "key": "Content-Type",
                                "value": "application/json"
                            },
                            {
                                "key": "Accept",
                                "value": "application/json"
                            }
                        ],
                        "body": null,
                        "description": ""
                    },
                    "response": [
                        {
                            "header": [],
                            "code": 200,
                            "body": "{\n  \"data\": {\n    \"datasets\": [\n      {\n        \"id\": \"ecb|eurofxref_daily|daily\",\n        \"source\": \"ecb\",\n        \"source_name\": \"European Central Bank\",\n        \"product\": \"eurofxref_daily\",\n        \"product_name\": \"Euro FX Reference Rates\",\n        \"periodicity\": \"daily\",\n        \"periodicity_name\": \"Daily\",\n        \"first_available_date\": \"2026-03-01\",\n        \"latest_available_date\": \"2026-03-30\",\n        \"bases\": [\"EUR\"],\n        \"symbols\": [\"GBP\", \"USD\"],\n        \"proof_available\": true\n      }\n    ]\n  }\n}",
                            "name": "Catalog payload"
                        }
                    ]
                },
                {
                    "name": "Get exchange rates for one dataset.",
                    "request": {
                        "url": {
                            "host": "{{baseUrl}}",
                            "path": "api/v1/rates",
                            "query": [
                                {
                                    "key": "dataset",
                                    "value": "ecb%7Ceurofxref_daily%7Cdaily",
                                    "description": "Dataset id from `/api/v1/rates/catalog`. Maximum: 120 characters.",
                                    "disabled": false
                                },
                                {
                                    "key": "date",
                                    "value": "2026-03-30",
                                    "description": "Optional rate date in `Y-m-d` format. Default: latest date allowed by the effective archive window. If `base` is sent, the latest allowed date is resolved inside that base.",
                                    "disabled": false
                                },
                                {
                                    "key": "base",
                                    "value": "EUR",
                                    "description": "Optional 3-letter base currency code. Default: auto-select when one base exists for the selected date; return `409 ambiguous_data` when more than one base exists.",
                                    "disabled": false
                                },
                                {
                                    "key": "symbols",
                                    "value": "USD%2CGBP%2CKZT",
                                    "description": "Optional comma-separated quote currency filter. Maximum: 1024 characters and 128 values. Default: all available quote currencies for the selected dataset, date, and base. The full set must be valid for the selected dataset and base.",
                                    "disabled": false
                                }
                            ],
                            "raw": "{{baseUrl}}/api/v1/rates?dataset=ecb%7Ceurofxref_daily%7Cdaily&date=2026-03-30&base=EUR&symbols=USD%2CGBP%2CKZT"
                        },
                        "method": "GET",
                        "header": [
                            {
                                "key": "Content-Type",
                                "value": "application/json"
                            },
                            {
                                "key": "Accept",
                                "value": "application/json"
                            }
                        ],
                        "body": null,
                        "description": ""
                    },
                    "response": [
                        {
                            "header": [
                                {
                                    "key": "X-Quota-Limit",
                                    "value": "1500"
                                },
                                {
                                    "key": "X-Quota-Remaining",
                                    "value": "1499"
                                },
                                {
                                    "key": "X-Quota-Reset",
                                    "value": "2592000"
                                }
                            ],
                            "code": 200,
                            "body": "{\n  \"dataset\": \"ecb|eurofxref_daily|daily\",\n  \"source\": \"ecb\",\n  \"product\": \"eurofxref_daily\",\n  \"periodicity\": \"daily\",\n  \"date\": \"2026-03-30\",\n  \"base\": \"EUR\",\n  \"rates\": {\n    \"GBP\": 0.8561,\n    \"USD\": 1.0825\n  },\n  \"meta\": {\n    \"cached\": false,\n    \"signature\": \"sha256:example-signature\"\n  }\n}",
                            "name": "Rates payload"
                        },
                        {
                            "header": [],
                            "code": 401,
                            "body": "{\n  \"message\": \"Unauthenticated.\"\n}",
                            "name": "Unauthenticated"
                        },
                        {
                            "header": [
                                {
                                    "key": "X-Quota-Limit",
                                    "value": "1500"
                                },
                                {
                                    "key": "X-Quota-Remaining",
                                    "value": "1499"
                                },
                                {
                                    "key": "X-Quota-Reset",
                                    "value": "2592000"
                                }
                            ],
                            "code": 403,
                            "body": "{\n  \"error\": \"source_unavailable\",\n  \"message\": \"Source is unavailable\"\n}",
                            "name": "Source unavailable"
                        },
                        {
                            "header": [
                                {
                                    "key": "X-Quota-Limit",
                                    "value": "1500"
                                },
                                {
                                    "key": "X-Quota-Remaining",
                                    "value": "1499"
                                },
                                {
                                    "key": "X-Quota-Reset",
                                    "value": "2592000"
                                }
                            ],
                            "code": 403,
                            "body": "{\n  \"error\": \"archive_window_exceeded\",\n  \"message\": \"The requested date is outside your plan's archive window.\",\n  \"details\": {\n    \"requested_date\": \"2025-12-30\",\n    \"earliest_allowed_date\": \"2025-12-31\",\n    \"history_years\": 1,\n    \"history_days\": 366\n  }\n}",
                            "name": "Archive window exceeded"
                        },
                        {
                            "header": [
                                {
                                    "key": "X-Quota-Limit",
                                    "value": "1500"
                                },
                                {
                                    "key": "X-Quota-Remaining",
                                    "value": "1499"
                                },
                                {
                                    "key": "X-Quota-Reset",
                                    "value": "2592000"
                                }
                            ],
                            "code": 404,
                            "body": "{\n  \"error\": \"no_data\",\n  \"message\": \"No rates found for the specified criteria\",\n  \"available_dates\": {\n    \"previous\": \"2026-03-29\",\n    \"next\": \"2026-03-31\",\n    \"latest\": \"2026-03-31\"\n  }\n}",
                            "name": "No data"
                        },
                        {
                            "header": [
                                {
                                    "key": "X-Quota-Limit",
                                    "value": "1500"
                                },
                                {
                                    "key": "X-Quota-Remaining",
                                    "value": "1499"
                                },
                                {
                                    "key": "X-Quota-Reset",
                                    "value": "2592000"
                                }
                            ],
                            "code": 409,
                            "body": "{\n  \"error\": \"ambiguous_data\",\n  \"message\": \"Base currency is required for this dataset on the requested date\",\n  \"details\": {\n    \"available_bases\": [\"EUR\", \"USD\"]\n  }\n}",
                            "name": "Ambiguous base"
                        },
                        {
                            "header": [
                                {
                                    "key": "X-Quota-Limit",
                                    "value": "1500"
                                },
                                {
                                    "key": "X-Quota-Remaining",
                                    "value": "1499"
                                },
                                {
                                    "key": "X-Quota-Reset",
                                    "value": "2592000"
                                }
                            ],
                            "code": 422,
                            "body": "{\n  \"error\": \"validation_error\",\n  \"message\": \"Invalid request parameters\",\n  \"details\": {\n    \"dataset\": [\n      \"The dataset field is required.\"\n    ],\n    \"date\": [\n      \"The date field must match the format Y-m-d.\"\n    ]\n  }\n}",
                            "name": "Validation error"
                        },
                        {
                            "header": [
                                {
                                    "key": "X-Quota-Limit",
                                    "value": "1500"
                                },
                                {
                                    "key": "X-Quota-Remaining",
                                    "value": "1499"
                                },
                                {
                                    "key": "X-Quota-Reset",
                                    "value": "2592000"
                                }
                            ],
                            "code": 422,
                            "body": "{\n  \"error\": \"invalid_filter\",\n  \"message\": \"One or more filters are invalid\",\n  \"details\": {\n    \"field\": \"base\",\n    \"value\": \"ZZZ\"\n  }\n}",
                            "name": "Invalid filter"
                        },
                        {
                            "header": [
                                {
                                    "key": "X-Quota-Limit",
                                    "value": "1500"
                                },
                                {
                                    "key": "X-Quota-Remaining",
                                    "value": "1499"
                                },
                                {
                                    "key": "X-Quota-Reset",
                                    "value": "2592000"
                                }
                            ],
                            "code": 429,
                            "body": "{\n  \"error\": \"rate_limit_exceeded\",\n  \"message\": \"Rate API lookup quota exceeded\",\n  \"details\": {\n    \"scope\": \"user\",\n    \"limit\": 1500\n  }\n}",
                            "name": "Monthly Rate API lookup quota exceeded"
                        },
                        {
                            "header": [
                                {
                                    "key": "X-Quota-Limit",
                                    "value": "1500"
                                },
                                {
                                    "key": "X-Quota-Remaining",
                                    "value": "1499"
                                },
                                {
                                    "key": "X-Quota-Reset",
                                    "value": "2592000"
                                }
                            ],
                            "code": 429,
                            "body": "{\n  \"error\": \"rate_limit_exceeded\",\n  \"message\": \"Too many concurrent data requests.\",\n  \"details\": {\n    \"scope\": \"parallel_streams\",\n    \"limit\": 1\n  }\n}",
                            "name": "Concurrent operation limit"
                        },
                        {
                            "header": [
                                {
                                    "key": "X-Quota-Limit",
                                    "value": "1500"
                                },
                                {
                                    "key": "X-Quota-Remaining",
                                    "value": "1499"
                                },
                                {
                                    "key": "X-Quota-Reset",
                                    "value": "2592000"
                                }
                            ],
                            "code": 429,
                            "body": "{\n  \"error\": \"rate_limit_exceeded\",\n  \"message\": \"Rate limit exceeded\",\n  \"details\": {\n    \"scope\": \"rpm\",\n    \"limit\": 10\n  }\n}",
                            "name": "RPM throttle"
                        },
                        {
                            "header": [
                                {
                                    "key": "X-Quota-Limit",
                                    "value": "1500"
                                },
                                {
                                    "key": "X-Quota-Remaining",
                                    "value": "1499"
                                },
                                {
                                    "key": "X-Quota-Reset",
                                    "value": "2592000"
                                }
                            ],
                            "code": 500,
                            "body": "{\n  \"error\": \"system_error\",\n  \"message\": \"Unexpected system error.\",\n  \"details\": {\n    \"scope\": \"rates_index\"\n  }\n}",
                            "name": "System error"
                        }
                    ]
                }
            ]
        },
        {
            "name": "System",
            "description": "",
            "item": [
                {
                    "name": "Return a small public health payload.",
                    "request": {
                        "url": {
                            "host": "{{baseUrl}}",
                            "path": "api/health",
                            "query": [],
                            "raw": "{{baseUrl}}/api/health"
                        },
                        "method": "GET",
                        "header": [
                            {
                                "key": "Content-Type",
                                "value": "application/json"
                            },
                            {
                                "key": "Accept",
                                "value": "application/json"
                            }
                        ],
                        "body": null,
                        "description": "",
                        "auth": {
                            "type": "noauth"
                        }
                    },
                    "response": [
                        {
                            "header": [
                                {
                                    "key": "cache-control",
                                    "value": "no-cache, private"
                                },
                                {
                                    "key": "content-type",
                                    "value": "application/json"
                                },
                                {
                                    "key": "x-ratelimit-limit",
                                    "value": "60"
                                },
                                {
                                    "key": "x-ratelimit-remaining",
                                    "value": "59"
                                },
                                {
                                    "key": "x-request-id",
                                    "value": "01KXRVBV9R7XFFDR6W96DKPWSM"
                                },
                                {
                                    "key": "access-control-allow-origin",
                                    "value": "*"
                                }
                            ],
                            "code": 200,
                            "body": "{\"status\":\"healthy\",\"version\":\"1.0.0\",\"timestamp\":\"2026-07-17T20:12:56.004444Z\"}",
                            "name": ""
                        },
                        {
                            "header": [],
                            "code": 429,
                            "body": "{\n  \"error\": \"rate_limit_exceeded\",\n  \"message\": \"Too many health check requests. Please try again later.\",\n  \"details\": {\n    \"scope\": \"health\",\n    \"limit\": 60\n  }\n}",
                            "name": "Health check throttle"
                        }
                    ]
                }
            ]
        }
    ],
    "auth": {
        "type": "bearer",
        "bearer": [
            {
                "key": "key",
                "type": "string"
            }
        ]
    }
}
