529 lines
12 KiB
YAML
529 lines
12 KiB
YAML
definitions:
|
|
auth.AuthResponse:
|
|
properties:
|
|
refresh_token:
|
|
example: dGhpcyBpcyBhIHJlZnJlc2ggdG9rZW4=
|
|
type: string
|
|
token:
|
|
example: eyJhbGciOiJIUzI1NiIs...
|
|
type: string
|
|
user:
|
|
$ref: '#/definitions/auth.UserPublic'
|
|
type: object
|
|
auth.ErrorResponse:
|
|
properties:
|
|
error:
|
|
example: invalid email or password
|
|
type: string
|
|
type: object
|
|
auth.LoginRequest:
|
|
properties:
|
|
email:
|
|
example: john@example.com
|
|
type: string
|
|
password:
|
|
example: secret123
|
|
type: string
|
|
required:
|
|
- email
|
|
- password
|
|
type: object
|
|
auth.LogoutRequest:
|
|
properties:
|
|
refresh_token:
|
|
example: dGhpcyBpcyBhIHJlZnJlc2ggdG9rZW4=
|
|
type: string
|
|
required:
|
|
- refresh_token
|
|
type: object
|
|
auth.PasswordChangeRequest:
|
|
properties:
|
|
new_password:
|
|
example: NewSecret456!
|
|
minLength: 8
|
|
type: string
|
|
old_password:
|
|
example: Secret123!
|
|
type: string
|
|
required:
|
|
- new_password
|
|
- old_password
|
|
type: object
|
|
auth.RefreshRequest:
|
|
properties:
|
|
refresh_token:
|
|
example: dGhpcyBpcyBhIHJlZnJlc2ggdG9rZW4=
|
|
type: string
|
|
required:
|
|
- refresh_token
|
|
type: object
|
|
auth.RegisterRequest:
|
|
properties:
|
|
email:
|
|
example: john@example.com
|
|
type: string
|
|
password:
|
|
example: Secret123!
|
|
minLength: 8
|
|
type: string
|
|
username:
|
|
example: john
|
|
maxLength: 30
|
|
minLength: 3
|
|
type: string
|
|
required:
|
|
- email
|
|
- password
|
|
- username
|
|
type: object
|
|
auth.UpdateProfileRequest:
|
|
properties:
|
|
username:
|
|
example: john_updated
|
|
maxLength: 30
|
|
minLength: 3
|
|
type: string
|
|
required:
|
|
- username
|
|
type: object
|
|
auth.UserPublic:
|
|
properties:
|
|
created_at:
|
|
type: string
|
|
email:
|
|
type: string
|
|
id:
|
|
type: string
|
|
username:
|
|
type: string
|
|
type: object
|
|
auth.UserResponse:
|
|
properties:
|
|
user:
|
|
$ref: '#/definitions/auth.UserPublic'
|
|
type: object
|
|
org.CreateOrgRequest:
|
|
properties:
|
|
name:
|
|
example: My Corp
|
|
maxLength: 100
|
|
minLength: 2
|
|
type: string
|
|
slug:
|
|
example: my-corp
|
|
maxLength: 50
|
|
minLength: 2
|
|
type: string
|
|
required:
|
|
- name
|
|
- slug
|
|
type: object
|
|
org.ErrorResponse:
|
|
properties:
|
|
error:
|
|
type: string
|
|
type: object
|
|
org.OrgListResponse:
|
|
properties:
|
|
organizations:
|
|
items:
|
|
$ref: '#/definitions/org.Organization'
|
|
type: array
|
|
total:
|
|
type: integer
|
|
type: object
|
|
org.OrgResponse:
|
|
properties:
|
|
organization:
|
|
$ref: '#/definitions/org.Organization'
|
|
type: object
|
|
org.Organization:
|
|
properties:
|
|
created_at:
|
|
type: string
|
|
id:
|
|
type: string
|
|
name:
|
|
type: string
|
|
slug:
|
|
type: string
|
|
updated_at:
|
|
type: string
|
|
type: object
|
|
org.UpdateOrgRequest:
|
|
properties:
|
|
name:
|
|
example: My Corp Updated
|
|
maxLength: 100
|
|
minLength: 2
|
|
type: string
|
|
required:
|
|
- name
|
|
type: object
|
|
info:
|
|
contact: {}
|
|
description: API for AegisGuard control plane
|
|
title: AegisGuard API
|
|
version: "1.0"
|
|
paths:
|
|
/api/auth/login:
|
|
post:
|
|
consumes:
|
|
- application/json
|
|
description: Authenticate user with email and password, returns JWT token
|
|
parameters:
|
|
- description: Login credentials
|
|
in: body
|
|
name: request
|
|
required: true
|
|
schema:
|
|
$ref: '#/definitions/auth.LoginRequest'
|
|
produces:
|
|
- application/json
|
|
responses:
|
|
"200":
|
|
description: OK
|
|
schema:
|
|
$ref: '#/definitions/auth.AuthResponse'
|
|
"400":
|
|
description: Bad Request
|
|
schema:
|
|
$ref: '#/definitions/auth.ErrorResponse'
|
|
"401":
|
|
description: Unauthorized
|
|
schema:
|
|
$ref: '#/definitions/auth.ErrorResponse'
|
|
summary: Login
|
|
tags:
|
|
- auth
|
|
/api/auth/logout:
|
|
post:
|
|
consumes:
|
|
- application/json
|
|
description: Invalidate a refresh token (logout)
|
|
parameters:
|
|
- description: Refresh token to invalidate
|
|
in: body
|
|
name: request
|
|
required: true
|
|
schema:
|
|
$ref: '#/definitions/auth.LogoutRequest'
|
|
produces:
|
|
- application/json
|
|
responses:
|
|
"200":
|
|
description: OK
|
|
schema:
|
|
additionalProperties:
|
|
type: string
|
|
type: object
|
|
"400":
|
|
description: Bad Request
|
|
schema:
|
|
$ref: '#/definitions/auth.ErrorResponse'
|
|
"401":
|
|
description: Unauthorized
|
|
schema:
|
|
$ref: '#/definitions/auth.ErrorResponse'
|
|
summary: Logout
|
|
tags:
|
|
- auth
|
|
/api/auth/me:
|
|
get:
|
|
consumes:
|
|
- application/json
|
|
description: Get authenticated user's profile
|
|
produces:
|
|
- application/json
|
|
responses:
|
|
"200":
|
|
description: OK
|
|
schema:
|
|
$ref: '#/definitions/auth.UserResponse'
|
|
"401":
|
|
description: Unauthorized
|
|
schema:
|
|
$ref: '#/definitions/auth.ErrorResponse'
|
|
security:
|
|
- Bearer: []
|
|
summary: Get current user
|
|
tags:
|
|
- auth
|
|
put:
|
|
consumes:
|
|
- application/json
|
|
description: Update current user's username
|
|
parameters:
|
|
- description: Profile update
|
|
in: body
|
|
name: request
|
|
required: true
|
|
schema:
|
|
$ref: '#/definitions/auth.UpdateProfileRequest'
|
|
produces:
|
|
- application/json
|
|
responses:
|
|
"200":
|
|
description: OK
|
|
schema:
|
|
$ref: '#/definitions/auth.UserResponse'
|
|
"400":
|
|
description: Bad Request
|
|
schema:
|
|
$ref: '#/definitions/auth.ErrorResponse'
|
|
"401":
|
|
description: Unauthorized
|
|
schema:
|
|
$ref: '#/definitions/auth.ErrorResponse'
|
|
security:
|
|
- Bearer: []
|
|
summary: Update profile
|
|
tags:
|
|
- auth
|
|
/api/auth/password:
|
|
put:
|
|
consumes:
|
|
- application/json
|
|
description: Change current user's password
|
|
parameters:
|
|
- description: Password change details
|
|
in: body
|
|
name: request
|
|
required: true
|
|
schema:
|
|
$ref: '#/definitions/auth.PasswordChangeRequest'
|
|
produces:
|
|
- application/json
|
|
responses:
|
|
"200":
|
|
description: OK
|
|
schema:
|
|
additionalProperties:
|
|
type: string
|
|
type: object
|
|
"400":
|
|
description: Bad Request
|
|
schema:
|
|
$ref: '#/definitions/auth.ErrorResponse'
|
|
"401":
|
|
description: Unauthorized
|
|
schema:
|
|
$ref: '#/definitions/auth.ErrorResponse'
|
|
security:
|
|
- Bearer: []
|
|
summary: Change password
|
|
tags:
|
|
- auth
|
|
/api/auth/refresh:
|
|
post:
|
|
consumes:
|
|
- application/json
|
|
description: Get a new access token using a refresh token
|
|
parameters:
|
|
- description: Refresh token
|
|
in: body
|
|
name: request
|
|
required: true
|
|
schema:
|
|
$ref: '#/definitions/auth.RefreshRequest'
|
|
produces:
|
|
- application/json
|
|
responses:
|
|
"200":
|
|
description: OK
|
|
schema:
|
|
$ref: '#/definitions/auth.AuthResponse'
|
|
"400":
|
|
description: Bad Request
|
|
schema:
|
|
$ref: '#/definitions/auth.ErrorResponse'
|
|
"401":
|
|
description: Unauthorized
|
|
schema:
|
|
$ref: '#/definitions/auth.ErrorResponse'
|
|
summary: Refresh token
|
|
tags:
|
|
- auth
|
|
/api/auth/register:
|
|
post:
|
|
consumes:
|
|
- application/json
|
|
description: Create user account with username, email, password
|
|
parameters:
|
|
- description: Registration details
|
|
in: body
|
|
name: request
|
|
required: true
|
|
schema:
|
|
$ref: '#/definitions/auth.RegisterRequest'
|
|
produces:
|
|
- application/json
|
|
responses:
|
|
"201":
|
|
description: Created
|
|
schema:
|
|
$ref: '#/definitions/auth.AuthResponse'
|
|
"400":
|
|
description: Bad Request
|
|
schema:
|
|
$ref: '#/definitions/auth.ErrorResponse'
|
|
"409":
|
|
description: Conflict
|
|
schema:
|
|
$ref: '#/definitions/auth.ErrorResponse'
|
|
summary: Register
|
|
tags:
|
|
- auth
|
|
/api/organizations:
|
|
get:
|
|
consumes:
|
|
- application/json
|
|
description: Get all organizations
|
|
produces:
|
|
- application/json
|
|
responses:
|
|
"200":
|
|
description: OK
|
|
schema:
|
|
$ref: '#/definitions/org.OrgListResponse'
|
|
"500":
|
|
description: Internal Server Error
|
|
schema:
|
|
$ref: '#/definitions/org.ErrorResponse'
|
|
security:
|
|
- Bearer: []
|
|
summary: List organizations
|
|
tags:
|
|
- organizations
|
|
post:
|
|
consumes:
|
|
- application/json
|
|
description: Create a new organization
|
|
parameters:
|
|
- description: Organization details
|
|
in: body
|
|
name: request
|
|
required: true
|
|
schema:
|
|
$ref: '#/definitions/org.CreateOrgRequest'
|
|
produces:
|
|
- application/json
|
|
responses:
|
|
"201":
|
|
description: Created
|
|
schema:
|
|
$ref: '#/definitions/org.OrgResponse'
|
|
"400":
|
|
description: Bad Request
|
|
schema:
|
|
$ref: '#/definitions/org.ErrorResponse'
|
|
"409":
|
|
description: Conflict
|
|
schema:
|
|
$ref: '#/definitions/org.ErrorResponse'
|
|
security:
|
|
- Bearer: []
|
|
summary: Create organization
|
|
tags:
|
|
- organizations
|
|
/api/organizations/{id}:
|
|
delete:
|
|
consumes:
|
|
- application/json
|
|
description: Delete an organization
|
|
parameters:
|
|
- description: Organization ID
|
|
in: path
|
|
name: id
|
|
required: true
|
|
type: string
|
|
produces:
|
|
- application/json
|
|
responses:
|
|
"200":
|
|
description: OK
|
|
schema:
|
|
additionalProperties:
|
|
type: string
|
|
type: object
|
|
"404":
|
|
description: Not Found
|
|
schema:
|
|
$ref: '#/definitions/org.ErrorResponse'
|
|
security:
|
|
- Bearer: []
|
|
summary: Delete organization
|
|
tags:
|
|
- organizations
|
|
get:
|
|
consumes:
|
|
- application/json
|
|
description: Get organization details
|
|
parameters:
|
|
- description: Organization ID
|
|
in: path
|
|
name: id
|
|
required: true
|
|
type: string
|
|
produces:
|
|
- application/json
|
|
responses:
|
|
"200":
|
|
description: OK
|
|
schema:
|
|
$ref: '#/definitions/org.OrgResponse'
|
|
"404":
|
|
description: Not Found
|
|
schema:
|
|
$ref: '#/definitions/org.ErrorResponse'
|
|
security:
|
|
- Bearer: []
|
|
summary: Get organization by ID
|
|
tags:
|
|
- organizations
|
|
put:
|
|
consumes:
|
|
- application/json
|
|
description: Update organization name
|
|
parameters:
|
|
- description: Organization ID
|
|
in: path
|
|
name: id
|
|
required: true
|
|
type: string
|
|
- description: New organization details
|
|
in: body
|
|
name: request
|
|
required: true
|
|
schema:
|
|
$ref: '#/definitions/org.UpdateOrgRequest'
|
|
produces:
|
|
- application/json
|
|
responses:
|
|
"200":
|
|
description: OK
|
|
schema:
|
|
$ref: '#/definitions/org.OrgResponse'
|
|
"400":
|
|
description: Bad Request
|
|
schema:
|
|
$ref: '#/definitions/org.ErrorResponse'
|
|
"404":
|
|
description: Not Found
|
|
schema:
|
|
$ref: '#/definitions/org.ErrorResponse'
|
|
security:
|
|
- Bearer: []
|
|
summary: Update organization
|
|
tags:
|
|
- organizations
|
|
schemes:
|
|
- http
|
|
securityDefinitions:
|
|
Bearer:
|
|
description: Type "Bearer" followed by a space and the JWT token.
|
|
in: header
|
|
name: Authorization
|
|
type: apiKey
|
|
swagger: "2.0"
|