{
  "info": {
    "name": "Upskera API v1",
    "schema": "https://schema.getpostman.com/json/collection/v2.1.0/collection.json",
    "description": "Generated from the Upskera v1 route registry."
  },
  "auth": {
    "type": "bearer",
    "bearer": [
      {
        "key": "token",
        "value": "{{apiKey}}",
        "type": "string"
      }
    ]
  },
  "variable": [
    {
      "key": "baseUrl",
      "value": "https://localhost:3400/api/v1"
    },
    {
      "key": "apiKey",
      "value": "upk_test_…"
    }
  ],
  "item": [
    {
      "name": "Users",
      "item": [
        {
          "name": "List users",
          "request": {
            "method": "GET",
            "header": [],
            "url": {
              "raw": "{{baseUrl}}/users",
              "host": [
                "{{baseUrl}}"
              ],
              "path": [
                "users"
              ],
              "query": [
                {
                  "key": "limit",
                  "value": "",
                  "disabled": true,
                  "description": "Page size (1–100, default 25)"
                },
                {
                  "key": "cursor",
                  "value": "",
                  "disabled": true,
                  "description": "Cursor from the previous page's nextCursor"
                },
                {
                  "key": "email",
                  "value": "",
                  "disabled": true,
                  "description": "Filter by exact email"
                },
                {
                  "key": "status",
                  "value": "",
                  "disabled": true,
                  "description": "ACTIVE | SUSPENDED | DEACTIVATED | INVITED"
                },
                {
                  "key": "updatedSince",
                  "value": "",
                  "disabled": true,
                  "description": "ISO date — users active since"
                }
              ],
              "variable": []
            },
            "description": "Required scope: users:read"
          }
        },
        {
          "name": "Get a user",
          "request": {
            "method": "GET",
            "header": [],
            "url": {
              "raw": "{{baseUrl}}/users/:id",
              "host": [
                "{{baseUrl}}"
              ],
              "path": [
                "users",
                ":id"
              ],
              "query": [],
              "variable": [
                {
                  "key": "id",
                  "value": ""
                }
              ]
            },
            "description": "Required scope: users:read"
          }
        },
        {
          "name": "Create or invite a user",
          "request": {
            "method": "POST",
            "header": [
              {
                "key": "Content-Type",
                "value": "application/json"
              }
            ],
            "url": {
              "raw": "{{baseUrl}}/users",
              "host": [
                "{{baseUrl}}"
              ],
              "path": [
                "users"
              ],
              "query": [],
              "variable": []
            },
            "body": {
              "mode": "raw",
              "raw": "{\n  \"email\": \"\",\n  \"firstName\": \"\",\n  \"lastName\": \"\",\n  \"firstNameAr\": \"\",\n  \"lastNameAr\": \"\",\n  \"roles\": \"\",\n  \"orgUnitId\": \"\",\n  \"employeeNo\": \"\",\n  \"sendInvite\": \"\"\n}"
            },
            "description": "Required scope: users:write"
          }
        },
        {
          "name": "Update a user (status, org unit, job role)",
          "request": {
            "method": "PATCH",
            "header": [
              {
                "key": "Content-Type",
                "value": "application/json"
              }
            ],
            "url": {
              "raw": "{{baseUrl}}/users/:id",
              "host": [
                "{{baseUrl}}"
              ],
              "path": [
                "users",
                ":id"
              ],
              "query": [],
              "variable": [
                {
                  "key": "id",
                  "value": ""
                }
              ]
            },
            "body": {
              "mode": "raw",
              "raw": "{\n  \"status\": \"\",\n  \"orgUnitId\": \"\",\n  \"jobRoleId\": \"\",\n  \"employeeNo\": \"\"\n}"
            },
            "description": "Required scope: users:write"
          }
        }
      ]
    },
    {
      "name": "Organisation",
      "item": [
        {
          "name": "List org units",
          "request": {
            "method": "GET",
            "header": [],
            "url": {
              "raw": "{{baseUrl}}/org-units",
              "host": [
                "{{baseUrl}}"
              ],
              "path": [
                "org-units"
              ],
              "query": [
                {
                  "key": "limit",
                  "value": "",
                  "disabled": true,
                  "description": "Page size (1–100, default 25)"
                },
                {
                  "key": "cursor",
                  "value": "",
                  "disabled": true,
                  "description": "Cursor from the previous page's nextCursor"
                }
              ],
              "variable": []
            },
            "description": "Required scope: org-units:read"
          }
        },
        {
          "name": "Get an org unit",
          "request": {
            "method": "GET",
            "header": [],
            "url": {
              "raw": "{{baseUrl}}/org-units/:id",
              "host": [
                "{{baseUrl}}"
              ],
              "path": [
                "org-units",
                ":id"
              ],
              "query": [],
              "variable": [
                {
                  "key": "id",
                  "value": ""
                }
              ]
            },
            "description": "Required scope: org-units:read"
          }
        }
      ]
    },
    {
      "name": "Groups",
      "item": [
        {
          "name": "List groups",
          "request": {
            "method": "GET",
            "header": [],
            "url": {
              "raw": "{{baseUrl}}/groups",
              "host": [
                "{{baseUrl}}"
              ],
              "path": [
                "groups"
              ],
              "query": [
                {
                  "key": "limit",
                  "value": "",
                  "disabled": true,
                  "description": "Page size (1–100, default 25)"
                },
                {
                  "key": "cursor",
                  "value": "",
                  "disabled": true,
                  "description": "Cursor from the previous page's nextCursor"
                }
              ],
              "variable": []
            },
            "description": "Required scope: groups:read"
          }
        },
        {
          "name": "Get a group with member ids",
          "request": {
            "method": "GET",
            "header": [],
            "url": {
              "raw": "{{baseUrl}}/groups/:id",
              "host": [
                "{{baseUrl}}"
              ],
              "path": [
                "groups",
                ":id"
              ],
              "query": [],
              "variable": [
                {
                  "key": "id",
                  "value": ""
                }
              ]
            },
            "description": "Required scope: groups:read"
          }
        },
        {
          "name": "Add members to a static group",
          "request": {
            "method": "POST",
            "header": [
              {
                "key": "Content-Type",
                "value": "application/json"
              }
            ],
            "url": {
              "raw": "{{baseUrl}}/groups/:id/members",
              "host": [
                "{{baseUrl}}"
              ],
              "path": [
                "groups",
                ":id",
                "members"
              ],
              "query": [],
              "variable": [
                {
                  "key": "id",
                  "value": ""
                }
              ]
            },
            "body": {
              "mode": "raw",
              "raw": "{\n  \"userIds\": \"\"\n}"
            },
            "description": "Required scope: groups:write"
          }
        }
      ]
    },
    {
      "name": "Learning",
      "item": [
        {
          "name": "List published courses",
          "request": {
            "method": "GET",
            "header": [],
            "url": {
              "raw": "{{baseUrl}}/courses",
              "host": [
                "{{baseUrl}}"
              ],
              "path": [
                "courses"
              ],
              "query": [
                {
                  "key": "limit",
                  "value": "",
                  "disabled": true,
                  "description": "Page size (1–100, default 25)"
                },
                {
                  "key": "cursor",
                  "value": "",
                  "disabled": true,
                  "description": "Cursor from the previous page's nextCursor"
                }
              ],
              "variable": []
            },
            "description": "Required scope: courses:read"
          }
        },
        {
          "name": "Get a course",
          "request": {
            "method": "GET",
            "header": [],
            "url": {
              "raw": "{{baseUrl}}/courses/:id",
              "host": [
                "{{baseUrl}}"
              ],
              "path": [
                "courses",
                ":id"
              ],
              "query": [],
              "variable": [
                {
                  "key": "id",
                  "value": ""
                }
              ]
            },
            "description": "Required scope: courses:read"
          }
        },
        {
          "name": "List enrollments",
          "request": {
            "method": "GET",
            "header": [],
            "url": {
              "raw": "{{baseUrl}}/enrollments",
              "host": [
                "{{baseUrl}}"
              ],
              "path": [
                "enrollments"
              ],
              "query": [
                {
                  "key": "limit",
                  "value": "",
                  "disabled": true,
                  "description": "Page size (1–100, default 25)"
                },
                {
                  "key": "cursor",
                  "value": "",
                  "disabled": true,
                  "description": "Cursor from the previous page's nextCursor"
                },
                {
                  "key": "userId",
                  "value": "",
                  "disabled": true,
                  "description": "Filter by user"
                },
                {
                  "key": "courseId",
                  "value": "",
                  "disabled": true,
                  "description": "Filter by course"
                }
              ],
              "variable": []
            },
            "description": "Required scope: enrollments:read"
          }
        },
        {
          "name": "Enrol a user in a course",
          "request": {
            "method": "POST",
            "header": [
              {
                "key": "Content-Type",
                "value": "application/json"
              }
            ],
            "url": {
              "raw": "{{baseUrl}}/enrollments",
              "host": [
                "{{baseUrl}}"
              ],
              "path": [
                "enrollments"
              ],
              "query": [],
              "variable": []
            },
            "body": {
              "mode": "raw",
              "raw": "{\n  \"userId\": \"\",\n  \"courseId\": \"\",\n  \"dueAt\": \"\"\n}"
            },
            "description": "Required scope: enrollments:write"
          }
        },
        {
          "name": "List course completions",
          "request": {
            "method": "GET",
            "header": [],
            "url": {
              "raw": "{{baseUrl}}/completions",
              "host": [
                "{{baseUrl}}"
              ],
              "path": [
                "completions"
              ],
              "query": [
                {
                  "key": "limit",
                  "value": "",
                  "disabled": true,
                  "description": "Page size (1–100, default 25)"
                },
                {
                  "key": "cursor",
                  "value": "",
                  "disabled": true,
                  "description": "Cursor from the previous page's nextCursor"
                },
                {
                  "key": "since",
                  "value": "",
                  "disabled": true,
                  "description": "ISO date — completed since"
                }
              ],
              "variable": []
            },
            "description": "Required scope: completions:read"
          }
        }
      ]
    },
    {
      "name": "Assessment",
      "item": [
        {
          "name": "List released exam results",
          "request": {
            "method": "GET",
            "header": [],
            "url": {
              "raw": "{{baseUrl}}/exam-results",
              "host": [
                "{{baseUrl}}"
              ],
              "path": [
                "exam-results"
              ],
              "query": [
                {
                  "key": "limit",
                  "value": "",
                  "disabled": true,
                  "description": "Page size (1–100, default 25)"
                },
                {
                  "key": "cursor",
                  "value": "",
                  "disabled": true,
                  "description": "Cursor from the previous page's nextCursor"
                },
                {
                  "key": "examId",
                  "value": "",
                  "disabled": true,
                  "description": "Filter by exam"
                }
              ],
              "variable": []
            },
            "description": "Required scope: exams:read"
          }
        }
      ]
    },
    {
      "name": "Credentials",
      "item": [
        {
          "name": "List issued credentials",
          "request": {
            "method": "GET",
            "header": [],
            "url": {
              "raw": "{{baseUrl}}/credentials",
              "host": [
                "{{baseUrl}}"
              ],
              "path": [
                "credentials"
              ],
              "query": [
                {
                  "key": "limit",
                  "value": "",
                  "disabled": true,
                  "description": "Page size (1–100, default 25)"
                },
                {
                  "key": "cursor",
                  "value": "",
                  "disabled": true,
                  "description": "Cursor from the previous page's nextCursor"
                },
                {
                  "key": "userId",
                  "value": "",
                  "disabled": true,
                  "description": "Filter by user"
                }
              ],
              "variable": []
            },
            "description": "Required scope: credentials:read"
          }
        },
        {
          "name": "Get a credential",
          "request": {
            "method": "GET",
            "header": [],
            "url": {
              "raw": "{{baseUrl}}/credentials/:id",
              "host": [
                "{{baseUrl}}"
              ],
              "path": [
                "credentials",
                ":id"
              ],
              "query": [],
              "variable": [
                {
                  "key": "id",
                  "value": ""
                }
              ]
            },
            "description": "Required scope: credentials:read"
          }
        }
      ]
    },
    {
      "name": "Commerce",
      "item": [
        {
          "name": "List orders",
          "request": {
            "method": "GET",
            "header": [],
            "url": {
              "raw": "{{baseUrl}}/orders",
              "host": [
                "{{baseUrl}}"
              ],
              "path": [
                "orders"
              ],
              "query": [
                {
                  "key": "limit",
                  "value": "",
                  "disabled": true,
                  "description": "Page size (1–100, default 25)"
                },
                {
                  "key": "cursor",
                  "value": "",
                  "disabled": true,
                  "description": "Cursor from the previous page's nextCursor"
                },
                {
                  "key": "status",
                  "value": "",
                  "disabled": true,
                  "description": "PAID | REFUNDED | PENDING_PAYMENT …"
                }
              ],
              "variable": []
            },
            "description": "Required scope: orders:read"
          }
        },
        {
          "name": "Get an order",
          "request": {
            "method": "GET",
            "header": [],
            "url": {
              "raw": "{{baseUrl}}/orders/:id",
              "host": [
                "{{baseUrl}}"
              ],
              "path": [
                "orders",
                ":id"
              ],
              "query": [],
              "variable": [
                {
                  "key": "id",
                  "value": ""
                }
              ]
            },
            "description": "Required scope: orders:read"
          }
        }
      ]
    }
  ]
}