Portal

<back to all web services

BrowseUser

Requires Authentication
Requires any of the roles:VeoliaAdmin, SupplierAdmin, UserRegistration, User
The following routes are available for this service:
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
}


Swift BrowseUser DTOs

To override the Content-type in your clients, use the HTTP Accept Header, append the .other suffix or ?format=other

HTTP + 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"}}}