BokaMera.API.Host

<back to all web services

ApiVersionCompabilityQuery

The following routes are available for this service:
GET/version/compabilityGet information about whether your current version is compatible with the API versionReturns information on whether the client application's version is compatible with the current API version, indicating any breaking changes.
<?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 ApiVersionCompabilityQueryResponse implements JsonSerializable
{
    public function __construct(
        /** @description The latest version number */
        /** @var string|null */
        public ?string $CurrentVersion=null,
        /** @description Your version number */
        /** @var string|null */
        public ?string $YourVersion=null,
        /** @description Any compatible error message */
        /** @var string|null */
        public ?string $Message=null,
        /** @description If your version is compatible with the current version */
        /** @var bool|null */
        public ?bool $Compatible=null,
        /** @description If the changes are blocking for use and you need to upgrade to later version */
        /** @var bool|null */
        public ?bool $BlockingChanges=null,
        /** @var ResponseStatus|null */
        public ?ResponseStatus $ResponseStatus=null
    ) {
    }

    /** @throws Exception */
    public function fromMap($o): void {
        if (isset($o['CurrentVersion'])) $this->CurrentVersion = $o['CurrentVersion'];
        if (isset($o['YourVersion'])) $this->YourVersion = $o['YourVersion'];
        if (isset($o['Message'])) $this->Message = $o['Message'];
        if (isset($o['Compatible'])) $this->Compatible = $o['Compatible'];
        if (isset($o['BlockingChanges'])) $this->BlockingChanges = $o['BlockingChanges'];
        if (isset($o['ResponseStatus'])) $this->ResponseStatus = JsonConverters::from('ResponseStatus', $o['ResponseStatus']);
    }
    
    /** @throws Exception */
    public function jsonSerialize(): mixed
    {
        $o = [];
        if (isset($this->CurrentVersion)) $o['CurrentVersion'] = $this->CurrentVersion;
        if (isset($this->YourVersion)) $o['YourVersion'] = $this->YourVersion;
        if (isset($this->Message)) $o['Message'] = $this->Message;
        if (isset($this->Compatible)) $o['Compatible'] = $this->Compatible;
        if (isset($this->BlockingChanges)) $o['BlockingChanges'] = $this->BlockingChanges;
        if (isset($this->ResponseStatus)) $o['ResponseStatus'] = JsonConverters::to('ResponseStatus', $this->ResponseStatus);
        return empty($o) ? new class(){} : $o;
    }
}

enum VersionIdentifier : int
{
    case BokaMeraiOS = 1;
    case BokaMeraAdminiOS = 2;
    case BokaMeraAndroid = 3;
    case BokaMeraAdminAndroid = 4;
}

class ApiVersionCompabilityQuery implements JsonSerializable
{
    public function __construct(
        /** @description The identifier for your application. */
        // @ApiMember(Description="The identifier for your application.", IsRequired=true, ParameterType="query")
        /** @var VersionIdentifier|null */
        public ?VersionIdentifier $Identifier=null,

        /** @description The version you are running and you want to check */
        // @ApiMember(Description="The version you are running and you want to check", IsRequired=true, ParameterType="query")
        /** @var string */
        public string $Version=''
    ) {
    }

    /** @throws Exception */
    public function fromMap($o): void {
        if (isset($o['Identifier'])) $this->Identifier = JsonConverters::from('VersionIdentifier', $o['Identifier']);
        if (isset($o['Version'])) $this->Version = $o['Version'];
    }
    
    /** @throws Exception */
    public function jsonSerialize(): mixed
    {
        $o = [];
        if (isset($this->Identifier)) $o['Identifier'] = JsonConverters::to('VersionIdentifier', $this->Identifier);
        if (isset($this->Version)) $o['Version'] = $this->Version;
        return empty($o) ? new class(){} : $o;
    }
}

PHP ApiVersionCompabilityQuery DTOs

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

HTTP + JSV

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

GET /version/compability HTTP/1.1 
Host: api.bokamera.se 
Accept: text/jsv
HTTP/1.1 200 OK
Content-Type: text/jsv
Content-Length: length

{
	CurrentVersion: String,
	YourVersion: String,
	Message: String,
	Compatible: False,
	BlockingChanges: False,
	ResponseStatus: 
	{
		ErrorCode: String,
		Message: String,
		StackTrace: String,
		Errors: 
		[
			{
				ErrorCode: String,
				FieldName: String,
				Message: String,
				Meta: 
				{
					String: String
				}
			}
		],
		Meta: 
		{
			String: String
		}
	}
}