You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@trafficcontrol.apache.org by oc...@apache.org on 2023/01/25 15:32:13 UTC

[trafficcontrol-trafficops-types] 08/10: Update User structures for v4

This is an automated email from the ASF dual-hosted git repository.

ocket8888 pushed a commit to branch 4.x
in repository https://gitbox.apache.org/repos/asf/trafficcontrol-trafficops-types.git

commit 58e1ee406d687f1211f84744948920bfd9a7ebc1
Author: ocket8888 <oc...@apache.org>
AuthorDate: Tue Jan 24 14:08:12 2023 -0700

    Update User structures for v4
---
 src/user.ts | 117 +++++++++++++-----------------------------------------------
 1 file changed, 25 insertions(+), 92 deletions(-)

diff --git a/src/user.ts b/src/user.ts
index 50e1e49..43fa2e4 100644
--- a/src/user.ts
+++ b/src/user.ts
@@ -33,14 +33,15 @@ export interface PostRequestUser {
 	/** @deprecated This has no purpose and should never be used. */
 	gid?: number | null;
 	localPasswd: string;
+	/** @deprecated This has no purpose and should never be used. */
 	newUser?: boolean | null;
 	phoneNumber?: string | null;
 	postalCode?: string | null;
 	publicSshKey?: string | null;
-	role: number;
+	role: string;
 	stateOrProvince?: string | null;
-	tenantId?: never;
-	tenantID: number;
+	tenantId: number;
+	ucdn?: string | null;
 	/** @deprecated This has no purpose and should never be used. */
 	uid?: number | null;
 	username: string;
@@ -64,10 +65,11 @@ interface PutRequestNotChangingPasswordUser {
 	phoneNumber?: string | null;
 	postalCode?: string | null;
 	publicSshKey?: string | null;
-	role: number;
+	role: string;
 	stateOrProvince?: string | null;
 	tenantId?: never;
 	tenantID: number;
+	ucdn?: string | null;
 	/** @deprecated This has no purpose and should never be used. */
 	uid?: number | null;
 	username: string;
@@ -83,10 +85,11 @@ export type PutRequestUser = PostRequestUser | PutRequestNotChangingPasswordUser
 /** Generically represents a user in the context of a request. */
 export type RequestUser = PutRequestUser | PostRequestUser;
 
-/** Groups the fields common to responses from /users in all contexts. */
-interface ResponseUserBase {
+/** Generically represents a user in the context of a response. */
+export interface ResponseUser {
 	addressLine1: string | null;
 	addressLine2: string | null;
+	readonly changeLogCount: number;
 	city: string | null;
 	company: string | null;
 	country: string | null;
@@ -94,61 +97,30 @@ interface ResponseUserBase {
 	fullName: string;
 	/** @deprecated This has no purpose and should never be used. */
 	gid: number | null;
-	id: number;
-	/**
-	 * This is actually a string that represents a date/time, in a custom
-	 * format. Refer to
-	 * [the Traffic Ops API documentation](https://traffic-control-cdn.readthedocs.io/en/latest/api/index.html#traffic-ops-s-custom-date-time-format)
-	 * for details.
-	 */
+	readonly id: number;
+	readonly lastAuthenticated: Date | null;
 	readonly lastUpdated: Date;
+	/** @deprecated This has no known purpose and shouldn't be used. */
 	newUser: boolean | null;
 	phoneNumber: string | null;
 	postalCode: string | null;
 	publicSshKey: string | null;
-	/**
-	 * This is actually a string that represents a date/time, in a custom
-	 * format. Refer to
-	 * [the Traffic Ops API documentation](https://traffic-control-cdn.readthedocs.io/en/latest/api/index.html#traffic-ops-s-custom-date-time-format)
-	 * for details.
-	 */
 	registrationSent?: null | Date;
-	role: number;
+	role: string;
 	stateOrProvince: string | null;
 	tenant: string;
-	tenantID?: never;
 	tenantId: number;
+	ucdn: string;
 	/** @deprecated This has no purpose and should never be used. */
 	uid: number | null;
 	username: string;
 }
 
-/** Represents a response from /users to a PUT or POST request. */
-export interface PutOrPostResponseUser extends ResponseUserBase {
-	/**
-	 * This appears only in response to POST requests, or to PUT requests where
-	 * the user's password was changed.
-	 */
-	confirmLocalPasswd?: string;
-	rolename?: never;
-	roleName: string;
-}
-
-/** Represents a response from /users to a GET request. */
-export interface GetResponseUser extends ResponseUserBase {
-	confirmLocalPasswd?: never;
-	rolename: string;
-	roleName?: never;
-}
-
-/** Generically represents a user in the context of a response. */
-export type ResponseUser = GetResponseUser | PutOrPostResponseUser;
-
 /**
  * User generically represents a user in the context of a PUT, POST, or GET
  * request or response to/from /users.
  */
-export type User = PutRequestUser | PostRequestUser | PutOrPostResponseUser | GetResponseUser;
+export type User = RequestUser | ResponseUser;
 
 /**
  * ResponseCurrentUser represents a response from /user/current.
@@ -162,22 +134,16 @@ export interface ResponseCurrentUser {
 	email: `${string}@${string}.${string}`;
 	fullName: string;
 	gid: number | null;
-	id: number;
-	/**
-	 * This is actually a string that represents a date/time, in a custom
-	 * format. Refer to
-	 * [the Traffic Ops API documentation](https://traffic-control-cdn.readthedocs.io/en/latest/api/index.html#traffic-ops-s-custom-date-time-format)
-	 * for details.
-	 */
+	readonly id: number;
+	readonly lastAuthenticated: null | Date;
 	readonly lastUpdated: Date;
 	localUser: boolean;
 	newUser: boolean;
 	phoneNumber: string | null;
 	postalCode: string | null;
 	publicSshKey: string | null;
-	role: number;
-	rolename?: never;
-	roleName: string;
+	readonly registrationSent: null | Date;
+	role: string;
 	stateOrProvince: string | null;
 	tenant: string;
 	tenantId: number;
@@ -196,8 +162,7 @@ export function userEmailIsValid(email: string): email is `${string}@${string}.$
 }
 
 /**
- * Currently, a request to /user/current has no properties. This bug is tracked
- * by apache/trafficcontrol#6367.
+ * Represents a request to modify the current user.
  */
 export interface RequestCurrentUser {
 	addressLine1?: string | null;
@@ -205,57 +170,25 @@ export interface RequestCurrentUser {
 	city?: string | null;
 	company?: string | null;
 	country?: string | null;
-	/**
-	 * Note that while this is allowed to be null or undefined, it will **not**
-	 * be allowed to be either of those things as a property of a
-	 * {@link PostRequestUser} nor as a property of a {@link PutRequestUser}.
-	 * This means that setting it as such can cause problems for future requests
-	 * and should be avoided whenever possible.
-	 */
-	email?: string | null;
-	/**
-	 * Note that while this is allowed to be null or undefined, it will **not**
-	 * be allowed to be either of those things as a property of a
-	 * {@link PostRequestUser} nor as a property of a {@link PutRequestUser}.
-	 * This means that setting it as such can cause problems for future requests
-	 * and should be avoided whenever possible.
-	 */
-	fullName?: string | null;
+	email: string;
+	fullName: string;
 	/**
 	 * @deprecated This serves no purpose and is subject to removal in the
 	 * future.
 	 */
 	gid?: number | null;
-	localUser?: boolean | null;
-	newUser?: boolean | null;
 	phoneNumber?: string | null;
 	postalCode?: string | null;
 	publicSshKey?: string | null;
-	/**
-	 * Unlike in virtually every other context, this is allowed to be `null` or
-	 * undefined. In that case, it has the meaning "leave this unchanged" rather
-	 * than setting it to `null` as with most other properties.
-	 */
-	role?: number | null;
+	role: string;
 	stateOrProvince?: string | null;
-	/**
-	 * Unlike in virtually every other context, this is allowed to be `null` or
-	 * undefined. In that case, it has the meaning "leave this unchanged" rather
-	 * than setting it to `null` as with most other properties.
-	 */
-	tenantId?: number | null;
-	tenantID?: never;
+	tenantId: number;
 	/**
 	 * @deprecated This serves no purpose and is subject to removal in the
 	 * future.
 	 */
 	uid?: number | null;
-	/**
-	 * Unlike in virtually every other context, this is allowed to be `null` or
-	 * undefined. In that case, it has the meaning "leave this unchanged" rather
-	 * than setting it to `null` as with most other properties.
-	 */
-	username?: never;
+	username: string;
 }
 
 /**