Pull Printing Release Workflow for Trusted Device App

This article describes the authentication and print job management of an app running on a printer-releated device (or even the printer itself) that authenticates itself using some fixed secret and identifies the user by verifying some credentials (user input or smartcard serial number). How to obtain the requested print data for forwarding to the print device is not subject of this API/article). An external ezeep Blue Hub may be used or a ezeep Blue Print Connector PS is required.

Device Authentication

The calls to this API are authentication via HTTP Basic Authorization scheme.

The assignment of an ezeep Blue Release Station card reader to a certain ezeep Blue printer object and its Authentication is made by the ‘Pull Printing Password’ sent as password part in the basic Authorization header of every web request. The (secret) value needs to be configured by the ezeep Blue organization administrator, who can obtain this value from the ezeep Blue Portal.

User Authentication

The user is identified by some ID. That ID can be obtained for example from a Smartcard (serial number) or via keyboard input interactively from the user. The ID is send as user name in the Authorization header. A system-unknown (i.e. new) user ID causes the printout of a registration code for user self-registration.

Protocol Specification ezeep Blue Pull Printing Release Action

base URL

https://pp2.ezeep.com/

Personal Printing Header Elements

Every request header has to contain the tag X-Lang-ID which specifies the language code for the error messages delivered by the server. The language code is specified as ISO 639: 2-letter code. The sample language code which is used within this document is “en” for English. Furthermore the client has to describe itself by sending the XFMP-User-Agent with a customized description. Every response of the server may contain at least the X-FMP-Return HTTP header. This header value specifies the result of the request. A value of zero indicates success. A value unequal zero indicates an error. For further information about errors see chapter Error codes.

UNICODE Support

All string values (among them for instance print job names and display names) are UTF-8 encoded, if not otherwise mentioned. If you use such values in URLs, don’t forget to canonalize the UTF-8 strings.

Commands

Get Version

This request returns the filenames and version numbers of all PPS components. This is useful for support purposes. The request does not require authentication. Future server versions may append more data sections.

GET https://pp2.ezeep.com/TPFM/?Cmd=GetVersion HTTP/1.1
X-Lang-ID: en
X-FMP-User-Agent: ezp-pp-manufatorer-model/1.0

If successful, returns Error code of 0, otherwise 1 or 2.

Example Request:

curl -X GET https://pp2.ezeep.com/TPFM/?Cmd=GetVersion \
        --header "X-Lang-ID: en" \
        --header "X-FMP-User-Agent: printer-model"  

Example Response:

HTTP/1.1 200 OK
Content-Type: text/plain; charset=utf-8
X-FMP-Return: 0
Server: ThinPrint Personal Printing Server
Date: Sat, 05 Jan 2008 12:27:05 GMT

[FileVersions]

Get Capabilities

This request returns the list of commands supported by the PPS for the specified user. Authentication is optional. If no authentication was made, the capabilities of the guest user are returned.
Future server versions may append more data sections.

Optional parameter Printer can be used to request a printout of a registration code for user self-registration when the user ID is unknown. This requires valid device authentication.

GET https://pp2.ezeep.com/TPFM/?Cmd=GetCapabilities HTTP/1.1
Authorization: Basic dGhpbnByaW50OmZtcA==
X-Lang-ID: en
X-FMP-User-Agent: ezp-pp-manufatorer-model/1.0

Supported parameters (passed as query parameters in URL):

Parameter Type Required Description
Printer string No id of the printer to use (alphanumeric, the ezeep Blue Pull Printing endpoint uses UUIDs)

If successful, returns Error code of 0, otherwise 2.

Example Request:

curl -X GET https://pp2.ezeep.com/TPFM/?Cmd=GetCapabilities \
        --header "X-Lang-ID: en" \
        --header "X-FMP-User-Agent: printer-model" 

Example Response:

HTTP/1.1 200 OK
Content-Type: text/plain; charset=utf-8
X-FMP-Return: 0
Server: ThinPrint Personal Printing Server
Date: Sat, 05 Jan 2008 12:27:05 GMT

