{
	"info": {
		"_postman_id": "fieldwire-alpha-backend",
		"name": "Fieldwire Alpha Backend",
		"description": "Complete API collection for Fieldwire Alpha Backend",
		"schema": "https://schema.getpostman.com/json/collection/v2.1.0/collection.json"
	},
	"variable": [
		{
			"key": "baseUrl",
			"value": "http://localhost:7052",
			"type": "string"
		},
		{
			"key": "accessToken",
			"value": "",
			"type": "string"
		},
		{
			"key": "refreshToken",
			"value": "",
			"type": "string"
		},
		{
			"key": "sessionId",
			"value": "",
			"type": "string"
		},
		{
			"key": "projectId",
			"value": "",
			"type": "string"
		},
		{
			"key": "groupId",
			"value": "",
			"type": "string"
		},
		{
			"key": "flagId",
			"value": "",
			"type": "string"
		}
	],
	"item": [
		{
			"name": "Health",
			"item": [
				{
					"name": "Health Check",
					"request": {
						"method": "GET",
						"header": [],
						"url": {
							"raw": "{{baseUrl}}/api/v1/health",
							"host": ["{{baseUrl}}"],
							"path": ["api", "v1", "health"]
						}
					}
				}
			]
		},
		{
			"name": "Authentication",
			"item": [
				{
					"name": "Login",
					"event": [
						{
							"listen": "test",
							"script": {
								"exec": [
									"if (pm.response.code === 200) {",
									"    const response = pm.response.json();",
									"    pm.collectionVariables.set('accessToken', response.data.access_token);",
									"    pm.collectionVariables.set('refreshToken', response.data.refresh_token);",
									"    console.log('Tokens saved to collection variables');",
									"}"
								],
								"type": "text/javascript"
							}
						}
					],
					"request": {
						"method": "POST",
						"header": [
							{
								"key": "Content-Type",
								"value": "application/json"
							}
						],
						"body": {
							"mode": "raw",
							"raw": "{\n  \"email\": \"admin@fieldwire.com\",\n  \"password\": \"admin123\",\n  \"device_id\": \"postman-test\"\n}"
						},
						"url": {
							"raw": "{{baseUrl}}/api/v1/auth/login",
							"host": ["{{baseUrl}}"],
							"path": ["api", "v1", "auth", "login"]
						}
					}
				},
				{
					"name": "Get Current User (Me)",
					"request": {
						"method": "GET",
						"header": [
							{
								"key": "Authorization",
								"value": "Bearer {{accessToken}}"
							}
						],
						"url": {
							"raw": "{{baseUrl}}/api/v1/auth/me",
							"host": ["{{baseUrl}}"],
							"path": ["api", "v1", "auth", "me"]
						}
					}
				},
				{
					"name": "Refresh Token",
					"event": [
						{
							"listen": "test",
							"script": {
								"exec": [
									"if (pm.response.code === 200) {",
									"    const response = pm.response.json();",
									"    pm.collectionVariables.set('accessToken', response.data.access_token);",
									"    pm.collectionVariables.set('refreshToken', response.data.refresh_token);",
									"    console.log('Tokens refreshed and saved');",
									"}"
								],
								"type": "text/javascript"
							}
						}
					],
					"request": {
						"method": "POST",
						"header": [
							{
								"key": "Content-Type",
								"value": "application/json"
							}
						],
						"body": {
							"mode": "raw",
							"raw": "{\n  \"refresh_token\": \"{{refreshToken}}\"\n}"
						},
						"url": {
							"raw": "{{baseUrl}}/api/v1/auth/refresh",
							"host": ["{{baseUrl}}"],
							"path": ["api", "v1", "auth", "refresh"]
						}
					}
				},
				{
					"name": "Logout",
					"request": {
						"method": "POST",
						"header": [
							{
								"key": "Content-Type",
								"value": "application/json"
							}
						],
						"body": {
							"mode": "raw",
							"raw": "{\n  \"refresh_token\": \"{{refreshToken}}\"\n}"
						},
						"url": {
							"raw": "{{baseUrl}}/api/v1/auth/logout",
							"host": ["{{baseUrl}}"],
							"path": ["api", "v1", "auth", "logout"]
						}
					}
				},
				{
					"name": "Verify Email",
					"request": {
						"method": "POST",
						"header": [
							{
								"key": "Content-Type",
								"value": "application/json"
							}
						],
						"body": {
							"mode": "raw",
							"raw": "{\n  \"token\": \"<VERIFICATION_TOKEN_FROM_EMAIL>\"\n}"
						},
						"url": {
							"raw": "{{baseUrl}}/api/v1/auth/verify-email",
							"host": ["{{baseUrl}}"],
							"path": ["api", "v1", "auth", "verify-email"]
						}
					}
				},
				{
					"name": "Resend Verification Email",
					"request": {
						"method": "POST",
						"header": [
							{
								"key": "Content-Type",
								"value": "application/json"
							}
						],
						"body": {
							"mode": "raw",
							"raw": "{\n  \"email\": \"user@example.com\"\n}"
						},
						"url": {
							"raw": "{{baseUrl}}/api/v1/auth/resend-verification",
							"host": ["{{baseUrl}}"],
							"path": ["api", "v1", "auth", "resend-verification"]
						}
					}
				}
			]
		},
		{
			"name": "Sessions",
			"item": [
				{
					"name": "List Sessions",
					"event": [
						{
							"listen": "test",
							"script": {
								"exec": [
									"if (pm.response.code === 200) {",
									"    const response = pm.response.json();",
									"    if (response.data.items.length > 0) {",
									"        pm.collectionVariables.set('sessionId', response.data.items[0].id);",
									"        console.log('First session ID saved');",
									"    }",
									"}"
								],
								"type": "text/javascript"
							}
						}
					],
					"request": {
						"method": "GET",
						"header": [
							{
								"key": "Authorization",
								"value": "Bearer {{accessToken}}"
							}
						],
						"url": {
							"raw": "{{baseUrl}}/api/v1/sessions",
							"host": ["{{baseUrl}}"],
							"path": ["api", "v1", "sessions"]
						}
					}
				},
				{
					"name": "Revoke Session",
					"request": {
						"method": "POST",
						"header": [
							{
								"key": "Authorization",
								"value": "Bearer {{accessToken}}"
							}
						],
						"url": {
							"raw": "{{baseUrl}}/api/v1/sessions/{{sessionId}}/revoke",
							"host": ["{{baseUrl}}"],
							"path": ["api", "v1", "sessions", "{{sessionId}}", "revoke"]
						}
					}
				},
				{
					"name": "Revoke All Sessions (Keep Current)",
					"request": {
						"method": "POST",
						"header": [
							{
								"key": "Authorization",
								"value": "Bearer {{accessToken}}"
							},
							{
								"key": "Content-Type",
								"value": "application/json"
							}
						],
						"body": {
							"mode": "raw",
							"raw": "{\n  \"include_current\": false\n}"
						},
						"url": {
							"raw": "{{baseUrl}}/api/v1/sessions/revoke-all",
							"host": ["{{baseUrl}}"],
							"path": ["api", "v1", "sessions", "revoke-all"]
						}
					}
				},
				{
					"name": "Revoke All Sessions (Including Current)",
					"request": {
						"method": "POST",
						"header": [
							{
								"key": "Authorization",
								"value": "Bearer {{accessToken}}"
							},
							{
								"key": "Content-Type",
								"value": "application/json"
							}
						],
						"body": {
							"mode": "raw",
							"raw": "{\n  \"include_current\": true\n}"
						},
						"url": {
							"raw": "{{baseUrl}}/api/v1/sessions/revoke-all",
							"host": ["{{baseUrl}}"],
							"path": ["api", "v1", "sessions", "revoke-all"]
						}
					}
				}
			]
		},
		{
			"name": "Flags",
			"item": [
				{
					"name": "Create Flag Group",
					"request": {
						"method": "POST",
						"header": [
							{"key": "Authorization", "value": "Bearer {{accessToken}}"},
							{"key": "Content-Type", "value": "application/json"}
						],
						"body": {
							"mode": "raw",
							"raw": "{\n  \"name\": \"Status Flags\",\n  \"description\": \"Project status flags\"\n}"
						},
						"url": {
							"raw": "{{baseUrl}}/api/v1/projects/{{projectId}}/flag-groups",
							"host": ["{{baseUrl}}"],
							"path": ["api", "v1", "projects", "{{projectId}}", "flag-groups"]
						}
					}
				},
				{
					"name": "List Flag Groups",
					"request": {
						"method": "GET",
						"header": [{"key": "Authorization", "value": "Bearer {{accessToken}}"}],
						"url": {
							"raw": "{{baseUrl}}/api/v1/projects/{{projectId}}/flag-groups",
							"host": ["{{baseUrl}}"],
							"path": ["api", "v1", "projects", "{{projectId}}", "flag-groups"]
						}
					}
				},
				{
					"name": "Update Flag Group",
					"request": {
						"method": "PUT",
						"header": [
							{"key": "Authorization", "value": "Bearer {{accessToken}}"},
							{"key": "Content-Type", "value": "application/json"}
						],
						"body": {
							"mode": "raw",
							"raw": "{\n  \"name\": \"Updated Name\",\n  \"is_active\": true\n}"
						},
						"url": {
							"raw": "{{baseUrl}}/api/v1/flag-groups/{{groupId}}",
							"host": ["{{baseUrl}}"],
							"path": ["api", "v1", "flag-groups", "{{groupId}}"]
						}
					}
				},
				{
					"name": "Delete Flag Group",
					"request": {
						"method": "DELETE",
						"header": [{"key": "Authorization", "value": "Bearer {{accessToken}}"}],
						"url": {
							"raw": "{{baseUrl}}/api/v1/flag-groups/{{groupId}}",
							"host": ["{{baseUrl}}"],
							"path": ["api", "v1", "flag-groups", "{{groupId}}"]
						}
					}
				},
				{
					"name": "Create Flag Value",
					"request": {
						"method": "POST",
						"header": [
							{"key": "Authorization", "value": "Bearer {{accessToken}}"},
							{"key": "Content-Type", "value": "application/json"}
						],
						"body": {
							"mode": "raw",
							"raw": "{\n  \"label\": \"In Progress\"\n}"
						},
						"url": {
							"raw": "{{baseUrl}}/api/v1/flag-groups/{{groupId}}/flags",
							"host": ["{{baseUrl}}"],
							"path": ["api", "v1", "flag-groups", "{{groupId}}", "flags"]
						}
					}
				},
				{
					"name": "List Flag Values",
					"request": {
						"method": "GET",
						"header": [{"key": "Authorization", "value": "Bearer {{accessToken}}"}],
						"url": {
							"raw": "{{baseUrl}}/api/v1/flag-groups/{{groupId}}/flags",
							"host": ["{{baseUrl}}"],
							"path": ["api", "v1", "flag-groups", "{{groupId}}", "flags"]
						}
					}
				},
				{
					"name": "Update Flag Value",
					"request": {
						"method": "PUT",
						"header": [
							{"key": "Authorization", "value": "Bearer {{accessToken}}"},
							{"key": "Content-Type", "value": "application/json"}
						],
						"body": {
							"mode": "raw",
							"raw": "{\n  \"label\": \"Completed\",\n  \"is_active\": true\n}"
						},
						"url": {
							"raw": "{{baseUrl}}/api/v1/flags/{{flagId}}",
							"host": ["{{baseUrl}}"],
							"path": ["api", "v1", "flags", "{{flagId}}"]
						}
					}
				},
				{
					"name": "Delete Flag Value",
					"request": {
						"method": "DELETE",
						"header": [{"key": "Authorization", "value": "Bearer {{accessToken}}"}],
						"url": {
							"raw": "{{baseUrl}}/api/v1/flags/{{flagId}}",
							"host": ["{{baseUrl}}"],
							"path": ["api", "v1", "flags", "{{flagId}}"]
						}
					}
				}
			]
		}
	]
}
