swagger: '2.0' info: title: Faxolution for Applications (Fax4A) REST API version: v1 description: "Retarus' Faxolution for Applications webservice facilitates automation\ \ of\nthe fax transmission process. In addition, it also allows you to monitor\n\ the status of a sent fax and delete archived reports. The Webservice\ncommunicates\ \ via REST 1.0 (JSON). The programming language with which the\nWebservice client\ \ is implemented is not restricted by the Webservice itself.\n\nFax transmission\ \ is generally divided into the following steps:\n\n* Create a fax job and send\ \ it to the webservice\n\nthen either\n\n* Retrieve completed fax jobs\n\n GET\ \ /{custNr}/fax/reports\n* Retrieve the status details for the completed jobs\ \ individually or in bulk\n\n GET /{custNr}/fax/reports/{jobId} or POST /{custNr}/fax/reports\n\ * Delete the retrieved jobs individually or in bulk\n\n DELETE /{custNr}/fax/reports/{jobId}\ \ or POST /{custNr}/fax/reports\n\nor\n\n* Receive the fax job status per HTTP\ \ push and/or email status Report\n\nFax job data will be automatically deleted\ \ after the configured retention time.\n\nFor highest process safety standards,\ \ we operate two high availability (HA) regions, where data centers are clustered.\ \ This is how the HA regions are composed:\n\n**Germany** \nHA region DE, including\ \ these data centers:\n* DE1: DC in Frankfurt\n* DE2: DC in Munich\n\n**United\ \ States** \nHA region US, including these data centers:\n* US1: DC Ashburn\n\ * US2: DC Secaucus\n\nPlease see the individual operations for details on how\ \ to work with HA settings.\n\nTo obtain a test account for this service or any\ \ of our other fax services, please contact Retarus.\n" contact: name: Retarus url: https://www.retarus.com/ email: info@retarus.com termsOfService: https://www.retarus.com/us/legal-disclaimer/ host: faxws.de1.retarus.com basePath: /rest/v1 schemes: - https consumes: - application/json produces: - application/json paths: /{custNr}/fax: post: tags: - Fax jobs summary: Send a fax description: 'This method is used to prepare fax jobs to be transferred for processing. If a valid FaxJobRequest has been received by the Webservice, the Webservice sends a Job ID back that must be specified by the client when querying the job status. ' operationId: sendJobRequest parameters: - name: custNr in: path description: Your Retarus Customer Number (e.g. 99999TE). required: true type: string - name: body in: body required: true description: Request parameters as a FaxJobRequest object schema: $ref: '#/definitions/FaxJobRequest' responses: '200': description: Fax job submitted successfully schema: $ref: '#/definitions/FaxJobResponse' '400': description: Invalid or incomplete job request schema: $ref: '#/definitions/ErrorResponse' '401': description: Authenication failed schema: $ref: '#/definitions/ErrorResponseAuthenication' /{custNr}/fax/reports/{jobId}: get: tags: - Fax reports summary: Fetch the status report for a single job description: "With the assistance of this URL resource, a status report for\ \ a fax job\ncan be requested by jobId.\n\nA job's status can be queried until\ \ its report data is deleted. You can\ninitiate deletion of the data by calling\ \ `deleteStatusReport`,\nand in any case the data will be automatically be\ \ deleted upon the\nexpiration of the configurable time frame (by default\ \ 30 days).\n\n**Please note**: If you sent the fax job requests via a high\ \ availability URL,\nyou have to poll the status from both included data centers.\ \ E.g., US1 and\nUS2 in case of the US high availability URL. Please do not\ \ poll statuses directly \nfrom an HA URL but use the specific ones for the\ \ data centers.\n" operationId: getStatusReport parameters: - name: custNr in: path description: Customer Number required: true type: string - name: jobId in: path required: true type: string responses: '200': description: Fax job status retrieved schema: $ref: '#/definitions/FaxReport' '401': description: Authenication failed schema: $ref: '#/definitions/ErrorResponseAuthenication' '404': description: Status report not available schema: $ref: '#/definitions/ErrorResponse' delete: tags: - Fax reports summary: Delete the status report for a single job description: "Deletes the status report for a single job. Returns the Job ID.\"\ \n\n**Please note**: If you sent the fax job requests via a high availability\ \ URL,\nyou have to send a delete request to both included data centers. Else,\ \ it will \nbe likely that the job was not processed in the data center you\ \ referenced and\nhence cannot be deleted there. Please do not send a delete\ \ request directly to \nan HA URL but use the specific ones for the data centers.\n" operationId: deleteStatusReport parameters: - name: custNr in: path description: Customer Number required: true type: string - name: jobId in: path required: true type: string responses: '200': description: Status report deleted schema: $ref: '#/definitions/JobDeleteReport' '400': description: Status report not available /{custNr}/fax/reports: get: tags: - Fax reports summary: Fetch available status reports for this account description: "This URL returns a list of available status reports for completed\ \ fax\njobs for the current account.\n\nStatus reports are available for up\ \ to 30 days or until deleted.\n\nIMPORTANT: The results are limited to the\ \ oldes 1000 entries. It is recommended to\ndelete the status reports after\ \ fetching them in order to retrieve the\nfollowing ones.\n\n**Please note**:\ \ If you sent the fax job requests via a high availability URL,\nyou have\ \ to poll the status from both included data centers. E.g., US1 and\nUS2 in\ \ case of the US high availability URL. Please do not poll statuses directly\ \ \nfrom an HA URL but use the specific ones for the data centers.\n" operationId: getAllStatusReports parameters: - name: custNr in: path description: Customer Number required: true type: string responses: '200': description: Status reports delivered schema: $ref: '#/definitions/FaxReports' post: tags: - Fax reports summary: Perform bulk operations on the status reports description: "It is possible to perform bulk operations on the status reports\ \ through a\nPOST on the `/{custNr}/fax/reports` endpoint. The required parameters\ \ are:\n\n * the type of action to be performed\n * A list of Job IDs on\ \ which the operation should be performed\n\nStatus reports are available\ \ for up to 30 days or until deleted.\n\nThe maximum number of jobs per POST\ \ request is set to 1000.\n\n**Please note**: If you sent the fax job requests\ \ via a high availability URL,\nyou have to send a delete request or a status\ \ poll request to both included data \ncenters. Else, it will be likely that\ \ the job was not processed in the data center \nyou referenced and hence\ \ cannot be deleted or no status is available there. Please \ndo not send\ \ a request directly to an HA URL but use the specific ones for the data centers.\n" operationId: bulkStatusReports parameters: - name: custNr in: path description: Customer Number required: true type: string - name: body in: body required: true description: 'Array of jobIds to delete from the API. ' schema: $ref: '#/definitions/BulkJobReportsRequestBody' responses: '200': description: "Depending on the request type, this returns a `reports` item\ \ containing either:\n\n * an array of `Fax Report` items for the bulk\ \ GET (same as `getAllStatusReports`).\n * an array of `Job Delete Report`\ \ items for the bulk DELETE.\n" schema: $ref: '#/definitions/BulkJobReportResponseBody' delete: tags: - Fax reports summary: Delete the oldest status reports for this account description: "Deletes up to 1000 status reports for completed fax jobs for the\ \ current\naccount, starting from the oldest ones. It returns the jobIds of\ \ deleted\njob reports.\n\nIMPORTANT: In case there are more than 1000 completed\ \ job reports, multiple calls\nof this method might be needed to delete them\ \ all.\n\n**Please note**: If you sent the fax job requests via a high availability\ \ URL,\nyou have to send a delete request to both included data centers. Else,\ \ it will \nbe likely that the job was not processed in the data center you\ \ referenced and\nhence cannot be deleted there. Please do not send a delete\ \ request directly to \nan HA URL but use the specific ones for the data centers.\n" operationId: deleteOldestStatusReports parameters: - name: custNr in: path description: Customer Number required: true type: string responses: '200': description: Status reports deleted schema: $ref: '#/definitions/DeleteStatusReportsResponse' definitions: FaxJobRequest: type: object title: Fax Job Request properties: reference: $ref: '#/definitions/Reference' recipients: type: array items: $ref: '#/definitions/FaxRecipient' documents: type: array items: $ref: '#/definitions/DocumentWithData' transportOptions: $ref: '#/definitions/TransportOptions' renderingOptions: $ref: '#/definitions/RenderingOptions' statusReportOptions: $ref: '#/definitions/StatusReportOptions' meta: $ref: '#/definitions/MetaData' required: - recipients Reference: type: object title: Reference properties: customerDefinedId: type: string description: Freely-defined ID string (max. 256 characters). example: 2022-04-7T11:04:37.057Z_customerDefinedId billingCode: type: string description: Information on the cost center; format is arbitrary (max. 80 characters). example: 2022-04-7T11:04:37.057Z_billingCode billingInfo: type: string description: Additional data for internal customer accounting (max. 80 characters). example: 2022-04-7T11:04:37.057Z_billingInfo ErrorResponse: properties: code: type: integer message: type: string ErrorResponseAuthenication: example: code: 401 message: Authenication failed allOf: - $ref: '#/definitions/ErrorResponse' BulkJobReportsRequestBody: type: object description: Body of the request for bulk operations on the job reports properties: action: type: string description: 'Defines the action to be performed on all jobs whose Job ID is provided in the `jobIds` list Possible options are: * DELETE: Bulk delete the requested jobs * GET: Bulk get the requested jobs Both options are case insensitive. ' jobIds: type: array description: List of Job IDs to be processed in bulk items: type: string required: - action - jobIds BulkJobReportResponseBody: type: object example: value: reports: - jobId: FJJ5Y09UM505ZZBIELCRYC deleted: true - jobId: FJJ5WA23UO05ZZBIEL0JY5 deleted: true - jobId: FJJ5WA0FWM05ZZBIELZPE4 deleted: false reason: NOT_FOUND - jobId: FJJ5Y07H3805ZZBIELBAPL deleted: true - jobId: FJJ5WA25VB0BRN8TPSGGVY deleted: false reason: INTERNAL_ERROR - jobId: FJJ5WA253505ZZBIELEKRC deleted: true - jobId: FJJ5WA24GI0BRN8TPSWAVM deleted: true properties: reports: type: array items: $ref: '#/definitions/BulkJobReportResponseBodyItem' BulkJobReportResponseBodyItem: type: object title: Bulk Job Reports Response properties: jobId: type: string description: The Job ID. recipientStatus: type: array items: $ref: '#/definitions/FaxRecipientWithStatus' pages: type: integer description: 'Number of pages in the fax. Only present for responses to a bulk GET. ' reference: $ref: '#/definitions/Reference' deleted: type: boolean description: 'Information whether the job report could be deleted. Only present for responses to a bulk DELETE. ' reason: type: boolean description: 'Missing if deletion was successful, otherwise one of the following reason messages is returned: * NOT_FOUND: No report exists for the given job id. * INTERNAL_ERROR: Unspecified server-side error. Only present for responses to a bulk DELETE. ' required: - jobId FaxRecipient: type: object title: Fax Recipient description: 'The number where the fax was sent to. If a fax can be successfully sent to that number, the transmission to the respective recipient is completed and considered successful. The destination number which received the fax will be indicated in the report data for each recipient under RecipientStatus -> sentToNumber. ' properties: number: type: string description: Dialed number (international format, e.g., +12015551000). example: 0012012051598 properties: type: array description: Personalized data for the cover page. items: $ref: '#/definitions/RecipientProperty' required: - number RecipientProperty: type: object title: Recipient Property description: 'A cover page can be personalized for each individual recipient and then attached to the front of each fax document. This object allows specifying a value for each of the keys in the template. See \<\\> for additional information. ' properties: key: type: string description: Name of the key. example: key123 value: type: string description: The value assigned to the key. example: value123 required: - key - value DocumentWithData: type: object title: Document With Data description: 'data and additional information on sent documents; if there is no document data and no cover page, the Webservice will not accept the job. *Please note*: either `reference` or `data` can be used in a single document, but not both at the same time. ' properties: name: type: string description: 'Document file name; the file extension is important for determining the file type, e.g., `Invoice-2017-01.pdf`. **Please note**: The maximum possible length of a file name is 32 characters. Allowed characters are: `a-zA-Z0-9-_.` , and no whitespaces, slashes, or other special characters are permitted. ' example: test-document-inline-byte-array.txt charset: type: string description: 'Character encoding of plain text documents (*.txt). Possible values: * US-ASCII * UTF-8 * UTF-16 * UTF-16BE * UTF-16LE * ISO-8859-1 * Windows-1252 ' default: UTF-8 reference: type: string description: An URL pointing to the document to be transmitted. example: http://mydomain.retarus.com/my-path/mydocument.pdf x-nullable: true data: type: string description: base64 string with data, if no reference is provided. If both are provided, the reference data (see above) is used. example: SGVsbG8sIHRoaXMgaXMgYSB0ZXN0aW5nIGRvY3VtZW50IGJvZHkgY3JlYXRlZCBmb3IgOTk5OTlURQ== x-nullable: true required: - name TransportOptions: type: object title: Transport Options description: Contains information on the transmission of the fax. properties: csid: type: string description: The sender ID the received fax was sent from (max. 20 characters). example: test-csid isExpress: type: boolean description: Flag for transmissions sent express. isBlacklistEnabled: type: boolean description: 'Flag for the use of the Robinson List (only for numbers in Germany), ECOFAX (for numbers in France), or Retarus'' own blacklist. ' RenderingOptions: type: object title: Rendering Options description: Contains instructions for the rendering of the fax. properties: paperFormat: type: string description: 'The size of the paper. Possible options are: * A4 * LETTER ' x-nullable: true resolution: type: string description: "The fax's resolution. Possible values are:\n\n * LOW\n * HIGH\n" coverpageTemplate: type: string description: The name of the cover page's template; e.g., coverpage-default.ftl.html. example: coverpage-default.ftl.html overlay: $ref: '#/definitions/Overlay' header: type: string description: 'the content of the header, including control characters. ' example: '%tz=CEST Testfax: CSID: %C Recipient number: %# Date: %d.%m.%Y %H:%M %z' required: - paperFormat Overlay: type: object title: Overlay description: "Settings for the overlay (e.g., stationery). A overlay (e.g., with\ \ letter\nheader and footer) can be applied to all or specific pages in the\ \ fax. It \nconsists of a one-page, black-and-white TIF image document. In order\ \ to \nuse an overlay, it must be deployed to the customer's account by a Retarus\ \ \ntechnician. The customer can provide a document in various formats eg PDF,\n\ which Retarus experts will then convert to a TIF image and deploy it using\n\ a agreed upon name. \n" x-nullable: true properties: name: type: string description: 'The overlay name excluding the TIF file extension and without and path information. ' example: LetterHead mode: type: string description: "specifies the page in the document where the template (overlay)\ \ will be applied. Possible values:\n\n * ALL_PAGES: the overlay is applied\ \ to all pages\n * NO_OVERLAY: no overlay is used (returns the same result\ \ as if \"no overlay\" had been specified in the options)\n * FIRST_PAGE:\ \ the overlay is applied only to the first page (if you are using a cover\ \ page, it is considered the first page)\n * LAST_PAGE: the overlay is\ \ applied only to the last page\n * ALL_BUT_FIRST_PAGE: the overlay is\ \ applied to all pages except for the first (if you are using a cover page,\ \ the overlay will be applied to all other pages because the cover page\ \ is considered the first page)\n * ALL_BUT_LAST_PAGE: the overlay is applied\ \ to all pages except the last one\n * ALL_BUT_FIRST_AND_LAST_PAGE: the\ \ overlay is applied to all pages except for the first and the last (the\ \ cover page is considered the first page if this mode is used)\n * FIRST_FILE:\ \ if the faxed document consists of multiple files, the overlay will only\ \ be used on the first file's pages (the cover page is considered not to\ \ belong to any file and does not an overlay in this mode)\n" required: - name - mode StatusReportOptions: type: object title: Status Report Options description: settings for the status report. Consists of `reportPurgeTs` and `reportMail`. properties: reportPurgeTs: type: string format: date-time description: Not currently valid. The date after which the status report is no longer available. In ISO 8601 format example: '2022-11-03T20:14:37.098+02:00' reportMail: $ref: '#/definitions/ReportMail' httpStatusPush: $ref: '#/definitions/HttpStatusPush' required: - reportPurgeTs ReportMail: type: object title: Report Mail description: 'In addition to querying via Webservice, it is possible to request notification for each fax job as soon as processing is completed. The status information can be sent by either HTTP POST or email. Separate email addresses can each be specified for delivery and failed delivery confirmations. If an email address is deleted for either type of confirmation, no notification email will be sent for the confirmation type that was removed. The report emails'' format is specified through a template which is filled out with relevant data (Job ID, job status, details on the fax recipients). A default template is available for all customers; however, you can install a customized template. Templates must be encoded in UTF-8 format. In addition, it is possible to specify whether the fax image should be attached to the report or not and if so in which format ' properties: successAddress: type: string description: Email address, to which delivery confirmations notifications should be sent. example: john.doe@retarus.com failureAddress: type: string description: Email address, to which a notification should be sent when errors occur. example: jane.doe@retarus.com attachedFaxImageMode: type: string description: "Determines when the fax image will be attached to the email.\ \ Possible values are:\n\n * NEVER: Never attach the fax image\n * SUCCESS_ONLY:\ \ Only attach the fax image in case of successful transmission\n * FAILURE_ONLY:\ \ Only attach the fax image in case of failed transmission\n * ALWAYS:\ \ Always attach the fax image\n" default: NEVER example: SUCCESS_ONLY attachedFaxImageFormat: type: string description: "Determines when the fax image will be attached to the email.\ \ The following formats are supported:\n\n * TIFF: Fax image is attached\ \ as TIFF\n * PDF: Fax image is atached as PDF\n * PDF_WITH_OCR: Fax image\ \ is ttached as a searchable PDF file. Additional costs may occur\n" default: TIFF HttpStatusPush: type: object title: Http Status Push description: 'In order to receive notification via HTTP, the JobRequest must contain the `httpStatusPush` element. The URL to which the HTTP POST request is sent has to be specified. Please see \<\\> for additional details. ' properties: targetUrl: type: string description: The HTTP url to post the fax job status to (webhook). A default URL can be configured for the account. example: https://retarus.com/test-path/test-target principal: type: string description: The user name to authenticate with the status push endpoint, if required. When using OAUTH2 this is the client id to obtain access tokens. example: none x-nullable: true credentials: type: string description: The password to authenticate with the status push endpoint, if required. When using OAUTH2 this is the client secret to obtain access tokens. example: none x-nullable: true authMethod: type: string description: "The authentication method for the status push. Supported authentication\ \ mehods and the corresponding values are:\n\n * HTTP_BASIC\n * HTTP_DIGEST\n\ \ * OAUTH\n * NONE\n\nIn order to use OAUTH2, the authorization server\ \ URL must be configured in advance for the account.\n" default: NONE enum: - HTTP_BASIC - HTTP_DIGEST - OAUTH2 - NONE required: - targetUrl MetaData: type: object title: Meta Data description: Meta information about the request. properties: customerReference: type: string description: Information that the customer can use for internal references. example: 99999TE jobValid: $ref: '#/definitions/JobValid' required: - customerReference JobValid: type: object title: Job Valid description: 'Contains the valid start/end of a fax job (in ISO 8601 format). If this data is not defined correctly, you will receive a **Job Expiration** error. If you want to use the default values, simply ignore this object. ' properties: start: type: string description: 'Beginning of validity for the job (in ISO 8601 format). **Please note:** if this time is not defined correctly, you will receive a `Job Expiration` error. By default jobs are immediately valid. ' default: null x-nullable: true end: type: string description: "End of validity for the job (in ISO 8601 format). **Please note**\ \ that also durations are supported; the following values are all valid\ \ expiration times:\n\n* 2022-10-11T15:50:21.372Z (expiration set to the\ \ exact moment specified)\n* PT80M (Expiration set to now + 80 minutes)\n\ \nBy default jobs expire one month after they begin being valid.\nThe value\ \ must be one of these choices:\n * string with format \"date-time\"\n\ \ * string with format \"duration\"\n" default: P1M FaxJobResponse: type: object title: Fax Job Response example: jobId: FJKQQUVF1J0IADYARQEXKC properties: jobId: type: string required: - jobId FaxReport: type: object title: Fax Report example: jobId: FJJ66GHGX105ZZBIELVCN1 recipientStatus: - number: +49 89 1234567-8900 properties: null status: OK reason: OK sentTs: '2017-08-10T13:05:09Z' durationInSecs: 19 sentToNumber: 00498912345678900 remoteCsid: +49/89/1234567-8900 pages: 1 reference: customerDefinedId: 2017-08-10T13:05:09Z_customerDefinedId billingCode: 2017-08-10T13:05:09Z_billingCode billingInfo: 2017-08-10T13:05:09Z_billingInfo properties: jobId: type: string description: The Job ID. recipientStatus: type: array items: $ref: '#/definitions/FaxRecipientWithStatus' pages: type: integer description: Number of pages in the fax. reference: $ref: '#/definitions/Reference' required: - jobId - recipientStatus - pages FaxRecipientWithStatus: type: object title: Fax Recipient With Status description: Receipient fax status information. properties: number: type: string description: The fax recipient's primary number (international format, e.g., +49891234678). properties: type: array description: Personalized data used for the cover page. x-nullable: true items: $ref: '#/definitions/RecipientProperty' status: type: string description: Job status. See TBD for more information reason: type: string description: Explanation of the status. sentTs: type: string format: date-time description: Timestamp which indicates when the fax was sent (in ISO 8601 format). durationInSecs: type: integer description: Duration of the fax transmission until received by the fax recipient. sentToNumber: type: string description: Number to which the fax was sent. remoteCsid: type: string description: Fax ID which identifies the fax recipient. required: - durationInSecs - number - reason - status DeleteStatusReportsResponse: type: object example: reports: - jobId: FJJ5Y09UM505ZZBIELCRYC deleted: true - jobId: FJJ5WA23UO05ZZBIEL0JY5 deleted: true - jobId: FJJ5WA0FWM05ZZBIELZPE4 deleted: false reason: NOT_FOUND - jobId: FJJ5Y07H3805ZZBIELBAPL deleted: true - jobId: FJJ5WA25VB0BRN8TPSGGVY deleted: false reason: INTERNAL_ERROR - jobId: FJJ5WA253505ZZBIELEKRC deleted: true - jobId: FJJ5WA24GI0BRN8TPSWAVM deleted: true properties: reports: type: array items: $ref: '#/definitions/JobDeleteReport' JobDeleteReport: type: object title: Job Delete Report example: jobId: FJJ66GHGX105ZZBIELVCN1 deleted: true properties: jobId: type: string description: The Job ID. x-nullable: true deleted: type: boolean description: 'Returns `true` if the job was successfully deleted, false otherwise. If absent in the response it means the job was successfully deleted. ' reason: type: string description: 'Missing if deletion was successful, otherwise one of the following reason messages is returned: * NOT_FOUND: No report exists for the given job id. * INTERNAL_ERROR: Unspecified server-side error. ' enum: - NOT_FOUND - INTERNAL_ERROR required: - jobId - deleted FaxReports: type: object title: Fax Reports example: reports: - jobId: FJJ5Y09UM505ZZBIELCRYC recipientStatus: - number: '+498912345678900' properties: null status: OK reason: OK sentTs: '2017-08-04T15:09:10Z' durationInSecs: 19 sentToNumber: 00498912345678900 remoteCsid: +49/89/1234567-8900 pages: 1 reference: customerDefinedId: 2017-08-04T15:09:10Z_customerDefinedId billingCode: 2017-08-04T15:09:10Z_billingCode billingInfo: 2017-08-04T15:09:10Z_billingInfo - jobId: FJJ5WA23UO05ZZBIEL0JY5 recipientStatus: - number: '+498912345678901' properties: null status: OK reason: OK sentTs: '2017-08-03T10:07:31Z' durationInSecs: 21 sentToNumber: 00498912345678901 remoteCsid: Retarus Faxolution pages: 2 reference: customerDefinedId: 2017-08-03T10:07:31Z_customerDefinedId billingCode: 2017-08-03T10:07:31Z_billingCode billingInfo: 2017-08-03T10:07:31Z_billingInfo properties: reports: type: array items: $ref: '#/definitions/FaxReport' required: - reports securityDefinitions: httpBasicAuth: type: basic x-additional-servers: - url: https://faxws.de2.retarus.com/rest/v1 description: Retarus data center in Germany - url: https://faxws-ha.de.retarus.com/rest/v1 description: High availability URL for German data centers - url: https://faxws.us1.retarus.com/rest/v1 description: Retarus data center in USA - url: https://faxws.us2.retarus.com/rest/v1 description: Retarus data center in USA - url: https://faxws-ha.us.retarus.com/rest/v1 description: High availability URL for US data centers - url: https://faxws.ch1.retarus.com/rest/v1 description: Retarus data center in Switzerland - url: https://faxws.sg1.retarus.com/rest/v1 description: Retarus data center in Singapore tags: - name: Fax jobs description: Send faxes security: - httpBasicAuth: []