From 7acda23f3dcbac4b7edaf87af8967272685d31df Mon Sep 17 00:00:00 2001 From: weichien00 Date: Mon, 12 Jul 2021 16:48:39 +0800 Subject: [PATCH 01/13] new: eloquent filter for company_module.type. --- .../Filters/WithCompanyModuleType.php | 22 +++++++++++++++++++ 1 file changed, 22 insertions(+) create mode 100644 app/Classes/General/Eloquent/Filters/WithCompanyModuleType.php diff --git a/app/Classes/General/Eloquent/Filters/WithCompanyModuleType.php b/app/Classes/General/Eloquent/Filters/WithCompanyModuleType.php new file mode 100644 index 00000000..5bbe630b --- /dev/null +++ b/app/Classes/General/Eloquent/Filters/WithCompanyModuleType.php @@ -0,0 +1,22 @@ +whereHas('companyModule', function ($query) use ($value) { + $query->where('company_modules.type', '=', $value); + }); + } +} From ab5202d8bb0d27cd2116906e3b720c060926f2b5 Mon Sep 17 00:00:00 2001 From: weichien00 Date: Mon, 12 Jul 2021 16:50:12 +0800 Subject: [PATCH 02/13] fix: company seeder create company module along with creating new compaany --- database/seeders/CompaniesTableSeeder.php | 34 ++++++++++++++++++----- 1 file changed, 27 insertions(+), 7 deletions(-) diff --git a/database/seeders/CompaniesTableSeeder.php b/database/seeders/CompaniesTableSeeder.php index 0362d18f..8593efa4 100644 --- a/database/seeders/CompaniesTableSeeder.php +++ b/database/seeders/CompaniesTableSeeder.php @@ -3,10 +3,13 @@ namespace Database\Seeders; use App\Classes\ValueObjects\Constants\ApprovalStatus; +use App\Classes\ValueObjects\Constants\CompanyType; use App\Classes\ValueObjects\Constants\BusinessType; use Illuminate\Database\Seeder; -use Illuminate\Support\Facades\DB; + +use App\Models\Company; +use App\Models\CompanyModule; class CompaniesTableSeeder extends Seeder { @@ -17,19 +20,36 @@ class CompaniesTableSeeder extends Seeder */ public function run() { - DB::table('companies')->insert([ + + $companies = [ [ 'name' => 'Guang Zhou', - 'reference' => 'guangzhou', - 'type' => BusinessType::WAREHOUSE, + 'reference' => 'guangzhouwarehouse', + 'type' => CompanyType::COMPANY_BUSINESS, 'status' => ApprovalStatus::APPROVED, ], [ 'name' => 'Yiwu', - 'reference' => 'yiwu', - 'type' => BusinessType::WAREHOUSE, + 'reference' => 'yiwuwarehouse', + 'type' => CompanyType::COMPANY_BUSINESS, 'status' => ApprovalStatus::APPROVED, ] - ]); + ]; + + + if (!empty($companies)) { + foreach ($companies as $company) { + + $company = Company::create($company); + + CompanyModule::create( + [ + 'company_id' => $company->id, + 'type' => BusinessType::WAREHOUSE, + 'status' => ApprovalStatus::APPROVED, + ] + ); + } + } } } From bbfd905e5dd9933b412024f11dfbe83cb8d7f75e Mon Sep 17 00:00:00 2001 From: weichien00 Date: Mon, 12 Jul 2021 16:51:43 +0800 Subject: [PATCH 03/13] update: add company relationship with company module. --- app/Models/Company.php | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/app/Models/Company.php b/app/Models/Company.php index 4ef00640..bd137a4a 100644 --- a/app/Models/Company.php +++ b/app/Models/Company.php @@ -1,6 +1,7 @@ morphMany(Address::class, 'owner'); } + /** + * @return belongsToMany + */ + public function companyModule(): hasMany + { + return $this->hasMany(CompanyModule::class); + } + /** * @return belongsToMany */ From 7700d863d63038a7bc70b8cdf8b31c8b8d374b59 Mon Sep 17 00:00:00 2001 From: weichien00 Date: Tue, 13 Jul 2021 22:09:00 +0800 Subject: [PATCH 04/13] update: CompanyModule Model - add belongto relationship with company. --- app/Models/CompanyModule.php | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/app/Models/CompanyModule.php b/app/Models/CompanyModule.php index 34ea5ec3..bcb39dee 100644 --- a/app/Models/CompanyModule.php +++ b/app/Models/CompanyModule.php @@ -3,6 +3,7 @@ namespace App\Models; use Illuminate\Database\Eloquent\Relations\BelongsToMany; +use Illuminate\Database\Eloquent\Relations\BelongsTo; use Illuminate\Database\Eloquent\Relations\MorphMany; use Illuminate\Database\Eloquent\SoftDeletes; @@ -23,6 +24,14 @@ class CompanyModule extends AbstractModel protected $dates = ['deleted_at']; + /** + * @return BelongsTo + */ + public function company(): BelongsTo + { + return $this->BelongsTo(Company::class, 'company_id', 'id'); + } + /** * @return MorphMany */ From a9c921b8cfba43df676c699c5e2e87f10da2a172 Mon Sep 17 00:00:00 2001 From: weichien00 Date: Tue, 13 Jul 2021 22:20:54 +0800 Subject: [PATCH 05/13] fix: save businessType as type in company_module table. --- .../Companies/Processors/CreateCompanyModuleProcessor.php | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/app/Classes/Modules/Companies/Processors/CreateCompanyModuleProcessor.php b/app/Classes/Modules/Companies/Processors/CreateCompanyModuleProcessor.php index fb36d01f..2d117fc1 100644 --- a/app/Classes/Modules/Companies/Processors/CreateCompanyModuleProcessor.php +++ b/app/Classes/Modules/Companies/Processors/CreateCompanyModuleProcessor.php @@ -5,6 +5,8 @@ namespace App\Classes\Modules\Companies\Processors; use App\Classes\Modules\Companies\DataTransferObjects\CompanyModuleObject; use App\Classes\Modules\Companies\Services\CreatesCompanyModule; +use App\Classes\ValueObjects\Constants\BusinessType; + use Illuminate\Database\Eloquent\Model; use App\Models\Company; @@ -28,11 +30,11 @@ class CreateCompanyModuleProcessor * @param Company $company * @return Model */ - public function execute(Company $company): Model + public function execute(Company $company , ?int $businessType): Model { $company_module_object = new CompanyModuleObject( $company->id, - $company->type, + $businessType??BusinessType::IMPORTER, $company->status, ); From b0b3f277384ee27d7fbcd3ca5f005c81a33e242c Mon Sep 17 00:00:00 2001 From: weichien00 Date: Tue, 13 Jul 2021 22:22:45 +0800 Subject: [PATCH 06/13] update: add create company_module processsor in create company logic. #7 --- .../Companies/ControllersLogic/CreateCompanyLogic.php | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-) diff --git a/app/Classes/Modules/Companies/ControllersLogic/CreateCompanyLogic.php b/app/Classes/Modules/Companies/ControllersLogic/CreateCompanyLogic.php index 019fe833..c0b60806 100644 --- a/app/Classes/Modules/Companies/ControllersLogic/CreateCompanyLogic.php +++ b/app/Classes/Modules/Companies/ControllersLogic/CreateCompanyLogic.php @@ -5,6 +5,7 @@ namespace App\Classes\Modules\Companies\ControllersLogic; use App\Classes\General\Abstracts\AbstractControllerLogic; use App\Classes\Modules\Companies\Processors\CreateCompanyProcessor; +use App\Classes\Modules\Companies\Processors\CreateCompanyModuleProcessor; use App\Classes\ValueObjects\Constants\ApprovalStatus; use App\Classes\ValueObjects\Constants\BusinessType; use App\Classes\ValueObjects\Constants\CompanyType; @@ -17,10 +18,12 @@ class CreateCompanyLogic extends AbstractControllerLogic /** * CreateCompanyLogic constructor. * @param CreateCompanyProcessor $createCompanyProcessor + * @param CreateCompanyModuleProcessor $createCompanyModuleProcessor */ - public function __construct(CreateCompanyProcessor $createCompanyProcessor) + public function __construct(CreateCompanyProcessor $createCompanyProcessor ,CreateCompanyModuleProcessor $createCompanyModuleProcessor) { $this->createCompanyProcessor = $createCompanyProcessor; + $this->createCompanyModuleProcessor = $createCompanyModuleProcessor; } /** @@ -46,7 +49,10 @@ class CreateCompanyLogic extends AbstractControllerLogic */ public function logic(Request $request) : JsonResponse { - $company = $this->createCompanyProcessor->execute($request, BusinessType::CURRENCY_VENDOR, CompanyType::COMPANY_BUSINESS, ApprovalStatus::APPROVED); + $company = $this->createCompanyProcessor->execute($request, $request->input('type'), ApprovalStatus::PENDING_SUBMISSION); + + $this->createCompanyModuleProcessor->execute($company , $request->input('business_type')); + return $this->resourceResponse(new CompanyResource($company)); } From d254b56629910e3ebb95267236b63e94fd3954dc Mon Sep 17 00:00:00 2001 From: weichien00 Date: Tue, 13 Jul 2021 22:23:56 +0800 Subject: [PATCH 07/13] fix: include business_type for company_module process in create_customer logic. --- .../Modules/Accounts/ControllersLogic/CreateCustomerLogic.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/app/Classes/Modules/Accounts/ControllersLogic/CreateCustomerLogic.php b/app/Classes/Modules/Accounts/ControllersLogic/CreateCustomerLogic.php index 9f543c74..5ac90094 100644 --- a/app/Classes/Modules/Accounts/ControllersLogic/CreateCustomerLogic.php +++ b/app/Classes/Modules/Accounts/ControllersLogic/CreateCustomerLogic.php @@ -110,7 +110,7 @@ class CreateCustomerLogic extends AbstractControllerLogic $this->createContactProcessor->execute($request, $company); - $companyModule = $this->createCompanyModuleProcessor->execute($company); + $companyModule = $this->createCompanyModuleProcessor->execute($company, $request->input('business_type')); $Object = new EmploymentObject($companyModule, $user); $this->assignEmployeeProcessor->execute($Object); From fa2f0bb56ff4f75973526a33b6ef278c8d99bc5a Mon Sep 17 00:00:00 2001 From: weichien00 Date: Tue, 13 Jul 2021 23:07:36 +0800 Subject: [PATCH 08/13] update: account registration api - add new input field : business_type. --- resources/views/swagger/json.blade.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/resources/views/swagger/json.blade.php b/resources/views/swagger/json.blade.php index 22d1811a..5a3f7882 100644 --- a/resources/views/swagger/json.blade.php +++ b/resources/views/swagger/json.blade.php @@ -1 +1 @@ -{"swagger":"2.0","info":{"description":"Shipping Portal to manage parcel","version":"1.0.0","title":"Shipping Portal"},"host":"{{request()->getHttpHost()}}","basePath":"/api/v1","tags":[{"name":"Account","description":"Endpoints related to user module, e.g. login, register."},{"name":"Address","description":"Endpoints related to address module, e.g. create, district."},{"name":"Company","description":"Endpoints related to company module."}],"schemes":["http","https"],"paths":{"/address/create":{"post":{"tags":["Address"],"produces":["application/json"],"operationId":"createAddress","summary":"Create address","description":"","parameters":[{"name":"district_id","in":"query","description":"District id","required":true,"type":"integer"},{"name":"street_one","in":"query","description":"Address line 1","required":true,"type":"string"},{"name":"street_two","in":"query","description":"Address line 2","required":true,"type":"string"},{"name":"post_code","in":"query","description":"Postcode of the address","required":true,"type":"string"}],"responses":{"200":{"description":"successful operation","headers":{"X-Expires-After":{"type":"string","format":"date-time","description":"date in UTC when token expires"},"X-Rate-Limit":{"type":"integer","format":"int32","description":"calls per hour allowed by the user"}},"schema":{"type":"string"}},"422":{"description":"Invalid input supplied"}}}},"/address/delete/{id}":{"delete":{"tags":["Address"],"produces":["application/json"],"operationId":"deleteAddress","summary":"Delete address","description":"","parameters":[{"name":"id","in":"path","description":"District id","required":true,"type":"string"}],"responses":{"200":{"description":"successful operation","headers":{"X-Expires-After":{"type":"string","format":"date-time","description":"date in UTC when token expires"},"X-Rate-Limit":{"type":"integer","format":"int32","description":"calls per hour allowed by the user"}},"schema":{"type":"string"}},"422":{"description":"Invalid input supplied"}}}},"/address/district/list":{"get":{"tags":["Address"],"produces":["application/json"],"operationId":"listDistrictAddress","summary":"List districts","description":"","parameters":[{"name":"filter","in":"query","description":"Filters","required":false,"type":"array","items":{"type":"string"}}],"responses":{"200":{"description":"successful operation","headers":{"X-Expires-After":{"type":"string","format":"date-time","description":"date in UTC when token expires"},"X-Rate-Limit":{"type":"integer","format":"int32","description":"calls per hour allowed by the user"}},"schema":{"type":"string"}},"422":{"description":"Invalid input supplied"}}}},"/address/list":{"get":{"tags":["Address"],"produces":["application/json"],"operationId":"listAddress","summary":"List addresses of logged in user","description":"","parameters":[{"name":"filter","in":"query","description":"Filters","required":false,"type":"array","items":{"type":"string"}}],"responses":{"200":{"description":"successful operation","headers":{"X-Expires-After":{"type":"string","format":"date-time","description":"date in UTC when token expires"},"X-Rate-Limit":{"type":"integer","format":"int32","description":"calls per hour allowed by the user"}},"schema":{"type":"string"}},"422":{"description":"Invalid input supplied"}}}},"/address/{id}/show":{"get":{"tags":["Address"],"produces":["application/json"],"operationId":"showAddress","summary":"List addresses of logged in user","description":"","parameters":[{"name":"id","in":"path","description":"Address id","required":true,"type":"integer"}],"responses":{"200":{"description":"successful operation","headers":{"X-Expires-After":{"type":"string","format":"date-time","description":"date in UTC when token expires"},"X-Rate-Limit":{"type":"integer","format":"int32","description":"calls per hour allowed by the user"}},"schema":{"type":"string"}},"422":{"description":"Invalid input supplied"}}}},"/address/{id}/default":{"put":{"tags":["Address"],"produces":["application/json"],"operationId":"setDefaultAddress","summary":"Set default address","description":"","parameters":[{"name":"id","in":"path","description":"Address id","required":true,"type":"integer"},{"name":"district_id","in":"query","description":"District id","required":true,"type":"integer"},{"name":"street_one","in":"query","description":"Address line 1","required":true,"type":"string"},{"name":"street_two","in":"query","description":"Address line 2","required":true,"type":"string"},{"name":"post_code","in":"query","description":"Postcode of the address","required":true,"type":"string"}],"responses":{"200":{"description":"successful operation","headers":{"X-Expires-After":{"type":"string","format":"date-time","description":"date in UTC when token expires"},"X-Rate-Limit":{"type":"integer","format":"int32","description":"calls per hour allowed by the user"}},"schema":{"type":"string"}},"422":{"description":"Invalid input supplied"}}}},"/address/update/{id}":{"put":{"tags":["Address"],"produces":["application/json"],"operationId":"setDefaultAddress","summary":"Set default address","description":"","parameters":[{"name":"id","in":"path","description":"Address id","required":true,"type":"integer"}],"responses":{"200":{"description":"successful operation","headers":{"X-Expires-After":{"type":"string","format":"date-time","description":"date in UTC when token expires"},"X-Rate-Limit":{"type":"integer","format":"int32","description":"calls per hour allowed by the user"}},"schema":{"type":"string"}},"422":{"description":"Invalid input supplied"}}}},"/account/authentication/login/check_email":{"post":{"tags":["Account"],"summary":"Check if email registered","description":"","operationId":"userList","produces":["application/json","application/xml"],"parameters":[{"name":"email","in":"query","description":"email","required":true,"type":"string"}],"responses":{"default":{"description":"successful operation"}}}},"/account/registration/registration":{"post":{"tags":["Account"],"produces":["application/json"],"summary":"Register user into the system","description":"","parameters":[{"name":"name","in":"query","description":"The name of user","required":true,"type":"string"},{"name":"email","in":"query","description":"The email for login","required":true,"type":"string","format":"email"},{"name":"password","in":"query","description":"The password for login","required":true,"type":"string","format":"password"},{"name":"password_confirmation","in":"query","description":"The confirmation password for login","required":true,"type":"string","format":"password"},{"name":"type","in":"query","description":"Account type - 1:Company 2:Individual","required":true,"default":2,"type":"integer"},{"name":"phone","in":"query","description":"Contact phone number","required":true,"type":"string"},{"name":"contact_email","in":"query","description":"Contact email","required":true,"type":"string"},{"name":"company_name","in":"query","description":"The company name - if not defined , name of user will save as the company name","required":false,"type":"string"},{"name":"wechat_id","in":"query","description":"Contact Wechat id","required":false,"type":"string"},{"name":"files[0]","in":"query","description":"File need to convert to base64 example : 'data:application/pdf;base64,{Base64}';","required":true,"type":"string"},{"name":"identification_no","in":"query","description":"Personal identification no or company registration no","required":true,"type":"string"}],"responses":{"200":{"description":"successful operation","headers":{"X-Expires-After":{"type":"string","format":"date-time","description":"date in UTC when token expires"},"X-Rate-Limit":{"type":"integer","format":"int32","description":"calls per hour allowed by the user"}},"schema":{"type":"string"}},"400":{"description":"Invalid username/password supplied"}}}},"/account/authentication/login/attempt":{"post":{"tags":["Account"],"produces":["application/json"],"summary":"Logs user into the system","operationId":"aaa","description":"","parameters":[{"name":"email","in":"query","description":"The user name for login","required":true,"type":"string"},{"name":"password","in":"query","description":"The password for login in clear text","required":true,"type":"string"}],"responses":{"200":{"description":"successful operation","headers":{"X-Expires-After":{"type":"string","format":"date-time","description":"date in UTC when token expires"},"X-Rate-Limit":{"type":"integer","format":"int32","description":"calls per hour allowed by the user"}},"schema":{"type":"string"}},"400":{"description":"Invalid username/password supplied"}}}},"/account/authentication/logout":{"get":{"tags":["Account"],"summary":"Logs out current logged in user session","description":"","operationId":"logoutUser","produces":["application/json","application/xml"],"parameters":[],"responses":{"default":{"description":"successful operation"}}}},"/account/user/list":{"get":{"tags":["Account"],"summary":"Logs out current logged in user session","description":"","operationId":"userList","produces":["application/json","application/xml"],"parameters":[],"responses":{"default":{"description":"successful operation"}}}},"/company/list":{"get":{"tags":["Company"],"summary":"List of Companies","description":"","operationId":"companyList","produces":["application/json","application/xml"],"parameters":[{"name":"filter","in":"query","description":"Filters","required":false,"type":"array","items":{"type":"string"}}],"responses":{"default":{"description":"successful operation"}}}}},"securityDefinitions":{"Authorization":{"type":"apiKey","name":"api_key","in":"header"},"petstore_auth":{"type":"oauth2","authorizationUrl":"https://petstore.swagger.io/oauth/authorize","flow":"implicit","scopes":{"read:pets":"read your pets","write:pets":"modify pets in your account"}}},"definitions":{"ApiResponse":{"type":"object","properties":{"code":{"type":"integer","format":"int32"},"title":{"type":"string"},"message":{"type":"string"},"payload":{"type":"object"}}}}} \ No newline at end of file +{"swagger":"2.0","info":{"description":"Shipping Portal to manage parcel","version":"1.0.0","title":"Shipping Portal"},"host":"{{request()->getHttpHost()}}","basePath":"/api/v1","tags":[{"name":"Account","description":"Endpoints related to user module, e.g. login, register."},{"name":"Address","description":"Endpoints related to address module, e.g. create, district."},{"name":"Company","description":"Endpoints related to company module."}],"schemes":["http","https"],"paths":{"/address/create":{"post":{"tags":["Address"],"produces":["application/json"],"operationId":"createAddress","summary":"Create address","description":"","parameters":[{"name":"district_id","in":"query","description":"District id","required":true,"type":"integer"},{"name":"street_one","in":"query","description":"Address line 1","required":true,"type":"string"},{"name":"street_two","in":"query","description":"Address line 2","required":true,"type":"string"},{"name":"post_code","in":"query","description":"Postcode of the address","required":true,"type":"string"}],"responses":{"200":{"description":"successful operation","headers":{"X-Expires-After":{"type":"string","format":"date-time","description":"date in UTC when token expires"},"X-Rate-Limit":{"type":"integer","format":"int32","description":"calls per hour allowed by the user"}},"schema":{"type":"string"}},"422":{"description":"Invalid input supplied"}}}},"/address/delete/{id}":{"delete":{"tags":["Address"],"produces":["application/json"],"operationId":"deleteAddress","summary":"Delete address","description":"","parameters":[{"name":"id","in":"path","description":"District id","required":true,"type":"string"}],"responses":{"200":{"description":"successful operation","headers":{"X-Expires-After":{"type":"string","format":"date-time","description":"date in UTC when token expires"},"X-Rate-Limit":{"type":"integer","format":"int32","description":"calls per hour allowed by the user"}},"schema":{"type":"string"}},"422":{"description":"Invalid input supplied"}}}},"/address/district/list":{"get":{"tags":["Address"],"produces":["application/json"],"operationId":"listDistrictAddress","summary":"List districts","description":"","parameters":[{"name":"filter","in":"query","description":"Filters","required":false,"type":"array","items":{"type":"string"}}],"responses":{"200":{"description":"successful operation","headers":{"X-Expires-After":{"type":"string","format":"date-time","description":"date in UTC when token expires"},"X-Rate-Limit":{"type":"integer","format":"int32","description":"calls per hour allowed by the user"}},"schema":{"type":"string"}},"422":{"description":"Invalid input supplied"}}}},"/address/list":{"get":{"tags":["Address"],"produces":["application/json"],"operationId":"listAddress","summary":"List addresses of logged in user","description":"","parameters":[{"name":"filter","in":"query","description":"Filters","required":false,"type":"array","items":{"type":"string"}}],"responses":{"200":{"description":"successful operation","headers":{"X-Expires-After":{"type":"string","format":"date-time","description":"date in UTC when token expires"},"X-Rate-Limit":{"type":"integer","format":"int32","description":"calls per hour allowed by the user"}},"schema":{"type":"string"}},"422":{"description":"Invalid input supplied"}}}},"/address/{id}/show":{"get":{"tags":["Address"],"produces":["application/json"],"operationId":"showAddress","summary":"List addresses of logged in user","description":"","parameters":[{"name":"id","in":"path","description":"Address id","required":true,"type":"integer"}],"responses":{"200":{"description":"successful operation","headers":{"X-Expires-After":{"type":"string","format":"date-time","description":"date in UTC when token expires"},"X-Rate-Limit":{"type":"integer","format":"int32","description":"calls per hour allowed by the user"}},"schema":{"type":"string"}},"422":{"description":"Invalid input supplied"}}}},"/address/{id}/default":{"put":{"tags":["Address"],"produces":["application/json"],"operationId":"setDefaultAddress","summary":"Set default address","description":"","parameters":[{"name":"id","in":"path","description":"Address id","required":true,"type":"integer"},{"name":"district_id","in":"query","description":"District id","required":true,"type":"integer"},{"name":"street_one","in":"query","description":"Address line 1","required":true,"type":"string"},{"name":"street_two","in":"query","description":"Address line 2","required":true,"type":"string"},{"name":"post_code","in":"query","description":"Postcode of the address","required":true,"type":"string"}],"responses":{"200":{"description":"successful operation","headers":{"X-Expires-After":{"type":"string","format":"date-time","description":"date in UTC when token expires"},"X-Rate-Limit":{"type":"integer","format":"int32","description":"calls per hour allowed by the user"}},"schema":{"type":"string"}},"422":{"description":"Invalid input supplied"}}}},"/address/update/{id}":{"put":{"tags":["Address"],"produces":["application/json"],"operationId":"setDefaultAddress","summary":"Set default address","description":"","parameters":[{"name":"id","in":"path","description":"Address id","required":true,"type":"integer"}],"responses":{"200":{"description":"successful operation","headers":{"X-Expires-After":{"type":"string","format":"date-time","description":"date in UTC when token expires"},"X-Rate-Limit":{"type":"integer","format":"int32","description":"calls per hour allowed by the user"}},"schema":{"type":"string"}},"422":{"description":"Invalid input supplied"}}}},"/account/authentication/login/check_email":{"post":{"tags":["Account"],"summary":"Check if email registered","description":"","operationId":"userList","produces":["application/json","application/xml"],"parameters":[{"name":"email","in":"query","description":"email","required":true,"type":"string"}],"responses":{"default":{"description":"successful operation"}}}},"/account/registration/registration":{"post":{"tags":["Account"],"produces":["application/json"],"summary":"Register user into the system","description":"","parameters":[{"name":"name","in":"query","description":"The name of user","required":true,"type":"string"},{"name":"email","in":"query","description":"The email for login","required":true,"type":"string","format":"email"},{"name":"password","in":"query","description":"The password for login","required":true,"type":"string","format":"password"},{"name":"password_confirmation","in":"query","description":"The confirmation password for login","required":true,"type":"string","format":"password"},{"name":"type(company type)","in":"query","description":"Company Type - PERSONAL_BUSINESS:0 , COMPANY_BUSINESS:1","required":true,"type":"integer"},{"name":"phone","in":"query","description":"Contact phone number","required":true,"type":"string"},{"name":"contact_email","in":"query","description":"Contact email","required":true,"type":"string"},{"name":"company_name","in":"query","description":"The company name - if not defined , name of user will save as the company name","required":false,"type":"string"},{"name":"type(company_module type)","in":"query","description":"Business Type - FREIGHT_FORWARDER:1, IMPORTER:2, CURRENCY_VENDOR:3, WAREHOUSE:4","required":false,"default":2,"type":"integer"},{"name":"wechat_id","in":"query","description":"Contact Wechat id","required":false,"type":"string"},{"name":"files[0]","in":"query","description":"File need to convert to base64 example : 'data:application/pdf;base64,{Base64}';","required":true,"type":"string"},{"name":"identification_no","in":"query","description":"Personal identification no or company registration no","required":true,"type":"string"}],"responses":{"200":{"description":"successful operation","headers":{"X-Expires-After":{"type":"string","format":"date-time","description":"date in UTC when token expires"},"X-Rate-Limit":{"type":"integer","format":"int32","description":"calls per hour allowed by the user"}},"schema":{"type":"string"}},"400":{"description":"Invalid username/password supplied"}}}},"/account/authentication/login/attempt":{"post":{"tags":["Account"],"produces":["application/json"],"summary":"Logs user into the system","operationId":"aaa","description":"","parameters":[{"name":"email","in":"query","description":"The user name for login","required":true,"type":"string"},{"name":"password","in":"query","description":"The password for login in clear text","required":true,"type":"string"}],"responses":{"200":{"description":"successful operation","headers":{"X-Expires-After":{"type":"string","format":"date-time","description":"date in UTC when token expires"},"X-Rate-Limit":{"type":"integer","format":"int32","description":"calls per hour allowed by the user"}},"schema":{"type":"string"}},"400":{"description":"Invalid username/password supplied"}}}},"/account/authentication/logout":{"get":{"tags":["Account"],"summary":"Logs out current logged in user session","description":"","operationId":"logoutUser","produces":["application/json","application/xml"],"parameters":[],"responses":{"default":{"description":"successful operation"}}}},"/account/user/list":{"get":{"tags":["Account"],"summary":"Logs out current logged in user session","description":"","operationId":"userList","produces":["application/json","application/xml"],"parameters":[],"responses":{"default":{"description":"successful operation"}}}},"/company/list":{"get":{"tags":["Company"],"summary":"List of Companies","description":"","operationId":"companyList","produces":["application/json","application/xml"],"parameters":[{"name":"filter","in":"query","description":"Filters","required":false,"type":"array","items":{"type":"string"}}],"responses":{"default":{"description":"successful operation"}}}}},"securityDefinitions":{"Authorization":{"type":"apiKey","name":"api_key","in":"header"},"petstore_auth":{"type":"oauth2","authorizationUrl":"https://petstore.swagger.io/oauth/authorize","flow":"implicit","scopes":{"read:pets":"read your pets","write:pets":"modify pets in your account"}}},"definitions":{"ApiResponse":{"type":"object","properties":{"code":{"type":"integer","format":"int32"},"title":{"type":"string"},"message":{"type":"string"},"payload":{"type":"object"}}}}} \ No newline at end of file From 8cde051869e1d447f98767354d05a4622489785c Mon Sep 17 00:00:00 2001 From: weichien00 Date: Tue, 13 Jul 2021 23:25:31 +0800 Subject: [PATCH 09/13] fix: User Model - typo on companyModule. --- app/Models/User.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/app/Models/User.php b/app/Models/User.php index 5ed99155..33da7042 100644 --- a/app/Models/User.php +++ b/app/Models/User.php @@ -63,7 +63,7 @@ class User extends AbstractModel implements */ public function companyModule(): belongsToMany { - return $this->belongsToMany(companyModule::class, (new CompanyEmployee())->getTable(), 'user_id', 'company_module_id'); + return $this->belongsToMany(CompanyModule::class, (new CompanyEmployee())->getTable(), 'user_id', 'company_module_id'); } /** From 5fca745e586eda373796c88c46e8cf46388b7d62 Mon Sep 17 00:00:00 2001 From: weichien00 Date: Tue, 13 Jul 2021 23:32:03 +0800 Subject: [PATCH 10/13] hotfix: typo issue that cause login failed. --- app/Models/User.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/app/Models/User.php b/app/Models/User.php index 5ed99155..33da7042 100644 --- a/app/Models/User.php +++ b/app/Models/User.php @@ -63,7 +63,7 @@ class User extends AbstractModel implements */ public function companyModule(): belongsToMany { - return $this->belongsToMany(companyModule::class, (new CompanyEmployee())->getTable(), 'user_id', 'company_module_id'); + return $this->belongsToMany(CompanyModule::class, (new CompanyEmployee())->getTable(), 'user_id', 'company_module_id'); } /** From 13b99f01eea20f711800ceed46268a3d40bfe836 Mon Sep 17 00:00:00 2001 From: weichien00 Date: Tue, 13 Jul 2021 23:54:11 +0800 Subject: [PATCH 11/13] fix: company list api - parameter "filter" change to "filters". update description. --- resources/views/swagger/json.blade.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/resources/views/swagger/json.blade.php b/resources/views/swagger/json.blade.php index 5a3f7882..0e2f7016 100644 --- a/resources/views/swagger/json.blade.php +++ b/resources/views/swagger/json.blade.php @@ -1 +1 @@ -{"swagger":"2.0","info":{"description":"Shipping Portal to manage parcel","version":"1.0.0","title":"Shipping Portal"},"host":"{{request()->getHttpHost()}}","basePath":"/api/v1","tags":[{"name":"Account","description":"Endpoints related to user module, e.g. login, register."},{"name":"Address","description":"Endpoints related to address module, e.g. create, district."},{"name":"Company","description":"Endpoints related to company module."}],"schemes":["http","https"],"paths":{"/address/create":{"post":{"tags":["Address"],"produces":["application/json"],"operationId":"createAddress","summary":"Create address","description":"","parameters":[{"name":"district_id","in":"query","description":"District id","required":true,"type":"integer"},{"name":"street_one","in":"query","description":"Address line 1","required":true,"type":"string"},{"name":"street_two","in":"query","description":"Address line 2","required":true,"type":"string"},{"name":"post_code","in":"query","description":"Postcode of the address","required":true,"type":"string"}],"responses":{"200":{"description":"successful operation","headers":{"X-Expires-After":{"type":"string","format":"date-time","description":"date in UTC when token expires"},"X-Rate-Limit":{"type":"integer","format":"int32","description":"calls per hour allowed by the user"}},"schema":{"type":"string"}},"422":{"description":"Invalid input supplied"}}}},"/address/delete/{id}":{"delete":{"tags":["Address"],"produces":["application/json"],"operationId":"deleteAddress","summary":"Delete address","description":"","parameters":[{"name":"id","in":"path","description":"District id","required":true,"type":"string"}],"responses":{"200":{"description":"successful operation","headers":{"X-Expires-After":{"type":"string","format":"date-time","description":"date in UTC when token expires"},"X-Rate-Limit":{"type":"integer","format":"int32","description":"calls per hour allowed by the user"}},"schema":{"type":"string"}},"422":{"description":"Invalid input supplied"}}}},"/address/district/list":{"get":{"tags":["Address"],"produces":["application/json"],"operationId":"listDistrictAddress","summary":"List districts","description":"","parameters":[{"name":"filter","in":"query","description":"Filters","required":false,"type":"array","items":{"type":"string"}}],"responses":{"200":{"description":"successful operation","headers":{"X-Expires-After":{"type":"string","format":"date-time","description":"date in UTC when token expires"},"X-Rate-Limit":{"type":"integer","format":"int32","description":"calls per hour allowed by the user"}},"schema":{"type":"string"}},"422":{"description":"Invalid input supplied"}}}},"/address/list":{"get":{"tags":["Address"],"produces":["application/json"],"operationId":"listAddress","summary":"List addresses of logged in user","description":"","parameters":[{"name":"filter","in":"query","description":"Filters","required":false,"type":"array","items":{"type":"string"}}],"responses":{"200":{"description":"successful operation","headers":{"X-Expires-After":{"type":"string","format":"date-time","description":"date in UTC when token expires"},"X-Rate-Limit":{"type":"integer","format":"int32","description":"calls per hour allowed by the user"}},"schema":{"type":"string"}},"422":{"description":"Invalid input supplied"}}}},"/address/{id}/show":{"get":{"tags":["Address"],"produces":["application/json"],"operationId":"showAddress","summary":"List addresses of logged in user","description":"","parameters":[{"name":"id","in":"path","description":"Address id","required":true,"type":"integer"}],"responses":{"200":{"description":"successful operation","headers":{"X-Expires-After":{"type":"string","format":"date-time","description":"date in UTC when token expires"},"X-Rate-Limit":{"type":"integer","format":"int32","description":"calls per hour allowed by the user"}},"schema":{"type":"string"}},"422":{"description":"Invalid input supplied"}}}},"/address/{id}/default":{"put":{"tags":["Address"],"produces":["application/json"],"operationId":"setDefaultAddress","summary":"Set default address","description":"","parameters":[{"name":"id","in":"path","description":"Address id","required":true,"type":"integer"},{"name":"district_id","in":"query","description":"District id","required":true,"type":"integer"},{"name":"street_one","in":"query","description":"Address line 1","required":true,"type":"string"},{"name":"street_two","in":"query","description":"Address line 2","required":true,"type":"string"},{"name":"post_code","in":"query","description":"Postcode of the address","required":true,"type":"string"}],"responses":{"200":{"description":"successful operation","headers":{"X-Expires-After":{"type":"string","format":"date-time","description":"date in UTC when token expires"},"X-Rate-Limit":{"type":"integer","format":"int32","description":"calls per hour allowed by the user"}},"schema":{"type":"string"}},"422":{"description":"Invalid input supplied"}}}},"/address/update/{id}":{"put":{"tags":["Address"],"produces":["application/json"],"operationId":"setDefaultAddress","summary":"Set default address","description":"","parameters":[{"name":"id","in":"path","description":"Address id","required":true,"type":"integer"}],"responses":{"200":{"description":"successful operation","headers":{"X-Expires-After":{"type":"string","format":"date-time","description":"date in UTC when token expires"},"X-Rate-Limit":{"type":"integer","format":"int32","description":"calls per hour allowed by the user"}},"schema":{"type":"string"}},"422":{"description":"Invalid input supplied"}}}},"/account/authentication/login/check_email":{"post":{"tags":["Account"],"summary":"Check if email registered","description":"","operationId":"userList","produces":["application/json","application/xml"],"parameters":[{"name":"email","in":"query","description":"email","required":true,"type":"string"}],"responses":{"default":{"description":"successful operation"}}}},"/account/registration/registration":{"post":{"tags":["Account"],"produces":["application/json"],"summary":"Register user into the system","description":"","parameters":[{"name":"name","in":"query","description":"The name of user","required":true,"type":"string"},{"name":"email","in":"query","description":"The email for login","required":true,"type":"string","format":"email"},{"name":"password","in":"query","description":"The password for login","required":true,"type":"string","format":"password"},{"name":"password_confirmation","in":"query","description":"The confirmation password for login","required":true,"type":"string","format":"password"},{"name":"type(company type)","in":"query","description":"Company Type - PERSONAL_BUSINESS:0 , COMPANY_BUSINESS:1","required":true,"type":"integer"},{"name":"phone","in":"query","description":"Contact phone number","required":true,"type":"string"},{"name":"contact_email","in":"query","description":"Contact email","required":true,"type":"string"},{"name":"company_name","in":"query","description":"The company name - if not defined , name of user will save as the company name","required":false,"type":"string"},{"name":"type(company_module type)","in":"query","description":"Business Type - FREIGHT_FORWARDER:1, IMPORTER:2, CURRENCY_VENDOR:3, WAREHOUSE:4","required":false,"default":2,"type":"integer"},{"name":"wechat_id","in":"query","description":"Contact Wechat id","required":false,"type":"string"},{"name":"files[0]","in":"query","description":"File need to convert to base64 example : 'data:application/pdf;base64,{Base64}';","required":true,"type":"string"},{"name":"identification_no","in":"query","description":"Personal identification no or company registration no","required":true,"type":"string"}],"responses":{"200":{"description":"successful operation","headers":{"X-Expires-After":{"type":"string","format":"date-time","description":"date in UTC when token expires"},"X-Rate-Limit":{"type":"integer","format":"int32","description":"calls per hour allowed by the user"}},"schema":{"type":"string"}},"400":{"description":"Invalid username/password supplied"}}}},"/account/authentication/login/attempt":{"post":{"tags":["Account"],"produces":["application/json"],"summary":"Logs user into the system","operationId":"aaa","description":"","parameters":[{"name":"email","in":"query","description":"The user name for login","required":true,"type":"string"},{"name":"password","in":"query","description":"The password for login in clear text","required":true,"type":"string"}],"responses":{"200":{"description":"successful operation","headers":{"X-Expires-After":{"type":"string","format":"date-time","description":"date in UTC when token expires"},"X-Rate-Limit":{"type":"integer","format":"int32","description":"calls per hour allowed by the user"}},"schema":{"type":"string"}},"400":{"description":"Invalid username/password supplied"}}}},"/account/authentication/logout":{"get":{"tags":["Account"],"summary":"Logs out current logged in user session","description":"","operationId":"logoutUser","produces":["application/json","application/xml"],"parameters":[],"responses":{"default":{"description":"successful operation"}}}},"/account/user/list":{"get":{"tags":["Account"],"summary":"Logs out current logged in user session","description":"","operationId":"userList","produces":["application/json","application/xml"],"parameters":[],"responses":{"default":{"description":"successful operation"}}}},"/company/list":{"get":{"tags":["Company"],"summary":"List of Companies","description":"","operationId":"companyList","produces":["application/json","application/xml"],"parameters":[{"name":"filter","in":"query","description":"Filters","required":false,"type":"array","items":{"type":"string"}}],"responses":{"default":{"description":"successful operation"}}}}},"securityDefinitions":{"Authorization":{"type":"apiKey","name":"api_key","in":"header"},"petstore_auth":{"type":"oauth2","authorizationUrl":"https://petstore.swagger.io/oauth/authorize","flow":"implicit","scopes":{"read:pets":"read your pets","write:pets":"modify pets in your account"}}},"definitions":{"ApiResponse":{"type":"object","properties":{"code":{"type":"integer","format":"int32"},"title":{"type":"string"},"message":{"type":"string"},"payload":{"type":"object"}}}}} \ No newline at end of file +{"swagger":"2.0","info":{"description":"Shipping Portal to manage parcel","version":"1.0.0","title":"Shipping Portal"},"host":"{{request()->getHttpHost()}}","basePath":"/api/v1","tags":[{"name":"Account","description":"Endpoints related to user module, e.g. login, register."},{"name":"Address","description":"Endpoints related to address module, e.g. create, district."},{"name":"Company","description":"Endpoints related to company module."}],"schemes":["http","https"],"paths":{"/address/create":{"post":{"tags":["Address"],"produces":["application/json"],"operationId":"createAddress","summary":"Create address","description":"","parameters":[{"name":"district_id","in":"query","description":"District id","required":true,"type":"integer"},{"name":"street_one","in":"query","description":"Address line 1","required":true,"type":"string"},{"name":"street_two","in":"query","description":"Address line 2","required":true,"type":"string"},{"name":"post_code","in":"query","description":"Postcode of the address","required":true,"type":"string"}],"responses":{"200":{"description":"successful operation","headers":{"X-Expires-After":{"type":"string","format":"date-time","description":"date in UTC when token expires"},"X-Rate-Limit":{"type":"integer","format":"int32","description":"calls per hour allowed by the user"}},"schema":{"type":"string"}},"422":{"description":"Invalid input supplied"}}}},"/address/delete/{id}":{"delete":{"tags":["Address"],"produces":["application/json"],"operationId":"deleteAddress","summary":"Delete address","description":"","parameters":[{"name":"id","in":"path","description":"District id","required":true,"type":"string"}],"responses":{"200":{"description":"successful operation","headers":{"X-Expires-After":{"type":"string","format":"date-time","description":"date in UTC when token expires"},"X-Rate-Limit":{"type":"integer","format":"int32","description":"calls per hour allowed by the user"}},"schema":{"type":"string"}},"422":{"description":"Invalid input supplied"}}}},"/address/district/list":{"get":{"tags":["Address"],"produces":["application/json"],"operationId":"listDistrictAddress","summary":"List districts","description":"","parameters":[{"name":"filter","in":"query","description":"Filters","required":false,"type":"array","items":{"type":"string"}}],"responses":{"200":{"description":"successful operation","headers":{"X-Expires-After":{"type":"string","format":"date-time","description":"date in UTC when token expires"},"X-Rate-Limit":{"type":"integer","format":"int32","description":"calls per hour allowed by the user"}},"schema":{"type":"string"}},"422":{"description":"Invalid input supplied"}}}},"/address/list":{"get":{"tags":["Address"],"produces":["application/json"],"operationId":"listAddress","summary":"List addresses of logged in user","description":"","parameters":[{"name":"filter","in":"query","description":"Filters","required":false,"type":"array","items":{"type":"string"}}],"responses":{"200":{"description":"successful operation","headers":{"X-Expires-After":{"type":"string","format":"date-time","description":"date in UTC when token expires"},"X-Rate-Limit":{"type":"integer","format":"int32","description":"calls per hour allowed by the user"}},"schema":{"type":"string"}},"422":{"description":"Invalid input supplied"}}}},"/address/{id}/show":{"get":{"tags":["Address"],"produces":["application/json"],"operationId":"showAddress","summary":"List addresses of logged in user","description":"","parameters":[{"name":"id","in":"path","description":"Address id","required":true,"type":"integer"}],"responses":{"200":{"description":"successful operation","headers":{"X-Expires-After":{"type":"string","format":"date-time","description":"date in UTC when token expires"},"X-Rate-Limit":{"type":"integer","format":"int32","description":"calls per hour allowed by the user"}},"schema":{"type":"string"}},"422":{"description":"Invalid input supplied"}}}},"/address/{id}/default":{"put":{"tags":["Address"],"produces":["application/json"],"operationId":"setDefaultAddress","summary":"Set default address","description":"","parameters":[{"name":"id","in":"path","description":"Address id","required":true,"type":"integer"},{"name":"district_id","in":"query","description":"District id","required":true,"type":"integer"},{"name":"street_one","in":"query","description":"Address line 1","required":true,"type":"string"},{"name":"street_two","in":"query","description":"Address line 2","required":true,"type":"string"},{"name":"post_code","in":"query","description":"Postcode of the address","required":true,"type":"string"}],"responses":{"200":{"description":"successful operation","headers":{"X-Expires-After":{"type":"string","format":"date-time","description":"date in UTC when token expires"},"X-Rate-Limit":{"type":"integer","format":"int32","description":"calls per hour allowed by the user"}},"schema":{"type":"string"}},"422":{"description":"Invalid input supplied"}}}},"/address/update/{id}":{"put":{"tags":["Address"],"produces":["application/json"],"operationId":"setDefaultAddress","summary":"Set default address","description":"","parameters":[{"name":"id","in":"path","description":"Address id","required":true,"type":"integer"}],"responses":{"200":{"description":"successful operation","headers":{"X-Expires-After":{"type":"string","format":"date-time","description":"date in UTC when token expires"},"X-Rate-Limit":{"type":"integer","format":"int32","description":"calls per hour allowed by the user"}},"schema":{"type":"string"}},"422":{"description":"Invalid input supplied"}}}},"/account/authentication/login/check_email":{"post":{"tags":["Account"],"summary":"Check if email registered","description":"","operationId":"userList","produces":["application/json","application/xml"],"parameters":[{"name":"email","in":"query","description":"email","required":true,"type":"string"}],"responses":{"default":{"description":"successful operation"}}}},"/account/registration/registration":{"post":{"tags":["Account"],"produces":["application/json"],"summary":"Register user into the system","description":"","parameters":[{"name":"name","in":"query","description":"The name of user","required":true,"type":"string"},{"name":"email","in":"query","description":"The email for login","required":true,"type":"string","format":"email"},{"name":"password","in":"query","description":"The password for login","required":true,"type":"string","format":"password"},{"name":"password_confirmation","in":"query","description":"The confirmation password for login","required":true,"type":"string","format":"password"},{"name":"type(company type)","in":"query","description":"Company Type - PERSONAL_BUSINESS:0 , COMPANY_BUSINESS:1","required":true,"type":"integer"},{"name":"phone","in":"query","description":"Contact phone number","required":true,"type":"string"},{"name":"contact_email","in":"query","description":"Contact email","required":true,"type":"string"},{"name":"company_name","in":"query","description":"The company name - if not defined , name of user will save as the company name","required":false,"type":"string"},{"name":"type(company_module type)","in":"query","description":"Business Type - FREIGHT_FORWARDER:1, IMPORTER:2, CURRENCY_VENDOR:3, WAREHOUSE:4","required":false,"default":2,"type":"integer"},{"name":"wechat_id","in":"query","description":"Contact Wechat id","required":false,"type":"string"},{"name":"files[0]","in":"query","description":"File need to convert to base64 example : 'data:application/pdf;base64,{Base64}';","required":true,"type":"string"},{"name":"identification_no","in":"query","description":"Personal identification no or company registration no","required":true,"type":"string"}],"responses":{"200":{"description":"successful operation","headers":{"X-Expires-After":{"type":"string","format":"date-time","description":"date in UTC when token expires"},"X-Rate-Limit":{"type":"integer","format":"int32","description":"calls per hour allowed by the user"}},"schema":{"type":"string"}},"400":{"description":"Invalid username/password supplied"}}}},"/account/authentication/login/attempt":{"post":{"tags":["Account"],"produces":["application/json"],"summary":"Logs user into the system","operationId":"aaa","description":"","parameters":[{"name":"email","in":"query","description":"The user name for login","required":true,"type":"string"},{"name":"password","in":"query","description":"The password for login in clear text","required":true,"type":"string"}],"responses":{"200":{"description":"successful operation","headers":{"X-Expires-After":{"type":"string","format":"date-time","description":"date in UTC when token expires"},"X-Rate-Limit":{"type":"integer","format":"int32","description":"calls per hour allowed by the user"}},"schema":{"type":"string"}},"400":{"description":"Invalid username/password supplied"}}}},"/account/authentication/logout":{"get":{"tags":["Account"],"summary":"Logs out current logged in user session","description":"","operationId":"logoutUser","produces":["application/json","application/xml"],"parameters":[],"responses":{"default":{"description":"successful operation"}}}},"/account/user/list":{"get":{"tags":["Account"],"summary":"Logs out current logged in user session","description":"","operationId":"userList","produces":["application/json","application/xml"],"parameters":[],"responses":{"default":{"description":"successful operation"}}}},"/company/list":{"get":{"tags":["Company"],"summary":"List of Companies","description":"example filters={\"WithCompanyModuleType\":4,\"order_by\":{\"column\":\"id\",\"DESC\":true}} | to get list of company with company_module.Type(business type) = 4(Warehouse)","operationId":"companyList","produces":["application/json","application/xml"],"parameters":[{"name":"filters","in":"query","description":"Eloquent Filter","required":false,"type":"array","items":{"type":"string"}}],"responses":{"default":{"description":"successful operation"}}}}},"securityDefinitions":{"Authorization":{"type":"apiKey","name":"api_key","in":"header"},"petstore_auth":{"type":"oauth2","authorizationUrl":"https://petstore.swagger.io/oauth/authorize","flow":"implicit","scopes":{"read:pets":"read your pets","write:pets":"modify pets in your account"}}},"definitions":{"ApiResponse":{"type":"object","properties":{"code":{"type":"integer","format":"int32"},"title":{"type":"string"},"message":{"type":"string"},"payload":{"type":"object"}}}}} \ No newline at end of file From 3715e9128da25a0ac17f1e9c956e69f89a6669ac Mon Sep 17 00:00:00 2001 From: weichien00 Date: Wed, 14 Jul 2021 10:50:19 +0800 Subject: [PATCH 12/13] swagger: add new tag "Flow - Registration" and include related api. --- resources/views/swagger/json.blade.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/resources/views/swagger/json.blade.php b/resources/views/swagger/json.blade.php index 0e2f7016..1254dc8a 100644 --- a/resources/views/swagger/json.blade.php +++ b/resources/views/swagger/json.blade.php @@ -1 +1 @@ -{"swagger":"2.0","info":{"description":"Shipping Portal to manage parcel","version":"1.0.0","title":"Shipping Portal"},"host":"{{request()->getHttpHost()}}","basePath":"/api/v1","tags":[{"name":"Account","description":"Endpoints related to user module, e.g. login, register."},{"name":"Address","description":"Endpoints related to address module, e.g. create, district."},{"name":"Company","description":"Endpoints related to company module."}],"schemes":["http","https"],"paths":{"/address/create":{"post":{"tags":["Address"],"produces":["application/json"],"operationId":"createAddress","summary":"Create address","description":"","parameters":[{"name":"district_id","in":"query","description":"District id","required":true,"type":"integer"},{"name":"street_one","in":"query","description":"Address line 1","required":true,"type":"string"},{"name":"street_two","in":"query","description":"Address line 2","required":true,"type":"string"},{"name":"post_code","in":"query","description":"Postcode of the address","required":true,"type":"string"}],"responses":{"200":{"description":"successful operation","headers":{"X-Expires-After":{"type":"string","format":"date-time","description":"date in UTC when token expires"},"X-Rate-Limit":{"type":"integer","format":"int32","description":"calls per hour allowed by the user"}},"schema":{"type":"string"}},"422":{"description":"Invalid input supplied"}}}},"/address/delete/{id}":{"delete":{"tags":["Address"],"produces":["application/json"],"operationId":"deleteAddress","summary":"Delete address","description":"","parameters":[{"name":"id","in":"path","description":"District id","required":true,"type":"string"}],"responses":{"200":{"description":"successful operation","headers":{"X-Expires-After":{"type":"string","format":"date-time","description":"date in UTC when token expires"},"X-Rate-Limit":{"type":"integer","format":"int32","description":"calls per hour allowed by the user"}},"schema":{"type":"string"}},"422":{"description":"Invalid input supplied"}}}},"/address/district/list":{"get":{"tags":["Address"],"produces":["application/json"],"operationId":"listDistrictAddress","summary":"List districts","description":"","parameters":[{"name":"filter","in":"query","description":"Filters","required":false,"type":"array","items":{"type":"string"}}],"responses":{"200":{"description":"successful operation","headers":{"X-Expires-After":{"type":"string","format":"date-time","description":"date in UTC when token expires"},"X-Rate-Limit":{"type":"integer","format":"int32","description":"calls per hour allowed by the user"}},"schema":{"type":"string"}},"422":{"description":"Invalid input supplied"}}}},"/address/list":{"get":{"tags":["Address"],"produces":["application/json"],"operationId":"listAddress","summary":"List addresses of logged in user","description":"","parameters":[{"name":"filter","in":"query","description":"Filters","required":false,"type":"array","items":{"type":"string"}}],"responses":{"200":{"description":"successful operation","headers":{"X-Expires-After":{"type":"string","format":"date-time","description":"date in UTC when token expires"},"X-Rate-Limit":{"type":"integer","format":"int32","description":"calls per hour allowed by the user"}},"schema":{"type":"string"}},"422":{"description":"Invalid input supplied"}}}},"/address/{id}/show":{"get":{"tags":["Address"],"produces":["application/json"],"operationId":"showAddress","summary":"List addresses of logged in user","description":"","parameters":[{"name":"id","in":"path","description":"Address id","required":true,"type":"integer"}],"responses":{"200":{"description":"successful operation","headers":{"X-Expires-After":{"type":"string","format":"date-time","description":"date in UTC when token expires"},"X-Rate-Limit":{"type":"integer","format":"int32","description":"calls per hour allowed by the user"}},"schema":{"type":"string"}},"422":{"description":"Invalid input supplied"}}}},"/address/{id}/default":{"put":{"tags":["Address"],"produces":["application/json"],"operationId":"setDefaultAddress","summary":"Set default address","description":"","parameters":[{"name":"id","in":"path","description":"Address id","required":true,"type":"integer"},{"name":"district_id","in":"query","description":"District id","required":true,"type":"integer"},{"name":"street_one","in":"query","description":"Address line 1","required":true,"type":"string"},{"name":"street_two","in":"query","description":"Address line 2","required":true,"type":"string"},{"name":"post_code","in":"query","description":"Postcode of the address","required":true,"type":"string"}],"responses":{"200":{"description":"successful operation","headers":{"X-Expires-After":{"type":"string","format":"date-time","description":"date in UTC when token expires"},"X-Rate-Limit":{"type":"integer","format":"int32","description":"calls per hour allowed by the user"}},"schema":{"type":"string"}},"422":{"description":"Invalid input supplied"}}}},"/address/update/{id}":{"put":{"tags":["Address"],"produces":["application/json"],"operationId":"setDefaultAddress","summary":"Set default address","description":"","parameters":[{"name":"id","in":"path","description":"Address id","required":true,"type":"integer"}],"responses":{"200":{"description":"successful operation","headers":{"X-Expires-After":{"type":"string","format":"date-time","description":"date in UTC when token expires"},"X-Rate-Limit":{"type":"integer","format":"int32","description":"calls per hour allowed by the user"}},"schema":{"type":"string"}},"422":{"description":"Invalid input supplied"}}}},"/account/authentication/login/check_email":{"post":{"tags":["Account"],"summary":"Check if email registered","description":"","operationId":"userList","produces":["application/json","application/xml"],"parameters":[{"name":"email","in":"query","description":"email","required":true,"type":"string"}],"responses":{"default":{"description":"successful operation"}}}},"/account/registration/registration":{"post":{"tags":["Account"],"produces":["application/json"],"summary":"Register user into the system","description":"","parameters":[{"name":"name","in":"query","description":"The name of user","required":true,"type":"string"},{"name":"email","in":"query","description":"The email for login","required":true,"type":"string","format":"email"},{"name":"password","in":"query","description":"The password for login","required":true,"type":"string","format":"password"},{"name":"password_confirmation","in":"query","description":"The confirmation password for login","required":true,"type":"string","format":"password"},{"name":"type(company type)","in":"query","description":"Company Type - PERSONAL_BUSINESS:0 , COMPANY_BUSINESS:1","required":true,"type":"integer"},{"name":"phone","in":"query","description":"Contact phone number","required":true,"type":"string"},{"name":"contact_email","in":"query","description":"Contact email","required":true,"type":"string"},{"name":"company_name","in":"query","description":"The company name - if not defined , name of user will save as the company name","required":false,"type":"string"},{"name":"type(company_module type)","in":"query","description":"Business Type - FREIGHT_FORWARDER:1, IMPORTER:2, CURRENCY_VENDOR:3, WAREHOUSE:4","required":false,"default":2,"type":"integer"},{"name":"wechat_id","in":"query","description":"Contact Wechat id","required":false,"type":"string"},{"name":"files[0]","in":"query","description":"File need to convert to base64 example : 'data:application/pdf;base64,{Base64}';","required":true,"type":"string"},{"name":"identification_no","in":"query","description":"Personal identification no or company registration no","required":true,"type":"string"}],"responses":{"200":{"description":"successful operation","headers":{"X-Expires-After":{"type":"string","format":"date-time","description":"date in UTC when token expires"},"X-Rate-Limit":{"type":"integer","format":"int32","description":"calls per hour allowed by the user"}},"schema":{"type":"string"}},"400":{"description":"Invalid username/password supplied"}}}},"/account/authentication/login/attempt":{"post":{"tags":["Account"],"produces":["application/json"],"summary":"Logs user into the system","operationId":"aaa","description":"","parameters":[{"name":"email","in":"query","description":"The user name for login","required":true,"type":"string"},{"name":"password","in":"query","description":"The password for login in clear text","required":true,"type":"string"}],"responses":{"200":{"description":"successful operation","headers":{"X-Expires-After":{"type":"string","format":"date-time","description":"date in UTC when token expires"},"X-Rate-Limit":{"type":"integer","format":"int32","description":"calls per hour allowed by the user"}},"schema":{"type":"string"}},"400":{"description":"Invalid username/password supplied"}}}},"/account/authentication/logout":{"get":{"tags":["Account"],"summary":"Logs out current logged in user session","description":"","operationId":"logoutUser","produces":["application/json","application/xml"],"parameters":[],"responses":{"default":{"description":"successful operation"}}}},"/account/user/list":{"get":{"tags":["Account"],"summary":"Logs out current logged in user session","description":"","operationId":"userList","produces":["application/json","application/xml"],"parameters":[],"responses":{"default":{"description":"successful operation"}}}},"/company/list":{"get":{"tags":["Company"],"summary":"List of Companies","description":"example filters={\"WithCompanyModuleType\":4,\"order_by\":{\"column\":\"id\",\"DESC\":true}} | to get list of company with company_module.Type(business type) = 4(Warehouse)","operationId":"companyList","produces":["application/json","application/xml"],"parameters":[{"name":"filters","in":"query","description":"Eloquent Filter","required":false,"type":"array","items":{"type":"string"}}],"responses":{"default":{"description":"successful operation"}}}}},"securityDefinitions":{"Authorization":{"type":"apiKey","name":"api_key","in":"header"},"petstore_auth":{"type":"oauth2","authorizationUrl":"https://petstore.swagger.io/oauth/authorize","flow":"implicit","scopes":{"read:pets":"read your pets","write:pets":"modify pets in your account"}}},"definitions":{"ApiResponse":{"type":"object","properties":{"code":{"type":"integer","format":"int32"},"title":{"type":"string"},"message":{"type":"string"},"payload":{"type":"object"}}}}} \ No newline at end of file +{"swagger":"2.0","info":{"description":"Shipping Portal to manage parcel","version":"1.0.0","title":"Shipping Portal"},"host":"{{request()->getHttpHost()}}","basePath":"/api/v1","tags":[{"name":"Account","description":"Endpoints related to user module, e.g. login, register."},{"name":"Address","description":"Endpoints related to address module, e.g. create, district."},{"name":"Company","description":"Endpoints related to company module."},{"name":"Flow - Registration","description":"Endpoints related to registration flow."}],"schemes":["http","https"],"paths":{"/address/create":{"post":{"tags":["Address"],"produces":["application/json"],"operationId":"createAddress","summary":"Create address","description":"","parameters":[{"name":"district_id","in":"query","description":"District id","required":true,"type":"integer"},{"name":"street_one","in":"query","description":"Address line 1","required":true,"type":"string"},{"name":"street_two","in":"query","description":"Address line 2","required":true,"type":"string"},{"name":"post_code","in":"query","description":"Postcode of the address","required":true,"type":"string"}],"responses":{"200":{"description":"successful operation","headers":{"X-Expires-After":{"type":"string","format":"date-time","description":"date in UTC when token expires"},"X-Rate-Limit":{"type":"integer","format":"int32","description":"calls per hour allowed by the user"}},"schema":{"type":"string"}},"422":{"description":"Invalid input supplied"}}}},"/address/delete/{id}":{"delete":{"tags":["Address"],"produces":["application/json"],"operationId":"deleteAddress","summary":"Delete address","description":"","parameters":[{"name":"id","in":"path","description":"District id","required":true,"type":"string"}],"responses":{"200":{"description":"successful operation","headers":{"X-Expires-After":{"type":"string","format":"date-time","description":"date in UTC when token expires"},"X-Rate-Limit":{"type":"integer","format":"int32","description":"calls per hour allowed by the user"}},"schema":{"type":"string"}},"422":{"description":"Invalid input supplied"}}}},"/address/district/list":{"get":{"tags":["Address"],"produces":["application/json"],"operationId":"listDistrictAddress","summary":"List districts","description":"","parameters":[{"name":"filter","in":"query","description":"Filters","required":false,"type":"array","items":{"type":"string"}}],"responses":{"200":{"description":"successful operation","headers":{"X-Expires-After":{"type":"string","format":"date-time","description":"date in UTC when token expires"},"X-Rate-Limit":{"type":"integer","format":"int32","description":"calls per hour allowed by the user"}},"schema":{"type":"string"}},"422":{"description":"Invalid input supplied"}}}},"/address/list":{"get":{"tags":["Address"],"produces":["application/json"],"operationId":"listAddress","summary":"List addresses of logged in user","description":"","parameters":[{"name":"filter","in":"query","description":"Filters","required":false,"type":"array","items":{"type":"string"}}],"responses":{"200":{"description":"successful operation","headers":{"X-Expires-After":{"type":"string","format":"date-time","description":"date in UTC when token expires"},"X-Rate-Limit":{"type":"integer","format":"int32","description":"calls per hour allowed by the user"}},"schema":{"type":"string"}},"422":{"description":"Invalid input supplied"}}}},"/address/{id}/show":{"get":{"tags":["Address"],"produces":["application/json"],"operationId":"showAddress","summary":"List addresses of logged in user","description":"","parameters":[{"name":"id","in":"path","description":"Address id","required":true,"type":"integer"}],"responses":{"200":{"description":"successful operation","headers":{"X-Expires-After":{"type":"string","format":"date-time","description":"date in UTC when token expires"},"X-Rate-Limit":{"type":"integer","format":"int32","description":"calls per hour allowed by the user"}},"schema":{"type":"string"}},"422":{"description":"Invalid input supplied"}}}},"/address/{id}/default":{"put":{"tags":["Address"],"produces":["application/json"],"operationId":"setDefaultAddress","summary":"Set default address","description":"","parameters":[{"name":"id","in":"path","description":"Address id","required":true,"type":"integer"},{"name":"district_id","in":"query","description":"District id","required":true,"type":"integer"},{"name":"street_one","in":"query","description":"Address line 1","required":true,"type":"string"},{"name":"street_two","in":"query","description":"Address line 2","required":true,"type":"string"},{"name":"post_code","in":"query","description":"Postcode of the address","required":true,"type":"string"}],"responses":{"200":{"description":"successful operation","headers":{"X-Expires-After":{"type":"string","format":"date-time","description":"date in UTC when token expires"},"X-Rate-Limit":{"type":"integer","format":"int32","description":"calls per hour allowed by the user"}},"schema":{"type":"string"}},"422":{"description":"Invalid input supplied"}}}},"/address/update/{id}":{"put":{"tags":["Address"],"produces":["application/json"],"operationId":"setDefaultAddress","summary":"Set default address","description":"","parameters":[{"name":"id","in":"path","description":"Address id","required":true,"type":"integer"}],"responses":{"200":{"description":"successful operation","headers":{"X-Expires-After":{"type":"string","format":"date-time","description":"date in UTC when token expires"},"X-Rate-Limit":{"type":"integer","format":"int32","description":"calls per hour allowed by the user"}},"schema":{"type":"string"}},"422":{"description":"Invalid input supplied"}}}},"/account/authentication/login/check_email":{"post":{"tags":["Account","Flow - Registration"],"summary":"Check if email registered","description":"","operationId":"userList","produces":["application/json","application/xml"],"parameters":[{"name":"email","in":"query","description":"email","required":true,"type":"string"}],"responses":{"default":{"description":"successful operation"}}}},"/account/registration/registration":{"post":{"tags":["Account","Flow - Registration"],"produces":["application/json"],"summary":"Register user into the system","description":"","parameters":[{"name":"name","in":"query","description":"The name of user","required":true,"type":"string"},{"name":"email","in":"query","description":"The email for login","required":true,"type":"string","format":"email"},{"name":"password","in":"query","description":"The password for login","required":true,"type":"string","format":"password"},{"name":"password_confirmation","in":"query","description":"The confirmation password for login","required":true,"type":"string","format":"password"},{"name":"type","in":"query","description":"Company Type - PERSONAL_BUSINESS:0 , COMPANY_BUSINESS:1","required":true,"type":"integer"},{"name":"phone","in":"query","description":"Contact phone number","required":true,"type":"string"},{"name":"contact_email","in":"query","description":"Contact email","required":true,"type":"string"},{"name":"company_name","in":"query","description":"The company name - if not defined , name of user will save as the company name","required":false,"type":"string"},{"name":"business_type","in":"query","description":"Business Type - FREIGHT_FORWARDER:1, IMPORTER:2, CURRENCY_VENDOR:3, WAREHOUSE:4","required":false,"default":2,"type":"integer"},{"name":"wechat_id","in":"query","description":"Contact Wechat id","required":false,"type":"string"},{"name":"files[0]","in":"query","description":"File need to convert to base64 example : 'data:application/pdf;base64,{Base64}';","required":true,"type":"string"},{"name":"identification_no","in":"query","description":"Personal identification no or company registration no","required":true,"type":"string"}],"responses":{"200":{"description":"successful operation","headers":{"X-Expires-After":{"type":"string","format":"date-time","description":"date in UTC when token expires"},"X-Rate-Limit":{"type":"integer","format":"int32","description":"calls per hour allowed by the user"}},"schema":{"type":"string"}},"400":{"description":"Invalid username/password supplied"}}}},"/account/authentication/login/attempt":{"post":{"tags":["Account"],"produces":["application/json"],"summary":"Logs user into the system","operationId":"aaa","description":"","parameters":[{"name":"email","in":"query","description":"The user name for login","required":true,"type":"string"},{"name":"password","in":"query","description":"The password for login in clear text","required":true,"type":"string"}],"responses":{"200":{"description":"successful operation","headers":{"X-Expires-After":{"type":"string","format":"date-time","description":"date in UTC when token expires"},"X-Rate-Limit":{"type":"integer","format":"int32","description":"calls per hour allowed by the user"}},"schema":{"type":"string"}},"400":{"description":"Invalid username/password supplied"}}}},"/account/authentication/logout":{"get":{"tags":["Account"],"summary":"Logs out current logged in user session","description":"","operationId":"logoutUser","produces":["application/json","application/xml"],"parameters":[],"responses":{"default":{"description":"successful operation"}}}},"/account/user/list":{"get":{"tags":["Account"],"summary":"Logs out current logged in user session","description":"","operationId":"userList","produces":["application/json","application/xml"],"parameters":[],"responses":{"default":{"description":"successful operation"}}}},"/company/list":{"get":{"tags":["Company"],"summary":"List of Companies","description":"example filters={\"WithCompanyModuleType\":4,\"order_by\":{\"column\":\"id\",\"DESC\":true}} | to get list of company with company_module.Type(business type) = 4(Warehouse)","operationId":"companyList","produces":["application/json","application/xml"],"parameters":[{"name":"filters","in":"query","description":"Eloquent Filter","required":false,"type":"array","items":{"type":"string"}}],"responses":{"default":{"description":"successful operation"}}}}},"securityDefinitions":{"Authorization":{"type":"apiKey","name":"api_key","in":"header"},"petstore_auth":{"type":"oauth2","authorizationUrl":"https://petstore.swagger.io/oauth/authorize","flow":"implicit","scopes":{"read:pets":"read your pets","write:pets":"modify pets in your account"}}},"definitions":{"ApiResponse":{"type":"object","properties":{"code":{"type":"integer","format":"int32"},"title":{"type":"string"},"message":{"type":"string"},"payload":{"type":"object"}}}}} \ No newline at end of file From b0a02a8c27bf348ea562cda055352f17f1569719 Mon Sep 17 00:00:00 2001 From: weichien00 Date: Wed, 14 Jul 2021 11:01:01 +0800 Subject: [PATCH 13/13] swagger - Add create company API. --- resources/views/swagger/json.blade.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/resources/views/swagger/json.blade.php b/resources/views/swagger/json.blade.php index 1254dc8a..c2e3b0aa 100644 --- a/resources/views/swagger/json.blade.php +++ b/resources/views/swagger/json.blade.php @@ -1 +1 @@ -{"swagger":"2.0","info":{"description":"Shipping Portal to manage parcel","version":"1.0.0","title":"Shipping Portal"},"host":"{{request()->getHttpHost()}}","basePath":"/api/v1","tags":[{"name":"Account","description":"Endpoints related to user module, e.g. login, register."},{"name":"Address","description":"Endpoints related to address module, e.g. create, district."},{"name":"Company","description":"Endpoints related to company module."},{"name":"Flow - Registration","description":"Endpoints related to registration flow."}],"schemes":["http","https"],"paths":{"/address/create":{"post":{"tags":["Address"],"produces":["application/json"],"operationId":"createAddress","summary":"Create address","description":"","parameters":[{"name":"district_id","in":"query","description":"District id","required":true,"type":"integer"},{"name":"street_one","in":"query","description":"Address line 1","required":true,"type":"string"},{"name":"street_two","in":"query","description":"Address line 2","required":true,"type":"string"},{"name":"post_code","in":"query","description":"Postcode of the address","required":true,"type":"string"}],"responses":{"200":{"description":"successful operation","headers":{"X-Expires-After":{"type":"string","format":"date-time","description":"date in UTC when token expires"},"X-Rate-Limit":{"type":"integer","format":"int32","description":"calls per hour allowed by the user"}},"schema":{"type":"string"}},"422":{"description":"Invalid input supplied"}}}},"/address/delete/{id}":{"delete":{"tags":["Address"],"produces":["application/json"],"operationId":"deleteAddress","summary":"Delete address","description":"","parameters":[{"name":"id","in":"path","description":"District id","required":true,"type":"string"}],"responses":{"200":{"description":"successful operation","headers":{"X-Expires-After":{"type":"string","format":"date-time","description":"date in UTC when token expires"},"X-Rate-Limit":{"type":"integer","format":"int32","description":"calls per hour allowed by the user"}},"schema":{"type":"string"}},"422":{"description":"Invalid input supplied"}}}},"/address/district/list":{"get":{"tags":["Address"],"produces":["application/json"],"operationId":"listDistrictAddress","summary":"List districts","description":"","parameters":[{"name":"filter","in":"query","description":"Filters","required":false,"type":"array","items":{"type":"string"}}],"responses":{"200":{"description":"successful operation","headers":{"X-Expires-After":{"type":"string","format":"date-time","description":"date in UTC when token expires"},"X-Rate-Limit":{"type":"integer","format":"int32","description":"calls per hour allowed by the user"}},"schema":{"type":"string"}},"422":{"description":"Invalid input supplied"}}}},"/address/list":{"get":{"tags":["Address"],"produces":["application/json"],"operationId":"listAddress","summary":"List addresses of logged in user","description":"","parameters":[{"name":"filter","in":"query","description":"Filters","required":false,"type":"array","items":{"type":"string"}}],"responses":{"200":{"description":"successful operation","headers":{"X-Expires-After":{"type":"string","format":"date-time","description":"date in UTC when token expires"},"X-Rate-Limit":{"type":"integer","format":"int32","description":"calls per hour allowed by the user"}},"schema":{"type":"string"}},"422":{"description":"Invalid input supplied"}}}},"/address/{id}/show":{"get":{"tags":["Address"],"produces":["application/json"],"operationId":"showAddress","summary":"List addresses of logged in user","description":"","parameters":[{"name":"id","in":"path","description":"Address id","required":true,"type":"integer"}],"responses":{"200":{"description":"successful operation","headers":{"X-Expires-After":{"type":"string","format":"date-time","description":"date in UTC when token expires"},"X-Rate-Limit":{"type":"integer","format":"int32","description":"calls per hour allowed by the user"}},"schema":{"type":"string"}},"422":{"description":"Invalid input supplied"}}}},"/address/{id}/default":{"put":{"tags":["Address"],"produces":["application/json"],"operationId":"setDefaultAddress","summary":"Set default address","description":"","parameters":[{"name":"id","in":"path","description":"Address id","required":true,"type":"integer"},{"name":"district_id","in":"query","description":"District id","required":true,"type":"integer"},{"name":"street_one","in":"query","description":"Address line 1","required":true,"type":"string"},{"name":"street_two","in":"query","description":"Address line 2","required":true,"type":"string"},{"name":"post_code","in":"query","description":"Postcode of the address","required":true,"type":"string"}],"responses":{"200":{"description":"successful operation","headers":{"X-Expires-After":{"type":"string","format":"date-time","description":"date in UTC when token expires"},"X-Rate-Limit":{"type":"integer","format":"int32","description":"calls per hour allowed by the user"}},"schema":{"type":"string"}},"422":{"description":"Invalid input supplied"}}}},"/address/update/{id}":{"put":{"tags":["Address"],"produces":["application/json"],"operationId":"setDefaultAddress","summary":"Set default address","description":"","parameters":[{"name":"id","in":"path","description":"Address id","required":true,"type":"integer"}],"responses":{"200":{"description":"successful operation","headers":{"X-Expires-After":{"type":"string","format":"date-time","description":"date in UTC when token expires"},"X-Rate-Limit":{"type":"integer","format":"int32","description":"calls per hour allowed by the user"}},"schema":{"type":"string"}},"422":{"description":"Invalid input supplied"}}}},"/account/authentication/login/check_email":{"post":{"tags":["Account","Flow - Registration"],"summary":"Check if email registered","description":"","operationId":"userList","produces":["application/json","application/xml"],"parameters":[{"name":"email","in":"query","description":"email","required":true,"type":"string"}],"responses":{"default":{"description":"successful operation"}}}},"/account/registration/registration":{"post":{"tags":["Account","Flow - Registration"],"produces":["application/json"],"summary":"Register user into the system","description":"","parameters":[{"name":"name","in":"query","description":"The name of user","required":true,"type":"string"},{"name":"email","in":"query","description":"The email for login","required":true,"type":"string","format":"email"},{"name":"password","in":"query","description":"The password for login","required":true,"type":"string","format":"password"},{"name":"password_confirmation","in":"query","description":"The confirmation password for login","required":true,"type":"string","format":"password"},{"name":"type","in":"query","description":"Company Type - PERSONAL_BUSINESS:0 , COMPANY_BUSINESS:1","required":true,"type":"integer"},{"name":"phone","in":"query","description":"Contact phone number","required":true,"type":"string"},{"name":"contact_email","in":"query","description":"Contact email","required":true,"type":"string"},{"name":"company_name","in":"query","description":"The company name - if not defined , name of user will save as the company name","required":false,"type":"string"},{"name":"business_type","in":"query","description":"Business Type - FREIGHT_FORWARDER:1, IMPORTER:2, CURRENCY_VENDOR:3, WAREHOUSE:4","required":false,"default":2,"type":"integer"},{"name":"wechat_id","in":"query","description":"Contact Wechat id","required":false,"type":"string"},{"name":"files[0]","in":"query","description":"File need to convert to base64 example : 'data:application/pdf;base64,{Base64}';","required":true,"type":"string"},{"name":"identification_no","in":"query","description":"Personal identification no or company registration no","required":true,"type":"string"}],"responses":{"200":{"description":"successful operation","headers":{"X-Expires-After":{"type":"string","format":"date-time","description":"date in UTC when token expires"},"X-Rate-Limit":{"type":"integer","format":"int32","description":"calls per hour allowed by the user"}},"schema":{"type":"string"}},"400":{"description":"Invalid username/password supplied"}}}},"/account/authentication/login/attempt":{"post":{"tags":["Account"],"produces":["application/json"],"summary":"Logs user into the system","operationId":"aaa","description":"","parameters":[{"name":"email","in":"query","description":"The user name for login","required":true,"type":"string"},{"name":"password","in":"query","description":"The password for login in clear text","required":true,"type":"string"}],"responses":{"200":{"description":"successful operation","headers":{"X-Expires-After":{"type":"string","format":"date-time","description":"date in UTC when token expires"},"X-Rate-Limit":{"type":"integer","format":"int32","description":"calls per hour allowed by the user"}},"schema":{"type":"string"}},"400":{"description":"Invalid username/password supplied"}}}},"/account/authentication/logout":{"get":{"tags":["Account"],"summary":"Logs out current logged in user session","description":"","operationId":"logoutUser","produces":["application/json","application/xml"],"parameters":[],"responses":{"default":{"description":"successful operation"}}}},"/account/user/list":{"get":{"tags":["Account"],"summary":"Logs out current logged in user session","description":"","operationId":"userList","produces":["application/json","application/xml"],"parameters":[],"responses":{"default":{"description":"successful operation"}}}},"/company/list":{"get":{"tags":["Company"],"summary":"List of Companies","description":"example filters={\"WithCompanyModuleType\":4,\"order_by\":{\"column\":\"id\",\"DESC\":true}} | to get list of company with company_module.Type(business type) = 4(Warehouse)","operationId":"companyList","produces":["application/json","application/xml"],"parameters":[{"name":"filters","in":"query","description":"Eloquent Filter","required":false,"type":"array","items":{"type":"string"}}],"responses":{"default":{"description":"successful operation"}}}}},"securityDefinitions":{"Authorization":{"type":"apiKey","name":"api_key","in":"header"},"petstore_auth":{"type":"oauth2","authorizationUrl":"https://petstore.swagger.io/oauth/authorize","flow":"implicit","scopes":{"read:pets":"read your pets","write:pets":"modify pets in your account"}}},"definitions":{"ApiResponse":{"type":"object","properties":{"code":{"type":"integer","format":"int32"},"title":{"type":"string"},"message":{"type":"string"},"payload":{"type":"object"}}}}} \ No newline at end of file +{"swagger":"2.0","info":{"description":"Shipping Portal to manage parcel","version":"1.0.0","title":"Shipping Portal"},"host":"{{request()->getHttpHost()}}","basePath":"/api/v1","tags":[{"name":"Account","description":"Endpoints related to user module, e.g. login, register."},{"name":"Address","description":"Endpoints related to address module, e.g. create, district."},{"name":"Company","description":"Endpoints related to company module."},{"name":"Flow - Registration","description":"Endpoints related to registration flow."}],"schemes":["http","https"],"paths":{"/address/create":{"post":{"tags":["Address"],"produces":["application/json"],"operationId":"createAddress","summary":"Create address","description":"","parameters":[{"name":"district_id","in":"query","description":"District id","required":true,"type":"integer"},{"name":"street_one","in":"query","description":"Address line 1","required":true,"type":"string"},{"name":"street_two","in":"query","description":"Address line 2","required":true,"type":"string"},{"name":"post_code","in":"query","description":"Postcode of the address","required":true,"type":"string"}],"responses":{"200":{"description":"successful operation","headers":{"X-Expires-After":{"type":"string","format":"date-time","description":"date in UTC when token expires"},"X-Rate-Limit":{"type":"integer","format":"int32","description":"calls per hour allowed by the user"}},"schema":{"type":"string"}},"422":{"description":"Invalid input supplied"}}}},"/address/delete/{id}":{"delete":{"tags":["Address"],"produces":["application/json"],"operationId":"deleteAddress","summary":"Delete address","description":"","parameters":[{"name":"id","in":"path","description":"District id","required":true,"type":"string"}],"responses":{"200":{"description":"successful operation","headers":{"X-Expires-After":{"type":"string","format":"date-time","description":"date in UTC when token expires"},"X-Rate-Limit":{"type":"integer","format":"int32","description":"calls per hour allowed by the user"}},"schema":{"type":"string"}},"422":{"description":"Invalid input supplied"}}}},"/address/district/list":{"get":{"tags":["Address"],"produces":["application/json"],"operationId":"listDistrictAddress","summary":"List districts","description":"","parameters":[{"name":"filter","in":"query","description":"Filters","required":false,"type":"array","items":{"type":"string"}}],"responses":{"200":{"description":"successful operation","headers":{"X-Expires-After":{"type":"string","format":"date-time","description":"date in UTC when token expires"},"X-Rate-Limit":{"type":"integer","format":"int32","description":"calls per hour allowed by the user"}},"schema":{"type":"string"}},"422":{"description":"Invalid input supplied"}}}},"/address/list":{"get":{"tags":["Address"],"produces":["application/json"],"operationId":"listAddress","summary":"List addresses of logged in user","description":"","parameters":[{"name":"filter","in":"query","description":"Filters","required":false,"type":"array","items":{"type":"string"}}],"responses":{"200":{"description":"successful operation","headers":{"X-Expires-After":{"type":"string","format":"date-time","description":"date in UTC when token expires"},"X-Rate-Limit":{"type":"integer","format":"int32","description":"calls per hour allowed by the user"}},"schema":{"type":"string"}},"422":{"description":"Invalid input supplied"}}}},"/address/{id}/show":{"get":{"tags":["Address"],"produces":["application/json"],"operationId":"showAddress","summary":"List addresses of logged in user","description":"","parameters":[{"name":"id","in":"path","description":"Address id","required":true,"type":"integer"}],"responses":{"200":{"description":"successful operation","headers":{"X-Expires-After":{"type":"string","format":"date-time","description":"date in UTC when token expires"},"X-Rate-Limit":{"type":"integer","format":"int32","description":"calls per hour allowed by the user"}},"schema":{"type":"string"}},"422":{"description":"Invalid input supplied"}}}},"/address/{id}/default":{"put":{"tags":["Address"],"produces":["application/json"],"operationId":"setDefaultAddress","summary":"Set default address","description":"","parameters":[{"name":"id","in":"path","description":"Address id","required":true,"type":"integer"},{"name":"district_id","in":"query","description":"District id","required":true,"type":"integer"},{"name":"street_one","in":"query","description":"Address line 1","required":true,"type":"string"},{"name":"street_two","in":"query","description":"Address line 2","required":true,"type":"string"},{"name":"post_code","in":"query","description":"Postcode of the address","required":true,"type":"string"}],"responses":{"200":{"description":"successful operation","headers":{"X-Expires-After":{"type":"string","format":"date-time","description":"date in UTC when token expires"},"X-Rate-Limit":{"type":"integer","format":"int32","description":"calls per hour allowed by the user"}},"schema":{"type":"string"}},"422":{"description":"Invalid input supplied"}}}},"/address/update/{id}":{"put":{"tags":["Address"],"produces":["application/json"],"operationId":"setDefaultAddress","summary":"Set default address","description":"","parameters":[{"name":"id","in":"path","description":"Address id","required":true,"type":"integer"}],"responses":{"200":{"description":"successful operation","headers":{"X-Expires-After":{"type":"string","format":"date-time","description":"date in UTC when token expires"},"X-Rate-Limit":{"type":"integer","format":"int32","description":"calls per hour allowed by the user"}},"schema":{"type":"string"}},"422":{"description":"Invalid input supplied"}}}},"/account/authentication/login/check_email":{"post":{"tags":["Account","Flow - Registration"],"summary":"Check if email registered","description":"","operationId":"userList","produces":["application/json","application/xml"],"parameters":[{"name":"email","in":"query","description":"email","required":true,"type":"string"}],"responses":{"default":{"description":"successful operation"}}}},"/account/registration/registration":{"post":{"tags":["Account","Flow - Registration"],"produces":["application/json"],"summary":"Register user into the system","description":"","parameters":[{"name":"name","in":"query","description":"The name of user","required":true,"type":"string"},{"name":"email","in":"query","description":"The email for login","required":true,"type":"string","format":"email"},{"name":"password","in":"query","description":"The password for login","required":true,"type":"string","format":"password"},{"name":"password_confirmation","in":"query","description":"The confirmation password for login","required":true,"type":"string","format":"password"},{"name":"type","in":"query","description":"Company Type - PERSONAL_BUSINESS:0 , COMPANY_BUSINESS:1","required":true,"type":"integer"},{"name":"phone","in":"query","description":"Contact phone number","required":true,"type":"string"},{"name":"contact_email","in":"query","description":"Contact email","required":true,"type":"string"},{"name":"company_name","in":"query","description":"The company name - if not defined , name of user will save as the company name","required":false,"type":"string"},{"name":"business_type","in":"query","description":"Business Type - FREIGHT_FORWARDER:1, IMPORTER:2, CURRENCY_VENDOR:3, WAREHOUSE:4","required":false,"default":2,"type":"integer"},{"name":"wechat_id","in":"query","description":"Contact Wechat id","required":false,"type":"string"},{"name":"files[0]","in":"query","description":"File need to convert to base64 example : 'data:application/pdf;base64,{Base64}';","required":true,"type":"string"},{"name":"identification_no","in":"query","description":"Personal identification no or company registration no","required":true,"type":"string"}],"responses":{"200":{"description":"successful operation","headers":{"X-Expires-After":{"type":"string","format":"date-time","description":"date in UTC when token expires"},"X-Rate-Limit":{"type":"integer","format":"int32","description":"calls per hour allowed by the user"}},"schema":{"type":"string"}},"400":{"description":"Invalid username/password supplied"}}}},"/account/authentication/login/attempt":{"post":{"tags":["Account"],"produces":["application/json"],"summary":"Logs user into the system","operationId":"aaa","description":"","parameters":[{"name":"email","in":"query","description":"The user name for login","required":true,"type":"string"},{"name":"password","in":"query","description":"The password for login in clear text","required":true,"type":"string"}],"responses":{"200":{"description":"successful operation","headers":{"X-Expires-After":{"type":"string","format":"date-time","description":"date in UTC when token expires"},"X-Rate-Limit":{"type":"integer","format":"int32","description":"calls per hour allowed by the user"}},"schema":{"type":"string"}},"400":{"description":"Invalid username/password supplied"}}}},"/account/authentication/logout":{"get":{"tags":["Account"],"summary":"Logs out current logged in user session","description":"","operationId":"logoutUser","produces":["application/json","application/xml"],"parameters":[],"responses":{"default":{"description":"successful operation"}}}},"/account/user/list":{"get":{"tags":["Account"],"summary":"Logs out current logged in user session","description":"","operationId":"userList","produces":["application/json","application/xml"],"parameters":[],"responses":{"default":{"description":"successful operation"}}}},"/company/list":{"get":{"tags":["Company"],"summary":"List of Companies","description":"example filters={\"WithCompanyModuleType\":4,\"order_by\":{\"column\":\"id\",\"DESC\":true}} | to get list of company with company_module.Type(business type) = 4(Warehouse)","operationId":"companyList","produces":["application/json","application/xml"],"parameters":[{"name":"filters","in":"query","description":"Eloquent Filter","required":false,"type":"array","items":{"type":"string"}}],"responses":{"default":{"description":"successful operation"}}}},"/company/create":{"post":{"tags":["Company"],"summary":"Create company","description":"","operationId":"companyCreate","produces":["application/json","application/xml"],"parameters":[{"name":"type","in":"query","description":"Company Type - PERSONAL_BUSINESS:0 , COMPANY_BUSINESS:1","required":true,"type":"integer","enum":[0,1]},{"name":"business_type","in":"query","description":"Business Type - FREIGHT_FORWARDER:1, IMPORTER:2, CURRENCY_VENDOR:3, WAREHOUSE:4","required":true,"type":"integer","enum":[1,2,3,4]},{"name":"name","in":"query","description":"Fill in name if type = 0","required":false,"type":"string"},{"name":"name","in":"query","description":"Fill in name if type = 0","required":false,"type":"string"},{"name":"company_name","in":"query","description":"Fill in company_name if type = 1","required":false,"type":"string"}],"responses":{"default":{"description":"successful operation"}}}}},"securityDefinitions":{"Authorization":{"type":"apiKey","name":"api_key","in":"header"},"petstore_auth":{"type":"oauth2","authorizationUrl":"https://petstore.swagger.io/oauth/authorize","flow":"implicit","scopes":{"read:pets":"read your pets","write:pets":"modify pets in your account"}}},"definitions":{"ApiResponse":{"type":"object","properties":{"code":{"type":"integer","format":"int32"},"title":{"type":"string"},"message":{"type":"string"},"payload":{"type":"object"}}}}} \ No newline at end of file