tvpl.api

<back to all web services

SearchTemplateRequest

Requires Authentication
The following routes are available for this service:
GET/document-template/search
import Foundation
import ServiceStack

public class SearchTemplateRequest : PagingRequest
{
    public var title:String

    required public init(){ super.init() }

    private enum CodingKeys : String, CodingKey {
        case title
    }

    required public init(from decoder: Decoder) throws {
        try super.init(from: decoder)
        let container = try decoder.container(keyedBy: CodingKeys.self)
        title = try container.decodeIfPresent(String.self, forKey: .title)
    }

    public override func encode(to encoder: Encoder) throws {
        try super.encode(to: encoder)
        var container = encoder.container(keyedBy: CodingKeys.self)
        if title != nil { try container.encode(title, forKey: .title) }
    }
}

public class PagingRequest : Codable
{
    public var page:Int
    public var limit:Int

    required public init(){}
}

public class SearchDocumentTemplateResponse : IResponseRequest, Codable
{
    public var code:Int
    public var message:String
    public var data:[DocumentTemplate] = []
    public var totalCount:Int

    required public init(){}
}

public class DocumentTemplate : Codable
{
    public var id:Int
    // @Required()
    public var title:String?

    public var Description:String
    public var isActive:Bool
    // @Ignore()
    public var documentIds:[Int] = []

    // @Ignore()
    public var documents:[Document] = []

    required public init(){}
}

public class Document : BasicDocument
{
    public var id:Int
    // @StringLength(500)
    public var reasonReturn:String

    public var accountId:Int?
    public var deletedAt:Date?
    // @StringLength(500)
    public var deletedBy:String

    // @StringLength(500)
    public var updatedBy:String

    public var createdAt:Date?
    // @StringLength(500)
    public var createdBy:String

    public var isParty:Bool?
    public var isRevisionRequested:Bool
    public var lastUpdatedAt:Date?
    public var isPrivate:Bool?
    public var departmentId:Int?
    public var publicationDate:Date?
    public var processStatusId:Int?
    public var fullTextSearchContent:String

    required public init(){ super.init() }

    private enum CodingKeys : String, CodingKey {
        case id
        case reasonReturn
        case accountId
        case deletedAt
        case deletedBy
        case updatedBy
        case createdAt
        case createdBy
        case isParty
        case isRevisionRequested
        case lastUpdatedAt
        case isPrivate
        case departmentId
        case publicationDate
        case processStatusId
        case fullTextSearchContent
    }

    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)
        reasonReturn = try container.decodeIfPresent(String.self, forKey: .reasonReturn)
        accountId = try container.decodeIfPresent(Int.self, forKey: .accountId)
        deletedAt = try container.decodeIfPresent(Date.self, forKey: .deletedAt)
        deletedBy = try container.decodeIfPresent(String.self, forKey: .deletedBy)
        updatedBy = try container.decodeIfPresent(String.self, forKey: .updatedBy)
        createdAt = try container.decodeIfPresent(Date.self, forKey: .createdAt)
        createdBy = try container.decodeIfPresent(String.self, forKey: .createdBy)
        isParty = try container.decodeIfPresent(Bool.self, forKey: .isParty)
        isRevisionRequested = try container.decodeIfPresent(Bool.self, forKey: .isRevisionRequested)
        lastUpdatedAt = try container.decodeIfPresent(Date.self, forKey: .lastUpdatedAt)
        isPrivate = try container.decodeIfPresent(Bool.self, forKey: .isPrivate)
        departmentId = try container.decodeIfPresent(Int.self, forKey: .departmentId)
        publicationDate = try container.decodeIfPresent(Date.self, forKey: .publicationDate)
        processStatusId = try container.decodeIfPresent(Int.self, forKey: .processStatusId)
        fullTextSearchContent = try container.decodeIfPresent(String.self, forKey: .fullTextSearchContent)
    }

    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 reasonReturn != nil { try container.encode(reasonReturn, forKey: .reasonReturn) }
        if accountId != nil { try container.encode(accountId, forKey: .accountId) }
        if deletedAt != nil { try container.encode(deletedAt, forKey: .deletedAt) }
        if deletedBy != nil { try container.encode(deletedBy, forKey: .deletedBy) }
        if updatedBy != nil { try container.encode(updatedBy, forKey: .updatedBy) }
        if createdAt != nil { try container.encode(createdAt, forKey: .createdAt) }
        if createdBy != nil { try container.encode(createdBy, forKey: .createdBy) }
        if isParty != nil { try container.encode(isParty, forKey: .isParty) }
        if isRevisionRequested != nil { try container.encode(isRevisionRequested, forKey: .isRevisionRequested) }
        if lastUpdatedAt != nil { try container.encode(lastUpdatedAt, forKey: .lastUpdatedAt) }
        if isPrivate != nil { try container.encode(isPrivate, forKey: .isPrivate) }
        if departmentId != nil { try container.encode(departmentId, forKey: .departmentId) }
        if publicationDate != nil { try container.encode(publicationDate, forKey: .publicationDate) }
        if processStatusId != nil { try container.encode(processStatusId, forKey: .processStatusId) }
        if fullTextSearchContent != nil { try container.encode(fullTextSearchContent, forKey: .fullTextSearchContent) }
    }
}

