{
  "info": {
    "name": "Sadakio APIs",
    "description": "Business API (read your own cafe) and Platform API (build your product on Sadakio). Docs: https://sadakio.com/docs/ Contracts: https://api.sadakio.com/api/v1/openapi.yaml and https://api.sadakio.com/platform/v1/openapi.yaml",
    "schema": "https://schema.getpostman.com/json/collection/v2.1.0/collection.json"
  },
  "item": [
    {
      "name": "Business API (api/v1, sk_ key)",
      "item": [
        {
          "name": "List guests",
          "request": {
            "method": "GET",
            "header": [
              {
                "key": "Authorization",
                "value": "Bearer {{business_api_key}}"
              }
            ],
            "url": {
              "raw": "{{base_api}}/guests?limit=50",
              "host": [
                "{{base_api}}"
              ],
              "path": [
                "guests"
              ],
              "query": [
                {
                  "key": "limit",
                  "value": "50"
                }
              ]
            },
            "description": "Cursor-paginated guest list. Add updated_since for incremental sync."
          }
        },
        {
          "name": "One guest with cards",
          "request": {
            "method": "GET",
            "header": [
              {
                "key": "Authorization",
                "value": "Bearer {{business_api_key}}"
              }
            ],
            "url": {
              "raw": "{{base_api}}/guests/{{guest_id}}",
              "host": [
                "{{base_api}}"
              ],
              "path": [
                "guests",
                "{{guest_id}}"
              ]
            },
            "description": "A single guest with their loyalty cards."
          }
        },
        {
          "name": "Visit feed",
          "request": {
            "method": "GET",
            "header": [
              {
                "key": "Authorization",
                "value": "Bearer {{business_api_key}}"
              }
            ],
            "url": {
              "raw": "{{base_api}}/visits?limit=50",
              "host": [
                "{{base_api}}"
              ],
              "path": [
                "visits"
              ],
              "query": [
                {
                  "key": "limit",
                  "value": "50"
                }
              ]
            },
            "description": "Earns, redeems and reversals on one timeline."
          }
        },
        {
          "name": "Retention summary",
          "request": {
            "method": "GET",
            "header": [
              {
                "key": "Authorization",
                "value": "Bearer {{business_api_key}}"
              }
            ],
            "url": {
              "raw": "{{base_api}}/stats/retention?period=month",
              "host": [
                "{{base_api}}"
              ],
              "path": [
                "stats",
                "retention"
              ],
              "query": [
                {
                  "key": "period",
                  "value": "month"
                }
              ]
            },
            "description": "Returning-guest summary over a rolling window."
          }
        }
      ]
    },
    {
      "name": "Platform API (platform/v1, pk_ key)",
      "item": [
        {
          "name": "List businesses",
          "request": {
            "method": "GET",
            "header": [
              {
                "key": "Authorization",
                "value": "Bearer {{platform_api_key}}"
              }
            ],
            "url": {
              "raw": "{{base_platform}}/businesses",
              "host": [
                "{{base_platform}}"
              ],
              "path": [
                "businesses"
              ]
            },
            "description": "Everything this partner has provisioned."
          }
        },
        {
          "name": "Provision a business",
          "request": {
            "method": "POST",
            "header": [
              {
                "key": "Authorization",
                "value": "Bearer {{platform_api_key}}"
              },
              {
                "key": "Content-Type",
                "value": "application/json"
              }
            ],
            "url": {
              "raw": "{{base_platform}}/businesses",
              "host": [
                "{{base_platform}}"
              ],
              "path": [
                "businesses"
              ]
            },
            "description": "Creates a real, isolated tenant.",
            "body": {
              "mode": "raw",
              "raw": "{\n  \"name\": \"Kahve Dünyası\",\n  \"sector\": \"kafe\",\n  \"program\": \"damga\"\n}"
            }
          }
        },
        {
          "name": "One business",
          "request": {
            "method": "GET",
            "header": [
              {
                "key": "Authorization",
                "value": "Bearer {{platform_api_key}}"
              }
            ],
            "url": {
              "raw": "{{base_platform}}/businesses/{{business_id}}",
              "host": [
                "{{base_platform}}"
              ],
              "path": [
                "businesses",
                "{{business_id}}"
              ]
            },
            "description": "Business detail with its public join_url."
          }
        },
        {
          "name": "Join QR as PNG",
          "request": {
            "method": "GET",
            "header": [
              {
                "key": "Authorization",
                "value": "Bearer {{platform_api_key}}"
              }
            ],
            "url": {
              "raw": "{{base_platform}}/businesses/{{business_id}}/qr.png",
              "host": [
                "{{base_platform}}"
              ],
              "path": [
                "businesses",
                "{{business_id}}",
                "qr.png"
              ]
            },
            "description": "The branded guest sign-up QR, print-ready."
          }
        },
        {
          "name": "List guests of a business",
          "request": {
            "method": "GET",
            "header": [
              {
                "key": "Authorization",
                "value": "Bearer {{platform_api_key}}"
              }
            ],
            "url": {
              "raw": "{{base_platform}}/businesses/{{business_id}}/guests?limit=50",
              "host": [
                "{{base_platform}}"
              ],
              "path": [
                "businesses",
                "{{business_id}}",
                "guests"
              ],
              "query": [
                {
                  "key": "limit",
                  "value": "50"
                }
              ]
            },
            "description": "Paginated, phones masked (KVKK)."
          }
        },
        {
          "name": "Register a guest",
          "request": {
            "method": "POST",
            "header": [
              {
                "key": "Authorization",
                "value": "Bearer {{platform_api_key}}"
              },
              {
                "key": "Content-Type",
                "value": "application/json"
              }
            ],
            "url": {
              "raw": "{{base_platform}}/businesses/{{business_id}}/guests",
              "host": [
                "{{base_platform}}"
              ],
              "path": [
                "businesses",
                "{{business_id}}",
                "guests"
              ]
            },
            "description": "201 new, 200 with created false when the phone already exists.",
            "body": {
              "mode": "raw",
              "raw": "{\n  \"phone\": \"+905551112233\",\n  \"name\": \"Elif\"\n}"
            }
          }
        },
        {
          "name": "Adjust a counter",
          "request": {
            "method": "POST",
            "header": [
              {
                "key": "Authorization",
                "value": "Bearer {{platform_api_key}}"
              },
              {
                "key": "Content-Type",
                "value": "application/json"
              },
              {
                "key": "Idempotency-Key",
                "value": "{{$guid}}"
              }
            ],
            "url": {
              "raw": "{{base_platform}}/businesses/{{business_id}}/guests/{{guest_id}}/adjust",
              "host": [
                "{{base_platform}}"
              ],
              "path": [
                "businesses",
                "{{business_id}}",
                "guests",
                "{{guest_id}}",
                "adjust"
              ]
            },
            "description": "Idempotent: a replay answers the original result.",
            "body": {
              "mode": "raw",
              "raw": "{\n  \"counter\": \"damga\",\n  \"delta\": 1\n}"
            }
          }
        },
        {
          "name": "Record a visit event",
          "request": {
            "method": "POST",
            "header": [
              {
                "key": "Authorization",
                "value": "Bearer {{platform_api_key}}"
              },
              {
                "key": "Content-Type",
                "value": "application/json"
              },
              {
                "key": "Idempotency-Key",
                "value": "{{$guid}}"
              }
            ],
            "url": {
              "raw": "{{base_platform}}/businesses/{{business_id}}/guests/{{guest_id}}/events",
              "host": [
                "{{base_platform}}"
              ],
              "path": [
                "businesses",
                "{{business_id}}",
                "guests",
                "{{guest_id}}",
                "events"
              ]
            },
            "description": "Managed mode: the engine decides what a visit earns.",
            "body": {
              "mode": "raw",
              "raw": "{\n  \"amount\": 185.5,\n  \"stamps\": 1\n}"
            }
          }
        },
        {
          "name": "Guest counters",
          "request": {
            "method": "GET",
            "header": [
              {
                "key": "Authorization",
                "value": "Bearer {{platform_api_key}}"
              }
            ],
            "url": {
              "raw": "{{base_platform}}/businesses/{{business_id}}/guests/{{guest_id}}/counters",
              "host": [
                "{{base_platform}}"
              ],
              "path": [
                "businesses",
                "{{business_id}}",
                "guests",
                "{{guest_id}}",
                "counters"
              ]
            },
            "description": "Every counter of the guest in one flat object."
          }
        },
        {
          "name": "KVKK erasure",
          "request": {
            "method": "DELETE",
            "header": [
              {
                "key": "Authorization",
                "value": "Bearer {{platform_api_key}}"
              }
            ],
            "url": {
              "raw": "{{base_platform}}/businesses/{{business_id}}/guests/{{guest_id}}",
              "host": [
                "{{base_platform}}"
              ],
              "path": [
                "businesses",
                "{{business_id}}",
                "guests",
                "{{guest_id}}"
              ]
            },
            "description": "Anonymizes the guest and zeroes the counters."
          }
        }
      ]
    }
  ],
  "variable": [
    {
      "key": "base_api",
      "value": "https://api.sadakio.com/api/v1"
    },
    {
      "key": "base_platform",
      "value": "https://api.sadakio.com/platform/v1"
    },
    {
      "key": "business_api_key",
      "value": "sk_YOUR_KEY"
    },
    {
      "key": "platform_api_key",
      "value": "pk_YOUR_KEY"
    },
    {
      "key": "business_id",
      "value": "1"
    },
    {
      "key": "guest_id",
      "value": "1"
    }
  ]
}
