From 0033b92a2ddd5a85ea308b236735a2eeba8e37f5 Mon Sep 17 00:00:00 2001 From: Kyle Spearrin Date: Mon, 2 Jul 2018 15:36:32 -0400 Subject: [PATCH] org create apis --- src/abstractions/api.service.ts | 4 ++ .../request/organizationCreateRequest.ts | 14 ++++++ src/models/response/organizationResponse.ts | 45 +++++++++++++++++++ src/services/api.service.ts | 14 ++++++ 4 files changed, 77 insertions(+) create mode 100644 src/models/request/organizationCreateRequest.ts create mode 100644 src/models/response/organizationResponse.ts diff --git a/src/abstractions/api.service.ts b/src/abstractions/api.service.ts index 27af163f04..21dc924ec1 100644 --- a/src/abstractions/api.service.ts +++ b/src/abstractions/api.service.ts @@ -12,6 +12,7 @@ import { FolderRequest } from '../models/request/folderRequest'; import { ImportCiphersRequest } from '../models/request/importCiphersRequest'; import { ImportDirectoryRequest } from '../models/request/importDirectoryRequest'; import { ImportOrganizationCiphersRequest } from '../models/request/importOrganizationCiphersRequest'; +import { OrganizationCreateRequest } from '../models/request/organizationCreateRequest'; import { PasswordHintRequest } from '../models/request/passwordHintRequest'; import { PasswordRequest } from '../models/request/passwordRequest'; import { PasswordVerificationRequest } from '../models/request/passwordVerificationRequest'; @@ -37,6 +38,7 @@ import { FolderResponse } from '../models/response/folderResponse'; import { IdentityTokenResponse } from '../models/response/identityTokenResponse'; import { IdentityTwoFactorResponse } from '../models/response/identityTwoFactorResponse'; import { ListResponse } from '../models/response/listResponse'; +import { OrganizationResponse } from '../models/response/organizationResponse'; import { ProfileResponse } from '../models/response/profileResponse'; import { SyncResponse } from '../models/response/syncResponse'; import { TwoFactorAuthenticatorResponse } from '../models/response/twoFactorAuthenticatorResponse'; @@ -111,4 +113,6 @@ export abstract class ApiService { postTwoFactorRecover: (request: TwoFactorRecoveryRequest) => Promise; postTwoFactorEmailSetup: (request: TwoFactorEmailRequest) => Promise; postTwoFactorEmail: (request: TwoFactorEmailRequest) => Promise; + postOrganization: (request: OrganizationCreateRequest) => Promise; + postOrganizationLicense: (data: FormData) => Promise; } diff --git a/src/models/request/organizationCreateRequest.ts b/src/models/request/organizationCreateRequest.ts new file mode 100644 index 0000000000..57a5f125ca --- /dev/null +++ b/src/models/request/organizationCreateRequest.ts @@ -0,0 +1,14 @@ +import { PlanType } from '../../enums/planType'; + +export class OrganizationCreateRequest { + name: string; + businessName: string; + billingEmail: string; + planType: PlanType; + key: string; + paymentToken: string; + additionalSeats: number; + additionalStorageGb: number; + collectionName: string; + country: string; +} diff --git a/src/models/response/organizationResponse.ts b/src/models/response/organizationResponse.ts new file mode 100644 index 0000000000..ea62f2c98a --- /dev/null +++ b/src/models/response/organizationResponse.ts @@ -0,0 +1,45 @@ +import { PlanType } from '../../enums/planType'; + +export class OrganizationResponse { + id: string; + name: string; + businessName: string; + businessAddress1: string; + businessAddress2: string; + businessAddress3: string; + businessCountry: string; + businessTaxNumber: string; + billingEmail: string; + plan: string; + planType: PlanType; + seats: number; + maxCollections: number; + maxStorageGb: number; + useGroups: boolean; + useDirectory: boolean; + useEvents: boolean; + useTotp: boolean; + use2fa: boolean; + + constructor(response: any) { + this.id = response.Id; + this.name = response.Name; + this.businessName = response.BusinessName; + this.businessAddress1 = response.BusinessAddress1; + this.businessAddress2 = response.BusinessAddress2; + this.businessAddress3 = response.BusinessAddress3; + this.businessCountry = response.BusinessCountry; + this.businessTaxNumber = response.BusinessTaxNumber; + this.billingEmail = response.BillingEmail; + this.plan = response.Plan; + this.planType = response.PlanType; + this.seats = response.Seats; + this.maxCollections = response.MaxCollections; + this.maxStorageGb = response.MaxStorageGb; + this.useGroups = response.UseGroups; + this.useDirectory = response.UseDirectory; + this.useEvents = response.UseEvents; + this.useTotp = response.UseTotp; + this.use2fa = response.Use2fa; + } +} diff --git a/src/services/api.service.ts b/src/services/api.service.ts index 56b43c3e8c..13c0a2d314 100644 --- a/src/services/api.service.ts +++ b/src/services/api.service.ts @@ -18,6 +18,7 @@ import { FolderRequest } from '../models/request/folderRequest'; import { ImportCiphersRequest } from '../models/request/importCiphersRequest'; import { ImportDirectoryRequest } from '../models/request/importDirectoryRequest'; import { ImportOrganizationCiphersRequest } from '../models/request/importOrganizationCiphersRequest'; +import { OrganizationCreateRequest } from '../models/request/organizationCreateRequest'; import { PasswordHintRequest } from '../models/request/passwordHintRequest'; import { PasswordRequest } from '../models/request/passwordRequest'; import { PasswordVerificationRequest } from '../models/request/passwordVerificationRequest'; @@ -44,6 +45,7 @@ import { FolderResponse } from '../models/response/folderResponse'; import { IdentityTokenResponse } from '../models/response/identityTokenResponse'; import { IdentityTwoFactorResponse } from '../models/response/identityTwoFactorResponse'; import { ListResponse } from '../models/response/listResponse'; +import { OrganizationResponse } from '../models/response/organizationResponse'; import { ProfileResponse } from '../models/response/profileResponse'; import { SyncResponse } from '../models/response/syncResponse'; import { TwoFactorAuthenticatorResponse } from '../models/response/twoFactorAuthenticatorResponse'; @@ -401,6 +403,18 @@ export class ApiService implements ApiServiceAbstraction { return this.send('POST', '/two-factor/send-email-login', request, false, false); } + // Organization APIs + + async postOrganization(request: OrganizationCreateRequest): Promise { + const r = await this.send('POST', '/organizations', request, true, true); + return new OrganizationResponse(r); + } + + async postOrganizationLicense(data: FormData): Promise { + const r = await this.send('POST', '/organizations/license', data, true, true); + return new OrganizationResponse(r); + } + // Helpers private async send(method: 'GET' | 'POST' | 'PUT' | 'DELETE', path: string, body: any,