swagger: "2.0"
info:
  description: "This is a simple API allowing you to perform XSLT and XPath operations 
  Currently we support Xalan and Saxon (libxml2 is in progress) for XSLT and Saxon for XPath"
  version: "0.3"
  title: "XML Tools API"
host: "gordon.zipper.release11.com:8081"
schemes:
  - http
tags:
- name: "XPath"
  description: "XPath processing API"
- name: "XSLT"
  description: "XSLT processing API"
- name: "XSD"
  description: "XSD verification API"
paths:
  /xpathpost:
    post:
      tags:
      - "XPath"
      summary: "Perform XPath transform on XML file"
      description: ""
      operationId: "xpath"
      consumes:
      - "application/json"
      produces:
      - "application/json"
      parameters:
      - in: "body"
        name: "request"
        description: "A transform that is to be performed"
        required: true
        schema:
          $ref: "#/definitions/RequestXPath"
      responses:
        "200":
          description: "successful operation"
          schema:
            type: "array"
            items:
              $ref: "#/definitions/Response"
        "400":
          description: "Invalid status value"
          schema:
            type: "array"
            items:
              $ref: "#/definitions/ResponseError"
  /xsltpost:
    post:
      tags:
      - "XSLT"
      summary: "Perform XSLT transform on XML file"
      description: ""
      operationId: "xslt"
      consumes:
      - "application/json"
      produces:
      - "application/json"
      parameters:
      - in: "body"
        name: "request"
        description: "A transform that is to be performed"
        required: true
        schema:
          $ref: "#/definitions/RequestXSLT"
      responses:
        "200":
          description: "successful operation"
          schema:
            type: "array"
            items:
              $ref: "#/definitions/Response"
        "400":
          description: "Invalid status value"
          schema:
            type: "array"
            items:
              $ref: "#/definitions/ResponseError"
  /xsdpost:
    post:
      tags:
      - "XSD"
      summary: "Verify XML file using XSD"
      description: ""
      operationId: "xsd"
      consumes:
      - "application/json"
      produces:
      - "application/json"
      parameters:
      - in: "body"
        name: "request"
        description: "A XML that is to be verified"
        required: true
        schema:
          $ref: "#/definitions/RequestXSD"
      responses:
        "200":
          description: "successful operation"
          schema:
            type: "array"
            items:
              $ref: "#/definitions/XSDResponse"
        "400":
          description: "Invalid status value"
          schema:
            type: "array"
            items:
              $ref: "#/definitions/XSDError"
definitions:
  RequestXPath:
    type: "object"
    properties:
      data:
        type: "string"
        example: "
                    Test1
                    Test3
                  "
        description: "The XML data to be processed"            
      process:
        type: "string"
        example: "count(//value)"
        description: "XPath tranform to be executed"
      processor:
        type: "string"
        enum:
        - "saxon"
        - "xalan"
      version:
        type: "string"
        enum:
        - "2.0"
        - "3.0"
        - "3.1"
  RequestXSLT:
    type: "object"
    properties:
      data:
        type: "string"
        example: "
                    Test1
                    Test3
                  "
        description: "The XML data to be processed"            
      process:
        type: "string"
        example: "count(//value)"
        description: "XSLT tranform to be executed"
      processor:
        type: "string"
        enum:
        - "saxon"
        - "xalan"
      version:
        type: "string"
        enum:
        - "2.0"
        - "3.0"
        - "3.1"
  RequestXSD:
    type: "object"
    properties:
      data:
        type: "string"
        example: "
  
    Ola Nordmann
    Langgt 23
    4000 Stavanger
    Norway
  
"
        description: "The XML data to be processed"            
      process:
        type: "string"
        example: "
  
    Ola Nordmann
    Langgt 23
    4000 Stavanger
    Norway
  
"
        description: "XSD to perform verification with"
      processor:
        type: "string"
        enum:
        - "saxon"
        - "xalan"
      version:
        type: "string"
        enum:
        - "2.0"
        - "3.0"
        - "3.1"
  Response:
    type: "object"
    properties:
      result:
        type: "string"
        example: "4"
        description: "Result of performing transformation on provided XML"
      time:
        type: "string"
        example: "320"
        description: "Computation time in milliseconds"
      processor:
        type: "string"
        enum:
        - "Saxon 10.3 2.0 over s9api"
        - "Xalan Java 2.7.2"
      status:
        type: "string"
        enum:
        - "OK"
  ResponseError:
    type: "object"
    properties:
      result:
        type: "string"
        example: "Concatenation operator ('||') requires XPath 3.0 to be enabled"
        description: "Error from XPath processor"
      time:
        type: "string"
        example: "40"
        description: "Computation time in milliseconds"
      processor:
        type: "string"
        enum:
        - "Saxon 10.3 2.0 over s9api"
        - "Xalan Java 2.7.2"
      status:
        type: "string"
        enum:
        - "ERR"
  XSDResponse:
    type: "object"
    properties:
      result:
        type: "string"
        example: "XML file is valid"
        description: "Validation result"
      time:
        type: "string"
        example: "7"
        description: "Computation time in milliseconds"
      processor:
        type: "string"
        enum:
        - "Xalan Java 2.7.2"
      status:
        type: "string"
        enum:
        - "OK"
  XSDError:
    type: "object"
    properties:
      result:
        type: "string"
        example: "The end-tag for element type \"xs:complexType\" must end with a '>' delimiter."
        description: "Validation result"
      time:
        type: "string"
        example: "7"
        description: "Computation time in milliseconds"
      processor:
        type: "string"
        enum:
        - "Xalan Java 2.7.2"
      status:
        type: "string"
        enum:
        - "ERR"
externalDocs:
  description: "Find out more about Swagger"
  url: "http://swagger.io"