{"info":{"_postman_id":"8a359981-f1f8-4d72-9cd7-3dc976c95841","name":"Documentação de API do Moovz","description":"<html><head></head><body><h2 id=\"visão-geral\">Visão Geral</h2>\n<p>A API do Moovz facilita a integração do seu sistema com ERPs para academias e outros serviços, permitindo uma gestão mais eficiente das academias e a extensão de funcionalidades aos usuários.</p>\n<h3 id=\"lista-de-apis-disponíveis\">Lista de APIs Disponíveis</h3>\n<ul>\n<li><p>Gerenciamento de aulas</p>\n</li>\n<li><p>Validação da ativação da integração pelas academias</p>\n</li>\n<li><p>Validação do ingresso dos alunos nas academias</p>\n</li>\n</ul>\n<h2 id=\"guia-de-início-rápido\">Guia de Início Rápido</h2>\n<p>Siga os passos abaixo para começar a utilizar a API e obter sucesso o mais rápido possível:</p>\n<ol>\n<li><p><strong>Obtenção de Chave API</strong>: Atualmente, a API não requer autenticação, mas em versões futuras será necessário utilizar uma chave de API para acessar os endpoints. Fique atento às atualizações.</p>\n</li>\n<li><p><strong>Formato de Resposta</strong>: As respostas da API são retornadas no formato JSON. Se houver algum erro na requisição, ele será enviado na resposta como uma chave de erro no JSON.</p>\n</li>\n<li><p><strong>Rotas</strong>: As rotas dependem do código da academia que está consumindo o serviço. Todas as rotas são precedidas pela versão da API e pelo código da academia da seguinte maneira: <code>vX/{{código da academia}}/recurso</code></p>\n</li>\n<li><p><strong>Webhooks:</strong> Webhooks serão utilizados para notificação dos sistemas integrados sobre eventos do Moovz. O parceiro deve fornecer os endpoints necessários para os eventos e deve garantir o processamento das requisições, dado que, por enquanto, não serão feitas retentativas.</p>\n</li>\n</ol>\n<h2 id=\"autenticação\">Autenticação</h2>\n<p>A API do Moovz ainda não possui um sistema de autenticação implementado, mas futuramente utilizará tokens gerados a pedido do parceiro para autenticação.</p>\n<h3 id=\"resposta-de-erro-de-autenticação\">Resposta de Erro de Autenticação</h3>\n<p>Assim que a autenticação for implementada, se um token estiver ausente, malformado ou inválido, você receberá um código de resposta HTTP 401 Unauthorized.</p>\n<h2 id=\"limites-de-taxa-e-uso\">Limites de Taxa e Uso</h2>\n<p>Atualmente, não existem limites de taxa (rate limits) aplicados à API. No futuro, a API terá limites de uso específicos para cada academia ou parceiro, dependendo do recurso consumido.</p>\n<h2 id=\"precisa-de-ajuda\">Precisa de Ajuda?</h2>\n<p>Em caso de dúvidas, entre em contato conosco através do e-mail: <a href=\"https://mailto:contato@moovz.app\">contato@moovz.app</a>. No momento, ainda não possuímos uma página de FAQ ou fórum de desenvolvedores, mas estamos disponíveis para ajudar via e-mail.</p>\n<hr>\n</body></html>","schema":"https://schema.getpostman.com/json/collection/v2.0.0/collection.json","toc":[],"owner":"37948713","collectionId":"8a359981-f1f8-4d72-9cd7-3dc976c95841","publishedId":"2sAYQXoYU8","public":true,"customColor":{"top-bar":"FFFFFF","right-sidebar":"303030","highlight":"FF6C37"},"publishDate":"2025-01-14T12:10:33.000Z"},"item":[{"name":"Academias","item":[{"name":"Buscar Academia","id":"b668ddd3-922f-4eac-9f5f-617f21191c7c","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"GET","header":[],"url":"http://127.0.0.1:5002/api/v1/gyms/XYZ","auth":{"type":"apikey","apikey":{"basicConfig":[{"key":"key","value":"x-api-key"},{"key":"value","value":"{{apiKey}}"}]},"isInherited":true,"source":{"_postman_id":"8a359981-f1f8-4d72-9cd7-3dc976c95841","id":"8a359981-f1f8-4d72-9cd7-3dc976c95841","name":"Documentação de API do Moovz","type":"collection"}},"urlObject":{"protocol":"http","port":"5002","path":["api","v1","gyms","XYZ"],"host":["127","0","0","1"],"query":[],"variable":[]}},"response":[{"id":"721d1099-deef-4661-a3ff-8b6c9548f41e","name":"Successo","originalRequest":{"method":"GET","header":[],"url":"https://api.moovz.app/api/v1/gyms/XYZ"},"status":"OK","code":200,"_postman_previewlanguage":"json","header":[{"key":"x-powered-by","value":"Express"},{"key":"vary","value":"Origin, Accept-Encoding, Authorization, Cookie"},{"key":"content-type","value":"application/json; charset=utf-8"},{"key":"content-length","value":"380"},{"key":"etag","value":"W/\"17c-W5H8zY1JcyFVxTq4yYbEitxX7wA\""},{"key":"date","value":"Tue, 04 Feb 2025 10:27:26 GMT"},{"key":"connection","value":"keep-alive"},{"key":"keep-alive","value":"timeout=5"},{"key":"cache-control","value":"private"}],"cookie":[],"responseTime":null,"body":"{\n    \"status\": \"success\",\n    \"data\": {\n        \"id\": \"CNwAJrjAaue37pmqCZTD\",\n        \"name\": \"Gym Fitness LTDA\",\n        \"cnpj\": \"62.638.815/0001-58\",\n        \"logoURL\": \"https://placehold.co/400\",\n        \"coverURL\": \"https://placehold.co/600x400\",\n        \"shortDescription\": \"A short description about Gym Fitness\",\n        \"longDescription\": \"A long description of Gym Fitness. Gym Fitness is a test gym used for test purposes.\"\n    },\n    \"warnings\": [],\n    \"errors\": []\n}"}],"_postman_id":"b668ddd3-922f-4eac-9f5f-617f21191c7c"},{"name":"Listar Academias","id":"9e22ceb4-e5cf-4260-bb91-9bf25293ab85","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"GET","header":[],"url":"http://127.0.0.1:5002/api/v1/gyms","auth":{"type":"apikey","apikey":{"basicConfig":[{"key":"key","value":"x-api-key"},{"key":"value","value":"{{apiKey}}"}]},"isInherited":true,"source":{"_postman_id":"8a359981-f1f8-4d72-9cd7-3dc976c95841","id":"8a359981-f1f8-4d72-9cd7-3dc976c95841","name":"Documentação de API do Moovz","type":"collection"}},"urlObject":{"protocol":"http","port":"5002","path":["api","v1","gyms"],"host":["127","0","0","1"],"query":[],"variable":[]}},"response":[{"id":"bd9ff980-aa44-4ab3-acc8-976d6c3cd1f8","name":"Sucesso","originalRequest":{"method":"GET","header":[],"url":"https://api.moovz.app/api/v1/gyms"},"status":"OK","code":200,"_postman_previewlanguage":"json","header":[{"key":"x-powered-by","value":"Express"},{"key":"vary","value":"Origin, Accept-Encoding, Authorization, Cookie"},{"key":"content-type","value":"application/json; charset=utf-8"},{"key":"content-length","value":"749"},{"key":"etag","value":"W/\"2ed-RoefXMZNO8anW1bDj8FHqBeCeao\""},{"key":"date","value":"Tue, 04 Feb 2025 10:33:44 GMT"},{"key":"connection","value":"keep-alive"},{"key":"keep-alive","value":"timeout=5"},{"key":"cache-control","value":"private"}],"cookie":[],"responseTime":null,"body":"{\n    \"status\": \"success\",\n    \"data\": [\n        {\n            \"id\": \"7QeS4eV2dhMKXR6wjlPs\",\n            \"name\": \"Academia 02\",\n            \"cnpj\": \"44.767.042/0001-28\",\n            \"logoURL\": \"https://www.image.com.br\",\n            \"coverURL\": \"https://www.image2.com.br\",\n            \"shortDescription\": \"A short description.\",\n            \"longDescription\": \"A very very very very very very very very very very very very very very very very very very very very very very very very very very long description.\"\n        },\n        {\n            \"id\": \"CNwAJrjAaue37pmqCZTD\",\n            \"name\": \"Gym Fitness LTDA\",\n            \"cnpj\": \"62.638.815/0001-58\",\n            \"logoURL\": \"https://placehold.co/400\",\n            \"coverURL\": \"https://placehold.co/600x400\",\n            \"shortDescription\": \"A short description about Gym Fitness\",\n            \"longDescription\": \"A long description of Gym Fitness. Gym Fitness is a test gym used for test purposes.\"\n        }\n    ],\n    \"warnings\": [],\n    \"errors\": []\n}"}],"_postman_id":"9e22ceb4-e5cf-4260-bb91-9bf25293ab85"},{"name":"Editar Academia","id":"74761d09-5d7e-4376-9746-f4005bda9626","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"PATCH","header":[],"body":{"mode":"raw","raw":"{\n    \"name\": \"A New Gym Name\",\n    \"logoURL\": \"https://www.newlogourl.com.br\",\n    \"coverURL\": \"https://www.newlogourl.com.br\",\n    \"shortDescription\": \"A new short Description\",\n    \"longDescription\": \"A new very very very very very very very very very very very very very very very long description.\"\n}","options":{"raw":{"language":"json"}}},"url":"http://127.0.0.1:5002/api/v1/gyms/XYZ","auth":{"type":"apikey","apikey":{"basicConfig":[{"key":"key","value":"x-api-key"},{"key":"value","value":"{{apiKey}}"}]},"isInherited":true,"source":{"_postman_id":"8a359981-f1f8-4d72-9cd7-3dc976c95841","id":"8a359981-f1f8-4d72-9cd7-3dc976c95841","name":"Documentação de API do Moovz","type":"collection"}},"urlObject":{"protocol":"http","port":"5002","path":["api","v1","gyms","XYZ"],"host":["127","0","0","1"],"query":[],"variable":[]}},"response":[{"id":"282e9ced-cdd4-45ce-86a8-6a1061aa7942","name":"Sucesso","originalRequest":{"method":"PATCH","header":[],"body":{"mode":"raw","raw":"{\n    \"name\": \"A New Gym Name\",\n    \"logoURL\": \"https://www.newlogourl.com.br\",\n    \"shortDescription\": \"A new short Description\",\n    \"longDescription\": \"A new very very very very very very very very very very very very very very very long description.\"\n\n}","options":{"raw":{"language":"json"}}},"url":"https://api.moovz.app/api/v1/gyms/XYZ"},"status":"OK","code":200,"_postman_previewlanguage":"json","header":[{"key":"x-powered-by","value":"Express"},{"key":"vary","value":"Origin, Accept-Encoding, Authorization, Cookie"},{"key":"content-type","value":"application/json; charset=utf-8"},{"key":"content-length","value":"285"},{"key":"etag","value":"W/\"11d-ntfosLVzEv+dfEgKP709jXszTZI\""},{"key":"date","value":"Tue, 04 Feb 2025 10:46:08 GMT"},{"key":"connection","value":"keep-alive"},{"key":"keep-alive","value":"timeout=5"},{"key":"cache-control","value":"private"}],"cookie":[],"responseTime":null,"body":"{\n    \"status\": \"success\",\n    \"data\": {\n        \"name\": \"A New Gym Name\",\n        \"logoURL\": \"https://www.newlogourl.com.br\",\n        \"shortDescription\": \"A new short Description\",\n        \"longDescription\": \"A new very very very very very very very very very very very very very very very long description.\"\n    },\n    \"warnings\": [],\n    \"errors\": []\n}"}],"_postman_id":"74761d09-5d7e-4376-9746-f4005bda9626"}],"id":"19a34e5a-eb6c-4a8e-8985-397ff4a08dc0","description":"<h2 id=\"o-que-são-academias\">O que são Academias?</h2>\n<p>Academias são entidades parceiras integradas ao sistema, responsáveis por gerenciar alunos, sessões de aula e dados de treinos. A API permite operações básicas para administrar academias com integração ativa.</p>\n<h2 id=\"funcionalidades\">Funcionalidades</h2>\n<h3 id=\"1-buscar-academia\">1. Buscar Academia</h3>\n<ul>\n<li><p><strong>Método:</strong> GET</p>\n</li>\n<li><p><strong>Endpoint:</strong> <code>/gyms/{gymID}</code></p>\n</li>\n<li><p><strong>Descrição:</strong> Retorna os detalhes da academia, incluindo todas as informações relevantes e de integração.</p>\n</li>\n</ul>\n<h3 id=\"2-listar-academias\">2. Listar Academias</h3>\n<ul>\n<li><p><strong>Método:</strong> GET</p>\n</li>\n<li><p><strong>Endpoint:</strong> <code>/gyms</code></p>\n</li>\n<li><p><strong>Descrição:</strong> Lista todas as academias integradas ao sistema, com a possibilidade de aplicar filtros (como nome ou status).</p>\n</li>\n</ul>\n<h3 id=\"3-editar-academia\">3. Editar Academia</h3>\n<ul>\n<li><p><strong>Método:</strong> PATCH</p>\n</li>\n<li><p><strong>Endpoint:</strong> <code>/gyms/{gymID}</code></p>\n</li>\n<li><p><strong>Descrição:</strong> Atualiza informações específicas da academia.</p>\n</li>\n<li><p><strong>Campos Atualizáveis:</strong></p>\n<ul>\n<li><p><code>name</code> (string): Nome da academia.</p>\n</li>\n<li><p><code>logoURL</code> (string): URL do logotipo da academia.</p>\n</li>\n<li><p><code>coverURL</code> (string): URL da capa da academia.</p>\n</li>\n<li><p><code>shortDescription</code> (string): Descrição curta da academia.</p>\n</li>\n<li><p><code>longDescription</code> (string): Descrição longa e detalhada da academia.</p>\n</li>\n</ul>\n</li>\n</ul>\n<h3 id=\"exemplo-de-documento-de-academia-gym\">Exemplo de Documento de Academia (Gym)</h3>\n<p>A seguir, um exemplo de documento que representa uma Academia, com dados fictícios:</p>\n<pre class=\"click-to-expand-wrapper is-snippet-wrapper\"><code class=\"language-json\">{\n  \"id\": \"7QeS4eV2dhMKXR6wjlPs\",\n  \"name\": \"Academia Teste\",\n  \"logoURL\": \"https://www.logourlexample.com\",\n  \"coverURL\": \"https://www.coverurlexample.com\",\n  \"shortDescription\": \"Uma descrição curta da academia\",\n  \"longDescription\": \"Uma descrição loooooooooooo...ooooooooooooooooooonga da academia\"\n}\n\n</code></pre>\n<p><strong>Explicação dos Campos:</strong></p>\n<ul>\n<li><p><strong>id:</strong> Identificador único da academia.</p>\n</li>\n<li><p><strong>name:</strong> Nome da academia.</p>\n</li>\n<li><p><strong>logoURL:</strong> URL do logotipo da academia.</p>\n</li>\n<li><p><strong>coverURL:</strong> URL da imagem de capa da academia.</p>\n</li>\n<li><p><strong>shortDescription:</strong> Descrição curta da academia.</p>\n</li>\n<li><p><strong>longDescription:</strong> Descrição detalhada da academia.</p>\n</li>\n</ul>\n","_postman_id":"19a34e5a-eb6c-4a8e-8985-397ff4a08dc0","auth":{"type":"apikey","apikey":{"basicConfig":[{"key":"key","value":"x-api-key"},{"key":"value","value":"{{apiKey}}"}]},"isInherited":true,"source":{"_postman_id":"8a359981-f1f8-4d72-9cd7-3dc976c95841","id":"8a359981-f1f8-4d72-9cd7-3dc976c95841","name":"Documentação de API do Moovz","type":"collection"}}},{"name":"Grades","item":[{"name":"Criar Grade","id":"25c42414-0f17-4bcb-890a-f00e5e5f8640","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"POST","header":[],"body":{"mode":"raw","raw":"{\n    \"name\": \"Nova Grade\",\n    \"baseCapacity\": 30,\n    \"baseDurationInSeconds\": 3000,\n    \"coverURL\": \"https://www.imagem.com\",\n    \"startAt\": \"2024-01-25T23:00:00.643Z\",\n    \"endAt\": \"2026-01-25T23:00:00.643Z\",\n    \"isActive\": true\n}","options":{"raw":{"language":"json"}}},"url":"http://127.0.0.1:5002/api/v1/XYZ/schedules","auth":{"type":"apikey","apikey":{"basicConfig":[{"key":"key","value":"x-api-key"},{"key":"value","value":"{{apiKey}}"}]},"isInherited":true,"source":{"_postman_id":"8a359981-f1f8-4d72-9cd7-3dc976c95841","id":"8a359981-f1f8-4d72-9cd7-3dc976c95841","name":"Documentação de API do Moovz","type":"collection"}},"urlObject":{"protocol":"http","port":"5002","path":["api","v1","XYZ","schedules"],"host":["127","0","0","1"],"query":[],"variable":[]}},"response":[{"id":"14f2ec4f-4c9d-41a1-bb04-b507214430a5","name":"Sucesso","originalRequest":{"method":"POST","header":[],"body":{"mode":"raw","raw":"{\n    \"name\": \"Nova Grade\",\n    \"baseCapacity\": 30,\n    \"baseDurationInSeconds\": 3000,\n    \"coverURL\": \"https://www.imagem.com\",\n    \"startAt\": \"2024-01-25T23:00:00.643Z\",\n    \"endAt\": \"2026-01-25T23:00:00.643Z\",\n    \"isActive\": true\n}","options":{"raw":{"language":"json"}}},"url":"http://127.0.0.1:5002/api/v1/XYZ/schedules"},"status":"Created","code":201,"_postman_previewlanguage":"json","header":[{"key":"x-powered-by","value":"Express"},{"key":"vary","value":"Origin, Accept-Encoding, Authorization, Cookie"},{"key":"content-type","value":"application/json; charset=utf-8"},{"key":"content-length","value":"274"},{"key":"etag","value":"W/\"112-lFGjE9rb3uC2XikC1ceslBdlQJk\""},{"key":"date","value":"Tue, 04 Feb 2025 11:05:51 GMT"},{"key":"connection","value":"keep-alive"},{"key":"keep-alive","value":"timeout=5"},{"key":"cache-control","value":"private"}],"cookie":[],"responseTime":null,"body":"{\n    \"status\": \"success\",\n    \"data\": {\n        \"id\": \"6x0jii5PRFXNUm8rtEcb\",\n        \"name\": \"Nova Grade\",\n        \"baseCapacity\": 30,\n        \"baseDurationInSeconds\": 3000,\n        \"coverURL\": \"https://www.imagem.com\",\n        \"startAt\": \"2024-01-25T23:00:00.643Z\",\n        \"endAt\": \"2026-01-25T23:00:00.643Z\",\n        \"isActive\": true\n    },\n    \"warnings\": [],\n    \"errors\": []\n}"}],"_postman_id":"25c42414-0f17-4bcb-890a-f00e5e5f8640"},{"name":"Editar Grade","id":"c24dc097-cee2-45ef-a924-425b906654c2","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"PATCH","header":[],"body":{"mode":"raw","raw":"{\n    \"name\": \"Nova Grade EDITADA\",\n    \"baseCapacity\": 100,\n    \"baseDurationInSeconds\": 3600,\n    \"coverURL\": \"https://www.imagemeditada.com\",\n    \"startAt\": \"2025-01-25T23:00:00.643Z\",\n    \"endAt\": \"2028-01-25T23:00:00.643Z\",\n    \"isActive\": true\n}","options":{"raw":{"language":"json"}}},"url":"http://127.0.0.1:5002/api/v1/XYZ/schedules/XYZ","auth":{"type":"apikey","apikey":{"basicConfig":[{"key":"key","value":"x-api-key"},{"key":"value","value":"{{apiKey}}"}]},"isInherited":true,"source":{"_postman_id":"8a359981-f1f8-4d72-9cd7-3dc976c95841","id":"8a359981-f1f8-4d72-9cd7-3dc976c95841","name":"Documentação de API do Moovz","type":"collection"}},"urlObject":{"protocol":"http","port":"5002","path":["api","v1","XYZ","schedules","XYZ"],"host":["127","0","0","1"],"query":[],"variable":[]}},"response":[{"id":"13392215-11bc-491c-b7a1-cc719ded68eb","name":"Sucesso","originalRequest":{"method":"PATCH","header":[],"body":{"mode":"raw","raw":"{\n    \"name\": \"New Schedule Name\",\n    \"isActive\": true,\n    \"endAt\": \"2028-01-26T03:30:53.223Z\"\n}","options":{"raw":{"language":"json"}}},"url":"http://127.0.0.1:5002/api/v1/XYZ/schedules/XYZ"},"status":"OK","code":200,"_postman_previewlanguage":"json","header":[{"key":"x-powered-by","value":"Express"},{"key":"vary","value":"Origin, Accept-Encoding, Authorization, Cookie"},{"key":"content-type","value":"application/json; charset=utf-8"},{"key":"content-length","value":"58"},{"key":"etag","value":"W/\"3a-S1Yy5t9uXAHhWBlEzpGd3PA6GQ0\""},{"key":"date","value":"Tue, 04 Feb 2025 11:39:09 GMT"},{"key":"connection","value":"keep-alive"},{"key":"keep-alive","value":"timeout=5"},{"key":"cache-control","value":"private"}],"cookie":[],"responseTime":null,"body":"{\n    \"status\": \"success\",\n    \"data\": null,\n    \"warnings\": [],\n    \"errors\": []\n}"}],"_postman_id":"c24dc097-cee2-45ef-a924-425b906654c2"},{"name":"Buscar Grade","id":"a0448bb9-1447-49c2-aca4-3fe563b51c43","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"GET","header":[],"url":"http://127.0.0.1:5002/api/v1/XYZ/schedules/XYZ","auth":{"type":"apikey","apikey":{"basicConfig":[{"key":"key","value":"x-api-key"},{"key":"value","value":"{{apiKey}}"}]},"isInherited":true,"source":{"_postman_id":"8a359981-f1f8-4d72-9cd7-3dc976c95841","id":"8a359981-f1f8-4d72-9cd7-3dc976c95841","name":"Documentação de API do Moovz","type":"collection"}},"urlObject":{"protocol":"http","port":"5002","path":["api","v1","XYZ","schedules","XYZ"],"host":["127","0","0","1"],"query":[],"variable":[]}},"response":[{"id":"bea207b1-cced-4a09-bf53-cfde34722ebf","name":"Sucesso","originalRequest":{"method":"GET","header":[],"url":"http://127.0.0.1:5002/api/v1/XYZ/schedules/XYZ"},"status":"OK","code":200,"_postman_previewlanguage":"json","header":[{"key":"x-powered-by","value":"Express"},{"key":"vary","value":"Origin, Accept-Encoding, Authorization, Cookie"},{"key":"content-type","value":"application/json; charset=utf-8"},{"key":"content-length","value":"281"},{"key":"etag","value":"W/\"119-jv8LSpZjFEL5TL8YAa2kEKZNlvU\""},{"key":"date","value":"Tue, 04 Feb 2025 11:41:45 GMT"},{"key":"connection","value":"keep-alive"},{"key":"keep-alive","value":"timeout=5"},{"key":"cache-control","value":"private"}],"cookie":[],"responseTime":null,"body":"{\n    \"status\": \"success\",\n    \"data\": {\n        \"id\": \"6x0jii5PRFXNUm8rtEcb\",\n        \"name\": \"New Schedule Name\",\n        \"baseCapacity\": 30,\n        \"baseDurationInSeconds\": 3000,\n        \"coverURL\": \"https://www.imagem.com\",\n        \"startAt\": \"2025-02-04T11:05:51.462Z\",\n        \"endAt\": \"2028-01-26T03:30:53.223Z\",\n        \"isActive\": true\n    },\n    \"warnings\": [],\n    \"errors\": []\n}"}],"_postman_id":"a0448bb9-1447-49c2-aca4-3fe563b51c43"},{"name":"Listar Grades","id":"dd84e7d4-e59e-4ef7-9dbb-6d8a58d8cc6d","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"GET","header":[],"url":"http://127.0.0.1:5002/api/v1/XYZ/schedules","auth":{"type":"apikey","apikey":{"basicConfig":[{"key":"key","value":"x-api-key"},{"key":"value","value":"{{apiKey}}"}]},"isInherited":true,"source":{"_postman_id":"8a359981-f1f8-4d72-9cd7-3dc976c95841","id":"8a359981-f1f8-4d72-9cd7-3dc976c95841","name":"Documentação de API do Moovz","type":"collection"}},"urlObject":{"protocol":"http","port":"5002","path":["api","v1","XYZ","schedules"],"host":["127","0","0","1"],"query":[],"variable":[]}},"response":[{"id":"06e9d0d3-a485-45df-b6f0-b2b096b6702f","name":"Sucesso","originalRequest":{"method":"GET","header":[],"url":"http://127.0.0.1:5002/api/v1/XYZ/schedules"},"status":"OK","code":200,"_postman_previewlanguage":"json","header":[{"key":"x-powered-by","value":"Express"},{"key":"vary","value":"Origin, Accept-Encoding, Authorization, Cookie"},{"key":"content-type","value":"application/json; charset=utf-8"},{"key":"content-length","value":"657"},{"key":"etag","value":"W/\"291-n021MnnD7/zCPWbmf5Y9wBxz8Ws\""},{"key":"date","value":"Tue, 04 Feb 2025 11:43:01 GMT"},{"key":"connection","value":"keep-alive"},{"key":"keep-alive","value":"timeout=5"},{"key":"cache-control","value":"private"}],"cookie":[],"responseTime":null,"body":"{\n    \"status\": \"success\",\n    \"data\": [\n        {\n            \"id\": \"6x0jii5PRFXNUm8rtEcb\",\n            \"name\": \"New Schedule Name\",\n            \"baseCapacity\": 30,\n            \"baseDurationInSeconds\": 3000,\n            \"coverURL\": \"https://www.imagem.com\",\n            \"startAt\": \"2025-02-04T11:05:51.462Z\",\n            \"endAt\": \"2028-01-26T03:30:53.223Z\",\n            \"isActive\": true\n        },\n        {\n            \"id\": \"BZU1APzaMYWaZkRCIHjW\",\n            \"name\": \"cdscds\",\n            \"baseCapacity\": 20,\n            \"baseDurationInSeconds\": 3000,\n            \"coverURL\": \"http://localhost:9199/v0/b/pacto-training-zone.appspot.com/o/gyms%2FCNwAJrjAaue37pmqCZTD%2Fimages%2FEnQqntA1piiOPCza7UI20.jpeg?alt=media&token=bbc1dd88-9a61-4b05-aa0a-ce8ef3438872\",\n            \"startAt\": \"2025-01-25T23:03:03.500Z\",\n            \"endAt\": \"2026-01-25T23:03:03.500Z\",\n            \"isActive\": true\n        }\n    ],\n    \"warnings\": [],\n    \"errors\": []\n}"}],"_postman_id":"dd84e7d4-e59e-4ef7-9dbb-6d8a58d8cc6d"},{"name":"Deletar Grade","id":"f2fc5770-1810-41d9-8ef2-be3dd0e4f08f","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"DELETE","header":[],"url":"http://127.0.0.1:5002/api/v1/XYZ/schedules/XYZ","auth":{"type":"apikey","apikey":{"basicConfig":[{"key":"key","value":"x-api-key"},{"key":"value","value":"{{apiKey}}"}]},"isInherited":true,"source":{"_postman_id":"8a359981-f1f8-4d72-9cd7-3dc976c95841","id":"8a359981-f1f8-4d72-9cd7-3dc976c95841","name":"Documentação de API do Moovz","type":"collection"}},"urlObject":{"protocol":"http","port":"5002","path":["api","v1","XYZ","schedules","XYZ"],"host":["127","0","0","1"],"query":[],"variable":[]}},"response":[{"id":"c3af2212-2ac6-46fa-bc83-405942a24105","name":"Deletar Grade","originalRequest":{"method":"DELETE","header":[],"url":"http://127.0.0.1:5002/api/v1/XYZ/schedules/XYZ"},"status":"OK","code":200,"_postman_previewlanguage":"json","header":[{"key":"x-powered-by","value":"Express"},{"key":"vary","value":"Origin, Accept-Encoding, Authorization, Cookie"},{"key":"content-type","value":"application/json; charset=utf-8"},{"key":"content-length","value":"58"},{"key":"etag","value":"W/\"3a-S1Yy5t9uXAHhWBlEzpGd3PA6GQ0\""},{"key":"date","value":"Tue, 04 Feb 2025 11:44:21 GMT"},{"key":"connection","value":"keep-alive"},{"key":"keep-alive","value":"timeout=5"},{"key":"cache-control","value":"private"}],"cookie":[],"responseTime":null,"body":"{\n    \"status\": \"success\",\n    \"data\": null,\n    \"warnings\": [],\n    \"errors\": []\n}"}],"_postman_id":"f2fc5770-1810-41d9-8ef2-be3dd0e4f08f"}],"id":"e68fddcd-48e7-4bca-a212-67ac8e3a4851","description":"<p><strong>O que são Grades de Horário?</strong><br />Grades de horário são modelos de planejamento usados por academias para definir <strong>Aulas</strong> (templates de Sessões de Aulas). Cada grade pode estar <strong>ativa</strong> ou <strong>inativa</strong>.</p>\n<h3 id=\"funcionalidades\"><strong>Funcionalidades</strong></h3>\n<ul>\n<li><p><strong>Criar Grade</strong>:<br />  <code>POST /{gymID}/schedules</code><br />  Cria uma grade vazia (sem aulas) associada à academia.</p>\n</li>\n<li><p><strong>Editar Grade</strong>:<br />  <code>PATCH /{gymID}/schedules/{scheduleID}</code><br />  Atualiza dados da Grade de Horários.</p>\n</li>\n<li><p><strong>Buscar Grade</strong>:<br />  <code>GET /{gymID}/schedules/{scheduleID}</code><br />  Retorna detalhes da Grade de Horários.</p>\n</li>\n<li><p><strong>Listar Grades</strong>:<br />  <code>GET /{gymID}/schedules</code><br />  Lista todas as grades da academia.</p>\n</li>\n<li><p><strong>Deletar Grade</strong>:<br />  <code>DELETE /{gymID}/schedules/{scheduleID}</code>Deleta uma grade da academia.</p>\n</li>\n</ul>\n<h3 id=\"exemplo-de-documento-de-grade-de-horário-schedule\">Exemplo de Documento de Grade de Horário (Schedule)</h3>\n<p>A seguir, um exemplo de documento que representa uma Grade de Horários, com dados fictícios:</p>\n<pre class=\"click-to-expand-wrapper is-snippet-wrapper\"><code class=\"language-json\">{\n  \"id\": \"x5cdsScnds6cds7dcDCLk\",\n  \"name\": \"Grade Teste\",\n  \"baseCapacity\": 30,\n  \"baseDurationInSeconds\": 3600,\n  \"coverURL\": \"https://www.coverurlexample.com\",\n  \"startAt\": \"2025-01-25T23:03:03.500Z\",\n  \"endAt\": \"2026-01-25T23:03:03.500Z\",\n  \"isActive\": true\n}\n\n</code></pre>\n<p><strong>Explicação dos Campos:</strong></p>\n<ul>\n<li><p><strong>id:</strong> Identificador único da grade de horário.</p>\n</li>\n<li><p><strong>name:</strong> Nome da grade.</p>\n</li>\n<li><p><strong>baseCapacity:</strong> Capacidade base (número de alunos) definida para a grade.</p>\n</li>\n<li><p><strong>baseDurationInSeconds:</strong> Duração base da grade em segundos.</p>\n</li>\n<li><p><strong>coverURL:</strong> URL da imagem de capa associada à grade.</p>\n</li>\n<li><p><strong>startAt:</strong> Data e hora de início da grade (formato ISO 8601).</p>\n</li>\n<li><p><strong>endAt:</strong> Data e hora de término da grade.</p>\n</li>\n<li><p><strong>isActive:</strong> Indica se a grade está ativa (booleano).</p>\n</li>\n</ul>\n<h3 id=\"regras-de-negócio\"><strong>Regras de Negócio</strong></h3>\n<ul>\n<li><p>Aulas devem ser adicionadas após a criação da grade (<em>endpoints específicos para gerenciamento de aulas</em>).</p>\n</li>\n<li><p>Apenas aulas de <strong>Grades Ativas</strong> são exibidas para o usuário</p>\n</li>\n<li><p>Edições em grades ativas afetam sessões futuras (não retroativas).</p>\n</li>\n</ul>\n","_postman_id":"e68fddcd-48e7-4bca-a212-67ac8e3a4851","auth":{"type":"apikey","apikey":{"basicConfig":[{"key":"key","value":"x-api-key"},{"key":"value","value":"{{apiKey}}"}]},"isInherited":true,"source":{"_postman_id":"8a359981-f1f8-4d72-9cd7-3dc976c95841","id":"8a359981-f1f8-4d72-9cd7-3dc976c95841","name":"Documentação de API do Moovz","type":"collection"}}},{"name":"Aulas","item":[{"name":"Criar Aula","id":"46dc7fea-8c70-4f0d-a41f-56a9e36da488","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"POST","header":[],"body":{"mode":"raw","raw":"{\n    \"name\": \"Nova aula teste\",\n    \"durationInSeconds\": 3600,\n    \"coverURL\": \"https://www.imagemclass.com.br\",\n    \"weekOffsetInSeconds\": 216000,\n    \"capacity\": 30\n}","options":{"raw":{"language":"json"}}},"url":"http://127.0.0.1:5002/api/v1/XYZ/schedules/XYZ/classes","auth":{"type":"apikey","apikey":{"basicConfig":[{"key":"key","value":"x-api-key"},{"key":"value","value":"{{apiKey}}"}]},"isInherited":true,"source":{"_postman_id":"8a359981-f1f8-4d72-9cd7-3dc976c95841","id":"8a359981-f1f8-4d72-9cd7-3dc976c95841","name":"Documentação de API do Moovz","type":"collection"}},"urlObject":{"protocol":"http","port":"5002","path":["api","v1","XYZ","schedules","XYZ","classes"],"host":["127","0","0","1"],"query":[],"variable":[]}},"response":[{"id":"5ec807bb-54e1-4e5d-9ff9-561dd4be5536","name":"Sucesso","originalRequest":{"method":"POST","header":[],"body":{"mode":"raw","raw":"{\n    \"name\": \"Nova aula teste\",\n    \"durationInSeconds\": 3600,\n    \"coverURL\": \"https://www.imagemclass.com.br\",\n    \"weekOffsetInSeconds\": 216000,\n    \"capacity\": 30\n}","options":{"raw":{"language":"json"}}},"url":"http://127.0.0.1:5002/api/v1/XYZ/schedules/XYZ/classes"},"status":"Created","code":201,"_postman_previewlanguage":"json","header":[{"key":"x-powered-by","value":"Express"},{"key":"vary","value":"Origin, Accept-Encoding, Authorization, Cookie"},{"key":"content-type","value":"application/json; charset=utf-8"},{"key":"content-length","value":"58"},{"key":"etag","value":"W/\"3a-S1Yy5t9uXAHhWBlEzpGd3PA6GQ0\""},{"key":"date","value":"Tue, 04 Feb 2025 20:19:32 GMT"},{"key":"connection","value":"keep-alive"},{"key":"keep-alive","value":"timeout=5"},{"key":"cache-control","value":"private"}],"cookie":[],"responseTime":null,"body":"{\n    \"status\": \"success\",\n    \"data\": null,\n    \"warnings\": [],\n    \"errors\": []\n}"}],"_postman_id":"46dc7fea-8c70-4f0d-a41f-56a9e36da488"},{"name":"Editar Aula","id":"631b572e-b9c5-4ab8-98cb-3d7fb963317f","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"PATCH","header":[],"body":{"mode":"raw","raw":"{\n    \"name\": \"Aula Editada\",\n    \"durationInSeconds\": 4000,\n    \"coverURL\": \"https://www.imagemeditada.com.br\",\n    \"weekOffsetInSeconds\": 300000,\n    \"capacity\": 80\n}","options":{"raw":{"language":"json"}}},"url":"http://127.0.0.1:5002/api/v1/XYZ/schedules/XYZ/classes/XYZ","auth":{"type":"apikey","apikey":{"basicConfig":[{"key":"key","value":"x-api-key"},{"key":"value","value":"{{apiKey}}"}]},"isInherited":true,"source":{"_postman_id":"8a359981-f1f8-4d72-9cd7-3dc976c95841","id":"8a359981-f1f8-4d72-9cd7-3dc976c95841","name":"Documentação de API do Moovz","type":"collection"}},"urlObject":{"protocol":"http","port":"5002","path":["api","v1","XYZ","schedules","XYZ","classes","XYZ"],"host":["127","0","0","1"],"query":[],"variable":[]}},"response":[{"id":"55942f74-9729-4838-bfea-da2582b51afe","name":"Sucesso","originalRequest":{"method":"PATCH","header":[],"body":{"mode":"raw","raw":"{\n    \"name\": \"Novo Nome\",\n    \"durationInSeconds\": 40000,\n    \"coverURL\": \"https://www.novaimagemclass.com.br\",\n    \"weekOffsetInSeconds\": 216000,\n    \"capacity\": 30\n}","options":{"raw":{"language":"json"}}},"url":"http://127.0.0.1:5002/api/v1/XYZ/schedules/XYZ/classes/XYZ"},"status":"OK","code":200,"_postman_previewlanguage":"json","header":[{"key":"x-powered-by","value":"Express"},{"key":"vary","value":"Origin, Accept-Encoding, Authorization, Cookie"},{"key":"content-type","value":"application/json; charset=utf-8"},{"key":"content-length","value":"58"},{"key":"etag","value":"W/\"3a-S1Yy5t9uXAHhWBlEzpGd3PA6GQ0\""},{"key":"date","value":"Tue, 04 Feb 2025 21:10:09 GMT"},{"key":"connection","value":"keep-alive"},{"key":"keep-alive","value":"timeout=5"},{"key":"cache-control","value":"private"}],"cookie":[],"responseTime":null,"body":"{\n    \"status\": \"success\",\n    \"data\": null,\n    \"warnings\": [],\n    \"errors\": []\n}"}],"_postman_id":"631b572e-b9c5-4ab8-98cb-3d7fb963317f"},{"name":"Buscar Aula","id":"70f518dc-1485-4ce1-8bcb-6cc91826e5c3","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"GET","header":[],"url":"http://127.0.0.1:5002/api/v1/XYZ/schedules/XYZ/classes/XYZ","auth":{"type":"apikey","apikey":{"basicConfig":[{"key":"key","value":"x-api-key"},{"key":"value","value":"{{apiKey}}"}]},"isInherited":true,"source":{"_postman_id":"8a359981-f1f8-4d72-9cd7-3dc976c95841","id":"8a359981-f1f8-4d72-9cd7-3dc976c95841","name":"Documentação de API do Moovz","type":"collection"}},"urlObject":{"protocol":"http","port":"5002","path":["api","v1","XYZ","schedules","XYZ","classes","XYZ"],"host":["127","0","0","1"],"query":[],"variable":[]}},"response":[],"_postman_id":"70f518dc-1485-4ce1-8bcb-6cc91826e5c3"},{"name":"Listar Aulas","id":"50b56139-bb99-40be-801f-46b3ca7b3d21","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"GET","header":[],"url":"http://127.0.0.1:5002/api/v1/XYZ/schedules/XYZ/classes","auth":{"type":"apikey","apikey":{"basicConfig":[{"key":"key","value":"x-api-key"},{"key":"value","value":"{{apiKey}}"}]},"isInherited":true,"source":{"_postman_id":"8a359981-f1f8-4d72-9cd7-3dc976c95841","id":"8a359981-f1f8-4d72-9cd7-3dc976c95841","name":"Documentação de API do Moovz","type":"collection"}},"urlObject":{"protocol":"http","port":"5002","path":["api","v1","XYZ","schedules","XYZ","classes"],"host":["127","0","0","1"],"query":[],"variable":[]}},"response":[],"_postman_id":"50b56139-bb99-40be-801f-46b3ca7b3d21"},{"name":"Deletar Aula","id":"071474c9-acc4-4572-8921-4c70cb5e08f8","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"DELETE","header":[],"url":"http://127.0.0.1:5002/api/v1/XYZ/schedules/XYZ/classes/XYZ","auth":{"type":"apikey","apikey":{"basicConfig":[{"key":"key","value":"x-api-key"},{"key":"value","value":"{{apiKey}}"}]},"isInherited":true,"source":{"_postman_id":"8a359981-f1f8-4d72-9cd7-3dc976c95841","id":"8a359981-f1f8-4d72-9cd7-3dc976c95841","name":"Documentação de API do Moovz","type":"collection"}},"urlObject":{"protocol":"http","port":"5002","path":["api","v1","XYZ","schedules","XYZ","classes","XYZ"],"host":["127","0","0","1"],"query":[],"variable":[]}},"response":[{"id":"a9d5ad30-c759-469f-a353-08806365564e","name":"Sucesso","originalRequest":{"method":"DELETE","header":[],"url":"http://127.0.0.1:5002/api/v1/XYZ/schedules/XYZ/classes/XYZ"},"status":"OK","code":200,"_postman_previewlanguage":"json","header":[{"key":"x-powered-by","value":"Express"},{"key":"vary","value":"Origin, Accept-Encoding, Authorization, Cookie"},{"key":"content-type","value":"application/json; charset=utf-8"},{"key":"content-length","value":"58"},{"key":"etag","value":"W/\"3a-S1Yy5t9uXAHhWBlEzpGd3PA6GQ0\""},{"key":"date","value":"Wed, 05 Feb 2025 03:02:27 GMT"},{"key":"connection","value":"keep-alive"},{"key":"keep-alive","value":"timeout=5"},{"key":"cache-control","value":"private"}],"cookie":[],"responseTime":null,"body":"{\n    \"status\": \"success\",\n    \"data\": null,\n    \"warnings\": [],\n    \"errors\": []\n}"}],"_postman_id":"071474c9-acc4-4572-8921-4c70cb5e08f8"}],"id":"0ae23cf1-fe9a-4074-8814-d05518d342d2","description":"<p><strong>O que são Aulas?</strong><br />Aulas são modelos de recorrência semanal que definem <strong>horários, dias e detalhes</strong> para a geração automática de Sessões de Aula. Cada aula pertence a uma <strong>Grade de Horário</strong> específica e serve como template para sessões futuras.</p>\n<h3 id=\"funcionalidades\"><strong>Funcionalidades</strong></h3>\n<ul>\n<li><p><strong>Criar Aula</strong>:<br />  <code>POST /{gymID}/schedules/{scheduleID}/classes</code><br />  Define uma aula com recorrência semanal (ex.: toda Segunda, 18h).</p>\n</li>\n<li><p><strong>Editar Aula</strong>:<br />  <code>PATCH /{gymID}/schedules/{scheduleID}/classes/{classID}</code><br />  Atualiza informações da aula.</p>\n</li>\n<li><p><strong>Buscar Aula</strong>:<br />  <code>GET /{gymID}/schedules/{scheduleID}/classes/{classID}</code><br />  Retorna detalhes da aula.</p>\n</li>\n<li><p><strong>Listar Aulas</strong>:<br />  <code>GET /{gymID}/schedules/{scheduleID}/classes</code><br />  Lista todas as aulas vinculadas à grade.</p>\n</li>\n<li><p><strong>Deletar Aula</strong>:<br />  <code>DELETE /{gymID}/schedules/{scheduleID}/classes/{classID}</code>Deleta a aula selecionada.</p>\n</li>\n</ul>\n<h3 id=\"exemplo-de-documento-de-aula-class\">Exemplo de Documento de Aula (Class)</h3>\n<p>A seguir, um exemplo de documento que representa uma Aula, com dados fictícios:</p>\n<pre class=\"click-to-expand-wrapper is-snippet-wrapper\"><code class=\"language-json\">{\n  \"id\": \"abc123\",\n  \"name\": \"Aula de Hiit\",\n  \"coverURL\": \"https://www.imagemurl.com\",\n  \"durationInSeconds\": 3600,\n  \"capacity\": 30,\n  \"weekStartOffsetInSeconds\": 518400\n}\n\n</code></pre>\n<p><strong>Descrição dos campos:</strong></p>\n<ul>\n<li><p><strong>id:</strong> Identificador único da aula.</p>\n</li>\n<li><p><strong>name:</strong> Nome da aula.</p>\n</li>\n<li><p><strong>coverURL:</strong> URL da imagem de capa associada à aula.</p>\n</li>\n<li><p><strong>durationInSeconds:</strong> Duração da aula em segundos.</p>\n</li>\n<li><p><strong>capacity:</strong> Capacidade máxima de alunos para a aula.</p>\n</li>\n<li><p><strong>weekStartOffsetInSeconds:</strong> Offset (em segundos) que indica o início da semana para o agendamento da aula.</p>\n</li>\n</ul>\n<h3 id=\"regras-de-negócio\"><strong>Regras de Negócio</strong></h3>\n<ul>\n<li><p>Aulas só existem dentro de uma <strong>Grade de Horário</strong>.</p>\n</li>\n<li><p>Edições afetam apenas <strong>sessões futuras</strong> (não retroativas).</p>\n</li>\n<li><p>A exclusão de uma aula cancela a geração automática de Sessões de Aulas futuras, mas não remove as Sessões passadas.</p>\n</li>\n</ul>\n","_postman_id":"0ae23cf1-fe9a-4074-8814-d05518d342d2","auth":{"type":"apikey","apikey":{"basicConfig":[{"key":"key","value":"x-api-key"},{"key":"value","value":"{{apiKey}}"}]},"isInherited":true,"source":{"_postman_id":"8a359981-f1f8-4d72-9cd7-3dc976c95841","id":"8a359981-f1f8-4d72-9cd7-3dc976c95841","name":"Documentação de API do Moovz","type":"collection"}}},{"name":"Sessão de Aula","item":[{"name":"Editar Sessão de Aula","id":"ed6fd888-91e3-4a4e-a807-c589df2b99ea","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"PATCH","header":[],"body":{"mode":"raw","raw":"{\n    \"name\": \"Nova aula teste Modificada\",\n    \"coverURL\": \"https://www.imagemclass.com.br\",\n    \"capacity\": 50,\n    \"durationInSeconds\": 0,\n    \"plannedDurationInSeconds\": 4000\n}","options":{"raw":{"language":"json"}}},"url":"http://127.0.0.1:5002/api/v1/XYZ/schedules/XYZ/classes/XYZ/class-sessions/XYZ","auth":{"type":"apikey","apikey":{"basicConfig":[{"key":"key","value":"x-api-key"},{"key":"value","value":"{{apiKey}}"}]},"isInherited":true,"source":{"_postman_id":"8a359981-f1f8-4d72-9cd7-3dc976c95841","id":"8a359981-f1f8-4d72-9cd7-3dc976c95841","name":"Documentação de API do Moovz","type":"collection"}},"urlObject":{"protocol":"http","port":"5002","path":["api","v1","XYZ","schedules","XYZ","classes","XYZ","class-sessions","XYZ"],"host":["127","0","0","1"],"query":[],"variable":[]}},"response":[{"id":"e2bd9777-8229-4ff6-8b2c-b40ae5eb6c2d","name":"Sucesso","originalRequest":{"method":"PATCH","header":[],"body":{"mode":"raw","raw":"{\n    \"name\": \"Nova aula teste Modificada\",\n    \"coverURL\": \"https://www.imagemclass.com.br\",\n    \"capacity\": 50,\n    \"durationInSeconds\": 0,\n    \"plannedDurationInSeconds\": 4000\n}","options":{"raw":{"language":"json"}}},"url":"http://127.0.0.1:5002/api/v1/XYZ/schedules/XYZ/classes/XYZ/class-sessions/XYZ"},"status":"OK","code":200,"_postman_previewlanguage":"json","header":[{"key":"x-powered-by","value":"Express"},{"key":"vary","value":"Origin, Accept-Encoding, Authorization, Cookie"},{"key":"content-type","value":"application/json; charset=utf-8"},{"key":"content-length","value":"58"},{"key":"etag","value":"W/\"3a-S1Yy5t9uXAHhWBlEzpGd3PA6GQ0\""},{"key":"date","value":"Wed, 05 Feb 2025 19:58:28 GMT"},{"key":"connection","value":"keep-alive"},{"key":"keep-alive","value":"timeout=5"},{"key":"cache-control","value":"private"}],"cookie":[],"responseTime":null,"body":"{\n    \"status\": \"success\",\n    \"data\": null,\n    \"warnings\": [],\n    \"errors\": []\n}"}],"_postman_id":"ed6fd888-91e3-4a4e-a807-c589df2b99ea"},{"name":"Listar Sessões de Aula","id":"aa92c41e-6544-4148-8c55-48ed3b386f72","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"GET","header":[],"url":"http://127.0.0.1:5002/api/v1/XYZ/schedules/XYZ/classes/XYZ/class-sessions?date=2025-02-05","auth":{"type":"apikey","apikey":{"basicConfig":[{"key":"key","value":"x-api-key"},{"key":"value","value":"{{apiKey}}"}]},"isInherited":true,"source":{"_postman_id":"8a359981-f1f8-4d72-9cd7-3dc976c95841","id":"8a359981-f1f8-4d72-9cd7-3dc976c95841","name":"Documentação de API do Moovz","type":"collection"}},"urlObject":{"protocol":"http","port":"5002","path":["api","v1","XYZ","schedules","XYZ","classes","XYZ","class-sessions"],"host":["127","0","0","1"],"query":[{"key":"date","value":"2025-02-05"}],"variable":[]}},"response":[{"id":"90d54876-3619-4f82-879c-5c336bf9a05a","name":"Sucesso","originalRequest":{"method":"GET","header":[],"url":{"raw":"http://127.0.0.1:5002/api/v1/XYZ/schedules/XYZ/classes/XYZ/class-sessions?date=2025-02-05","protocol":"http","host":["127","0","0","1"],"port":"5002","path":["api","v1","XYZ","schedules","XYZ","classes","XYZ","class-sessions"],"query":[{"key":"date","value":"2025-02-05"}]}},"status":"OK","code":200,"_postman_previewlanguage":"json","header":[{"key":"x-powered-by","value":"Express"},{"key":"vary","value":"Origin, Accept-Encoding, Authorization, Cookie"},{"key":"content-type","value":"application/json; charset=utf-8"},{"key":"content-length","value":"488"},{"key":"etag","value":"W/\"1e8-nNRZMS3xRvnK4Rui9aX4YmXy9rQ\""},{"key":"date","value":"Wed, 05 Feb 2025 17:44:14 GMT"},{"key":"connection","value":"keep-alive"},{"key":"keep-alive","value":"timeout=5"},{"key":"cache-control","value":"private"}],"cookie":[],"responseTime":null,"body":"{\n    \"status\": \"success\",\n    \"data\": [\n        {\n            \"classID\": \"bf64mdt2\",\n            \"gymID\": \"Io0zObXZ3vMaEn8YUbRU\",\n            \"scheduleID\": \"zf7TCaKGZTkSmihynPhi\",\n            \"name\": \"Nova aula teste\",\n            \"coverURL\": \"https://www.imagemclass.com.br\",\n            \"capacity\": 30,\n            \"durationInSeconds\": 3600,\n            \"plannedDurationInSeconds\": 3600,\n            \"status\": \"OPEN_TO_CHECKIN\",\n            \"scheduledTo\": \"2025-02-05T23:59:59.999Z\",\n            \"createdAt\": \"2025-02-05T17:44:14.810Z\",\n            \"updatedAt\": \"2025-02-05T17:44:14.810Z\",\n            \"startedAt\": null,\n            \"finishedAt\": null,\n            \"trainingSessions\": []\n        }\n    ],\n    \"warnings\": [],\n    \"errors\": []\n}"}],"_postman_id":"aa92c41e-6544-4148-8c55-48ed3b386f72"},{"name":"Buscar Sessão de Aula","id":"bd084dba-bbaf-43a3-8fd3-a3b5f97d1733","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"GET","header":[],"url":"http://127.0.0.1:5002/api/v1/XYZ/schedules/XYZ/classes/XYZ/class-sessions/XYZ","auth":{"type":"apikey","apikey":{"basicConfig":[{"key":"key","value":"x-api-key"},{"key":"value","value":"{{apiKey}}"}]},"isInherited":true,"source":{"_postman_id":"8a359981-f1f8-4d72-9cd7-3dc976c95841","id":"8a359981-f1f8-4d72-9cd7-3dc976c95841","name":"Documentação de API do Moovz","type":"collection"}},"urlObject":{"protocol":"http","port":"5002","path":["api","v1","XYZ","schedules","XYZ","classes","XYZ","class-sessions","XYZ"],"host":["127","0","0","1"],"query":[],"variable":[]}},"response":[{"id":"fe37765d-0dc9-4df2-a23f-816a60e161ef","name":"Sucesso","originalRequest":{"method":"GET","header":[],"url":"http://127.0.0.1:5002/api/v1/XYZ/schedules/XYZ/classes/XYZ/class-sessions/XYZ"},"status":"OK","code":200,"_postman_previewlanguage":"json","header":[{"key":"x-powered-by","value":"Express"},{"key":"vary","value":"Origin, Accept-Encoding, Authorization, Cookie"},{"key":"content-type","value":"application/json; charset=utf-8"},{"key":"content-length","value":"491"},{"key":"etag","value":"W/\"1eb-5DFU1Xq/JTIhbWHuOgSfGoAt6Yo\""},{"key":"date","value":"Wed, 05 Feb 2025 17:40:32 GMT"},{"key":"connection","value":"keep-alive"},{"key":"keep-alive","value":"timeout=5"},{"key":"cache-control","value":"private"}],"cookie":[],"responseTime":null,"body":"{\n    \"status\": \"success\",\n    \"data\": {\n        \"classID\": \"bf64mdt2\",\n        \"gymID\": \"Io0zObXZ3vMaEn8YUbRU\",\n        \"scheduleID\": \"zf7TCaKGZTkSmihynPhi\",\n        \"name\": \"Nova aula teste Modificada\",\n        \"coverURL\": \"https://www.imagemclass.com.br\",\n        \"capacity\": 50,\n        \"durationInSeconds\": 3600,\n        \"plannedDurationInSeconds\": 4000,\n        \"status\": \"CANCELLED\",\n        \"scheduledTo\": \"2025-02-06T23:59:59.999Z\",\n        \"createdAt\": \"2025-02-05T04:10:34.674Z\",\n        \"updatedAt\": \"2025-02-05T04:25:30.689Z\",\n        \"startedAt\": null,\n        \"finishedAt\": null,\n        \"trainingSessions\": []\n    },\n    \"warnings\": [],\n    \"errors\": []\n}"}],"_postman_id":"bd084dba-bbaf-43a3-8fd3-a3b5f97d1733"},{"name":"Finalizar Sessão de Aula","id":"fc8a3368-f18c-4e90-9cc4-c0738ce8ec37","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"DELETE","header":[],"url":"http://127.0.0.1:5002/api/v1/XYZ/schedules/XYZ/classes/XYZ/class-sessions/XYZ","auth":{"type":"apikey","apikey":{"basicConfig":[{"key":"key","value":"x-api-key"},{"key":"value","value":"{{apiKey}}"}]},"isInherited":true,"source":{"_postman_id":"8a359981-f1f8-4d72-9cd7-3dc976c95841","id":"8a359981-f1f8-4d72-9cd7-3dc976c95841","name":"Documentação de API do Moovz","type":"collection"}},"urlObject":{"protocol":"http","port":"5002","path":["api","v1","XYZ","schedules","XYZ","classes","XYZ","class-sessions","XYZ"],"host":["127","0","0","1"],"query":[],"variable":[]}},"response":[{"id":"74a25a69-e985-43b7-ac72-36fa7cb16a3f","name":"Sucesso","originalRequest":{"method":"DELETE","header":[],"url":"http://127.0.0.1:5002/api/v1/XYZ/schedules/XYZ/classes/XYZ/class-sessions/XYZ"},"status":"OK","code":200,"_postman_previewlanguage":"json","header":[{"key":"x-powered-by","value":"Express"},{"key":"vary","value":"Origin, Accept-Encoding, Authorization, Cookie"},{"key":"content-type","value":"application/json; charset=utf-8"},{"key":"content-length","value":"56"},{"key":"etag","value":"W/\"38-TaBnueI9gAsAj9lxMwXgk8+0Bac\""},{"key":"date","value":"Wed, 05 Feb 2025 19:58:47 GMT"},{"key":"connection","value":"keep-alive"},{"key":"keep-alive","value":"timeout=5"},{"key":"cache-control","value":"private"}],"cookie":[],"responseTime":null,"body":"{\n    \"status\": \"success\",\n    \"data\": [],\n    \"warnings\": [],\n    \"errors\": []\n}"}],"_postman_id":"fc8a3368-f18c-4e90-9cc4-c0738ce8ec37"}],"id":"7f92108f-88be-43e4-ad1c-39402e4f4953","description":"<h2 id=\"sessões-de-aula\">Sessões de Aula</h2>\n<h3 id=\"descrição\">Descrição</h3>\n<p>Sessões de Aula são ocorrências geradas automaticamente a partir das Aulas, definindo datas e horários específicos. Elas representam eventos reais no calendário da academia, herdando detalhes da Aula (como horário e duração) e podendo ser ajustadas individualmente para refletir alterações pontuais.</p>\n<h3 id=\"endpoints\">Endpoints</h3>\n<h4 id=\"1-editar-sessão-futura\">1. Editar Sessão Futura</h4>\n<ul>\n<li><p><strong>Método:</strong> POST</p>\n</li>\n<li><p><strong>URL:</strong> <code>/{gymID}/schedules/{scheduleID}/classes/{classID}/class-sessions/{classSessionID}</code></p>\n</li>\n<li><p><strong>Descrição:</strong><br />  Edita os detalhes de uma sessão futura específica. Se a Sessão ainda não tiver sido criada, basta buscá-la usando o endpoint que lista as sessões de aula informando uma data especifica (YYYY-MM-DD), e depois modificá-la. Dessa forma a Sessão dessa data será modificada.</p>\n</li>\n</ul>\n<h4 id=\"2-listar-sessões-de-aula\">2. Listar Sessões de Aula</h4>\n<ul>\n<li><p><strong>Método:</strong> GET</p>\n</li>\n<li><p><strong>URL:</strong> <code>/{gymID}/schedules/{scheduleID}/classes/{classID}/class-sessions</code></p>\n</li>\n<li><p><strong>Descrição:</strong><br />  Lista todas as sessões de uma determinada Aula. Caso seja informada uma data (via query) e a sessão não exista, ela será criada automaticamente.</p>\n</li>\n</ul>\n<h4 id=\"3-obter-sessão-de-aula\">3. Obter Sessão de Aula</h4>\n<ul>\n<li><p><strong>Método:</strong> GET</p>\n</li>\n<li><p><strong>URL:</strong> <code>/{gymID}/schedules/{scheduleID}/classes/{classID}/class-sessions/{classSessionID}</code></p>\n</li>\n<li><p><strong>Descrição:</strong><br />  Retorna os detalhes de uma sessão já criada, identificada pelo seu ID.</p>\n</li>\n</ul>\n<h4 id=\"4-finalizar-sessão-de-aula\">4. Finalizar Sessão de Aula</h4>\n<ul>\n<li><p><strong>Método:</strong> DELETE</p>\n</li>\n<li><p><strong>URL:</strong> <code>/{gymID}/schedules/{scheduleID}/classes/{classID}/class-sessions/{classSessionID}</code></p>\n</li>\n<li><p><strong>Descrição:</strong><br />  Finaliza uma sessão de aula. Se a sessão já foi iniciada, seu status é atualizado para <em>finalizada</em>; se não foi iniciada, a sessão é cancelada.</p>\n</li>\n</ul>\n<h3 id=\"exemplo-de-documento-de-sessão-de-aula-classsession\">Exemplo de Documento de Sessão de Aula (ClassSession)</h3>\n<p>A seguir, um exemplo de documento que representa uma Sessão de Aula, com dados fictícios:</p>\n<pre class=\"click-to-expand-wrapper is-snippet-wrapper\"><code class=\"language-json\">{\n  \"id\": \"5HDUNLQYnJxAiGKQSHfG\",\n  \"classID\": \"h7fpbjpb\",\n  \"gymID\": \"CNwAJrjAaue37pmqCZTD\",\n  \"scheduleID\": \"BZU1APzaMYWaZkRCIHjW\",\n  \"name\": \"Caius Grahco\",\n  \"coverURL\": \"http://127.0.0.1:9199/v0/b/pacto-training-zone.appspot.com/o/teste/WhatsApp Image.jpeg?alt=media&amp;token=282fb3a4-1f35-4a63-9872-cc3074d88a55\",\n  \"capacity\": 20,\n  \"durationInSeconds\": 1544,\n  \"plannedDurationInSeconds\": 3600,\n  \"status\": \"RUNNING\",\n  \"scheduledTo\": \"2025-02-01T00:00:00.000Z\",\n  \"trainingSessions\": [\n    {\n      \"bandPin\": \"42\",\n      \"kcalBurned\": 0,\n      \"rank\": 0,\n      \"score\": 0,\n      \"status\": \"CHECKIN_DONE\",\n      \"userID\": \"HnGSRq46s2rxPCSyZDSTp2NUgzwJ\"\n    }\n  ]\n}\n\n</code></pre>\n<p><strong>Explicação dos Campos:</strong></p>\n<ul>\n<li><p><strong>id:</strong> Identificador único da sessão de aula.</p>\n</li>\n<li><p><strong>classID:</strong> Identificador da aula associada.</p>\n</li>\n<li><p><strong>gymID:</strong> Identificador da academia.</p>\n</li>\n<li><p><strong>scheduleID:</strong> Identificador da grade de horário.</p>\n</li>\n<li><p><strong>name:</strong> Nome da sessão de treino (geralmente igual ao nome da aula).</p>\n</li>\n<li><p><strong>coverURL:</strong> URL da imagem de capa da sessão.</p>\n</li>\n<li><p><strong>capacity:</strong> Capacidade máxima para a sessão.</p>\n</li>\n<li><p><strong>durationInSeconds:</strong> Duração real da sessão (em segundos).</p>\n</li>\n<li><p><strong>plannedDurationInSeconds:</strong> Duração planejada da sessão (em segundos).</p>\n</li>\n<li><p><strong>status:</strong> Status atual da sessão (ex.: \"RUNNING\").</p>\n</li>\n<li><p><strong>scheduledTo:</strong> Data e hora agendada para o início da sessão (ISO 8601).</p>\n</li>\n<li><p><strong>trainingSessions:</strong> Array com os registros individuais do checkin (sessão de treino) realizados pelos alunos.</p>\n</li>\n</ul>\n<hr />\n<h2 id=\"regras-de-negócio\">Regras de Negócio</h2>\n<ul>\n<li><p><strong>Sessões de Aula:</strong></p>\n<ul>\n<li><p>Sessões em andamento (no dia atual) não podem ser editadas ou canceladas.</p>\n</li>\n<li><p>As sessões são geradas automaticamente com base na recorrência semanal da Aula.</p>\n</li>\n<li><p>As sessões futuras que forem canceladas não serão mostradas no calendário de aulas.</p>\n</li>\n</ul>\n</li>\n</ul>\n","_postman_id":"7f92108f-88be-43e4-ad1c-39402e4f4953","auth":{"type":"apikey","apikey":{"basicConfig":[{"key":"key","value":"x-api-key"},{"key":"value","value":"{{apiKey}}"}]},"isInherited":true,"source":{"_postman_id":"8a359981-f1f8-4d72-9cd7-3dc976c95841","id":"8a359981-f1f8-4d72-9cd7-3dc976c95841","name":"Documentação de API do Moovz","type":"collection"}}},{"name":"Sessão de Treino","item":[{"name":"Realizar Checkin","id":"05dc7df6-acfd-428c-9e87-eb0a457cd325","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"POST","header":[],"body":{"mode":"raw","raw":"{\n    \"bandPin\": \"90\"\n}","options":{"raw":{"language":"json"}}},"url":"http://127.0.0.1:5002/api/v1/XYZ/schedules/XYZ/classes/XYZ/class-sessions/XYZ/checkins/{{studentID}}","auth":{"type":"apikey","apikey":{"basicConfig":[{"key":"key","value":"x-api-key"},{"key":"value","value":"{{apiKey}}"}]},"isInherited":true,"source":{"_postman_id":"8a359981-f1f8-4d72-9cd7-3dc976c95841","id":"8a359981-f1f8-4d72-9cd7-3dc976c95841","name":"Documentação de API do Moovz","type":"collection"}},"urlObject":{"protocol":"http","port":"5002","path":["api","v1","XYZ","schedules","XYZ","classes","XYZ","class-sessions","XYZ","checkins","{{studentID}}"],"host":["127","0","0","1"],"query":[],"variable":[]}},"response":[{"id":"f595ac14-2897-4665-a3ce-cfe326894046","name":"Sucesso","originalRequest":{"method":"POST","header":[],"body":{"mode":"raw","raw":"{\n    \"bandPin\": \"90\"\n}","options":{"raw":{"language":"json"}}},"url":"http://127.0.0.1:5002/api/v1/XYZ/schedules/XYZ/classes/XYZ/class-sessions/XYZ/checkins/{{studentID}}"},"status":"Created","code":201,"_postman_previewlanguage":"json","header":[{"key":"x-powered-by","value":"Express"},{"key":"vary","value":"Origin, Accept-Encoding, Authorization, Cookie"},{"key":"content-type","value":"application/json; charset=utf-8"},{"key":"content-length","value":"58"},{"key":"etag","value":"W/\"3a-S1Yy5t9uXAHhWBlEzpGd3PA6GQ0\""},{"key":"date","value":"Wed, 05 Feb 2025 19:48:02 GMT"},{"key":"connection","value":"keep-alive"},{"key":"keep-alive","value":"timeout=5"},{"key":"cache-control","value":"private"}],"cookie":[],"responseTime":null,"body":"{\n    \"status\": \"success\",\n    \"data\": null,\n    \"warnings\": [],\n    \"errors\": []\n}"}],"_postman_id":"05dc7df6-acfd-428c-9e87-eb0a457cd325"},{"name":"Atualizar Pulseira do Aluno","id":"c42bd627-35d5-4c0d-9352-ee8973bbc7bf","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"PATCH","header":[],"body":{"mode":"raw","raw":"{\n    \"newBandPin\": \"80\"\n}","options":{"raw":{"language":"json"}}},"url":"http://127.0.0.1:5002/api/v1/XYZ/schedules/XYZ/classes/XYZ/class-sessions/XYZ/checkins/{{studentID}}","auth":{"type":"apikey","apikey":{"basicConfig":[{"key":"key","value":"x-api-key"},{"key":"value","value":"{{apiKey}}"}]},"isInherited":true,"source":{"_postman_id":"8a359981-f1f8-4d72-9cd7-3dc976c95841","id":"8a359981-f1f8-4d72-9cd7-3dc976c95841","name":"Documentação de API do Moovz","type":"collection"}},"urlObject":{"protocol":"http","port":"5002","path":["api","v1","XYZ","schedules","XYZ","classes","XYZ","class-sessions","XYZ","checkins","{{studentID}}"],"host":["127","0","0","1"],"query":[],"variable":[]}},"response":[{"id":"b33b54bf-2fd5-42cd-98d1-3d2de58401dd","name":"Sucesso","originalRequest":{"method":"PATCH","header":[],"body":{"mode":"raw","raw":"{\n    \"newBandPin\": \"80\"\n}","options":{"raw":{"language":"json"}}},"url":"http://127.0.0.1:5002/api/v1/XYZ/schedules/XYZ/classes/XYZ/class-sessions/XYZ/checkins/{{studentID}}"},"status":"OK","code":200,"_postman_previewlanguage":"json","header":[{"key":"x-powered-by","value":"Express"},{"key":"vary","value":"Origin, Accept-Encoding, Authorization, Cookie"},{"key":"content-type","value":"application/json; charset=utf-8"},{"key":"content-length","value":"56"},{"key":"etag","value":"W/\"38-TaBnueI9gAsAj9lxMwXgk8+0Bac\""},{"key":"date","value":"Wed, 05 Feb 2025 19:48:55 GMT"},{"key":"connection","value":"keep-alive"},{"key":"keep-alive","value":"timeout=5"},{"key":"cache-control","value":"private"}],"cookie":[],"responseTime":null,"body":"{\n    \"status\": \"success\",\n    \"data\": [],\n    \"warnings\": [],\n    \"errors\": []\n}"}],"_postman_id":"c42bd627-35d5-4c0d-9352-ee8973bbc7bf"},{"name":"Buscar Checkin","id":"628fa996-d54d-48ca-8048-c66692be0ab6","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"GET","header":[],"url":"http://127.0.0.1:5002/api/v1/XYZ/schedules/XYZ/classes/XYZ/class-sessions/XYZ/checkins/{{studentID}}","auth":{"type":"apikey","apikey":{"basicConfig":[{"key":"key","value":"x-api-key"},{"key":"value","value":"{{apiKey}}"}]},"isInherited":true,"source":{"_postman_id":"8a359981-f1f8-4d72-9cd7-3dc976c95841","id":"8a359981-f1f8-4d72-9cd7-3dc976c95841","name":"Documentação de API do Moovz","type":"collection"}},"urlObject":{"protocol":"http","port":"5002","path":["api","v1","XYZ","schedules","XYZ","classes","XYZ","class-sessions","XYZ","checkins","{{studentID}}"],"host":["127","0","0","1"],"query":[],"variable":[]}},"response":[{"id":"f19540a4-9751-4ee4-8135-ff8cde80a0f8","name":"Sucesso","originalRequest":{"method":"GET","header":[],"url":"http://127.0.0.1:5002/api/v1/XYZ/schedules/XYZ/classes/XYZ/class-sessions/XYZ/checkins/{{studentID}}"},"status":"OK","code":200,"_postman_previewlanguage":"json","header":[{"key":"x-powered-by","value":"Express"},{"key":"vary","value":"Origin, Accept-Encoding, Authorization, Cookie"},{"key":"content-type","value":"application/json; charset=utf-8"},{"key":"content-length","value":"794"},{"key":"etag","value":"W/\"31a-5Kib2iA73VFMw1mgqMPHT/M4BzQ\""},{"key":"date","value":"Wed, 05 Feb 2025 19:57:51 GMT"},{"key":"connection","value":"keep-alive"},{"key":"keep-alive","value":"timeout=5"},{"key":"cache-control","value":"private"}],"cookie":[],"responseTime":null,"body":"{\n    \"status\": \"success\",\n    \"data\": {\n        \"gymID\": \"Io0zObXZ3vMaEn8YUbRU\",\n        \"scheduleID\": \"zf7TCaKGZTkSmihynPhi\",\n        \"classID\": \"bf64mdt2\",\n        \"classSessionID\": \"1F8huaLJS9HZM9ppomJ8\",\n        \"trainingSession\": {\n            \"band\": {\n                \"id\": \"9TKY7YY86XhcSQlcvFtz\",\n                \"pin\": \"90\",\n                \"lastBatteryPercentage\": null\n            },\n            \"durationInSeconds\": 0,\n            \"kcalBurned\": 0,\n            \"rank\": 0,\n            \"score\": 0,\n            \"status\": \"CHECKIN_DONE\",\n            \"student\": {\n                \"id\": \"GUlqFDLiuTlAU84K8xv6iA9e6X9N\",\n                \"name\": \"Luan Teste\",\n                \"photoURL\": \"http://localhost:9199/v0/b/pacto-training-zone.appspot.com/o/user-uploads%2FGUlqFDLiuTlAU84K8xv6iA9e6X9N%2Fprofile-picture.jpeg?alt=media&token=dd529351-0cce-45da-90c2-b47b1fcd1acd\",\n                \"age\": 26,\n                \"weightInGram\": 100000,\n                \"heightInCm\": 190,\n                \"sex\": \"M\"\n            },\n            \"finishedAt\": null,\n            \"startedAt\": null,\n            \"zoneModelData\": {\n                \"id\": null,\n                \"name\": null,\n                \"targetZoneKey\": null\n            },\n            \"zonesModel\": null\n        }\n    },\n    \"warnings\": [],\n    \"errors\": []\n}"}],"_postman_id":"628fa996-d54d-48ca-8048-c66692be0ab6"},{"name":"Listar Checkins","id":"1ca53534-c01d-4bbe-9ce4-e903fd605fdb","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"GET","header":[],"body":{"mode":"raw","raw":"","options":{"raw":{"language":"json"}}},"url":"http://127.0.0.1:5002/api/v1/XYZ/schedules/XYZ/classes/XYZ/class-sessions/XYZ/checkins","auth":{"type":"apikey","apikey":{"basicConfig":[{"key":"key","value":"x-api-key"},{"key":"value","value":"{{apiKey}}"}]},"isInherited":true,"source":{"_postman_id":"8a359981-f1f8-4d72-9cd7-3dc976c95841","id":"8a359981-f1f8-4d72-9cd7-3dc976c95841","name":"Documentação de API do Moovz","type":"collection"}},"urlObject":{"protocol":"http","port":"5002","path":["api","v1","XYZ","schedules","XYZ","classes","XYZ","class-sessions","XYZ","checkins"],"host":["127","0","0","1"],"query":[],"variable":[]}},"response":[{"id":"7007df12-a3ca-435b-a8d5-b786d1ab8dbf","name":"Sucesso","originalRequest":{"method":"GET","header":[],"body":{"mode":"raw","raw":"","options":{"raw":{"language":"json"}}},"url":"http://127.0.0.1:5002/api/v1/XYZ/schedules/XYZ/classes/XYZ/class-sessions/XYZ/checkins"},"status":"OK","code":200,"_postman_previewlanguage":"json","header":[{"key":"x-powered-by","value":"Express"},{"key":"vary","value":"Origin, Accept-Encoding, Authorization, Cookie"},{"key":"content-type","value":"application/json; charset=utf-8"},{"key":"content-length","value":"796"},{"key":"etag","value":"W/\"31c-xCI/hDHP3e8GPcLbPagvCYU11fc\""},{"key":"date","value":"Wed, 05 Feb 2025 19:58:08 GMT"},{"key":"connection","value":"keep-alive"},{"key":"keep-alive","value":"timeout=5"},{"key":"cache-control","value":"private"}],"cookie":[],"responseTime":null,"body":"{\n    \"status\": \"success\",\n    \"data\": [\n        {\n            \"gymID\": \"Io0zObXZ3vMaEn8YUbRU\",\n            \"scheduleID\": \"zf7TCaKGZTkSmihynPhi\",\n            \"classID\": \"bf64mdt2\",\n            \"classSessionID\": \"1F8huaLJS9HZM9ppomJ8\",\n            \"trainingSession\": {\n                \"band\": {\n                    \"id\": \"9TKY7YY86XhcSQlcvFtz\",\n                    \"pin\": \"90\",\n                    \"lastBatteryPercentage\": null\n                },\n                \"durationInSeconds\": 0,\n                \"kcalBurned\": 0,\n                \"rank\": 0,\n                \"score\": 0,\n                \"status\": \"CHECKIN_DONE\",\n                \"student\": {\n                    \"id\": \"GUlqFDLiuTlAU84K8xv6iA9e6X9N\",\n                    \"name\": \"Luan Teste\",\n                    \"photoURL\": \"http://localhost:9199/v0/b/pacto-training-zone.appspot.com/o/user-uploads%2FGUlqFDLiuTlAU84K8xv6iA9e6X9N%2Fprofile-picture.jpeg?alt=media&token=dd529351-0cce-45da-90c2-b47b1fcd1acd\",\n                    \"age\": 26,\n                    \"weightInGram\": 100000,\n                    \"heightInCm\": 190,\n                    \"sex\": \"M\"\n                },\n                \"finishedAt\": null,\n                \"startedAt\": null,\n                \"zoneModelData\": {\n                    \"id\": null,\n                    \"name\": null,\n                    \"targetZoneKey\": null\n                },\n                \"zonesModel\": null\n            }\n        }\n    ],\n    \"warnings\": [],\n    \"errors\": []\n}"}],"_postman_id":"1ca53534-c01d-4bbe-9ce4-e903fd605fdb"},{"name":"Finalizar Sessão de Treino","id":"1dee3b4d-c7b9-4ad7-9e3e-a9e651c193c4","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"DELETE","header":[],"url":"http://127.0.0.1:5002/api/v1/XYZ/schedules/XYZ/classes/XYZ/class-sessions/XYZ/checkins/{{studentID}}","auth":{"type":"apikey","apikey":{"basicConfig":[{"key":"key","value":"x-api-key"},{"key":"value","value":"{{apiKey}}"}]},"isInherited":true,"source":{"_postman_id":"8a359981-f1f8-4d72-9cd7-3dc976c95841","id":"8a359981-f1f8-4d72-9cd7-3dc976c95841","name":"Documentação de API do Moovz","type":"collection"}},"urlObject":{"protocol":"http","port":"5002","path":["api","v1","XYZ","schedules","XYZ","classes","XYZ","class-sessions","XYZ","checkins","{{studentID}}"],"host":["127","0","0","1"],"query":[],"variable":[]}},"response":[{"id":"c46ace30-cabb-440e-8272-9d1716e4666d","name":"Sucesso","originalRequest":{"method":"DELETE","header":[],"url":"http://127.0.0.1:5002/api/v1/XYZ/schedules/XYZ/classes/XYZ/class-sessions/XYZ/checkins/{{studentID}}"},"status":"OK","code":200,"_postman_previewlanguage":"json","header":[{"key":"x-powered-by","value":"Express"},{"key":"vary","value":"Origin, Accept-Encoding, Authorization, Cookie"},{"key":"content-type","value":"application/json; charset=utf-8"},{"key":"content-length","value":"56"},{"key":"etag","value":"W/\"38-TaBnueI9gAsAj9lxMwXgk8+0Bac\""},{"key":"date","value":"Wed, 05 Feb 2025 19:47:45 GMT"},{"key":"connection","value":"keep-alive"},{"key":"keep-alive","value":"timeout=5"},{"key":"cache-control","value":"private"}],"cookie":[],"responseTime":null,"body":"{\n    \"status\": \"success\",\n    \"data\": [],\n    \"warnings\": [],\n    \"errors\": []\n}"}],"_postman_id":"1dee3b4d-c7b9-4ad7-9e3e-a9e651c193c4"}],"id":"2156c216-35f2-4c74-a1b3-cfdbb838b53f","description":"<h3 id=\"sessões-de-treino-checkins\">Sessões de Treino (Checkins)</h3>\n<p><strong>Descrição:</strong><br />O processo de checkin permite que um aluno registre sua presença em uma aula para uma data específica. A operação de Checkin cria uma Sessão de Treino (TrainingSession) correspondente à Sessão de Aula informada. Embora a operação seja apresentada como \"Fazer Checkin\", o que é efetivamente criado ou atualizado é uma sessão de treino.</p>\n<hr />\n<h3 id=\"endpoints\">Endpoints</h3>\n<ol>\n<li><p><strong>Fazer Checkin</strong></p>\n<ul>\n<li><p><strong>Path:</strong><br />  <code>/{gymID}/schedules/{scheduleID}/classes/{classID}/class-sessions/{classSessionID}/checkins/{studentID}</code></p>\n</li>\n<li><p><strong>Descrição:</strong><br />  Registra o <strong>checkin</strong> de um aluno em uma <strong>Sessão de Aula</strong>.</p>\n</li>\n</ul>\n</li>\n<li><p><strong>Atualizar Pulseira do Aluno</strong></p>\n<ul>\n<li><p><strong>Método:</strong> PATCH</p>\n</li>\n<li><p><strong>Path:</strong><br />  <code>/{gymID}/schedules/{scheduleID}/classes/{classID}/class-sessions/{classSessionID}/checkins/{studentID}</code></p>\n</li>\n<li><p><strong>Descrição:</strong><br />  Atualiza a pulseira associada ao aluno na <strong>Sessão de Treino,</strong> garantindo que os registros fiquem vinculados ao identificador correto.</p>\n</li>\n<li><p><strong>Parâmetros (no corpo da requisição):</strong></p>\n<ul>\n<li><code>newBandPin</code> (string): Pin da nova pulseira que será utilizada.</li>\n</ul>\n</li>\n</ul>\n</li>\n<li><p><strong>Obter Sessão de Treino</strong></p>\n<ul>\n<li><p><strong>Método:</strong> GET</p>\n</li>\n<li><p><strong>Path:</strong><br />  <code>/{gymID}/schedules/{scheduleID}/classes/{classID}/checkins/class-sessions/{classSessionID}/checkins/{studentID}</code></p>\n</li>\n<li><p><strong>Descrição:</strong><br />  Retorna os detalhes de uma <strong>Sessão de Treino</strong> específica, identificada pelo ID do aluno.</p>\n</li>\n</ul>\n</li>\n<li><p><strong>Listar Sessões de Treino</strong></p>\n<ul>\n<li><p><strong>Método:</strong> GET</p>\n</li>\n<li><p><strong>Path:</strong><br />  <code>/{gymID}/schedules/{scheduleID}/classes/{classID}/class-sessions/{classSessionID}/checkins</code></p>\n</li>\n<li><p><strong>Descrição:</strong><br />  Lista todos os <strong>checkins</strong> realizados para uma determinada <strong>Sessão de Aula</strong>.</p>\n</li>\n</ul>\n</li>\n<li><p><strong>Finalizar Sessão de Treino</strong></p>\n<ul>\n<li><p><strong>Método:</strong> DELETE</p>\n</li>\n<li><p><strong>Path:</strong><br />  <code>/{gymID}/schedules/{scheduleID}/classes/{classID}/checkins/{checkinID}</code></p>\n</li>\n<li><p><strong>Descrição:</strong><br />  Finaliza uma sessão de treino específica. Se a aula ainda não tiver sido iniciada, a sessão de treino é removida; caso a aula já esteja em andamento, a sessão de treino é apenas finalizada.</p>\n</li>\n</ul>\n</li>\n</ol>\n<hr />\n<h3 id=\"model-de-sessão-de-treino-checkin\">Model de Sessão de Treino (Checkin)</h3>\n<p><strong>Exemplo:</strong></p>\n<pre class=\"click-to-expand-wrapper is-snippet-wrapper\"><code class=\"language-json\">{\n  \"gymID\": \"gym789\",\n  \"scheduleID\": \"sched101\",\n  \"classID\": \"class123\",\n  \"classSessionID\": \"session456\",\n  \"trainingSession\": {\n    \"scheduleID\": \"sched101\",\n    \"classID\": \"class123\",\n    \"classSessionID\": \"session456\",\n    \"id\": \"train789\",\n    \"band\": {\n      \"id\": \"band101\",\n      \"pin\": \"84\",\n      \"lastBatteryPercentage\": 1\n    },\n    \"durationInSeconds\": 3600,\n    \"kcalBurned\": 100,\n    \"rank\": 1,\n    \"score\": 50,\n    \"status\": \"FINISHED\",\n    \"student\": {\n      \"id\": \"user123\",\n      \"name\": \"Joaozinho\",\n      \"photoURL\": \"https://example.com/photo.jpg\",\n      \"age\": 30,\n      \"weightInGram\": 73000,\n      \"heightInCm\": 170,\n      \"sex\": \"M\"\n    },\n    \"finishedAt\": \"2025-02-01T02:00:00.000Z\",\n    \"startedAt\": \"2025-02-01T00:00:00.000Z\",\n  \"zoneModelData\": {\n    \"id\": \"default\",\n    \"name\": \"Padrão\",\n    \"targetZoneKey\": \"ZONE4\",\n  },\n  \"zonesModel\": {\n    \"REST\": {\n      \"barHexColor\": \"4a4e54\",\n      \"cardHexColor\": \"4a4e54\",\n      \"durationInSeconds\": 105,\n      \"indicatorLinearGradient\": {\n        \"colors\": [\"00e1ef\", \"014da6\"],\n        \"tileMode\": 0\n      },\n      \"maxHeartRatePercentage\": 0.5,\n      \"minHeartRatePercentage\": 0,\n      \"name\": \"Repouso\",\n      \"scorePointsPerSecond\": 0\n    },\n    \"ZONE1\": {\n      \"barHexColor\": \"01ddff\",\n      \"cardHexColor\": \"01ddff\",\n      \"durationInSeconds\": 30,\n      \"indicatorLinearGradient\": {\n        \"colors\": [\"0043ef\", \"04e1dc\"],\n        \"tileMode\": 0\n      },\n      \"maxHeartRatePercentage\": 0.6,\n      \"minHeartRatePercentage\": 0.5,\n      \"name\": \"Zona 1\",\n      \"scorePointsPerSecond\": 1\n    },\n    \"ZONE2\": {\n      \"barHexColor\": \"0184ff\",\n      \"cardHexColor\": \"0184ff\",\n      \"durationInSeconds\": 50,\n      \"indicatorLinearGradient\": {\n        \"colors\": [\"00e1ef\", \"21ef00\"],\n        \"tileMode\": 0\n      },\n      \"maxHeartRatePercentage\": 0.7,\n      \"minHeartRatePercentage\": 0.6,\n      \"name\": \"Zona 2\",\n      \"scorePointsPerSecond\": 1.5\n    },\n    \"ZONE3\": {\n      \"barHexColor\": \"01cc45\",\n      \"cardHexColor\": \"01cc45\",\n      \"durationInSeconds\": 200,\n      \"indicatorLinearGradient\": {\n        \"colors\": [\"00ef18\", \"efe500\"],\n        \"tileMode\": 0\n      },\n      \"maxHeartRatePercentage\": 0.8,\n      \"minHeartRatePercentage\": 0.7,\n      \"name\": \"Zona 3\",\n      \"scorePointsPerSecond\": 2.5\n    },\n    \"ZONE4\": {\n      \"barHexColor\": \"ff6201\",\n      \"cardHexColor\": \"ff6201\",\n      \"durationInSeconds\": 0,\n      \"indicatorLinearGradient\": {\n        \"colors\": [\"ffa500\", \"ef0000\"],\n        \"tileMode\": 521\n      },\n      \"maxHeartRatePercentage\": 0.9,\n      \"minHeartRatePercentage\": 0.8,\n      \"name\": \"Zona 4\",\n      \"scorePointsPerSecond\": 4\n    },\n    \"ZONE5\": {\n      \"barHexColor\": \"ff0101\",\n      \"cardHexColor\": \"ff0101\",\n      \"durationInSeconds\": 100,\n      \"indicatorLinearGradient\": {\n        \"colors\": [\"cf0612\", \"efe500\"],\n        \"tileMode\": 0\n      },\n      \"maxHeartRatePercentage\": 2,\n      \"minHeartRatePercentage\": 0.9,\n      \"name\": \"Zona 5\",\n      \"scorePointsPerSecond\": 3\n    }\n  }\n}\n\n</code></pre>\n<p><strong>Explicação dos Campos:</strong></p>\n<ul>\n<li><p><strong>gymID:</strong><br />  Identificador único da academia à qual o treinamento pertence.</p>\n</li>\n<li><p><strong>scheduleID:</strong><br />  Identificador da grade de horário (schedule) associada à aula e à sessão.</p>\n</li>\n<li><p><strong>classID:</strong><br />  Identificador da aula à qual a sessão de treino está vinculada.</p>\n</li>\n<li><p><strong>classSessionID:</strong><br />  Identificador da sessão de aula (class session) onde o treinamento ocorreu.</p>\n</li>\n<li><p><strong>band:</strong></p>\n<ul>\n<li><p><strong>lastBatteryPercentage:</strong> Última porcentagem da bateria registrada na pulseira.</p>\n</li>\n<li><p><strong>id:</strong> Identificador único do dispositivo (pulseira).</p>\n</li>\n<li><p><strong>pin:</strong> Código ou pin associado à pulseira.</p>\n</li>\n</ul>\n</li>\n<li><p><strong>classSessionID:</strong></p>\n<ul>\n<li>Identificador da sessão de aula à qual o treinamento (sessão de treino) está vinculado.</li>\n</ul>\n</li>\n<li><p><strong>student:</strong><br />  Objeto que contém os dados do aluno:</p>\n<ul>\n<li><p><strong>age:</strong> Idade do aluno.</p>\n</li>\n<li><p><strong>heightInCm:</strong> Altura do aluno (em centímetros).</p>\n</li>\n<li><p><strong>id:</strong> Identificador único do aluno.</p>\n</li>\n<li><p><strong>name:</strong> Nome completo do aluno.</p>\n</li>\n<li><p><strong>photoURL:</strong> URL da foto de perfil.</p>\n</li>\n<li><p><strong>sex:</strong> Sexo do aluno.</p>\n</li>\n<li><p><strong>weightInGram:</strong> Peso do aluno (em gramas).</p>\n</li>\n</ul>\n</li>\n<li><p><strong>zoneModelData:</strong><br />  Objeto que define o modelo padrão de zona:</p>\n<ul>\n<li><p><strong>id:</strong> Identificador do modelo.</p>\n</li>\n<li><p><strong>name:</strong> Nome do modelo.</p>\n</li>\n<li><p><strong>targetZoneKey:</strong> Chave que define a zona-alvo (ex.: \"ZONE4\").</p>\n</li>\n</ul>\n</li>\n<li><p><strong>zonesModel:</strong><br />  Objeto que mapeia cada zona de treinamento para seus respectivos detalhes:</p>\n<ul>\n<li><p><strong>barHexColor:</strong> Cor hexadecimal para a barra de status da zona.</p>\n</li>\n<li><p><strong>cardHexColor:</strong> Cor hexadecimal para o card ou visualização da zona.</p>\n</li>\n<li><p><strong>durationInSeconds:</strong> Tempo que o aluno dono da Sessão de Treino passou em uma determinada zona.</p>\n</li>\n<li><p><strong>indicatorLinearGradient:</strong> Objeto definindo o gradiente linear usado na indicação:</p>\n<ul>\n<li><p><strong>colors:</strong> Array de cores (hexadecimal) que compõem o gradiente.</p>\n</li>\n<li><p><strong>tileMode:</strong> Modo de repetição do gradiente.</p>\n</li>\n</ul>\n</li>\n<li><p><strong>maxHeartRatePercentage:</strong> Percentual máximo da frequência cardíaca para a zona.</p>\n</li>\n<li><p><strong>minHeartRatePercentage:</strong> Percentual mínimo da frequência cardíaca para a zona.</p>\n</li>\n<li><p><strong>name:</strong> Nome da zona.</p>\n</li>\n<li><p><strong>scorePointsPerSecond:</strong> Pontos acumulados por segundo na zona.</p>\n</li>\n</ul>\n</li>\n</ul>\n","_postman_id":"2156c216-35f2-4c74-a1b3-cfdbb838b53f","auth":{"type":"apikey","apikey":{"basicConfig":[{"key":"key","value":"x-api-key"},{"key":"value","value":"{{apiKey}}"}]},"isInherited":true,"source":{"_postman_id":"8a359981-f1f8-4d72-9cd7-3dc976c95841","id":"8a359981-f1f8-4d72-9cd7-3dc976c95841","name":"Documentação de API do Moovz","type":"collection"}}},{"name":"Alunos","item":[{"name":"Buscar dados do Aluno","id":"4b8bb66a-8e93-4d64-8bd6-ec11fd383af6","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"GET","header":[],"url":"http://127.0.0.1:5002/api/v1/XYZ/students/{{studentID}}","auth":{"type":"apikey","apikey":{"basicConfig":[{"key":"key","value":"x-api-key"},{"key":"value","value":"{{apiKey}}"}]},"isInherited":true,"source":{"_postman_id":"8a359981-f1f8-4d72-9cd7-3dc976c95841","id":"8a359981-f1f8-4d72-9cd7-3dc976c95841","name":"Documentação de API do Moovz","type":"collection"}},"urlObject":{"protocol":"http","port":"5002","path":["api","v1","XYZ","students","{{studentID}}"],"host":["127","0","0","1"],"query":[],"variable":[]}},"response":[{"id":"6a7365dd-8e96-4667-b062-e4bed95616f0","name":"Sucesso","originalRequest":{"method":"GET","header":[],"url":"http://127.0.0.1:5002/api/v1/XYZ/students/{{studentID}}"},"status":"OK","code":200,"_postman_previewlanguage":"json","header":[{"key":"x-powered-by","value":"Express"},{"key":"vary","value":"Origin, Accept-Encoding, Authorization, Cookie"},{"key":"content-type","value":"application/json; charset=utf-8"},{"key":"content-length","value":"456"},{"key":"etag","value":"W/\"1c8-w0WIlEpuOFJrTaJI3l2WRKrhuyw\""},{"key":"date","value":"Wed, 05 Feb 2025 03:09:25 GMT"},{"key":"connection","value":"keep-alive"},{"key":"keep-alive","value":"timeout=5"},{"key":"cache-control","value":"private"}],"cookie":[],"responseTime":null,"body":"{\n    \"status\": \"success\",\n    \"data\": {\n        \"id\": \"DSNh33A270M0iy8HIJpbokjW4EWP\",\n        \"name\": \"Jane\",\n        \"birthDate\": \"1999-08-03T00:00:00.000Z\",\n        \"photoURL\": \"https://fastly.picsum.photos/id/735/200/300.jpg?hmac=1a236E3f0SNOHOLEh3dxu5_WIFvWaNKYBSZXBWpi6xE\",\n        \"email\": \"example@gmail.com\",\n        \"phoneNumber\": \"11111111111\",\n        \"cpf\": \"87955547004\",\n        \"sex\": \"M\",\n        \"weightInGram\": 80000,\n        \"heightInCm\": 180,\n        \"createdAt\": \"2025-02-05T03:05:15.585Z\",\n        \"updatedAt\": \"2025-02-05T03:09:00.822Z\"\n    },\n    \"warnings\": [],\n    \"errors\": []\n}"}],"_postman_id":"4b8bb66a-8e93-4d64-8bd6-ec11fd383af6"},{"name":"Listar Alunos da Academia","id":"fe0c20f4-dfad-43f4-8ab3-0b74a9f1dadf","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"GET","header":[],"url":"http://127.0.0.1:5002/api/v1/XYZ/students","auth":{"type":"apikey","apikey":{"basicConfig":[{"key":"key","value":"x-api-key"},{"key":"value","value":"{{apiKey}}"}]},"isInherited":true,"source":{"_postman_id":"8a359981-f1f8-4d72-9cd7-3dc976c95841","id":"8a359981-f1f8-4d72-9cd7-3dc976c95841","name":"Documentação de API do Moovz","type":"collection"}},"urlObject":{"protocol":"http","port":"5002","path":["api","v1","XYZ","students"],"host":["127","0","0","1"],"query":[],"variable":[]}},"response":[{"id":"8b45ef87-d9c8-43c5-a4d7-c96140fb31dc","name":"Listar Alunos","originalRequest":{"method":"GET","header":[],"url":"http://127.0.0.1:5002/api/v1/XYZ/students"},"status":"OK","code":200,"_postman_previewlanguage":"json","header":[{"key":"x-powered-by","value":"Express"},{"key":"vary","value":"Origin, Accept-Encoding, Authorization, Cookie"},{"key":"content-type","value":"application/json; charset=utf-8"},{"key":"content-length","value":"912"},{"key":"etag","value":"W/\"390-Jaihnm6kLhp9LLG7s3PGWhBZ68s\""},{"key":"date","value":"Wed, 05 Feb 2025 03:09:53 GMT"},{"key":"connection","value":"keep-alive"},{"key":"keep-alive","value":"timeout=5"},{"key":"cache-control","value":"private"}],"cookie":[],"responseTime":null,"body":"{\n    \"status\": \"success\",\n    \"data\": [\n        {\n            \"id\": \"DSNh33A270M0iy8HIJpbokjW4EWP\",\n            \"name\": \"Jane\",\n            \"birthDate\": \"1999-08-03T00:00:00.000Z\",\n            \"photoURL\": \"https://fastly.picsum.photos/id/735/200/300.jpg?hmac=1a236E3f0SNOHOLEh3dxu5_WIFvWaNKYBSZXBWpi6xE\",\n            \"email\": \"example@gmail.com\",\n            \"phoneNumber\": \"11111111111\",\n            \"cpf\": \"87955547004\",\n            \"sex\": \"M\",\n            \"weightInGram\": 80000,\n            \"heightInCm\": 180,\n            \"createdAt\": \"2025-02-05T03:05:15.585Z\",\n            \"updatedAt\": \"2025-02-05T03:09:00.822Z\"\n        },\n        {\n            \"id\": \"GUlqFDLiuTlAU84K8xv6iA9e6X9N\",\n            \"name\": \"Luan Teste\",\n            \"birthDate\": \"1999-01-01T02:00:00.000Z\",\n            \"photoURL\": \"http://localhost:9199/v0/b/pacto-training-zone.appspot.com/o/user-uploads%2FGUlqFDLiuTlAU84K8xv6iA9e6X9N%2Fprofile-picture.jpeg?alt=media&token=dd529351-0cce-45da-90c2-b47b1fcd1acd\",\n            \"email\": \"luan@moovz.app\",\n            \"cpf\": null,\n            \"sex\": \"M\",\n            \"weightInGram\": 100000,\n            \"heightInCm\": 190,\n            \"createdAt\": \"2025-02-05T02:40:33.115Z\",\n            \"updatedAt\": \"2025-02-05T02:40:33.115Z\"\n        }\n    ],\n    \"warnings\": [],\n    \"errors\": []\n}"}],"_postman_id":"fe0c20f4-dfad-43f4-8ab3-0b74a9f1dadf"},{"name":"Registrar Aluno na Academia","id":"c8d420cd-9229-4adb-b904-ea1abfa9e901","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"POST","header":[],"body":{"mode":"raw","raw":"{\n    \"name\": \"John Doe\",\n    \"birthDate\": \"2000-01-02\",\n    \"email\": \"example@gmail.com\",\n    \"phoneNumber\": \"51999999999\",\n    \"cpf\": \"87955547004\",\n    \"photoURL\": \"https://fastly.picsum.photos/id/735/200/300.jpg?hmac=1a236E3f0SNOHOLEh3dxu5_WIFvWaNKYBSZXBWpi6xE\",\n    \"weightInGram\": 80000,\n    \"heightInCm\": 180,\n    \"sex\": \"M\"\n}","options":{"raw":{"language":"json"}}},"url":"http://127.0.0.1:5002/api/v1/XYZ/students","auth":{"type":"apikey","apikey":{"basicConfig":[{"key":"key","value":"x-api-key"},{"key":"value","value":"{{apiKey}}"}]},"isInherited":true,"source":{"_postman_id":"8a359981-f1f8-4d72-9cd7-3dc976c95841","id":"8a359981-f1f8-4d72-9cd7-3dc976c95841","name":"Documentação de API do Moovz","type":"collection"}},"urlObject":{"protocol":"http","port":"5002","path":["api","v1","XYZ","students"],"host":["127","0","0","1"],"query":[],"variable":[]}},"response":[{"id":"450bf207-1db8-4f3e-88fd-dc820d8b52eb","name":"Sucesso","originalRequest":{"method":"POST","header":[],"body":{"mode":"raw","raw":"{\n    \"name\": \"John Doe\",\n    \"birthDate\": \"2000-01-02\",\n    \"email\": \"example@gmail.com\",\n    \"phoneNumber\": \"51999999999\",\n    \"cpf\": \"87955547004\",\n    \"photoURL\": \"https://fastly.picsum.photos/id/735/200/300.jpg?hmac=1a236E3f0SNOHOLEh3dxu5_WIFvWaNKYBSZXBWpi6xE\",\n    \"weightInGram\": 80000,\n    \"heightInCm\": 180,\n    \"sex\": \"M\"\n}","options":{"raw":{"language":"json"}}},"url":"http://127.0.0.1:5002/api/v1/XYZ/students"},"status":"Created","code":201,"_postman_previewlanguage":"json","header":[{"key":"x-powered-by","value":"Express"},{"key":"vary","value":"Origin, Accept-Encoding, Authorization, Cookie"},{"key":"content-type","value":"application/json; charset=utf-8"},{"key":"content-length","value":"58"},{"key":"etag","value":"W/\"3a-S1Yy5t9uXAHhWBlEzpGd3PA6GQ0\""},{"key":"date","value":"Wed, 05 Feb 2025 03:05:15 GMT"},{"key":"connection","value":"keep-alive"},{"key":"keep-alive","value":"timeout=5"},{"key":"cache-control","value":"private"}],"cookie":[],"responseTime":null,"body":"{\n    \"status\": \"success\",\n    \"data\": null,\n    \"warnings\": [],\n    \"errors\": []\n}"}],"_postman_id":"c8d420cd-9229-4adb-b904-ea1abfa9e901"},{"name":"Editar informações do Aluno","id":"046cc5ba-bc6c-4e9f-b7d5-6eee17c82318","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"PATCH","header":[],"body":{"mode":"raw","raw":"{\n    \"name\": \"Jane\",\n    \"birthDate\": \"1999-08-03\",\n    \"phoneNumber\": \"11111111111\",\n    \"cpf\": \"87955547004\",\n    \"photoURL\": \"https://fastly.picsum.photos/id/735/200/300.jpg?hmac=1a236E3f0SNOHOLEh3dxu5_WIFvWaNKYBSZXBWpi6xE\",\n    \"weightInGram\": 80000,\n    \"heightInCm\": 180,\n    \"sex\": \"M\"\n}","options":{"raw":{"language":"json"}}},"url":"http://127.0.0.1:5002/api/v1/XYZ/students/{{studentID}}","auth":{"type":"apikey","apikey":{"basicConfig":[{"key":"key","value":"x-api-key"},{"key":"value","value":"{{apiKey}}"}]},"isInherited":true,"source":{"_postman_id":"8a359981-f1f8-4d72-9cd7-3dc976c95841","id":"8a359981-f1f8-4d72-9cd7-3dc976c95841","name":"Documentação de API do Moovz","type":"collection"}},"urlObject":{"protocol":"http","port":"5002","path":["api","v1","XYZ","students","{{studentID}}"],"host":["127","0","0","1"],"query":[],"variable":[]}},"response":[{"id":"d2824383-81b3-46ba-ae2b-342240f08e38","name":"Sucesso","originalRequest":{"method":"PATCH","header":[],"body":{"mode":"raw","raw":"{\n    \"name\": \"Jane\",\n    \"birthDate\": \"1999-08-03\",\n    \"phoneNumber\": \"11111111111\",\n    \"cpf\": \"87955547004\",\n    \"photoURL\": \"https://fastly.picsum.photos/id/735/200/300.jpg?hmac=1a236E3f0SNOHOLEh3dxu5_WIFvWaNKYBSZXBWpi6xE\",\n    \"weightInGram\": 80000,\n    \"heightInCm\": 180,\n    \"sex\": \"M\"\n}","options":{"raw":{"language":"json"}}},"url":"http://127.0.0.1:5002/api/v1/XYZ/students/{{studentID}}"},"status":"OK","code":200,"_postman_previewlanguage":"json","header":[{"key":"x-powered-by","value":"Express"},{"key":"vary","value":"Origin, Accept-Encoding, Authorization, Cookie"},{"key":"content-type","value":"application/json; charset=utf-8"},{"key":"content-length","value":"456"},{"key":"etag","value":"W/\"1c8-w0WIlEpuOFJrTaJI3l2WRKrhuyw\""},{"key":"date","value":"Wed, 05 Feb 2025 03:09:00 GMT"},{"key":"connection","value":"keep-alive"},{"key":"keep-alive","value":"timeout=5"},{"key":"cache-control","value":"private"}],"cookie":[],"responseTime":null,"body":"{\n    \"status\": \"success\",\n    \"data\": {\n        \"id\": \"DSNh33A270M0iy8HIJpbokjW4EWP\",\n        \"name\": \"Jane\",\n        \"birthDate\": \"1999-08-03T00:00:00.000Z\",\n        \"photoURL\": \"https://fastly.picsum.photos/id/735/200/300.jpg?hmac=1a236E3f0SNOHOLEh3dxu5_WIFvWaNKYBSZXBWpi6xE\",\n        \"email\": \"example@gmail.com\",\n        \"phoneNumber\": \"11111111111\",\n        \"cpf\": \"87955547004\",\n        \"sex\": \"M\",\n        \"weightInGram\": 80000,\n        \"heightInCm\": 180,\n        \"createdAt\": \"2025-02-05T03:05:15.585Z\",\n        \"updatedAt\": \"2025-02-05T03:09:00.822Z\"\n    },\n    \"warnings\": [],\n    \"errors\": []\n}"}],"_postman_id":"046cc5ba-bc6c-4e9f-b7d5-6eee17c82318"},{"name":"Remover o Aluno da Academia","id":"6e0e1c15-ab60-4236-94f2-8025b94e71c0","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"DELETE","header":[],"url":"http://127.0.0.1:5002/api/v1/XYZ/students/{{studentID}}","auth":{"type":"apikey","apikey":{"basicConfig":[{"key":"key","value":"x-api-key"},{"key":"value","value":"{{apiKey}}"}]},"isInherited":true,"source":{"_postman_id":"8a359981-f1f8-4d72-9cd7-3dc976c95841","id":"8a359981-f1f8-4d72-9cd7-3dc976c95841","name":"Documentação de API do Moovz","type":"collection"}},"urlObject":{"protocol":"http","port":"5002","path":["api","v1","XYZ","students","{{studentID}}"],"host":["127","0","0","1"],"query":[],"variable":[]}},"response":[{"id":"38205b95-e461-4166-98d8-7a204fc338fe","name":"Sucesso","originalRequest":{"method":"DELETE","header":[],"url":"http://127.0.0.1:5002/api/v1/XYZ/students/{{studentID}}"},"status":"OK","code":200,"_postman_previewlanguage":"json","header":[{"key":"x-powered-by","value":"Express"},{"key":"vary","value":"Origin, Accept-Encoding, Authorization, Cookie"},{"key":"content-type","value":"application/json; charset=utf-8"},{"key":"content-length","value":"58"},{"key":"etag","value":"W/\"3a-S1Yy5t9uXAHhWBlEzpGd3PA6GQ0\""},{"key":"date","value":"Wed, 05 Feb 2025 03:10:21 GMT"},{"key":"connection","value":"keep-alive"},{"key":"keep-alive","value":"timeout=5"},{"key":"cache-control","value":"private"}],"cookie":[],"responseTime":null,"body":"{\n    \"status\": \"success\",\n    \"data\": null,\n    \"warnings\": [],\n    \"errors\": []\n}"}],"_postman_id":"6e0e1c15-ab60-4236-94f2-8025b94e71c0"}],"id":"3920c0c4-c004-4668-aafb-a09dbc732152","description":"<p><strong>Entendendo a diferença entre Aluno e Usuário</strong><br />Um <strong>Aluno</strong> é um tipo específico de <strong>Usuário</strong> do aplicativo, associado a uma ou mais academias, com acesso restrito a funcionalidades de participação em sessões de aula.</p>\n<ul>\n<li><p><strong>Aluno ≠ Usuário</strong>:</p>\n<ul>\n<li><p>Todo Aluno é um Usuário, mas nem todo Usuário é um Aluno.</p>\n</li>\n<li><p>Um Usuário pode ter múltiplos papéis (ex.: treinador, administrador), mas apenas o papel de <strong>Aluno</strong> permite realizar check-in em sessões de aula.</p>\n</li>\n<li><p>O <strong>ID do Usuário</strong> é único e mantido mesmo se o mesmo perfil assumir outros papéis na academia.</p>\n</li>\n</ul>\n</li>\n</ul>\n<hr />\n<h3 id=\"fluxo-de-criação-de-aluno\"><strong>Fluxo de Criação de Aluno</strong></h3>\n<ol>\n<li><p><strong>Criação do Aluno</strong>:</p>\n<ul>\n<li><p>Ao criar um Aluno via API, o sistema verifica se já existe um Usuário com o email fornecido.</p>\n</li>\n<li><p>Se não existir:</p>\n<ul>\n<li>Um <strong>Usuário</strong> é criado automaticamente, associado ao email do Aluno.</li>\n</ul>\n</li>\n<li><p>Se já existir:</p>\n<ul>\n<li>O Aluno é vinculado ao Usuário existente.</li>\n</ul>\n</li>\n</ul>\n</li>\n<li><p><strong>Acesso do Aluno à Conta</strong>:</p>\n<ul>\n<li><p>Para acessar a conta criada pela API, o Aluno deve:</p>\n<ul>\n<li><p>Clicar em <strong>\"Recuperar Senha\"</strong> no aplicativo.</p>\n</li>\n<li><p>Seguir o fluxo de redefinição de senha via email.</p>\n</li>\n</ul>\n</li>\n</ul>\n</li>\n</ol>\n<hr />\n<h3 id=\"funcionalidades-principais\"><strong>Funcionalidades Principais</strong></h3>\n<h4 id=\"1-buscar-dados-do-aluno\"><strong>1. Buscar Dados do Aluno.</strong></h4>\n<p><strong>Endpoint</strong>: <code>GET {gymID}/students/{studentID}</code><br />Retorna informações detalhadas do Aluno.</p>\n<h4 id=\"2-listar-alunos-da-academia\"><strong>2. Listar Alunos da Academia.</strong></h4>\n<p><strong>Endpoint</strong>: <code>GET {gymID}/students</code><br />Lista todos os Alunos registrados em uma academia específica.</p>\n<h4 id=\"3-registrar-um-novo-aluno-na-academia\"><strong>3. Registrar um novo Aluno na Academia.</strong></h4>\n<p><strong>Endpoint</strong>: <code>POST {gymID}/students</code><br />Cria um novo aluno na academia. Se o aluno ainda não tiver conta, ela é criada. Para que o aluno tenha acesso à essa conta no App, ele terá que selecionar a opção de recuperar senha e seguir o passo a passo no seu email.</p>\n<h4 id=\"4-editar-dados-de-um-aluno\"><strong>4. Editar dados de um Aluno.</strong></h4>\n<p><strong>Endpoint</strong>: <code>PATCH {gymID}/students/{studentID}</code><br />Lista todos os Alunos registrados em uma academia específica.</p>\n<h4 id=\"5-buscar-histórico-de-treinos-do-aluno\"><strong>5. Buscar Histórico de Treinos do Aluno.</strong></h4>\n<p><strong>Endpoint</strong>: <code>GET /{gymID}/students/{studentID}/history</code><br />Retorna o histórico completo de Sessões de Treino do aluno. Para entender melhor sobre Sessões de Treino, verifique o endpoint de Sessões de Treino.</p>\n<h4 id=\"6-remover-o-aluno-da-academia\"><strong>6. Remover o aluno da academia.</strong></h4>\n<p><strong>Endpoint</strong>: <code>DELETE {gymID}/students/{studentID}</code><br />Lista todos os Alunos registrados em uma academia específica.</p>\n<hr />\n<h3 id=\"exemplo-de-documento-de-aluno-student\">Exemplo de Documento de Aluno (Student)</h3>\n<p>A seguir, um exemplo de documento que representa um Aluno, com dados fictícios:</p>\n<pre class=\"click-to-expand-wrapper is-snippet-wrapper\"><code class=\"language-json\">{\n  \"id\": \"HnGSRq46s2J23CSyZDSTpscdscJ\",\n  \"name\": \"João José\",\n  \"birthDate\": \"1999-01-01T02:00:00.000Z\",\n  \"photoURL\": \"https://www.someimage.com\",\n  \"phoneNumber\": \"51999999999\",\n  \"email\": \"student@gmail.com\",\n  \"cpf\": \"12345678901\",\n  \"sex\": \"M\",\n  \"weightInGram\": 107000,\n  \"heightInCm\": 190,\n  \"createdAt\": \"2025-01-31T23:28:42.553Z\",\n  \"updatedAt\": \"2025-01-31T23:28:42.553Z\"\n}\n\n</code></pre>\n<p><strong>Explicação dos Campos:</strong></p>\n<ul>\n<li><p><strong>id:</strong> Identificador único do aluno.</p>\n</li>\n<li><p><strong>name:</strong> Nome completo do aluno.</p>\n</li>\n<li><p><strong>birthDate:</strong> Data de nascimento do aluno (formato ISO 8601).</p>\n</li>\n<li><p><strong>phoneNumber</strong>: O telefone do aluno.</p>\n</li>\n<li><p><strong>photoURL:</strong> URL para a foto de perfil do aluno.</p>\n</li>\n<li><p><strong>email:</strong> Endereço de e-mail do aluno.</p>\n</li>\n<li><p><strong>cpf:</strong> CPF do aluno (pode ser nulo se não informado).</p>\n</li>\n<li><p><strong>sex:</strong> Sexo do aluno (ex.: \"M\" para masculino, \"F\" para feminino).</p>\n</li>\n<li><p><strong>weightInGram:</strong> Peso do aluno em gramas.</p>\n</li>\n<li><p><strong>heightInCm:</strong> Altura do aluno em centímetros.</p>\n</li>\n<li><p><strong>createdAt:</strong> Data e hora de criação do registro.</p>\n</li>\n<li><p><strong>updatedAt:</strong> Data e hora da última atualização do registro.</p>\n</li>\n</ul>\n<hr />\n<h3 id=\"regras-de-negócio\"><strong>Regras de Negócio</strong></h3>\n<ul>\n<li><p><strong>Check-in em Aulas</strong>:</p>\n<ul>\n<li><p>Exclusivo para Alunos (outros papéis de Usuário não têm permissão).</p>\n</li>\n<li><p>Requer validação de matrícula ativa na academia.</p>\n</li>\n</ul>\n</li>\n<li><p><strong>Multiplos Papéis</strong>:</p>\n<ul>\n<li>Um Usuário com outros papéis (ex.: instrutor) <strong>mantém o mesmo ID</strong>, mas só terá acesso a funcionalidades de Aluno se estiver vinculado a uma academia como tal.</li>\n</ul>\n</li>\n</ul>\n","_postman_id":"3920c0c4-c004-4668-aafb-a09dbc732152","auth":{"type":"apikey","apikey":{"basicConfig":[{"key":"key","value":"x-api-key"},{"key":"value","value":"{{apiKey}}"}]},"isInherited":true,"source":{"_postman_id":"8a359981-f1f8-4d72-9cd7-3dc976c95841","id":"8a359981-f1f8-4d72-9cd7-3dc976c95841","name":"Documentação de API do Moovz","type":"collection"}}},{"name":"Webhooks","item":[{"name":"Check-ins","item":[{"name":"Autorizar Check-in","id":"c439c1a7-cf69-4102-9ebd-a8ca56412771","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"POST","header":[],"body":{"mode":"raw","raw":"{\n    \"agent\": { //If null, it means this event was triggered by the system\n        \"id\": \"XYZ\",\n        \"name\": \"Johanes\",\n        \"email\": \"johanes@moovz.app\",\n        \"cpf\": \"905.794.600-96\"\n    },\n    \"gymID\": \"aksdnansd132\",\n    \"scheduleID\": \"lasndad123\",\n    \"classID\": \"asndklansd123\",\n    \"studentID\": \"askdjas123123\",\n    \"studentEmail\": \"johanes@example.com\",\n    \"studentCPF\": \"905.794.600-96\",\n    \"classSessionID\": \"asda123\",\n    \"bandPin\": \"14\"\n}","options":{"raw":{"language":"json"}}},"url":"https://erp.com.br/validateCheckin","description":"<p>Sempre que um aluno da academia tentar realizar o check-in em uma aula, será enviado uma requisição nesse endpoint. O retorno desse endpoint será utilizado para determinar se o aluno pode realizar check-in ou não. É esperado que esse endpoint esteja sempre disponível.</p>\n","auth":{"type":"apikey","apikey":{"basicConfig":[{"key":"key","value":"x-api-key"},{"key":"value","value":"{{apiKey}}"}]},"isInherited":true,"source":{"_postman_id":"8a359981-f1f8-4d72-9cd7-3dc976c95841","id":"8a359981-f1f8-4d72-9cd7-3dc976c95841","name":"Documentação de API do Moovz","type":"collection"}},"urlObject":{"host":["https://erp.com.br/validateCheckin"],"query":[],"variable":[]}},"response":[],"_postman_id":"c439c1a7-cf69-4102-9ebd-a8ca56412771"},{"name":"Cancelar checkin","id":"173d36c7-d2b9-4a84-b2df-0c4396f951aa","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"POST","header":[],"body":{"mode":"raw","raw":"{\n    \"agent\": { //If null, it means this event was triggered by the system\n        \"id\": \"XYZ\",\n        \"name\": \"Johanes\",\n        \"email\": \"johanes@moovz.app\",\n        \"cpf\": \"905.794.600-96\"\n    },\n    \"gymID\": \"gym-abc123\",\n    \"scheduleID\": \"schedule-xyz456\",\n    \"classID\": \"class-def789\",\n    \"classSessionID\": \"session-ghi012\",\n    \"studentID\": \"student-jkl345\",\n    \"studentEmail\": \"johanes@example.com\",\n    \"studentCPF\": \"905.794.600-96\"\n}","options":{"raw":{"language":"json"}}},"url":"https://erp.com.br/onStudentCheckoutWebhook","description":"<p>Webhook chamado quando um aluno cancela o check-in.</p>\n<p>Pode ser utilizado para controle do sistema, como reembolso de créditos, envio de email e outras ações.</p>\n","auth":{"type":"apikey","apikey":{"basicConfig":[{"key":"key","value":"x-api-key"},{"key":"value","value":"{{apiKey}}"}]},"isInherited":true,"source":{"_postman_id":"8a359981-f1f8-4d72-9cd7-3dc976c95841","id":"8a359981-f1f8-4d72-9cd7-3dc976c95841","name":"Documentação de API do Moovz","type":"collection"}},"urlObject":{"host":["https://erp.com.br/onStudentCheckoutWebhook"],"query":[],"variable":[]}},"response":[],"_postman_id":"173d36c7-d2b9-4a84-b2df-0c4396f951aa"},{"name":"Registrar treino do aluno finalizado","id":"c5637e46-8dc1-473d-b590-b063e0d77edf","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"POST","header":[],"body":{"mode":"raw","raw":"{\n    \"gymID\": \"gym123\",\n    \"scheduleID\": \"schedule456\",\n    \"classID\": \"class789\",\n    \"classSessionID\": \"session101\",\n    \"trainingSession\": {\n        \"id\": \"trainingSession123\",\n        \"band\": {\n            \"id\": \"band456\",\n            \"pin\": \"1234\",\n            \"lastBatteryPercentage\": 0.75\n        },\n        \"durationInSeconds\": 3600,\n        \"kcalBurned\": 500,\n        \"rank\": 1,\n        \"score\": 95,\n        \"status\": \"FINISHED\",\n        \"student\": {\n            \"id\": \"student789\",\n            \"name\": \"John Doe\",\n            \"photoURL\": \"https://example.com/photo.jpg\",\n            \"age\": 25,\n            \"weightInGram\": 70000,\n            \"heightInCm\": 180,\n            \"sex\": \"M\",\n            \"email\": \"johanes@example.com\",\n            \"cpf\": \"905.794.600-96\"\n        },\n        \"finishedAt\": \"2023-10-01T12:00:00Z\",\n        \"startedAt\": \"2023-10-01T11:00:00Z\",\n        \"zoneModelData\": {\n            \"id\": \"zoneModel123\",\n            \"name\": \"Advanced Zone Model\",\n            \"targetZoneKey\": \"zone2\", //This is a key from the zonesModel field\n            \"zonesModel\": {\n                \"zone1\": {\n                    \"barHexColor\": \"#FF0000\",\n                    \"cardHexColor\": \"#00FF00\",\n                    \"durationInSeconds\": 1200,\n                    \"minHeartRatePercentage\": 0.60,\n                    \"maxHeartRatePercentage\": 0.70,\n                    \"name\": \"Zone 1\",\n                    \"scorePointsPerSecond\": 1.5,\n                    \"indicatorLinearGradient\": {\n                        \"colors\": [\n                            \"#FF0000\",\n                            \"#00FF00\"\n                        ],\n                        \"tileMode\": 1\n                    }\n                },\n                \"zone2\": {\n                    \"barHexColor\": \"#0000FF\",\n                    \"cardHexColor\": \"#FFFF00\",\n                    \"durationInSeconds\": 1800,\n                    \"minHeartRatePercentage\": 0.70,\n                    \"maxHeartRatePercentage\": 0.80,\n                    \"name\": \"Zone 2\",\n                    \"scorePointsPerSecond\": 2.0,\n                    \"indicatorLinearGradient\": {\n                        \"colors\": [\n                            \"#0000FF\",\n                            \"#FFFF00\"\n                        ],\n                        \"tileMode\": 0\n                    }\n                }\n            }\n        }\n    }\n}","options":{"raw":{"language":"json"}}},"url":"","auth":{"type":"apikey","apikey":{"basicConfig":[{"key":"key","value":"x-api-key"},{"key":"value","value":"{{apiKey}}"}]},"isInherited":true,"source":{"_postman_id":"8a359981-f1f8-4d72-9cd7-3dc976c95841","id":"8a359981-f1f8-4d72-9cd7-3dc976c95841","name":"Documentação de API do Moovz","type":"collection"}},"urlObject":{"query":[],"variable":[]}},"response":[],"_postman_id":"c5637e46-8dc1-473d-b590-b063e0d77edf"},{"name":"Troca de frequecímetro do chek-in","id":"ae235dc4-3018-414a-bc03-800db0cc7f91","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"POST","header":[],"body":{"mode":"raw","raw":"{\n    \"agent\": { //If null, it means this event was triggered by the system\n        \"id\": \"XYZ\",\n        \"name\": \"Johanes\",\n        \"email\": \"johanes@moovz.app\",\n        \"cpf\": \"905.794.600-96\"\n    },\n    \"gymID\": \"gym-abc123\",\n    \"scheduleID\": \"schedule-xyz456\",\n    \"classID\": \"class-def789\",\n    \"classSessionID\": \"session-ghi012\",\n    \"studentID\": \"student-jkl345\",\n    \"studentEmail\": \"johanes@example.com\",\n    \"studentCPF\": \"905.794.600-96\",\n    \"newBandPin\": \"14\"\n}","options":{"raw":{"language":"json"}}},"url":"https://erp.com.br/onStudentTrainingBandChangedWebhook","auth":{"type":"apikey","apikey":{"basicConfig":[{"key":"key","value":"x-api-key"},{"key":"value","value":"{{apiKey}}"}]},"isInherited":true,"source":{"_postman_id":"8a359981-f1f8-4d72-9cd7-3dc976c95841","id":"8a359981-f1f8-4d72-9cd7-3dc976c95841","name":"Documentação de API do Moovz","type":"collection"}},"urlObject":{"host":["https://erp.com.br/onStudentTrainingBandChangedWebhook"],"query":[],"variable":[]}},"response":[],"_postman_id":"ae235dc4-3018-414a-bc03-800db0cc7f91"}],"id":"5becaa6e-2324-4aee-92dd-8b2c3172b279","description":"<p>O webhook de check-in será ativado em duas situações:</p>\n<ul>\n<li><p>Tentativa de check-in do aluno</p>\n<ul>\n<li><p>Serão enviadas informações sobre a aula em que o aluno está realizando o check-in, qual a pulseira está sendo utilizada no check-in e qual aluno está realizando o check-in. E caberá ao sistema integrado retornar uma reposta nas seguintes situações:</p>\n<ul>\n<li><p>Aprovação: verdadeiro indicando que o check-in foi aprovado na aula</p>\n</li>\n<li><p>Rejeição: falso indicando a rejeição e uma mensagem ao aluno informando o motivo da rejeição</p>\n</li>\n<li><p>Erro: status HTTP do erro e mensagem a ser exibida ao aluno sobre o motivo do erro.</p>\n</li>\n</ul>\n</li>\n</ul>\n</li>\n<li><p>Checkout (cancelamento de check-in)</p>\n<ul>\n<li><p>O check-in do aluno sempre poderá ser cancelado no Moovz, isso garante a exibição correta nas telas de aula durante a execução, as implicações do cancelamento podem ser gerenciadas pelo sistema integrado. Exemplo: caso haja o consumo de créditos para a realização dos check-ins e este não possa ser reembolsado em condições específicas, isso será realizado pelo sistema que receberá as informações necessárias para executar essa lógica de negócios. Serão enviadas as informações sobre a aula, inclusive o treino realizado até o momento do checkout, informações sobre o aluno e qual a pulseira está sendo utilizada.</p>\n</li>\n<li><p>A resposta dessa requisição não será utilizada, e em caso de erro não ocorrerá o reenvio da requisição.</p>\n</li>\n</ul>\n</li>\n</ul>\n","_postman_id":"5becaa6e-2324-4aee-92dd-8b2c3172b279","auth":{"type":"apikey","apikey":{"basicConfig":[{"key":"key","value":"x-api-key"},{"key":"value","value":"{{apiKey}}"}]},"isInherited":true,"source":{"_postman_id":"8a359981-f1f8-4d72-9cd7-3dc976c95841","id":"8a359981-f1f8-4d72-9cd7-3dc976c95841","name":"Documentação de API do Moovz","type":"collection"}}},{"name":"Classes","item":[{"name":"Aula criada","id":"a52a8590-2d30-40cd-97fc-12db7791d96f","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"POST","header":[],"body":{"mode":"raw","raw":"{\n    \"agent\": { //If null, it means this event was triggered by the system\n        \"id\": \"XYZ\",\n        \"name\": \"Johanes\",\n        \"email\": \"johanes@moovz.app\",\n        \"cpf\": \"905.794.600-96\"\n    },\n    \"gymID\": \"gym-abc123\",\n    \"scheduleID\": \"schedule-xyz456\",\n    \"class\": {\n        \"id\": \"class-def789\",\n        \"name\": \"Yoga Class - Terça 8:00\",\n        \"capacity\": 20,\n        \"coverURL\": \"https://example.com/images/yoga-cover.jpg\",\n        \"durationInSeconds\": 3600,\n        \"weekStartOffsetInSeconds\": 201600 //24 * 2 * 3600 + 8 * 3600\n    }\n}","options":{"raw":{"language":"json"}}},"url":"https://erp.com.br/onClassCreatedWebhook","auth":{"type":"apikey","apikey":{"basicConfig":[{"key":"key","value":"x-api-key"},{"key":"value","value":"{{apiKey}}"}]},"isInherited":true,"source":{"_postman_id":"8a359981-f1f8-4d72-9cd7-3dc976c95841","id":"8a359981-f1f8-4d72-9cd7-3dc976c95841","name":"Documentação de API do Moovz","type":"collection"}},"urlObject":{"host":["https://erp.com.br/onClassCreatedWebhook"],"query":[],"variable":[]}},"response":[],"_postman_id":"a52a8590-2d30-40cd-97fc-12db7791d96f"},{"name":"Aula atualizada","id":"5661e987-3e20-4caf-9cf8-7673833a5183","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"POST","header":[],"body":{"mode":"raw","raw":"{\n    \"agent\": { //If null, it means this event was triggered by the system\n        \"id\": \"XYZ\",\n        \"name\": \"Johanes\",\n        \"email\": \"johanes@moovz.app\",\n        \"cpf\": \"905.794.600-96\"\n    },\n    \"gymID\": \"gym-abc123\",\n    \"scheduleID\": \"schedule-xyz456\",\n    \"class\": {\n        \"id\": \"class-def789\",\n        \"name\": \"Yoga Class\",\n        \"capacity\": 20,\n        \"coverURL\": \"https://example.com/images/yoga-cover.jpg\",\n        \"durationInSeconds\": 3600,\n        \"weekStartOffsetInSeconds\": 0\n    }\n}","options":{"raw":{"language":"json"}}},"url":"https://erp.com.br/onClassUpdatedWebhook","auth":{"type":"apikey","apikey":{"basicConfig":[{"key":"key","value":"x-api-key"},{"key":"value","value":"{{apiKey}}"}]},"isInherited":true,"source":{"_postman_id":"8a359981-f1f8-4d72-9cd7-3dc976c95841","id":"8a359981-f1f8-4d72-9cd7-3dc976c95841","name":"Documentação de API do Moovz","type":"collection"}},"urlObject":{"host":["https://erp.com.br/onClassUpdatedWebhook"],"query":[],"variable":[]}},"response":[],"_postman_id":"5661e987-3e20-4caf-9cf8-7673833a5183"},{"name":"Aula deletada","id":"e327a0e5-6dae-4c7c-aa8f-3e26a5017ebb","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"POST","header":[],"body":{"mode":"raw","raw":"{\n    \"agent\": { //If null, it means this event was triggered by the system\n        \"id\": \"XYZ\",\n        \"name\": \"Johanes\",\n        \"email\": \"johanes@moovz.app\",\n        \"cpf\": \"905.794.600-96\"\n    },\n    \"gymID\": \"gym-abc123\",\n    \"scheduleID\": \"schedule-xyz456\",\n    \"classID\": \"class-def789\"\n}","options":{"raw":{"language":"json"}}},"url":"https://erp.com.br/onClassDeletedWebhook","auth":{"type":"apikey","apikey":{"basicConfig":[{"key":"key","value":"x-api-key"},{"key":"value","value":"{{apiKey}}"}]},"isInherited":true,"source":{"_postman_id":"8a359981-f1f8-4d72-9cd7-3dc976c95841","id":"8a359981-f1f8-4d72-9cd7-3dc976c95841","name":"Documentação de API do Moovz","type":"collection"}},"urlObject":{"host":["https://erp.com.br/onClassDeletedWebhook"],"query":[],"variable":[]}},"response":[],"_postman_id":"e327a0e5-6dae-4c7c-aa8f-3e26a5017ebb"}],"id":"f2a147ef-1176-48cc-9792-e13da6d79a55","description":"<p>Atualmente o webhook de aulas é utilizado para registrar os dados das aulas e dos treinos nos sistemas integrados. A aula terá</p>\n","_postman_id":"f2a147ef-1176-48cc-9792-e13da6d79a55","auth":{"type":"apikey","apikey":{"basicConfig":[{"key":"key","value":"x-api-key"},{"key":"value","value":"{{apiKey}}"}]},"isInherited":true,"source":{"_postman_id":"8a359981-f1f8-4d72-9cd7-3dc976c95841","id":"8a359981-f1f8-4d72-9cd7-3dc976c95841","name":"Documentação de API do Moovz","type":"collection"}}},{"name":"Alunos","item":[{"name":"Autorizar vínculo do aluno na academia","id":"982cad7e-0778-4414-a01b-e7c818cc6baa","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"GET","header":[],"body":{"mode":"raw","raw":"{\n    \"agent\": { //If null, it means this event was triggered by the system\n        \"id\": \"XYZ\",\n        \"name\": \"Johanes\",\n        \"email\": \"johanes@moovz.app\",\n        \"cpf\": \"905.794.600-96\"\n    },\n    \"gymID\": \"gym-abc123\",\n    \"student\": {\n        \"id\": \"student-xyz456\",\n        \"name\": \"João Silva\",\n        \"email\": \"joao.silva@example.com\",\n        \"photoURL\": \"https://example.com/images/joao.jpg\",\n        \"sex\": \"F\",\n        \"birthDate\": \"1990-05-15\",\n        \"weightInGram\": 65000,\n        \"heightInCm\": 160,\n        \"cpf\": \"123.456.789-00\"\n    }\n}","options":{"raw":{"language":"json"}}},"url":"https://erp.com.br/validateStudentEnrollment","auth":{"type":"apikey","apikey":{"basicConfig":[{"key":"key","value":"x-api-key"},{"key":"value","value":"{{apiKey}}"}]},"isInherited":true,"source":{"_postman_id":"8a359981-f1f8-4d72-9cd7-3dc976c95841","id":"8a359981-f1f8-4d72-9cd7-3dc976c95841","name":"Documentação de API do Moovz","type":"collection"}},"urlObject":{"host":["https://erp.com.br/validateStudentEnrollment"],"query":[],"variable":[]}},"response":[],"_postman_id":"982cad7e-0778-4414-a01b-e7c818cc6baa"}],"id":"8544e0e4-94d3-4019-a197-074d749fba0b","description":"<p>Webhooks acionados quando ocorrem alterações nos dados dos alunos da academia.</p>\n","_postman_id":"8544e0e4-94d3-4019-a197-074d749fba0b","auth":{"type":"apikey","apikey":{"basicConfig":[{"key":"key","value":"x-api-key"},{"key":"value","value":"{{apiKey}}"}]},"isInherited":true,"source":{"_postman_id":"8a359981-f1f8-4d72-9cd7-3dc976c95841","id":"8a359981-f1f8-4d72-9cd7-3dc976c95841","name":"Documentação de API do Moovz","type":"collection"}}},{"name":"Academias","item":[{"name":"Autorizar integração da academia","id":"0a5fc908-47e7-448b-b8e1-6ac44df7389a","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"POST","header":[],"body":{"mode":"raw","raw":"{\n    \"agent\": { //If null, it means this event was triggered by the system\n        \"id\": \"XYZ\",\n        \"name\": \"Johanes\",\n        \"email\": \"johanes@moovz.app\",\n        \"cpf\": \"905.794.600-96\"\n    },\n    \"gymID\": \"VYZ\",\n    \"cnpj\": \"asd\",\n    \"name\": \"asda121\"\n}","options":{"raw":{"language":"json"}}},"url":"","auth":{"type":"apikey","apikey":{"basicConfig":[{"key":"key","value":"x-api-key"},{"key":"value","value":"{{apiKey}}"}]},"isInherited":true,"source":{"_postman_id":"8a359981-f1f8-4d72-9cd7-3dc976c95841","id":"8a359981-f1f8-4d72-9cd7-3dc976c95841","name":"Documentação de API do Moovz","type":"collection"}},"urlObject":{"query":[],"variable":[]}},"response":[],"_postman_id":"0a5fc908-47e7-448b-b8e1-6ac44df7389a"},{"name":"Cancelar integração da academia","id":"16622341-743c-486f-9969-0fbe3ad1edd3","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"POST","header":[],"body":{"mode":"raw","raw":"{\n    \"agent\": { //If null, it means this event was triggered by the system\n        \"id\": \"XYZ\",\n        \"name\": \"Johanes\",\n        \"email\": \"johanes@moovz.app\",\n        \"cpf\": \"905.794.600-96\"\n    },\n    \"gymID\": \"asjdasd12312\"\n}","options":{"raw":{"language":"json"}}},"url":"https://erp.com.br/onIntegrationDisabled","auth":{"type":"apikey","apikey":{"basicConfig":[{"key":"key","value":"x-api-key"},{"key":"value","value":"{{apiKey}}"}]},"isInherited":true,"source":{"_postman_id":"8a359981-f1f8-4d72-9cd7-3dc976c95841","id":"8a359981-f1f8-4d72-9cd7-3dc976c95841","name":"Documentação de API do Moovz","type":"collection"}},"urlObject":{"host":["https://erp.com.br/onIntegrationDisabled"],"query":[],"variable":[]}},"response":[],"_postman_id":"16622341-743c-486f-9969-0fbe3ad1edd3"},{"name":"Academia atualizada","id":"44ac0977-57ad-4d92-b68a-29e14ba8df58","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"POST","header":[],"body":{"mode":"raw","raw":"{\n    \"agent\": { //If null, it means this event was triggered by the system\n        \"id\": \"XYZ\",\n        \"name\": \"Johanes\",\n        \"email\": \"johanes@moovz.app\",\n        \"cpf\": \"905.794.600-96\"\n    },\n    \"id\": \"gym-abc123\",\n    \"name\": \"Fitness Center\",\n    \"coverURL\": \"https://example.com/images/cover.jpg\",\n    \"logoURL\": \"https://example.com/images/logo.png\",\n    \"shortDescription\": \"A modern gym with state-of-the-art equipment.\",\n    \"longDescription\": \"Our gym offers a wide range of fitness classes, personal training, and top-notch equipment to help you achieve your fitness goals.\",\n    \"cnpj\": \"12.345.678/0001-99\"\n}","options":{"raw":{"language":"json"}}},"url":"https://erp.com.br/onGymDataUpdatedWebhook","auth":{"type":"apikey","apikey":{"basicConfig":[{"key":"key","value":"x-api-key"},{"key":"value","value":"{{apiKey}}"}]},"isInherited":true,"source":{"_postman_id":"8a359981-f1f8-4d72-9cd7-3dc976c95841","id":"8a359981-f1f8-4d72-9cd7-3dc976c95841","name":"Documentação de API do Moovz","type":"collection"}},"urlObject":{"host":["https://erp.com.br/onGymDataUpdatedWebhook"],"query":[],"variable":[]}},"response":[],"_postman_id":"44ac0977-57ad-4d92-b68a-29e14ba8df58"}],"id":"f4212e31-f8cb-4506-82ed-49d8b7ba07b2","description":"<p>Um webhook dedicado a gerenciar as integrações das novas academias.</p>\n","_postman_id":"f4212e31-f8cb-4506-82ed-49d8b7ba07b2","auth":{"type":"apikey","apikey":{"basicConfig":[{"key":"key","value":"x-api-key"},{"key":"value","value":"{{apiKey}}"}]},"isInherited":true,"source":{"_postman_id":"8a359981-f1f8-4d72-9cd7-3dc976c95841","id":"8a359981-f1f8-4d72-9cd7-3dc976c95841","name":"Documentação de API do Moovz","type":"collection"}}},{"name":"Grades","item":[{"name":"Grade criada","id":"11782e4e-f875-45e4-9b24-aa9ccba3666f","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"POST","header":[],"body":{"mode":"raw","raw":"{\n    \"agent\": { //If null, it means this event was triggered by the system\n        \"id\": \"XYZ\",\n        \"name\": \"Johanes\",\n        \"email\": \"johanes@moovz.app\",\n        \"cpf\": \"905.794.600-96\"\n    },\n    \"gymID\": \"A12A345\",\n    \"schedule\": {\n        \"id\": \"A67890\",\n        \"coverURL\": \"https://example.com/images/cover.jpg\",\n        \"isActive\": true,\n        \"name\": \"Morning Yoga Class\",\n        \"baseDurationInSeconds\": 3600,\n        \"baseCapacity\": 20\n    }\n}","options":{"raw":{"language":"json"}}},"url":"https://erp.com.br/onScheduleCreatedWebhook","auth":{"type":"apikey","apikey":{"basicConfig":[{"key":"key","value":"x-api-key"},{"key":"value","value":"{{apiKey}}"}]},"isInherited":true,"source":{"_postman_id":"8a359981-f1f8-4d72-9cd7-3dc976c95841","id":"8a359981-f1f8-4d72-9cd7-3dc976c95841","name":"Documentação de API do Moovz","type":"collection"}},"urlObject":{"host":["https://erp.com.br/onScheduleCreatedWebhook"],"query":[],"variable":[]}},"response":[],"_postman_id":"11782e4e-f875-45e4-9b24-aa9ccba3666f"},{"name":"Grade atualizada","id":"ab1d6d70-dce9-4f51-9c14-3743ebec2ef4","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"POST","header":[],"body":{"mode":"raw","raw":"{\n    \"agent\": { //If null, it means this event was triggered by the system\n        \"id\": \"XYZ\",\n        \"name\": \"Johanes\",\n        \"email\": \"johanes@moovz.app\",\n        \"cpf\": \"905.794.600-96\"\n    },\n    \"gymID\": \"A12345\",\n    \"schedule\": {\n        \"id\": \"A67890\",\n        \"coverURL\": \"https://example.com/images/cover.jpg\",\n        \"isActive\": true,\n        \"name\": \"Morning Yoga Class\",\n        \"baseDurationInSeconds\": 3600,\n        \"baseCapacity\": 20\n    }\n}","options":{"raw":{"language":"json"}}},"url":"https://erp.com.br/onScheduleUpdatedWebhook","auth":{"type":"apikey","apikey":{"basicConfig":[{"key":"key","value":"x-api-key"},{"key":"value","value":"{{apiKey}}"}]},"isInherited":true,"source":{"_postman_id":"8a359981-f1f8-4d72-9cd7-3dc976c95841","id":"8a359981-f1f8-4d72-9cd7-3dc976c95841","name":"Documentação de API do Moovz","type":"collection"}},"urlObject":{"host":["https://erp.com.br/onScheduleUpdatedWebhook"],"query":[],"variable":[]}},"response":[],"_postman_id":"ab1d6d70-dce9-4f51-9c14-3743ebec2ef4"},{"name":"Grade deletada","id":"3a699d54-9ae5-4642-83c2-1b084b0c5f6e","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"POST","header":[],"body":{"mode":"raw","raw":"{\n    \"agent\": { //If null, it means this event was triggered by the system\n        \"id\": \"XYZ\",\n        \"name\": \"Johanes\",\n        \"email\": \"johanes@moovz.app\",\n        \"cpf\": \"905.794.600-96\"\n    },\n    \"gymID\": \"gym-abc123\",\n    \"scheduleID\": \"schedule-xyz456\"\n}","options":{"raw":{"language":"json"}}},"url":"https://erp.com.br/onScheduleDeletedWebhook","auth":{"type":"apikey","apikey":{"basicConfig":[{"key":"key","value":"x-api-key"},{"key":"value","value":"{{apiKey}}"}]},"isInherited":true,"source":{"_postman_id":"8a359981-f1f8-4d72-9cd7-3dc976c95841","id":"8a359981-f1f8-4d72-9cd7-3dc976c95841","name":"Documentação de API do Moovz","type":"collection"}},"urlObject":{"host":["https://erp.com.br/onScheduleDeletedWebhook"],"query":[],"variable":[]}},"response":[],"_postman_id":"3a699d54-9ae5-4642-83c2-1b084b0c5f6e"}],"id":"8ca79591-56c8-4b97-9dc2-0fe0f23c0747","_postman_id":"8ca79591-56c8-4b97-9dc2-0fe0f23c0747","description":"","auth":{"type":"apikey","apikey":{"basicConfig":[{"key":"key","value":"x-api-key"},{"key":"value","value":"{{apiKey}}"}]},"isInherited":true,"source":{"_postman_id":"8a359981-f1f8-4d72-9cd7-3dc976c95841","id":"8a359981-f1f8-4d72-9cd7-3dc976c95841","name":"Documentação de API do Moovz","type":"collection"}}},{"name":"Sessões de Aula","item":[{"name":"Registrar aula finalizada","id":"23d74380-f775-4d25-a516-73ef43ff3e7e","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"POST","header":[],"body":{"mode":"raw","raw":"{\n    \"gymID\": \"gym-abc123\",\n    \"scheduleID\": \"schedule-xyz456\",\n    \"classID\": \"class-def789\",\n    \"classSessionID\": \"session-ghi012\",\n    \"classSession\": {\n        \"id\": \"session-ghi012\",\n        \"capacity\": 20,\n        \"coverURL\": \"https://example.com/images/session-cover.jpg\",\n        \"durationInSeconds\": 3300,\n        \"plannedDurationInSeconds\": 3600,\n        \"finishedAt\": \"2023-10-01T13:00:00Z\",\n        \"name\": \"Morning Yoga Session\",\n        \"scheduledTo\": \"2023-10-01T12:00:00Z\",\n        \"startedAt\": \"2023-10-01T12:05:00Z\",\n        \"status\": \"FINISHED\",\n        \"trainingSessions\": [\n            {\n                \"kcalBurned\": 300,\n                \"rank\": 1,\n                \"score\": 95,\n                \"status\": \"FINISHED\",\n                \"student\": {\n                    \"id\": \"student-jkl345\",\n                    \"name\": \"Maria Silva\",\n                    \"photoURL\": \"https://example.com/images/maria.jpg\",\n                    \"sex\": \"F\",\n                    \"weightInGram\": 85000,\n                    \"heightInCm\": 175,\n                    \"age\": 25\n                },\n                \"bandPin\": \"10\",\n                \"durationInSeconds\": 3000,\n                \"zoneModelData\": {\n                    \"id\": \"zoneModel123\",\n                    \"name\": \"Advanced Zone Model\",\n                    \"targetZoneKey\": \"zone2\", //This is a key from the zonesModel field\n                    \"zonesModel\": {\n                        \"zone1\": {\n                            \"barHexColor\": \"#FF0000\",\n                            \"cardHexColor\": \"#00FF00\",\n                            \"durationInSeconds\": 1200,\n                            \"minHeartRatePercentage\": 0.60,\n                            \"maxHeartRatePercentage\": 0.70,\n                            \"name\": \"Zone 1\",\n                            \"scorePointsPerSecond\": 1.5,\n                            \"indicatorLinearGradient\": {\n                                \"colors\": [\n                                    \"#FF0000\",\n                                    \"#00FF00\"\n                                ],\n                                \"tileMode\": 1\n                            }\n                        },\n                        \"zone2\": {\n                            \"barHexColor\": \"#0000FF\",\n                            \"cardHexColor\": \"#FFFF00\",\n                            \"durationInSeconds\": 1800,\n                            \"minHeartRatePercentage\": 0.70,\n                            \"maxHeartRatePercentage\": 0.80,\n                            \"name\": \"Zone 2\",\n                            \"scorePointsPerSecond\": 2.0,\n                            \"indicatorLinearGradient\": {\n                                \"colors\": [\n                                    \"#0000FF\",\n                                    \"#FFFF00\"\n                                ],\n                                \"tileMode\": 0\n                            }\n                        }\n                    }\n                }\n            },\n            {\n                \"kcalBurned\": 300,\n                \"rank\": 1,\n                \"score\": 95,\n                \"status\": \"FINISHED\",\n                \"student\": {\n                    \"id\": \"student-jkl345\",\n                    \"name\": \"Maria Silva\",\n                    \"photoURL\": \"https://example.com/images/maria.jpg\",\n                    \"sex\": \"F\",\n                    \"weightInGram\": 85000,\n                    \"heightInCm\": 175,\n                    \"age\": 25\n                },\n                \"bandPin\": \"10\",\n                \"durationInSeconds\": 3000,\n                \"zoneModelData\": {\n                    \"id\": \"zoneModel123\",\n                    \"name\": \"Advanced Zone Model\",\n                    \"targetZoneKey\": \"zone2\", //This is a key from the zonesModel field\n                    \"zonesModel\": {\n                        \"zone1\": {\n                            \"barHexColor\": \"#FF0000\",\n                            \"cardHexColor\": \"#00FF00\",\n                            \"durationInSeconds\": 1200,\n                            \"minHeartRatePercentage\": 0.60,\n                            \"maxHeartRatePercentage\": 0.70,\n                            \"name\": \"Zone 1\",\n                            \"scorePointsPerSecond\": 1.5,\n                            \"indicatorLinearGradient\": {\n                                \"colors\": [\n                                    \"#FF0000\",\n                                    \"#00FF00\"\n                                ],\n                                \"tileMode\": 1\n                            }\n                        },\n                        \"zone2\": {\n                            \"barHexColor\": \"#0000FF\",\n                            \"cardHexColor\": \"#FFFF00\",\n                            \"durationInSeconds\": 1800,\n                            \"minHeartRatePercentage\": 0.70,\n                            \"maxHeartRatePercentage\": 0.80,\n                            \"name\": \"Zone 2\",\n                            \"scorePointsPerSecond\": 2.0,\n                            \"indicatorLinearGradient\": {\n                                \"colors\": [\n                                    \"#0000FF\",\n                                    \"#FFFF00\"\n                                ],\n                                \"tileMode\": 0\n                            }\n                        }\n                    }\n                }\n            }\n        ]\n    }\n}","options":{"raw":{"language":"json"}}},"url":"https://erp.com.br/onClassSessionFinished","description":"<p>Sempre que uma aula é finalizada este webhook é chamado com os dados da aula que foi finalizada. Assim é possível enviar relatórios para os alunos e outras ações.</p>\n","auth":{"type":"apikey","apikey":{"basicConfig":[{"key":"key","value":"x-api-key"},{"key":"value","value":"{{apiKey}}"}]},"isInherited":true,"source":{"_postman_id":"8a359981-f1f8-4d72-9cd7-3dc976c95841","id":"8a359981-f1f8-4d72-9cd7-3dc976c95841","name":"Documentação de API do Moovz","type":"collection"}},"urlObject":{"host":["https://erp.com.br/onClassSessionFinished"],"query":[],"variable":[]}},"response":[],"_postman_id":"23d74380-f775-4d25-a516-73ef43ff3e7e"},{"name":"Sessão de aula atualizada","id":"18b548e4-1c9b-4939-bf78-909cd513bf13","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"POST","header":[],"body":{"mode":"raw","raw":"{\n    \"gymID\": \"gym-abc123\",\n    \"scheduleID\": \"schedule-xyz456\",\n    \"classID\": \"class-def789\",\n    \"classSessionID\": \"session-ghi012\",\n    \"classSession\": {\n        \"id\": \"session-ghi012\",\n        \"capacity\": 20,\n        \"coverURL\": \"https://example.com/images/session-cover.jpg\",\n        \"durationInSeconds\": 3300,\n        \"plannedDurationInSeconds\": 3600,\n        \"finishedAt\": \"2023-10-01T13:00:00Z\",\n        \"name\": \"Morning Yoga Session\",\n        \"scheduledTo\": \"2023-10-01T12:00:00Z\",\n        \"startedAt\": \"2023-10-01T12:05:00Z\",\n        \"status\": \"FINISHED\",\n        \"gymID\": \"gym-abc123\",\n        \"trainingSessions\": [\n            {\n                \"kcalBurned\": 300,\n                \"rank\": 1,\n                \"score\": 95,\n                \"status\": \"FINISHED\",\n                \"student\": {\n                    \"id\": \"student-jkl345\",\n                    \"name\": \"Maria Silva\",\n                    \"photoURL\": \"https://example.com/images/maria.jpg\"\n                },\n                \"bandPin\": \"10\"\n            },\n            {\n                \"kcalBurned\": 250,\n                \"rank\": 2,\n                \"score\": 90,\n                \"status\": \"FINISHED\",\n                \"student\": {\n                    \"id\": \"student-mno678\",\n                    \"name\": \"João Oliveira\",\n                    \"photoURL\": \"https://example.com/images/joao.jpg\"\n                },\n                \"bandPin\": \"23\"\n            }\n        ]\n    }\n}","options":{"raw":{"language":"json"}}},"url":"https://erp.com.br/onClassSessionUpdatedWebhook","auth":{"type":"apikey","apikey":{"basicConfig":[{"key":"key","value":"x-api-key"},{"key":"value","value":"{{apiKey}}"}]},"isInherited":true,"source":{"_postman_id":"8a359981-f1f8-4d72-9cd7-3dc976c95841","id":"8a359981-f1f8-4d72-9cd7-3dc976c95841","name":"Documentação de API do Moovz","type":"collection"}},"urlObject":{"host":["https://erp.com.br/onClassSessionUpdatedWebhook"],"query":[],"variable":[]}},"response":[],"_postman_id":"18b548e4-1c9b-4939-bf78-909cd513bf13"},{"name":"Sessão de aula cancelada","id":"b370f9bd-172a-434d-ab20-933f3122a5fd","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"POST","header":[],"body":{"mode":"raw","raw":"{\n    \"agent\": { //If null, it means this event was triggered by the system\n        \"id\": \"XYZ\",\n        \"name\": \"Johanes\",\n        \"email\": \"johanes@moovz.app\",\n        \"cpf\": \"905.794.600-96\"\n    },\n    \"gymID\": \"gym-abc123\",\n    \"scheduleID\": \"schedule-xyz456\",\n    \"classID\": \"class-def789\",\n    \"classSessionID\": \"session-ghi012\"\n}","options":{"raw":{"language":"json"}}},"url":"https://erp.com.br/onClassSessionDeletedWebhook","auth":{"type":"apikey","apikey":{"basicConfig":[{"key":"key","value":"x-api-key"},{"key":"value","value":"{{apiKey}}"}]},"isInherited":true,"source":{"_postman_id":"8a359981-f1f8-4d72-9cd7-3dc976c95841","id":"8a359981-f1f8-4d72-9cd7-3dc976c95841","name":"Documentação de API do Moovz","type":"collection"}},"urlObject":{"host":["https://erp.com.br/onClassSessionDeletedWebhook"],"query":[],"variable":[]}},"response":[],"_postman_id":"b370f9bd-172a-434d-ab20-933f3122a5fd"}],"id":"9d819ae7-c6e6-41de-960f-b27a4dbe9cb9","_postman_id":"9d819ae7-c6e6-41de-960f-b27a4dbe9cb9","description":"","auth":{"type":"apikey","apikey":{"basicConfig":[{"key":"key","value":"x-api-key"},{"key":"value","value":"{{apiKey}}"}]},"isInherited":true,"source":{"_postman_id":"8a359981-f1f8-4d72-9cd7-3dc976c95841","id":"8a359981-f1f8-4d72-9cd7-3dc976c95841","name":"Documentação de API do Moovz","type":"collection"}}}],"id":"5c12d529-74c9-49e7-a533-2f37ac8b9e21","description":"<p>Aqui estão os exemplos das requisições que serão enviadas para os endpoinst informados e as respostas esperadas do sistema.</p>\n","_postman_id":"5c12d529-74c9-49e7-a533-2f37ac8b9e21","auth":{"type":"apikey","apikey":{"basicConfig":[{"key":"key","value":"x-api-key"},{"key":"value","value":"{{apiKey}}"}]},"isInherited":true,"source":{"_postman_id":"8a359981-f1f8-4d72-9cd7-3dc976c95841","id":"8a359981-f1f8-4d72-9cd7-3dc976c95841","name":"Documentação de API do Moovz","type":"collection"}}}],"auth":{"type":"apikey","apikey":{"basicConfig":[{"key":"key","value":"x-api-key"},{"key":"value","value":"{{apiKey}}"}]}},"event":[{"listen":"prerequest","script":{"id":"f364a3a2-54c4-499a-8dd1-7e90cc55a931","type":"text/javascript","exec":[""]}},{"listen":"test","script":{"id":"be95728b-52d3-4497-8222-978799828caf","type":"text/javascript","exec":[""]}}],"variable":[{"id":"810f1a2d-c7c7-4e7b-8028-0fea1abcebab","key":"baseUrl","value":"https://api.moovz.app/api"},{"id":"a997499e-f318-4a8e-b032-183ba12d97af","key":"apiVersion","value":"1"},{"id":"906f7f17-be41-40a5-a83d-2d9c4b503e1e","key":"gymID","value":"XYZ"},{"id":"29a3963c-062b-4807-bcb8-85b52ab1cef2","key":"scheduleID","value":"XYZ"},{"id":"a28fabc7-7f32-4e82-b85d-cf29ca8b2648","key":"classID","value":"XYZ"},{"id":"f0039e58-5d58-4450-8a44-144febd58b94","key":"classSessionID","value":"XYZ"},{"id":"791effb7-de40-40e9-9022-75bf8da99947","key":"trainingSessionID","value":"XYZ"},{"id":"084689db-242e-4b3d-bfac-16f43ccb3fd0","key":"onScheduleCreatedWebhook","value":"https://erp.com.br/onScheduleCreatedWebhook"},{"id":"93b36df8-37a3-4d31-a765-f252956c0576","key":"onScheduleUpdatedWebhook","value":"https://erp.com.br/onScheduleUpdatedWebhook"},{"id":"29242722-494b-434f-9d05-04884c93cdc9","key":"onScheduleDeletedWebhook","value":"https://erp.com.br/onScheduleDeletedWebhook"},{"id":"849bd717-e383-4e9f-880d-39f913c474f8","key":"onClassCreatedWebhook","value":"https://erp.com.br/onClassCreatedWebhook"},{"id":"de9d1fae-f100-46eb-8abb-65721bbcb59f","key":"onClassUpdatedWebhook","value":"https://erp.com.br/onClassUpdatedWebhook"},{"id":"8ebe8d2a-817d-4ca5-ae12-71b10b77b0ee","key":"onClassDeletedWebhook","value":"https://erp.com.br/onClassDeletedWebhook"},{"id":"aa572b4d-fcce-4cec-a9cb-ba2eb8d2a30f","key":"onClassSessionUpdatedWebhook","value":"https://erp.com.br/onClassSessionUpdatedWebhook"},{"id":"24af7113-6d35-4ca2-af57-52ea0a7a4d01","key":"onClassSessionDeletedWebhook","value":"https://erp.com.br/onClassSessionDeletedWebhook"},{"id":"af7afc81-8a45-43e0-8be7-9a7304aeece3","key":"onGymDataUpdatedWebhook","value":"https://erp.com.br/onGymDataUpdatedWebhook"},{"id":"6c3d7e5a-57c6-42d6-9cc5-a8505bd6ed44","key":"onStudentCheckoutWebhook","value":"https://erp.com.br/onStudentCheckoutWebhook"},{"id":"f1a8572e-6bb3-48c1-b32e-c973ebb6bb2e","key":"onStudentTrainingFinishedWebhook","value":"https://erp.com.br/onStudentTrainingFinishedWebhook"},{"id":"dca4ef49-37e3-4b26-9557-06840c9f5d85","key":"onStudentTrainingBandChangedWebhook","value":"https://erp.com.br/onStudentTrainingBandChangedWebhook"},{"id":"77fc3fed-5460-4c38-9185-65d0de886369","key":"validateCheckin","value":"https://erp.com.br/validateCheckin"},{"id":"858dce09-7edd-42d2-8df2-4af818e5a400","key":"validateStudentEnrollment","value":"https://erp.com.br/validateStudentEnrollment"},{"id":"f8bdf03f-f627-4756-baa3-3704591ddb9f","key":"onClassSessionFinished","value":"https://erp.com.br/onClassSessionFinished"},{"id":"276403b6-f544-4ec3-be12-9f156914cafc","key":"onIntegrationDisabled","value":"https://erp.com.br/onIntegrationDisabled"}]}