public class BasicDocument : Codable
{
    // @Required()
    public var title:String?

    // @StringLength(4000)
    public var Description:String

    // @StringLength(500)
    public var owner:String

    public var documentPolicyId:Int?
    public var updateDocumentId:Int?
    public var effectBeginDate:Date?
    public var effectEndDate:Date?
    public var issuingAgencyId:Int?
    public var documentTypeId:Int?
    public var documentGroupId:Int?
    public var subjectId:Int?
    // @StringLength(500)
    public var signBy:String

    public var signDate:Date?
    public var statusId:Int?
    public var isInternal:Bool
    public var documentNumber:String
    public var documentCode:String
    public var isUrgent:Bool?
    public var scopeType:Int?
    public var isActive:Bool?

    required public init(){}
}


Swift SearchTemplateRequest DTOs

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

HTTP + XML

The following are sample HTTP requests and responses. The placeholders shown need to be replaced with actual values.

GET /document-template/search HTTP/1.1 
Host: etc-api.vsmlab.vn 
Accept: application/xml
HTTP/1.1 200 OK
Content-Type: application/xml
Content-Length: length

<SearchDocumentTemplateResponse xmlns:i="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://schemas.datacontract.org/2004/07/tvpl.api.ServiceModel">
  <Code>0</Code>
  <Data xmlns:d2p1="http://schemas.datacontract.org/2004/07/tvpl.data.Models">
    <d2p1:DocumentTemplate>
      <d2p1:CreatedAt>0001-01-01T00:00:00</d2p1:CreatedAt>
      <d2p1:CreatedBy>0</d2p1:CreatedBy>
      <d2p1:Description>String</d2p1:Description>
      <d2p1:DocumentIds xmlns:d4p1="http://schemas.microsoft.com/2003/10/Serialization/Arrays">
        <d4p1:int>0</d4p1:int>
      </d2p1:DocumentIds>
      <d2p1:Documents>
        <d2p1:Document>
          <d2p1:Description>String</d2p1:Description>
          <d2p1:DocumentCode>String</d2p1:DocumentCode>
          <d2p1:DocumentGroupId>0</d2p1:DocumentGroupId>
          <d2p1:DocumentNumber>String</d2p1:DocumentNumber>
          <d2p1:DocumentPolicyId>0</d2p1:DocumentPolicyId>
          <d2p1:DocumentTypeId>0</d2p1:DocumentTypeId>
          <d2p1:EffectBeginDate>0001-01-01T00:00:00</d2p1:EffectBeginDate>
          <d2p1:EffectEndDate>0001-01-01T00:00:00</d2p1:EffectEndDate>
          <d2p1:IsActive>false</d2p1:IsActive>
          <d2p1:IsInternal>false</d2p1:IsInternal>
          <d2p1:IsUrgent>false</d2p1:IsUrgent>
          <d2p1:IssuingAgencyId>0</d2p1:IssuingAgencyId>
          <d2p1:Owner>String</d2p1:Owner>
          <d2p1:ScopeType>0</d2p1:ScopeType>
          <d2p1:SignBy>String</d2p1:SignBy>
          <d2p1:SignDate>0001-01-01T00:00:00</d2p1:SignDate>
          <d2p1:StatusId>0</d2p1:StatusId>
          <d2p1:SubjectId>0</d2p1:SubjectId>
          <d2p1:Title>String</d2p1:Title>
          <d2p1:UpdateDocumentId>0</d2p1:UpdateDocumentId>
          <d2p1:AccountId>0</d2p1:AccountId>
          <d2p1:CreatedAt>0001-01-01T00:00:00</d2p1:CreatedAt>
          <d2p1:CreatedBy>String</d2p1:CreatedBy>
          <d2p1:DeletedAt>0001-01-01T00:00:00</d2p1:DeletedAt>
          <d2p1:DeletedBy>String</d2p1:DeletedBy>
          <d2p1:DepartmentId>0</d2p1:DepartmentId>
          <d2p1:FullTextSearchContent>String</d2p1:FullTextSearchContent>
          <d2p1:Id>0</d2p1:Id>
          <d2p1:IsParty>false</d2p1:IsParty>
          <d2p1:IsPrivate>false</d2p1:IsPrivate>
          <d2p1:IsRevisionRequested>false</d2p1:IsRevisionRequested>
          <d2p1:LastUpdatedAt>0001-01-01T00:00:00</d2p1:LastUpdatedAt>
          <d2p1:ProcessStatusId>0</d2p1:ProcessStatusId>
          <d2p1:PublicationDate>0001-01-01T00:00:00</d2p1:PublicationDate>
          <d2p1:ReasonReturn>String</d2p1:ReasonReturn>
          <d2p1:UpdatedBy>String</d2p1:UpdatedBy>
        </d2p1:Document>
      </d2p1:Documents>
      <d2p1:Id>0</d2p1:Id>
      <d2p1:IsActive>false</d2p1:IsActive>
      <d2p1:Title>String</d2p1:Title>
    </d2p1:DocumentTemplate>
  </Data>
  <Message>String</Message>
  <TotalCount>0</TotalCount>
</SearchDocumentTemplateResponse>