[Commands]
1=GetVersion
2=GetCapabilities
3=GetJobList
4=DeleteJob
5=PrintJob
6=CancelPrintJob
7=SetJobProperties
8=CreateLocalJob
9=UpdateLocalJob
[SYSTEM]
Type=essentials

Get Print Job List

This request returns the list of print jobs of the specified user. This request requires a user authentication. The result contains a list of print jobs of the specified user. The print job information is formatted as a list of job properties separated by ‘:’. The information contain (in this order) - the job filename (which cannot contain a colon), - the job file size, the creation date, the last modified date, - the file attributes, - the job id (alphanumeric, the ezeep Blue Pull Printing endpoint uses UUIDs), - the display name of the job and - the display name of the printer driver, used to create this job. All string values are UTF-8 encoded.

The date attributes are represented as number of seconds since January 1, 1970 GMT. The display name of the job may be empty. In this case the job filename should be used.

If a printer id is specified, the server filters the result list for compatible print jobs.

Only if X-FMP-Visible is set to 1, the client is allowed to show a print job selection/deletion dialog. If this header field is missing (or set to any other value), the client must not allow selecting or deleting unprinted print jobs by the user.

GET https://pp2.ezeep.com/TPFM/?Cmd=GetJobList&Printer=7 HTTP/1.1
Authorization: Basic dGhpbnByaW50OmZtcA==
X-Lang-ID: en
X-FMP-User-Agent: ezp-pp-manufatorer-model/1.0

Supported parameters (passed as query parameters in URL):

Parameter Type Required Description
Printer string No id of the printer to use (alphanumeric, the ezeep Blue Pull Printing endpoint uses UUIDs)
MaxEntries int No maximum number of jobs returned
ShowPutOnHoldJobs int No include jobs which are set to PutOnHold

If successful, returns Error code of 0, otherwise 1, 2, 3, 4.

Example Request:

curl -X GET https://pp2.ezeep.com/TPFM/?Cmd=GetJobList&Printer=7 \
        --header "X-Lang-ID: en" \
        --header "X-FMP-User-Agent: printer-model" 

Sample Reponse:

HTTP/1.1 200 OK
Date: Wed, 12 Oct 2022 07:54:07 GMT
Content-Type: text/plain; charset=utf-8
Content-Length: 570
Connection: keep-alive
Server: ThinPrint Personal Printing Server
Strict-Transport-Security: max-age=31536000
X-FMP-Return: 0
X-FMP-Visible: 0

[Jobs]
2022-10-12_07.47.31_1fd4e6b9-44d1-4964-8f1e-e656978d3e79_9dce68fe-0814-4b74-a6c0-b2ae73fe6190_19cf8e9a-aa6b-4086-aad4-bbd9cef15810:11993:1665560851:1665560851:0:0:"on
e_char.docx":" "
2022-10-12_07.48.19_7984b5ef-0169-4bf1-b7f6-07e30100886c_9dce68fe-0814-4b74-a6c0-b2ae73fe6190_19cf8e9a-aa6b-4086-aad4-bbd9cef15810:4632133:1665560899:1665560899:0:0:"
Polarlicht_2.png":" "
2022-10-12_07.48.37_416bdc49-337e-4e54-9dad-3189578b0491_9dce68fe-0814-4b74-a6c0-b2ae73fe6190_19cf8e9a-aa6b-4086-aad4-bbd9cef15810:100117:1665560917:1665560917:0:0:"b
ittetesten.pdf":" "

Delete Print Job

This request deletes the specified print job of the specified user. The request requires a user authentication.

GET https://pp2.ezeep.com/TPFM/?Cmd=DeleteJob&Job=12345.tpf HTTP/1.1
Authorization: Basic dGhpbnByaW50OmZtcA==
X-Lang-ID: en
X-FMP-User-Agent: ezp-pp-manufatorer-model/1.0

Supported parameters (passed as query parameters in URL):

Parameter Type Required Description
Job string Yes name of the job file to delete

If successful, returns Error code of 0, otherwise 1, 2, 3 or 5

Example Request:

curl -X GET https://pp2.ezeep.com/TPFM/?Cmd=DeleteJob&Job=12345.tpf \
        --header "X-Lang-ID: en" \
        --header "X-FMP-User-Agent: printer-model" 

