Requires any of the roles: | VeoliaAdmin, SupplierAdmin, UserRegistration, User |
GET | /user/{userid} |
---|
import Foundation
import ServiceStack
public class BrowseUser : IGet, Codable
{
public var userId:Int
required public init(){}
}
public class BrowseUserResponse : ResponseBase
{
public var user:UserDetails
required public init(){ super.init() }
private enum CodingKeys : String, CodingKey {
case user
}
required public init(from decoder: Decoder) throws {
try super.init(from: decoder)
let container = try decoder.container(keyedBy: CodingKeys.self)
user = try container.decodeIfPresent(UserDetails.self, forKey: .user)
}
public override func encode(to encoder: Encoder) throws {
try super.encode(to: encoder)
var container = encoder.container(keyedBy: CodingKeys.self)
if user != nil { try container.encode(user, forKey: .user) }
}
}
public class ResponseBase : Codable
{
public var responseStatus:ResponseStatus
required public init(){}
}
public class UserDetails : ModifyRequestBase
{
public var id:Int
public var email:String
public var userName:String
public var phoneNumber:String
public var displayName:String
public var phoneNumberExtension:String
public var phoneNumberCountryCodeId:Int?
public var phoneNumberCountryCode:String
public var mobilePhoneNumber:String
public var mobilePhoneNumberCountryCodeId:Int?
public var mobilePhoneNumberCountryCode:String
public var organizationUnit:String
public var position:String
public var status:ApplicationUserStatus
public var supplierId:Int?
public var supplierOwnerId:Int?
public var meta:[String:String] = [:]
public var roles:[String] = []
public var isSupplierAdmin:Bool
required public init(){ super.init() }
private enum CodingKeys : String, CodingKey {
case id
case email
case userName
case phoneNumber
case displayName
case phoneNumberExtension
case phoneNumberCountryCodeId
case phoneNumberCountryCode
case mobilePhoneNumber
case mobilePhoneNumberCountryCodeId
case mobilePhoneNumberCountryCode
case organizationUnit
case position
case status
case supplierId
case supplierOwnerId
case meta
case roles
case isSupplierAdmin
}
required public init(from decoder: Decoder) throws {
try super.init(from: decoder)
let container = try decoder.container(keyedBy: CodingKeys.self)
id = try container.decodeIfPresent(Int.self, forKey: .id)
email = try container.decodeIfPresent(String.self, forKey: .email)
userName = try container.decodeIfPresent(String.self, forKey: .userName)
phoneNumber = try container.decodeIfPresent(String.self, forKey: .phoneNumber)
displayName = try container.decodeIfPresent(String.self, forKey: .displayName)
phoneNumberExtension = try container.decodeIfPresent(String.self, forKey: .phoneNumberExtension)
phoneNumberCountryCodeId = try container.decodeIfPresent(Int.self, forKey: .phoneNumberCountryCodeId)
phoneNumberCountryCode = try container.decodeIfPresent(String.self, forKey: .phoneNumberCountryCode)
mobilePhoneNumber = try container.decodeIfPresent(String.self, forKey: .mobilePhoneNumber)
mobilePhoneNumberCountryCodeId = try container.decodeIfPresent(Int.self, forKey: .mobilePhoneNumberCountryCodeId)
mobilePhoneNumberCountryCode = try container.decodeIfPresent(String.self, forKey: .mobilePhoneNumberCountryCode)
organizationUnit = try container.decodeIfPresent(String.self, forKey: .organizationUnit)
position = try container.decodeIfPresent(String.self, forKey: .position)
status = try container.decodeIfPresent(ApplicationUserStatus.self, forKey: .status)
supplierId = try container.decodeIfPresent(Int.self, forKey: .supplierId)
supplierOwnerId = try container.decodeIfPresent(Int.self, forKey: .supplierOwnerId)
meta = try container.decodeIfPresent([String:String].self, forKey: .meta) ?? [:]
roles = try container.decodeIfPresent([String].self, forKey: .roles) ?? []
isSupplierAdmin = try container.decodeIfPresent(Bool.self, forKey: .isSupplierAdmin)
}
public override func encode(to encoder: Encoder) throws {
try super.encode(to: encoder)
var container = encoder.container(keyedBy: CodingKeys.self)
if id != nil { try container.encode(id, forKey: .id) }
if email != nil { try container.encode(email, forKey: .email) }
if userName != nil { try container.encode(userName, forKey: .userName) }
if phoneNumber != nil { try container.encode(phoneNumber, forKey: .phoneNumber) }
if displayName != nil { try container.encode(displayName, forKey: .displayName) }
if phoneNumberExtension != nil { try container.encode(phoneNumberExtension, forKey: .phoneNumberExtension) }
if phoneNumberCountryCodeId != nil { try container.encode(phoneNumberCountryCodeId, forKey: .phoneNumberCountryCodeId) }
if phoneNumberCountryCode != nil { try container.encode(phoneNumberCountryCode, forKey: .phoneNumberCountryCode) }
if mobilePhoneNumber != nil { try container.encode(mobilePhoneNumber, forKey: .mobilePhoneNumber) }
if mobilePhoneNumberCountryCodeId != nil { try container.encode(mobilePhoneNumberCountryCodeId, forKey: .mobilePhoneNumberCountryCodeId) }
if mobilePhoneNumberCountryCode != nil { try container.encode(mobilePhoneNumberCountryCode, forKey: .mobilePhoneNumberCountryCode) }
if organizationUnit != nil { try container.encode(organizationUnit, forKey: .organizationUnit) }
if position != nil { try container.encode(position, forKey: .position) }
if status != nil { try container.encode(status, forKey: .status) }
if supplierId != nil { try container.encode(supplierId, forKey: .supplierId) }
if supplierOwnerId != nil { try container.encode(supplierOwnerId, forKey: .supplierOwnerId) }
if meta.count > 0 { try container.encode(meta, forKey: .meta) }
if roles.count > 0 { try container.encode(roles, forKey: .roles) }
if isSupplierAdmin != nil { try container.encode(isSupplierAdmin, forKey: .isSupplierAdmin) }
}
}
public class ModifyRequestBase : IConcurrencyStamp, Codable
{
public var concurrencyStamp:String
required public init(){}
}
public enum ApplicationUserStatus : Int, Codable
{
case Registered = 0
case ConfirmedByUser = 1
case SupplierUserRegistered = 2
case AwaitingSupplierConfirmation = 3
case AwaitingVeoliaConfirmation = 4
case Active = 5
case Rejected = 6
case Deleted = 7
}
To override the Content-type in your clients, use the HTTP Accept Header, append the .other suffix or ?format=other
The following are sample HTTP requests and responses. The placeholders shown need to be replaced with actual values.
GET /user/{userid} HTTP/1.1 Host: szallitoiportal-be.veolia.hu Accept: text/jsonl
HTTP/1.1 200 OK Content-Type: text/jsonl Content-Length: length {"User":{"Id":0,"Email":"String","UserName":"String","PhoneNumber":"String","DisplayName":"String","PhoneNumberExtension":"String","PhoneNumberCountryCodeId":0,"PhoneNumberCountryCode":"String","MobilePhoneNumber":"String","MobilePhoneNumberCountryCodeId":0,"MobilePhoneNumberCountryCode":"String","OrganizationUnit":"String","Position":"String","Status":0,"SupplierId":0,"SupplierOwnerId":0,"Meta":{"String":"String"},"Roles":["String"],"IsSupplierAdmin":true,"ConcurrencyStamp":"String"},"ResponseStatus":{"ErrorCode":"String","Message":"String","StackTrace":"String","Errors":[{"ErrorCode":"String","FieldName":"String","Message":"String","Meta":{"String":"String"}}],"Meta":{"String":"String"}}}