hngprojects / hng_boilerplate_expressjs

75 stars 85 forks source link

[FEAT] API Endpoint For Organisation Creation by users #148

Open fawizzy opened 3 months ago

fawizzy commented 3 months ago

Description

Develop a backend API for creating organisations, including authentication and authorization checks, input validation, and error handling.

Acceptance Criteria

Request Body

{
  "name": "String",
  "description": "String",
  "email": "string",
  "industry": "string",
  "type": "string",
  "country": "string",
  "address": "string",
  "state": "string",

}

Successful Response

{
  "status": "success",
  "message": "organisation created successfully",
  "data": {
    "id": "String",
    "name": "String",
    "description": "String",
    "owner_id": "string",
    "slug" : "string",
    "email": "string",
    "industry": "string",
    "type": "string",
    "country": "string",
    "address": "string",
    "state": "string",
    "created_at": "2024-01-01T12:00:00Z",
    "updated_at": "2024-06-01T12:00:00Z"
  },
 "status_code": 201
}

Unsuccessful Response

{
  "status": "Bad Request",
  "message": "Client error",
  "status_code": 400
}

Validation Error Response

{
  "errors": [
    {
      "field": "String",
      "message": "String"
    }
  ]
}

Unauthenticated Error Response

{
  "status": "Unauthorized",
  "message": "User not authenticated",
  "status_code": 401
}

Database Design

Table organisations {
  id uuid [primary key]
  slug varchar(255) [unique]
  owner_id uuid [foreign key to users(id)]
  name varchar(255)
  email varchar(255)
  industry varchar(255)
  type varchar(255)
  country varchar(255)
  address varchar(255)
  state varchar(255)
  description text
  created_at timestamp
  updated_at timestamp
}

Table organisations_user {
  user_id uuid [foreign key to users(id)]
  organisation_id uuid [foreign key to organisations(id)]
  role varchar(255)
  created_at timestamp
  updated_at timestamp
}

Ref: users.id < organisations_user.user_id
Ref: organisations.id < organisations_user.organisation_id

Documentation

API Documentation

AdeGneus commented 3 months ago

This is nice but use the format we gave. Use checkbox for the acceptance criteria

fawizzy commented 3 months ago

Done