Example Response:

HTTP/1.1 200 OK
Content-Type: text/plain; charset=utf-8
X-FMP-Return: 0
Server: ThinPrint Personal Printing Server
Date: Sat, 05 Jan 2008 12:27:05 GMT

This request prints the specified job of the specified user to the specified printer. The response is sent by the ezeep Blue backend after successfully starting printing or an error occurred during print start.
If printing was started successfully the response header contains the HTTP header value X-FMP-ProcId which identifies the printing process and can be used for further calls to CancelPrintJob. If progress information delivery is enabled, the response header will also contain the HTTP header X-FMP-ProgressType which identifies the type of progress information. Possible values are ‘Pages’ to identify a “number of pages printed” progress and ‘Percentage’ for a “percent of document printed” progress. This logic is realized by simulating a chunked download. The request requires a user authentication.

If an error occurs during printing, the progress delivery is cancelled by sending ‘0’ (to stop the chunked download) followed by the (non-HTTP conform) trailer ‘X-FMP-Return’, ‘X-FMP-ErrText’, ‘X-FMP-OSError’ and ‘X-FMP-OSErrText’ which describe the error.
If the printing process finished successfully, the progress download is stopped by sending ‘0’ (to stop the chunked download) followed by the (non-HTTP conform) footer ‘X-FMP-Return’ which will be set to zero.
If progress delivery was disabled, the footer with the appropriate print result is send after printing has finished.
Since some HTTPClient Framework (for instance .NET CF) may have problems to process trailer rows, these trailers are repeated inside the response data.

The content is defined as series of chunks as defined in RFC-2616:

 Chunked-Body = *chunk
                 last-chunk
                 trailer
                 CRLF

Every chunk is defined as:

 chunk = chunk-size [ chunk-extension ] CRLF
         chunk-data CRLF

The chunk-data for ezeep Blue Pull Print response is defined as:

 chunk-data = token / token CRLF

(Please recognize: the CRLF here is part of the data and must be counted as data)

GET https://pp2.ezeep.com/TPFM/?Cmd=PrintJob&Job=12345.tpf&Printer=7373&Copies=2&Delete=1&Progress=1 HTTP/1.1
Authorization: Basic dGhpbnByaW50OmZtcA==
X-Lang-ID: en
X-FMP-User-Agent: ezp-pp-manufatorer-model/1.0

Supported parameters (passed as query parameters in URL):

Attribute Type Required Description
Job string Yes Detailed description.
Printer string No id of the printer to use
(alphanumeric, the ezeep Blue Pull Printing
endpoint uses UUIDs)
Copies number No number of copies to print (1 is default)
Delete 0-1-num No flag whether to delete job after printing
(1=enabled / 0=disabled / 1 is default)
Progress 0-1-num No progress information are required
(1=enabled / 0=disabled / 1 is default)

If successful, returns Error code of 0.

Example Request:

curl -X GET https://pp2.ezeep.com/TPFM/?Cmd=PrintJob&Job=12345.tpf&Printer=7373&Copies=2&Delete=1&Progress=1 \
        --header "X-Lang-ID: en" \
        --header "X-FMP-User-Agent: printer-model" 

Example Response:

HTTP/1.1 200 OK
Content-Type: text/plain; charset=utf-8
Transfer-Encoding: chunked
X-FMP-Return: 0
X-FMP-ProgressType: Pages
X-FMP-ProcId: 738886
Server: ThinPrint Personal Printing Server
Date: Sat, 05 Jan 2008 12:27:05 GMT
6
 1/10
 6
 2/10
 6
 3/10
 6
 4/10
 ...
 7
 10/10
 11
 X-FMP-Return: 0 <-- result repeated inside response
0
X-FMP-Return: 0 <-- trailer / HTTP chunked response

Cancel Print Job

Cancels the running printing process identified by the specified print processing id returned by PrintJob. If the print was started with ‘Delete=1’ flag, the job is NOT deleted. The request requires a user authentication.

