Trendsic Platform Service

<back to all web services

AvailabilityUpsertRequest

Requires Authentication
Requires any of the roles:Agent, Administrator
The following routes are available for this service:
POST,OPTIONS/v1/Rfp/Availability
<?php namespace dtos;

use DateTime;
use Exception;
use DateInterval;
use JsonSerializable;
use ServiceStack\{IReturn,IReturnVoid,IGet,IPost,IPut,IDelete,IPatch,IMeta,IHasSessionId,IHasBearerToken,IHasVersion};
use ServiceStack\{ICrud,ICreateDb,IUpdateDb,IPatchDb,IDeleteDb,ISaveDb,AuditBase,QueryDb,QueryDb2,QueryData,QueryData2,QueryResponse};
use ServiceStack\{ResponseStatus,ResponseError,EmptyResponse,IdResponse,ArrayList,KeyValuePair2,StringResponse,StringsResponse,Tuple2,Tuple3,ByteArray};
use ServiceStack\{JsonConverters,Returns,TypeContext};


class AvailabilityRowView implements JsonSerializable
{
    public function __construct(
        /** @var int */
        public int $ResourceAvailabilityID=0,
        /** @var string|null */
        public ?string $ResourceType=null,
        /** @var string|null */
        public ?string $Label=null,
        /** @var string|null */
        public ?string $EquipmentName=null,
        /** @var string|null */
        public ?string $RolesCsv=null,
        /** @var float|null */
        public ?float $InternalRate=null,
        /** @var float|null */
        public ?float $RentalRate=null,
        /** @var float|null */
        public ?float $PremiumPerHour=null,
        /** @var DateTime */
        public DateTime $AvailableFrom=new DateTime(),
        /** @var string|null */
        public ?string $FreedFromProjectLabel=null,
        /** @var string|null */
        public ?string $Source=null
    ) {
    }

    /** @throws Exception */
    public function fromMap($o): void {
        if (isset($o['ResourceAvailabilityID'])) $this->ResourceAvailabilityID = $o['ResourceAvailabilityID'];
        if (isset($o['ResourceType'])) $this->ResourceType = $o['ResourceType'];
        if (isset($o['Label'])) $this->Label = $o['Label'];
        if (isset($o['EquipmentName'])) $this->EquipmentName = $o['EquipmentName'];
        if (isset($o['RolesCsv'])) $this->RolesCsv = $o['RolesCsv'];
        if (isset($o['InternalRate'])) $this->InternalRate = $o['InternalRate'];
        if (isset($o['RentalRate'])) $this->RentalRate = $o['RentalRate'];
        if (isset($o['PremiumPerHour'])) $this->PremiumPerHour = $o['PremiumPerHour'];
        if (isset($o['AvailableFrom'])) $this->AvailableFrom = JsonConverters::from('DateTime', $o['AvailableFrom']);
        if (isset($o['FreedFromProjectLabel'])) $this->FreedFromProjectLabel = $o['FreedFromProjectLabel'];
        if (isset($o['Source'])) $this->Source = $o['Source'];
    }
    
    /** @throws Exception */
    public function jsonSerialize(): mixed
    {
        $o = [];
        if (isset($this->ResourceAvailabilityID)) $o['ResourceAvailabilityID'] = $this->ResourceAvailabilityID;
        if (isset($this->ResourceType)) $o['ResourceType'] = $this->ResourceType;
        if (isset($this->Label)) $o['Label'] = $this->Label;
        if (isset($this->EquipmentName)) $o['EquipmentName'] = $this->EquipmentName;
        if (isset($this->RolesCsv)) $o['RolesCsv'] = $this->RolesCsv;
        if (isset($this->InternalRate)) $o['InternalRate'] = $this->InternalRate;
        if (isset($this->RentalRate)) $o['RentalRate'] = $this->RentalRate;
        if (isset($this->PremiumPerHour)) $o['PremiumPerHour'] = $this->PremiumPerHour;
        if (isset($this->AvailableFrom)) $o['AvailableFrom'] = JsonConverters::to('DateTime', $this->AvailableFrom);
        if (isset($this->FreedFromProjectLabel)) $o['FreedFromProjectLabel'] = $this->FreedFromProjectLabel;
        if (isset($this->Source)) $o['Source'] = $this->Source;
        return empty($o) ? new class(){} : $o;
    }
}

class AvailabilityRefreshSummary implements JsonSerializable
{
    public function __construct(
        /** @var int */
        public int $Derived=0,
        /** @var int */
        public int $DeactivatedStale=0,
        /** @var int */
        public int $SkippedManualPrecedence=0,
        /** @var int */
        public int $SkippedNoRentalSource=0,
        /** @var int */
        public int $SkippedNoDayRate=0,
        /** @var array<string>|null */
        public ?array $Notes=null
    ) {
    }

