{
  "info": {
    "name": "Gertel Skills",
    "schema": "https://schema.getpostman.com/json/collection/v2.1.0/collection.json"
  },
  "variable": [
    { "key": "base_url", "value": "http://localhost:3000" },
    { "key": "token", "value": "" },
    { "key": "smartlink_id", "value": "" },
    { "key": "category_id", "value": "" },
    { "key": "media_id", "value": "" },
    { "key": "user_id", "value": "" },
    { "key": "view_id", "value": "" },
    { "key": "group_id", "value": "" },
    { "key": "ati_access_key", "value": "" },
    { "key": "sar_access_key", "value": "" }
  ],
  "auth": {
    "type": "bearer",
    "bearer": [{ "key": "token", "value": "{{token}}" }]
  },
  "item": [
    {
      "name": "Smartlinks",
      "item": [
        {
          "name": "Criar Smartlink ATI (API Key)",
          "event": [
            {
              "listen": "test",
              "script": {
                "exec": [
                  "var json = pm.response.json();",
                  "if (json.url) {",
                  "  var q = json.url.split('q=')[1];",
                  "  if (q) pm.collectionVariables.set('smartlink_id', q);",
                  "}"
                ]
              }
            }
          ],
          "request": {
            "auth": { "type": "noauth" },
            "method": "POST",
            "url": "{{base_url}}/smartlink/ati",
            "header": [
              { "key": "Content-Type", "value": "application/json" },
              { "key": "x-access-key", "value": "{{ati_access_key}}" }
            ],
            "body": {
              "mode": "raw",
              "raw": "{\n  \"id_ati\": \"a1b2c3d4-e5f6-4a7b-8c9d-0e1f2a3b4c5d\",\n  \"name\": \"Admin Operador\",\n  \"department\": \"TI\"\n}"
            }
          }
        },
        {
          "name": "Criar Smartlink SAR (API Key)",
          "event": [
            {
              "listen": "test",
              "script": {
                "exec": [
                  "var json = pm.response.json();",
                  "if (json.url) {",
                  "  var q = json.url.split('q=')[1];",
                  "  if (q) pm.collectionVariables.set('smartlink_id', q);",
                  "}"
                ]
              }
            }
          ],
          "request": {
            "auth": { "type": "noauth" },
            "method": "POST",
            "url": "{{base_url}}/smartlink/sar",
            "header": [
              { "key": "Content-Type", "value": "application/json" },
              { "key": "x-access-key", "value": "{{sar_access_key}}" }
            ],
            "body": {
              "mode": "raw",
              "raw": "{\n  \"usuario\": {\n    \"id\": \"usr-001\",\n    \"login\": \"joao.vitor\",\n    \"documento\": \"12345678900\",\n    \"nome\": \"João Vitor\",\n    \"email\": \"joao@gertel.com.br\",\n    \"contato\": \"51999999999\",\n    \"tipo_login\": \"default\"\n  },\n  \"categoria_usuario\": [\n    { \"id\": \"grp-001\", \"nome\": \"Técnicos\" },\n    { \"id\": \"grp-002\", \"nome\": \"Segurança\" }\n  ]\n}"
            }
          }
        },
        {
          "name": "Resolver Smartlink (Publica)",
          "event": [
            {
              "listen": "test",
              "script": {
                "exec": [
                  "var json = pm.response.json();",
                  "if (json.token) pm.collectionVariables.set('token', json.token);"
                ]
              }
            }
          ],
          "request": {
            "auth": { "type": "noauth" },
            "method": "GET",
            "url": "{{base_url}}/smartlink/resolve?q={{smartlink_id}}"
          }
        }
      ]
    },
    {
      "name": "Auth",
      "item": [
        {
          "name": "Me (Autenticada)",
          "request": {
            "method": "GET",
            "url": "{{base_url}}/auth/me"
          }
        }
      ]
    },
    {
      "name": "Categories",
      "item": [
        {
          "name": "List Categories (Autenticada)",
          "request": {
            "method": "GET",
            "url": "{{base_url}}/categories"
          }
        },
        {
          "name": "Get Category (Autenticada)",
          "request": {
            "method": "GET",
            "url": "{{base_url}}/categories/{{category_id}}"
          }
        },
        {
          "name": "Create Category (Operador)",
          "event": [
            {
              "listen": "test",
              "script": {
                "exec": [
                  "var json = pm.response.json();",
                  "if (json.category) pm.collectionVariables.set('category_id', json.category.id);"
                ]
              }
            }
          ],
          "request": {
            "method": "POST",
            "url": "{{base_url}}/categories",
            "header": [{ "key": "Content-Type", "value": "application/json" }],
            "body": {
              "mode": "raw",
              "raw": "{\n  \"name\": \"Segurança do Trabalho\",\n  \"description\": \"Conteúdos sobre segurança do trabalho\",\n  \"color\": \"#FF5733\",\n  \"icon\": \"shield\",\n  \"group_ids\": [\"{{group_id}}\"]\n}"
            }
          }
        },
        {
          "name": "Update Category (Operador)",
          "request": {
            "method": "PUT",
            "url": "{{base_url}}/categories/{{category_id}}",
            "header": [{ "key": "Content-Type", "value": "application/json" }],
            "body": {
              "mode": "raw",
              "raw": "{\n  \"name\": \"Segurança do Trabalho - Atualizado\",\n  \"description\": \"Conteúdos atualizados sobre segurança\",\n  \"icon\": \"shield-check\",\n  \"group_ids\": [\"{{group_id}}\"]\n}"
            }
          }
        },
        {
          "name": "Delete Category (Operador)",
          "request": {
            "method": "DELETE",
            "url": "{{base_url}}/categories/{{category_id}}"
          }
        }
      ]
    },
    {
      "name": "Medias",
      "item": [
        {
          "name": "List Medias (Operador)",
          "request": {
            "method": "GET",
            "url": {
              "raw": "{{base_url}}/medias",
              "host": ["{{base_url}}"],
              "path": ["medias"],
              "query": [
                {
                  "key": "category",
                  "value": "{{category_id}}",
                  "disabled": true
                },
                { "key": "type", "value": "VIDEO", "disabled": true }
              ]
            }
          }
        },
        {
          "name": "List Medias by Category (Autenticada)",
          "request": {
            "method": "GET",
            "url": "{{base_url}}/medias/category/{{category_id}}"
          }
        },
        {
          "name": "Get Media (Autenticada)",
          "request": {
            "method": "GET",
            "url": "{{base_url}}/medias/{{media_id}}"
          }
        },
        {
          "name": "Create Media (VIDEO) (Operador)",
          "event": [
            {
              "listen": "test",
              "script": {
                "exec": [
                  "var json = pm.response.json();",
                  "if (json.media) pm.collectionVariables.set('media_id', json.media.id);"
                ]
              }
            }
          ],
          "request": {
            "method": "POST",
            "url": "{{base_url}}/medias",
            "header": [{ "key": "Content-Type", "value": "application/json" }],
            "body": {
              "mode": "raw",
              "raw": "{\n  \"id_media_category\": \"{{category_id}}\",\n  \"title\": \"Treinamento NR-35\",\n  \"description\": \"Treinamento sobre trabalho em altura\",\n  \"type\": \"VIDEO\",\n  \"url\": \"https://example.com/video.mp4\",\n  \"duration\": 3600,\n  \"thumbnail\": \"https://example.com/thumb.jpg\",\n  \"status\": \"ACTIVE\"\n}"
            }
          }
        },
        {
          "name": "Create Media (PDF) (Operador)",
          "event": [
            {
              "listen": "test",
              "script": {
                "exec": [
                  "var json = pm.response.json();",
                  "if (json.media) pm.collectionVariables.set('media_id', json.media.id);"
                ]
              }
            }
          ],
          "request": {
            "method": "POST",
            "url": "{{base_url}}/medias",
            "body": {
              "mode": "formdata",
              "formdata": [
                {
                  "key": "id_media_category",
                  "value": "{{category_id}}",
                  "type": "text"
                },
                { "key": "title", "value": "Manual NR-35", "type": "text" },
                {
                  "key": "description",
                  "value": "Manual sobre trabalho em altura",
                  "type": "text"
                },
                { "key": "type", "value": "PDF", "type": "text" },
                { "key": "status", "value": "ACTIVE", "type": "text" },
                { "key": "file", "type": "file", "src": "" }
              ]
            }
          }
        },
        {
          "name": "Update Media (Operador)",
          "request": {
            "method": "PUT",
            "url": "{{base_url}}/medias/{{media_id}}",
            "header": [{ "key": "Content-Type", "value": "application/json" }],
            "body": {
              "mode": "raw",
              "raw": "{\n  \"title\": \"Treinamento NR-35 - Atualizado\",\n  \"status\": \"INACTIVE\"\n}"
            }
          }
        },
        {
          "name": "Delete Media (Operador)",
          "request": {
            "method": "DELETE",
            "url": "{{base_url}}/medias/{{media_id}}"
          }
        }
      ]
    },
    {
      "name": "Users",
      "item": [
        {
          "name": "List Users (Operador)",
          "request": {
            "method": "GET",
            "url": "{{base_url}}/users"
          }
        },
        {
          "name": "Get User (Operador)",
          "request": {
            "method": "GET",
            "url": "{{base_url}}/user/{{user_id}}"
          }
        },
        {
          "name": "Create User (Operador)",
          "event": [
            {
              "listen": "test",
              "script": {
                "exec": [
                  "var json = pm.response.json();",
                  "if (json.user) pm.collectionVariables.set('user_id', json.user.id);"
                ]
              }
            }
          ],
          "request": {
            "method": "POST",
            "url": "{{base_url}}/users",
            "header": [{ "key": "Content-Type", "value": "application/json" }],
            "body": {
              "mode": "raw",
              "raw": "{\n  \"name\": \"Maria Silva\",\n  \"login\": \"maria.silva\",\n  \"document\": \"98765432100\",\n  \"email\": \"maria@gertel.com.br\",\n  \"contact\": \"51988888888\",\n  \"login_type\": \"default\",\n  \"group_names\": [\"Técnicos\", \"Segurança\"]\n}"
            }
          }
        },
        {
          "name": "Update User (Operador)",
          "request": {
            "method": "PUT",
            "url": "{{base_url}}/users/{{user_id}}",
            "header": [{ "key": "Content-Type", "value": "application/json" }],
            "body": {
              "mode": "raw",
              "raw": "{\n  \"name\": \"Maria Silva Atualizada\"\n}"
            }
          }
        },
        {
          "name": "Delete User (Operador)",
          "request": {
            "method": "DELETE",
            "url": "{{base_url}}/users/{{user_id}}"
          }
        }
      ]
    },
    {
      "name": "Views",
      "item": [
        {
          "name": "Register View (Usuario)",
          "event": [
            {
              "listen": "test",
              "script": {
                "exec": [
                  "var json = pm.response.json();",
                  "if (json.view) pm.collectionVariables.set('view_id', json.view.id);"
                ]
              }
            }
          ],
          "request": {
            "method": "POST",
            "url": "{{base_url}}/views",
            "header": [{ "key": "Content-Type", "value": "application/json" }],
            "body": {
              "mode": "raw",
              "raw": "{\n  \"id_media\": \"{{media_id}}\",\n  \"percentual\": 45.5\n}"
            }
          }
        },
        {
          "name": "List My Views (Usuario)",
          "request": {
            "method": "GET",
            "url": "{{base_url}}/views"
          }
        },
        {
          "name": "Get View (Operador)",
          "request": {
            "method": "GET",
            "url": "{{base_url}}/views/{{view_id}}"
          }
        },
        {
          "name": "List Views by Media (Operador)",
          "request": {
            "method": "GET",
            "url": "{{base_url}}/views/media/{{media_id}}"
          }
        },
        {
          "name": "List Views by User (Operador)",
          "request": {
            "method": "GET",
            "url": "{{base_url}}/views/user/{{user_id}}"
          }
        }
      ]
    },
    {
      "name": "Groups",
      "item": [
        {
          "name": "List Groups (Operador)",
          "request": {
            "method": "GET",
            "url": "{{base_url}}/groups"
          }
        }
      ]
    }
  ]
}