GET https://pp2.ezeep.com/TPFM/?Cmd=CancelPrintJob&ProcId=738886 HTTP/1.1
Authorization: Basic dGhpbnByaW50OmZtcA==
X-Lang-ID: en
X-FMP-User-Agent: ezp-pp-manufatorer-model/1.0

Supported parameters (passed as query parameters in URL):

Attribute Type Required Description
ProcId integer Yes id of the printing process (returned by PrintJob in X-FMP-ProcId)

If successful, returns Error code of 0, otherwise 1, 2, 3 or 9.

Example Request:

curl -X GET https://pp2.ezeep.com/TPFM/?Cmd=CancelPrintJob&ProcId=738886 \
        --header "X-Lang-ID: en" \
        --header "X-FMP-User-Agent: printer-model" 

Example Response:

HTTP/1.1 200 OK
Content-Type: text/plain; charset=utf-8
X-FMP-Return: 0
Server: ThinPrint Personal Printing Server
Date: Sat, 05 Jan 2008 12:27:05 GMT

Set Job Properties

This request updates the specified properties of the specified pint job for the specified user. The request requires an user authentication.

GET https://pp2.ezeep.com/TPFM/?Cmd=SetJobProperties&Job=12345.tpf&PutOnHold=1&ModifiedDate=134156500 HTTP/1.1
Authorization: Basic dGhpbnByaW50OmZtcA==
X-Lang-ID: en
X-FMP-User-Agent: ezp-pp-manufatorer-model/1.0

Supported parameters (passed as query parameters in URL):

Attribute Type Required Description
Job string Yes name of the job file to update
PutOnHold integer optional enable/disable the PutOnHold state of the job
ModifiedDate integer optional set new modified date of the job represented as number of seconds since January 1, 1970 GMT

If successful, returns Error code of 0, otherwise 1, 2, 3, 5

Example Request:

curl -X GET https://pp2.ezeep.com/TPFM/?Cmd=SetJobProperties&Job=12345.tpf&PutOnHold=1&ModifiedDate=134156500 /
        --header "X-Lang-ID: en" /
        --header "X-FMP-User-Agent: printer-model" 

Example Response:

HTTP/1.1 200 OK
Content-Type: text/plain; charset=utf-8
X-FMP-Return: 0
Server: ThinPrint Personal Printing Server
Date: Sat, 05 Jan 2008 12:27:05 GMT

Create Local Job

Begins to track a new job printed locally on the device, for example, to create copies of scanned documents. This request requires authentication.

Printer must be set to a valid ezeep printer ID. Type must be set to Copy for now, other values may be accepted in the future. All other parameters are optional. The client should provide any available data points to the best of its ability.

If successful, the response contains an X-FMP-JobId header. This identifier can be used by the client to send progress updates with Update Local Job.

Clients can choose between tracking local jobs with a single request, or adding one or more partial updates for the same job with changed parameters only. To indicate that the client expects to send additional updates in the future, Status should be omitted or set to Pending. Successfully printed jobs should be completed, possibly by an update command, with Status set to Succeeded. The backend will ignore further updates after Status has been set to either Succeeded or Failed, or after no update has been sent within a timeout of 24 hours.

GET https://pp2.ezeep.com/TPFM/?Cmd=CreateLocalJob?Printer=f9fe7c55-7a04-4958-8496-265f5f6e9c7d&Type=Copy HTTP/1.1
Authorization: Basic dGhpbnByaW50OmZtcA==
X-Lang-ID: en
X-FMP-User-Agent: ezp-pp-manufatorer-model/1.0

Supported parameters (passed as query parameters in URL):

Attribute Type Required Description
Printer string Yes ezeep printer ID
Type string Yes set to Copy
Color 0-1-num No 0 for monochrome, 1 for color
Copies integer No number of copies
Duplex 0-1-num No 0 for simplex, 1 for duplex
Filename string No file name with extension of the original document
PageCoverage integer No printed area in percent, 0 to 100
PaperId integer No one of predefined Windows Paper Sizes
PaperName string No human-readable paper name, for use with sizes outside of valid PaperId range (e.g., 13x19)
PrintedColorPages integer No number of color pages to be printed selected from the original document, should be ≤ PrintedPages
PrintedPages integer No number of pages to be printed selected from the original document
PrintedSheets integer No number of sheets to be printed selected from the original document
Status string No Pending (default), Succeeded, or Failed
TotalPrintedColorPages integer No total printed color pages, including copies, should be ≤ TotalPrintedPages
TotalPrintedPages integer No total printed pages, including copies
TotalPrintedSheets integer No total printed sheets, including copies