    /** @throws Exception */
    public function fromMap($o): void {
        if (isset($o['Derived'])) $this->Derived = $o['Derived'];
        if (isset($o['DeactivatedStale'])) $this->DeactivatedStale = $o['DeactivatedStale'];
        if (isset($o['SkippedManualPrecedence'])) $this->SkippedManualPrecedence = $o['SkippedManualPrecedence'];
        if (isset($o['SkippedNoRentalSource'])) $this->SkippedNoRentalSource = $o['SkippedNoRentalSource'];
        if (isset($o['SkippedNoDayRate'])) $this->SkippedNoDayRate = $o['SkippedNoDayRate'];
        if (isset($o['Notes'])) $this->Notes = JsonConverters::fromArray('string', $o['Notes']);
    }
    
    /** @throws Exception */
    public function jsonSerialize(): mixed
    {
        $o = [];
        if (isset($this->Derived)) $o['Derived'] = $this->Derived;
        if (isset($this->DeactivatedStale)) $o['DeactivatedStale'] = $this->DeactivatedStale;
        if (isset($this->SkippedManualPrecedence)) $o['SkippedManualPrecedence'] = $this->SkippedManualPrecedence;
        if (isset($this->SkippedNoRentalSource)) $o['SkippedNoRentalSource'] = $this->SkippedNoRentalSource;
        if (isset($this->SkippedNoDayRate)) $o['SkippedNoDayRate'] = $this->SkippedNoDayRate;
        if (isset($this->Notes)) $o['Notes'] = JsonConverters::toArray('string', $this->Notes);
        return empty($o) ? new class(){} : $o;
    }
}

class AvailabilityListResponse implements JsonSerializable
{
    public function __construct(
        /** @var ResponseStatus|null */
        public ?ResponseStatus $ResponseStatus=null,
        /** @var array<AvailabilityRowView>|null */
        public ?array $Rows=null,
        /** @var array<string>|null */
        public ?array $EquipmentNames=null,
        /** @var array<string>|null */
        public ?array $CrewRoles=null,
        /** @var AvailabilityRefreshSummary|null */
        public ?AvailabilityRefreshSummary $Summary=null
    ) {
    }

    /** @throws Exception */
    public function fromMap($o): void {
        if (isset($o['ResponseStatus'])) $this->ResponseStatus = JsonConverters::from('ResponseStatus', $o['ResponseStatus']);
        if (isset($o['Rows'])) $this->Rows = JsonConverters::fromArray('AvailabilityRowView', $o['Rows']);
        if (isset($o['EquipmentNames'])) $this->EquipmentNames = JsonConverters::fromArray('string', $o['EquipmentNames']);
        if (isset($o['CrewRoles'])) $this->CrewRoles = JsonConverters::fromArray('string', $o['CrewRoles']);
        if (isset($o['Summary'])) $this->Summary = JsonConverters::from('AvailabilityRefreshSummary', $o['Summary']);
    }
    
    /** @throws Exception */
    public function jsonSerialize(): mixed
    {
        $o = [];
        if (isset($this->ResponseStatus)) $o['ResponseStatus'] = JsonConverters::to('ResponseStatus', $this->ResponseStatus);
        if (isset($this->Rows)) $o['Rows'] = JsonConverters::toArray('AvailabilityRowView', $this->Rows);
        if (isset($this->EquipmentNames)) $o['EquipmentNames'] = JsonConverters::toArray('string', $this->EquipmentNames);
        if (isset($this->CrewRoles)) $o['CrewRoles'] = JsonConverters::toArray('string', $this->CrewRoles);
        if (isset($this->Summary)) $o['Summary'] = JsonConverters::to('AvailabilityRefreshSummary', $this->Summary);
        return empty($o) ? new class(){} : $o;
    }
}

class AvailabilityUpsertRequest implements JsonSerializable
{
    public function __construct(
        /** @var string|null */
        public ?string $ResourceType=null,
        /** @var string|null */
        public ?string $Label=null,
        /** @var string|null */
        public ?string $EquipmentName=null,
        /** @var string|null */
        public ?string $RolesCsv=null,
        /** @var float|null */
        public ?float $InternalRate=null,
        /** @var float|null */
        public ?float $RentalRate=null,
        /** @var float|null */
        public ?float $PremiumPerHour=null,
        /** @var DateTime|null */
        public ?DateTime $AvailableFrom=null,
        /** @var string|null */
        public ?string $FreedFromProjectLabel=null
    ) {
    }

    /** @throws Exception */
    public function fromMap($o): void {
        if (isset($o['ResourceType'])) $this->ResourceType = $o['ResourceType'];
        if (isset($o['Label'])) $this->Label = $o['Label'];
        if (isset($o['EquipmentName'])) $this->EquipmentName = $o['EquipmentName'];
        if (isset($o['RolesCsv'])) $this->RolesCsv = $o['RolesCsv'];
        if (isset($o['InternalRate'])) $this->InternalRate = $o['InternalRate'];
        if (isset($o['RentalRate'])) $this->RentalRate = $o['RentalRate'];
        if (isset($o['PremiumPerHour'])) $this->PremiumPerHour = $o['PremiumPerHour'];
        if (isset($o['AvailableFrom'])) $this->AvailableFrom = JsonConverters::from('DateTime', $o['AvailableFrom']);
        if (isset($o['FreedFromProjectLabel'])) $this->FreedFromProjectLabel = $o['FreedFromProjectLabel'];
    }
    
