{
  "components": {
    "securitySchemes": {
      "BearerAuth": {
        "description": "API key (lk_live_..., lk_test_..., or lk_pub_...)",
        "scheme": "bearer",
        "type": "http"
      }
    }
  },
  "info": {
    "description": "API monitoringu przesyłek, wyjątków oraz integracji sklepów i ERP.",
    "title": "LOCURA Tracker API",
    "version": "1.0.0"
  },
  "openapi": "3.1.0",
  "paths": {
    "/api/v1/exceptions/{id}/acknowledge": {
      "post": {
        "parameters": [
          {
            "in": "path",
            "name": "id",
            "required": true,
            "schema": {
              "type": "integer"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Success"
          },
          "401": {
            "description": "Unauthorized - missing or invalid API key"
          },
          "403": {
            "description": "Forbidden - missing required scope"
          },
          "429": {
            "description": "Rate limit exceeded"
          },
          "500": {
            "description": "Internal server error"
          }
        },
        "security": [
          {
            "BearerAuth": []
          }
        ],
        "summary": "Potwierdzenie obsługi wyjątku",
        "tags": [
          "Exceptions"
        ]
      }
    },
    "/api/v1/health": {
      "get": {
        "responses": {
          "200": {
            "description": "Success"
          },
          "401": {
            "description": "Unauthorized - missing or invalid API key"
          },
          "403": {
            "description": "Forbidden - missing required scope"
          },
          "429": {
            "description": "Rate limit exceeded"
          },
          "500": {
            "description": "Internal server error"
          }
        },
        "security": [
          {
            "BearerAuth": []
          }
        ],
        "summary": "Stan aplikacji, SQLite i pollera",
        "tags": [
          "System"
        ]
      }
    },
    "/api/v1/imports": {
      "post": {
        "responses": {
          "200": {
            "description": "Success"
          },
          "401": {
            "description": "Unauthorized - missing or invalid API key"
          },
          "403": {
            "description": "Forbidden - missing required scope"
          },
          "429": {
            "description": "Rate limit exceeded"
          },
          "500": {
            "description": "Internal server error"
          }
        },
        "security": [
          {
            "BearerAuth": []
          }
        ],
        "summary": "Import CSV lub XLSX",
        "tags": [
          "Imports"
        ]
      }
    },
    "/api/v1/ingest/orders": {
      "post": {
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "properties": {
                  "callback_url": {
                    "format": "uri",
                    "type": "string"
                  },
                  "carrier": {
                    "enum": [
                      "ups",
                      "dhl"
                    ],
                    "type": "string"
                  },
                  "source_order_id": {
                    "type": "string"
                  },
                  "source_system": {
                    "type": "string"
                  },
                  "tracking_number": {
                    "type": "string"
                  }
                },
                "required": [
                  "source_system",
                  "source_order_id",
                  "tracking_number",
                  "carrier"
                ],
                "type": "object"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "Success"
          },
          "401": {
            "description": "Unauthorized - missing or invalid API key"
          },
          "403": {
            "description": "Forbidden - missing required scope"
          },
          "429": {
            "description": "Rate limit exceeded"
          },
          "500": {
            "description": "Internal server error"
          }
        },
        "security": [
          {
            "BearerAuth": []
          }
        ],
        "summary": "Automatyczny ingest zamówienia ze sklepu lub ERP",
        "tags": [
          "Integrations"
        ]
      }
    },
    "/api/v1/poll-runs": {
      "get": {
        "responses": {
          "200": {
            "description": "Success"
          },
          "401": {
            "description": "Unauthorized - missing or invalid API key"
          },
          "403": {
            "description": "Forbidden - missing required scope"
          },
          "429": {
            "description": "Rate limit exceeded"
          },
          "500": {
            "description": "Internal server error"
          }
        },
        "security": [
          {
            "BearerAuth": []
          }
        ],
        "summary": "Historia przebiegów pollera",
        "tags": [
          "Operations"
        ]
      }
    },
    "/api/v1/shipments": {
      "get": {
        "parameters": [
          {
            "in": "query",
            "name": "view",
            "schema": {
              "enum": [
                "all",
                "active",
                "delivered",
                "exceptions",
                "changed"
              ],
              "type": "string"
            }
          },
          {
            "in": "query",
            "name": "carrier",
            "schema": {
              "enum": [
                "ups",
                "dhl"
              ],
              "type": "string"
            }
          },
          {
            "in": "query",
            "name": "status",
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "query",
            "name": "q",
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "query",
            "name": "page",
            "schema": {
              "default": 1,
              "type": "integer"
            }
          },
          {
            "in": "query",
            "name": "per_page",
            "schema": {
              "default": 25,
              "type": "integer"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Success"
          },
          "401": {
            "description": "Unauthorized - missing or invalid API key"
          },
          "403": {
            "description": "Forbidden - missing required scope"
          },
          "429": {
            "description": "Rate limit exceeded"
          },
          "500": {
            "description": "Internal server error"
          }
        },
        "security": [
          {
            "BearerAuth": []
          }
        ],
        "summary": "Lista przesyłek",
        "tags": [
          "Shipments"
        ]
      },
      "post": {
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "properties": {
                  "carrier": {
                    "enum": [
                      "ups",
                      "dhl"
                    ],
                    "type": "string"
                  },
                  "label": {
                    "type": "string"
                  },
                  "poll_priority": {
                    "maximum": 5,
                    "minimum": 0,
                    "type": "integer"
                  },
                  "reference": {
                    "type": "string"
                  },
                  "tracking_number": {
                    "type": "string"
                  }
                },
                "required": [
                  "tracking_number"
                ],
                "type": "object"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "Success"
          },
          "401": {
            "description": "Unauthorized - missing or invalid API key"
          },
          "403": {
            "description": "Forbidden - missing required scope"
          },
          "429": {
            "description": "Rate limit exceeded"
          },
          "500": {
            "description": "Internal server error"
          }
        },
        "security": [
          {
            "BearerAuth": []
          }
        ],
        "summary": "Dodanie przesyłki",
        "tags": [
          "Shipments"
        ]
      }
    },
    "/api/v1/shipments/{id}": {
      "get": {
        "parameters": [
          {
            "in": "path",
            "name": "id",
            "required": true,
            "schema": {
              "type": "integer"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Success"
          },
          "401": {
            "description": "Unauthorized - missing or invalid API key"
          },
          "403": {
            "description": "Forbidden - missing required scope"
          },
          "429": {
            "description": "Rate limit exceeded"
          },
          "500": {
            "description": "Internal server error"
          }
        },
        "security": [
          {
            "BearerAuth": []
          }
        ],
        "summary": "Szczegóły i oś czasu",
        "tags": [
          "Shipments"
        ]
      },
      "patch": {
        "parameters": [
          {
            "in": "path",
            "name": "id",
            "required": true,
            "schema": {
              "type": "integer"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Success"
          },
          "401": {
            "description": "Unauthorized - missing or invalid API key"
          },
          "403": {
            "description": "Forbidden - missing required scope"
          },
          "429": {
            "description": "Rate limit exceeded"
          },
          "500": {
            "description": "Internal server error"
          }
        },
        "security": [
          {
            "BearerAuth": []
          }
        ],
        "summary": "Priorytet i odczyt zmiany",
        "tags": [
          "Shipments"
        ]
      }
    },
    "/api/v1/shipments/{id}/refresh": {
      "post": {
        "parameters": [
          {
            "in": "path",
            "name": "id",
            "required": true,
            "schema": {
              "type": "integer"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Success"
          },
          "401": {
            "description": "Unauthorized - missing or invalid API key"
          },
          "403": {
            "description": "Forbidden - missing required scope"
          },
          "429": {
            "description": "Rate limit exceeded"
          },
          "500": {
            "description": "Internal server error"
          }
        },
        "security": [
          {
            "BearerAuth": []
          }
        ],
        "summary": "Ręczne odświeżenie z budżetem",
        "tags": [
          "Shipments"
        ]
      }
    },
    "/api/v1/usage": {
      "get": {
        "responses": {
          "200": {
            "description": "Success"
          },
          "401": {
            "description": "Unauthorized - missing or invalid API key"
          },
          "403": {
            "description": "Forbidden - missing required scope"
          },
          "429": {
            "description": "Rate limit exceeded"
          },
          "500": {
            "description": "Internal server error"
          }
        },
        "security": [
          {
            "BearerAuth": []
          }
        ],
        "summary": "Budżety API i KPI przesyłek",
        "tags": [
          "Operations"
        ]
      }
    }
  },
  "servers": [
    {
      "url": "https://tracker.locura.tech"
    }
  ]
}