If successful, returns Error code of 0, otherwise 1, 2, 3, 4, or 12

Example Request:

curl -X GET https://pp2.ezeep.com/TPFM/?Cmd=CreateLocalJob \
        &Printer=190f37e7-c093-4771-9bfa-c65fab3e9a7c&Type=Copy \
        &Color=1&Copies=3&Duplex=1&PaperId=9&Status=Pending \
        --header "X-Lang-ID: en" \
        --header "X-FMP-User-Agent: printer-model"

Example Response:

HTTP/1.1 200 OK
Date: Wed, 12 Oct 2022 07:54:07 GMT
Connection: keep-alive
Server: ThinPrint Personal Printing Server
Strict-Transport-Security: max-age=31536000
X-FMP-Return: 0
X-FMP-JobId: 39a9d7ea-b201-4a5c-bbcb-fb822eafd084

Update Local Job

Adds partial updates to a local print job. JobId must be set to the X-FMP-JobId header value returned by a previous Create Local Job request. Optional parameters are the same as for newly created local jobs. The client only needs to send parameters that have changed. This request requires authentication.

GET https://pp2.ezeep.com/TPFM/?Cmd=UpdateLocalJob?JobId=ce48c00a-841d-4009-a1ed-b245f4ebaee1 HTTP/1.1
Authorization: Basic dGhpbnByaW50OmZtcA==
X-Lang-ID: en
X-FMP-User-Agent: ezp-pp-manufatorer-model/1.0

Supported parameters (passed as query parameters in URL):

Attribute Type Required Description
JobId string Yes X-FMP-JobId header from CreateLocalJob response
Color 0-1-num No 0 for monochrome, 1 for color
Copies integer No number of copies
Duplex 0-1-num No 0 for simplex, 1 for duplex
Filename string No file name with extension of the original document
PageCoverage integer No printed area in percent, 0 to 100
PaperId integer No one of predefined Windows Paper Sizes
PaperName string No human-readable paper name, for use with sizes outside of valid PaperId range (e.g., 13x19)
PrintedColorPages integer No number of color pages to be printed selected from the original document, should be ≤ PrintedPages
PrintedPages integer No number of pages to be printed selected from the original document
PrintedSheets integer No number of sheets to be printed selected from the original document
Status string No Pending (default), Succeeded, or Failed
TotalPrintedColorPages integer No total printed color pages, including copies, should be ≤ TotalPrintedPages
TotalPrintedPages integer No total printed pages, including copies
TotalPrintedSheets integer No total printed sheets, including copies

If successful, returns Error code of 0, otherwise 1, 2, 3, 12, or 13.

Example Request:

curl -X GET https://pp2.ezeep.com/TPFM/?Cmd=UpdateLocalJob \
        &JobId=190f37e7-c093-4771-9bfa-c65fab3e9a7c \
        &Color=1&Copies=3&Duplex=1&PaperId=9&Status=Succeeded \
        &TotalPrintedPages=9&TotalPrintedSheets=5 \
        --header "X-Lang-ID: en" \
        --header "X-FMP-User-Agent: printer-model"

Example Response:

HTTP/1.1 200 OK
Date: Wed, 12 Oct 2022 07:54:07 GMT
Connection: keep-alive
Server: ThinPrint Personal Printing Server
Strict-Transport-Security: max-age=31536000
X-FMP-Return: 0

Prepare Upload

Prepares a document upload and returns instructions on how to upload. This request must be sent for each document to be uploaded. User authentication is required. DocumentName must be set to a user-provided document name without extension. FileExtension must be set according to the format of the document to be uploaded, for example, jpg or pdf.