    /** @throws Exception */
    public function jsonSerialize(): mixed
    {
        $o = [];
        if (isset($this->ResourceType)) $o['ResourceType'] = $this->ResourceType;
        if (isset($this->Label)) $o['Label'] = $this->Label;
        if (isset($this->EquipmentName)) $o['EquipmentName'] = $this->EquipmentName;
        if (isset($this->RolesCsv)) $o['RolesCsv'] = $this->RolesCsv;
        if (isset($this->InternalRate)) $o['InternalRate'] = $this->InternalRate;
        if (isset($this->RentalRate)) $o['RentalRate'] = $this->RentalRate;
        if (isset($this->PremiumPerHour)) $o['PremiumPerHour'] = $this->PremiumPerHour;
        if (isset($this->AvailableFrom)) $o['AvailableFrom'] = JsonConverters::to('DateTime', $this->AvailableFrom);
        if (isset($this->FreedFromProjectLabel)) $o['FreedFromProjectLabel'] = $this->FreedFromProjectLabel;
        return empty($o) ? new class(){} : $o;
    }
}

PHP AvailabilityUpsertRequest 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.

POST /v1/Rfp/Availability HTTP/1.1 
Host: api.dev.dynamics.trendsic.com 
Accept: application/xml
Content-Type: application/xml
Content-Length: length

<AvailabilityUpsertRequest xmlns:i="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://schemas.datacontract.org/2004/07/CRM.AgencyPlatform.API.Internal">
  <AvailableFrom>0001-01-01T00:00:00</AvailableFrom>
  <EquipmentName>String</EquipmentName>
  <FreedFromProjectLabel>String</FreedFromProjectLabel>
  <InternalRate>0</InternalRate>
  <Label>String</Label>
  <PremiumPerHour>0</PremiumPerHour>
  <RentalRate>0</RentalRate>
  <ResourceType>String</ResourceType>
  <RolesCsv>String</RolesCsv>
</AvailabilityUpsertRequest>
HTTP/1.1 200 OK
Content-Type: application/xml
Content-Length: length

<AvailabilityListResponse xmlns:i="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://schemas.datacontract.org/2004/07/CRM.AgencyPlatform.API.Internal">
  <CrewRoles xmlns:d2p1="http://schemas.microsoft.com/2003/10/Serialization/Arrays">
    <d2p1:string>String</d2p1:string>
  </CrewRoles>
  <EquipmentNames xmlns:d2p1="http://schemas.microsoft.com/2003/10/Serialization/Arrays">
    <d2p1:string>String</d2p1:string>
  </EquipmentNames>
  <ResponseStatus xmlns:d2p1="http://schemas.servicestack.net/types">
    <d2p1:ErrorCode>String</d2p1:ErrorCode>
    <d2p1:Message>String</d2p1:Message>
    <d2p1:StackTrace>String</d2p1:StackTrace>
    <d2p1:Errors>
      <d2p1:ResponseError>
        <d2p1:ErrorCode>String</d2p1:ErrorCode>
        <d2p1:FieldName>String</d2p1:FieldName>
        <d2p1:Message>String</d2p1:Message>
        <d2p1:Meta xmlns:d5p1="http://schemas.microsoft.com/2003/10/Serialization/Arrays">
          <d5p1:KeyValueOfstringstring>
            <d5p1:Key>String</d5p1:Key>
            <d5p1:Value>String</d5p1:Value>
          </d5p1:KeyValueOfstringstring>
        </d2p1:Meta>
      </d2p1:ResponseError>
    </d2p1:Errors>
    <d2p1:Meta xmlns:d3p1="http://schemas.microsoft.com/2003/10/Serialization/Arrays">
      <d3p1:KeyValueOfstringstring>
        <d3p1:Key>String</d3p1:Key>
        <d3p1:Value>String</d3p1:Value>
      </d3p1:KeyValueOfstringstring>
    </d2p1:Meta>
  </ResponseStatus>
  <Rows>
    <AvailabilityRowView>
      <AvailableFrom>0001-01-01T00:00:00</AvailableFrom>
      <EquipmentName>String</EquipmentName>
      <FreedFromProjectLabel>String</FreedFromProjectLabel>
      <InternalRate>0</InternalRate>
      <Label>String</Label>
      <PremiumPerHour>0</PremiumPerHour>
      <RentalRate>0</RentalRate>
      <ResourceAvailabilityID>0</ResourceAvailabilityID>
      <ResourceType>String</ResourceType>
      <RolesCsv>String</RolesCsv>
      <Source>String</Source>
    </AvailabilityRowView>
  </Rows>
  <Summary>
    <DeactivatedStale>0</DeactivatedStale>
    <Derived>0</Derived>
    <Notes xmlns:d3p1="http://schemas.microsoft.com/2003/10/Serialization/Arrays">
      <d3p1:string>String</d3p1:string>
    </Notes>
    <SkippedManualPrecedence>0</SkippedManualPrecedence>
    <SkippedNoDayRate>0</SkippedNoDayRate>
    <SkippedNoRentalSource>0</SkippedNoRentalSource>
  </Summary>
</AvailabilityListResponse>