For document formats that result in separate uploads per page, like JPEG, PageNumber should be set to an incrementing integer (1, 2, 3, …). For the first page, it must only be included if it is certain that there will be a second page. Otherwise, it should be omitted and only be included starting with the second page (2, 3, ..). The backend uses this attribute to generate consistent document names.

Security warning: Response content, in particular query parameters of Upload.Uri and values of Upload.HttpHeaders, may contain authentication and must therefore not be logged or displayed without obfuscation, or transferred to other destinations.

See Upload below for how to perform the actual upload.

GET https://pp2.ezeep.com/TPFM/?Cmd=PrepareUpload&DocumentName=Document&FileExtension=pdf HTTP/1.1
Authorization: Basic dGhpbnByaW50OmZtcA==
X-Lang-ID: en
X-FMP-User-Agent: ezp-pp-manufacturer-model/1.0

Supported parameters (passed as query parameters in URL):

Attribute Type Required Description
DocumentName string Yes user-provided name, without extension, up to 255 characters
FileExtension string Yes file extension, without dot (e.g., jpg or pdf)
PageNumber string No page number (1, 2, 3, etc.) to be added to resulting document name, when scanning multiple pages to single-page formats like JPEG; may be omitted for the first page

If successful, returns Error code of 0, otherwise 1, 2, 3, 14, or 15.

Example request:

curl -X GET https://pp2.ezeep.com/TPFM/?Cmd=PrepareUpload&DocumentName=Document&FileExtension=pdf \
     --header "X-Lang-ID: en" \
     --header "X-FMP-User-Agent: ezp-pp-manufacturer-model/1.0"

Example response:

HTTP/1.1 200 OK
Content-Type: text/plain; charset=utf-8
X-FMP-Return: 0
Server: ThinPrint Personal Printing Server
Date: Sat, 05 Jan 2008 12:27:05 GMT

[Upload]
HttpMethod=PUT
Uri=https://example.com/path/to/3d641762-263f-4dc2-8306-6c19a81e9638.pdf?key1=value1&key2=value2
UploadId=5eb1f76b-a64c-465d-af52-127b0d945a2f
[Upload.HttpHeaders]
Header1=value1
Header2=value2

Upload

Uploads a document according to instructions obtained with a prior PrepareUpload request.

HTTP method must be selected according to Upload.HttpMethod. Clients must support POST and PUT. Request URI must be Upload.Uri as provided, including any query parameters. Clients must not add any new path segments or query parameters.

Upload.HttpHeaders is optional. If present, these key-value pairs must be added as request headers. Content-Type header must be set according to the media type and correspond to the FileExtension query parameter sent with PrepareUpload, for example, image/jpeg for jpg or application/pdf for pdf.

The document’s binary data must be sent as message body without additional encoding. Clients may use chunked transfer encoding. Only a single upload request must be sent per document. Clients must not add any authentication.

Upload.Uri query parameters or the values of Upload.HttpHeaders may contain authentication and must therefore not be displayed, logged without obfuscation, or transferred to other destinations. Clients must rejects URIs with protocols other than https.

The upload request may target a separate cloud service integrated with ezeep Blue. The service used may change without prior notice. Clients must not make any assumptions about the type of service and must only rely on behavior and capabilities explicitly documented here.

After successful uploads, apps must proceed send a Finalize upload request.

{{Upload.HttpMethod}} {{Upload.Uri}} HTTP/1.1
{{Upload.HttpHeaders}}
Content-Type: {{Content-Type}}

{{data}}

If successful, returns a 2xx HTTP status code, otherwise an error HTTP status code. Clients must not expect the response to contain an X-FMP-Return header.

Example request:

curl -X PUT https://example.com/path/to/51bc1dec-df14-4018-9bb7-ea6f77298003.pdf?key1=value1&key2=value2 \
     -H "Content-Type: application/pdf" -H "Header1: value1" -H "Header2: value2" \
     --data-binary @local/document.pdf

Example response:

HTTP/1.1 200 OK

Finalize Upload

This command must be sent after uploading. UploadId must be set to Upload.UploadId returned by a preceding call to PrepareUpload. User authentication is required.

GET https://pp2.ezeep.com/TPFM/?Cmd=FinalizeUpload&UploadId=5eb1f76b-a64c-465d-af52-127b0d945a2f HTTP/1.1
Authorization: Basic dGhpbnByaW50OmZtcA==
X-Lang-ID: en
X-FMP-User-Agent: ezp-pp-manufacturer-model/1.0

Supported parameters (passed as query parameters in URL):

Attribute Type Required Description
UploadId string Yes Upload.UploadId from PrepareUpload response

If successful, returns Error code 0, otherwise 1, 2, 3, 16, or 17.

Example request:

curl -X GET https://pp2.ezeep.com/TPFM/?Cmd=FinalizeUpload&UploadId=da0921d3-3191-45ab-8c77-ec29ba9108b2.pdf \
     --header "X-Lang-ID: en" \
     --header "X-FMP-User-Agent: printer-model"

Example response:

HTTP/1.1 200 OK
Content-Type: text/plain; charset=utf-8
X-FMP-Return: 0
Server: ThinPrint Personal Printing Server
Date: Sat, 05 Jan 2008 12:27:05 GMT

[Document]
DocumentId=8b7a937e-305c-4ca0-a421-fd8d4d711619

Error Codes

If an error occurred during a ezeep Blue Pull Print API request, the HTTP response header X-FMP-Return will be set to a value unequal zero. In this case the HTTP response header X-FMP-ErrText specifies a localized error text which is base64 encoded. This error text may be empty (e.g. there is no error text available for the requested language).

Error Code Error Description
1 An operating system error occurred on the server.
For further details see X-FMPOSError and X-FMP-OSErrText.
2 The specified command is not supported by PPS.
3 The specified user is not allowed to execute the specified command.
4 Invalid printer was specified.
5 The specified job file does not exists.
6 Invalid copy count value was specified.
7 Invalid delete flag value was specified.
8 Invalid progress flag value was specified.
9 The specified printing process id is invalid.
10 The print job was canceled (by CancelPrintJob command)
12 Invalid local job parameter was specified. For further details see X-FMP-ErrText.
13 Invalid job ID value was specified.
14 Invalid upload parameter was specified. For further details see X-FMP-ErrText.
15 The given document name already exists. Reserved for future use.
16 Invalid upload ID was specified.
17 The upload was not successful.

If an operating system error occurred at the server while processing the request the HTTP response header X-FMP-OSError will be set to the operating system error code. Additionally the HTTP response header X-FMP-OSErrText specifies the localized operating system error text which is base64 encoded. This operating system error text may be empty (e.g. there is no error text available for the requested language).

Remark: If the authorization fails or is missing (and needed) the server will return corresponding HTTP status:

HTTP/1.1 401
Unauthorized. This is not handled via X-FMP-Returns values.

Example Responses:

HTTP/1.1 200 OK
Content-Type: text/plain; charset=utf-8
X-FMP-Return: 0
Server: ThinPrint Personal Printing Server
Date: Sat, 05 Jan 2008 12:27:05 GMT
HTTP/1.1 200 OK
Content-Type: text/plain; charset=utf-8
X-FMP-Return: 1
X-FMP-ErrText: b3BlcmF0aW5nIHN5c3RlbSBlcnJvciBvY2N1cnJlZCA=
X-FMP-OSError: 5
X-FMP-OSErrText: QWNjZXNzIGRlbmllZA==
Server: ThinPrint Personal Printing Server
Date: Sat, 05 Jan 2008 12:27:05 GMT
HTTP/1.1 200 OK
Personal Printing Server
Content-Type: text/plain; charset=utf-8
X-FMP-Return: 4
X-FMP-ErrText: SW52YWxpZCBwcmludGVyIHdhcyBzcGVjaWZpZWQ=
Server: ThinPrint Personal Printing Server
Date: Sat, 05 Jan 2008 12:27:05 GMT
HTTP/1.1 401 Unauthorized
Connection: close
Date: Tue, 08 Jan 2008 09:14:09 GMT
Content-Type: text/plain; charset=utf-8
WWW-Authenticate: Basic realm="iisprint"
Server: ThinPrint Personal Printing Server
Personal Printing Server has rejected your unauthorized request.