swagger: "2.0"
info:
  description: "The Passeport Escales API allows you to discover the cruising notification and night offered system"
  version: "1.0.1"
  title: "Passeport Escales API"
  contact:
    email: "api@atout-ports.com"
host: "sandbox.passeportescales.com"
basePath: "/v1"
tags:
  - name: "Cruising"
  - name: "Invoice"
  - name: "Marina"
  - name: "NightOffered"
  - name: "Passport"
  - name: "Wifi"
schemes:
  - "https"
consumes:
  - "application/json"
produces:
  - "application/json"
paths:
  /cruising:
    post:
      tags:
        - "Cruising"
      summary: "Add a new cruising notification"
      description: "SOAP function : creerAvisNavigation"
      operationId: "addCruising"
      parameters:
        - in: "body"
          name: "body"
          description: "Cruising object that needs to be added"
          required: true
          schema:
            type: object
            required: 
              - passportId
              - start
              - end
            properties:
              passportId:
                type: integer
                format: int32
              start:
                type: string
                format: date
              end:
                type: string
                format: date
      responses:
        200:
          description: "successful operation"
          schema:
            $ref: "#/definitions/Cruising"
        401:
          $ref: '#/responses/Unauthorized'
        405:
          $ref: '#/responses/InvalidInput'
        500:
          $ref: '#/responses/ServerError'
      security:
        - api_key: []
    put:
      tags:
        - "Cruising"
      summary: "Update an existing cruising notification"
      description: "SOAP function : modifierAvisNavigation"
      operationId: "updateCruising"
      parameters:
        - in: "body"
          name: "body"
          description: "Cruising object that needs to be updated"
          required: true
          schema:
            type: object
            required: 
              - cruisingId
              - passportId
              - start
              - end
            properties:
              cruisingId:
                type: integer
                format: int32
              passportId:
                type: integer
                format: int32
              start:
                type: string
                format: date
              end:
                type: string
                format: date
      responses:
        200:
          description: "successful operation"
          schema:
            $ref: "#/definitions/Cruising"
        401:
          $ref: '#/responses/Unauthorized'
        404:
          $ref: '#/responses/NotFound'
        405:
          $ref: '#/responses/InvalidInput'
        500:
          $ref: '#/responses/ServerError'
      security:
        - api_key: []
    get:
      tags:
        - "Cruising"
      summary: "Find cruising(s)"
      description: "SOAP function : listeAvisNavigation"
      operationId: "findCruising"
      parameters:        
        - name: startMin
          in: query
          required: false
          type: string
          format: date
        - name: startMax
          in: query
          required: false
          type: string
          format: date
        - name: endMin
          in: query
          required: false
          type: string
          format: date
        - name: endMax
          in: query
          required: false
          type: string
          format: date
        - name: cruisingId
          in: query
          required: false
          type: integer
          format: int64
        - name: statusId
          in: query
          required: false
          type: integer
          format: int64
        - name: passportId
          in: query
          required: false
          type: integer
          format: int64
        - name: createdDateMin
          in: query
          required: false
          type: string
          format: date
        - name: createdDateMax
          in: query
          required: false
          type: string
          format: date
        - name: createdMedia
          in: query
          required: false
          type: string
        - name: modifiedDateMin
          in: query
          required: false
          type: string
          format: date
        - name: modifiedDateMax
          in: query
          required: false
          type: string
          format: date
        - name: modifiedMedia
          in: query
          required: false
          type: string
      responses:
        200:
          description: "successful operation"
          schema:
            type: "array"
            items:
              $ref: "#/definitions/Cruising"
        401:
          $ref: '#/responses/Unauthorized'
        404:
          $ref: '#/responses/NotFound'
        405:
          $ref: '#/responses/InvalidInput'
        500:
          $ref: '#/responses/ServerError'
      security:
        - api_key: []
  /cruising/{cruisingId}:
    delete:
      tags:
        - "Cruising"
      summary: "Deletes a cruising"
      description: "SOAP function : annulerAvisNavigation"
      operationId: "deleteCruising"
      parameters:
        - name: "cruisingId"
          in: "path"
          description: "Cruising id to delete"
          required: true
          type: "integer"
          format: "int64"
      responses:
        200:
          description: "successful operation"
          schema:
            $ref: "#/definitions/Cruising"
        401:
          $ref: '#/responses/Unauthorized'
        404:
          $ref: '#/responses/NotFound'
        405:
          $ref: '#/responses/InvalidInput'
        500:
          $ref: '#/responses/ServerError'
      security:
        - api_key: []
  /cruising/updateStart:
    put:
      tags:
        - "Cruising"
      summary: "Update an existing cruising notification"
      description: "SOAP function : modifierDepartAvisNavigation"
      operationId: "updatestartCruising"
      parameters:
        - in: "body"
          name: "body"
          description: "Cruising object that needs to be updated"
          required: true
          schema:
            type: object
            required: 
              - cruisingId
              - start
            properties:
              cruisingId:
                type: integer
                format: int32
              start:
                type: string
                format: date
      responses:
        200:
          description: "successful operation"
          schema:
            $ref: "#/definitions/Cruising"
        401:
          $ref: '#/responses/Unauthorized'
        404:
          $ref: '#/responses/NotFound'
        405:
          $ref: '#/responses/InvalidInput'
        500:
          $ref: '#/responses/ServerError'
      security:
        - api_key: []
  /cruising/updateEnd:
    put:
      tags:
        - "Cruising"
      summary: "Update an existing cruising notification"
      description: "SOAP function : modifierRetourAvisNavigation"
      operationId: "updateendCruising"
      parameters:
        - in: "body"
          name: "body"
          description: "Cruising object that needs to be updated"
          required: true
          schema:
            type: object
            required: 
              - cruisingId
              - end
            properties:
              cruisingId:
                type: integer
                format: int32
              end:
                type: string
                format: date
      responses:
        200:
          description: "successful operation"
          schema:
            $ref: "#/definitions/Cruising"
        401:
          $ref: '#/responses/Unauthorized'
        404:
          $ref: '#/responses/NotFound'
        405:
          $ref: '#/responses/InvalidInput'
        500:
          $ref: '#/responses/ServerError'
      security:
        - api_key: []
  /cruising/validate:
    post:
      tags:
        - "Cruising"
      summary: "Validate cruising object"
      description: "SOAP function : validerAvisNavigation"
      operationId: "validateCruising"
      parameters:
        - in: "body"
          name: "body"
          description: "Cruising object that needs to be validated"
          required: true
          schema:
            type: object
            required: 
              - passportId
              - start
              - end
            properties:
              cruisingId:
                type: integer
                format: int32
              passportId:
                type: integer
                format: int32
              start:
                type: string
                format: date
              end:
                type: string
                format: date
      responses:
        200:
          description: "successful operation"
          schema:
            $ref: "#/definitions/Cruising"
        401:
          $ref: '#/responses/Unauthorized'
        404:
          $ref: '#/responses/NotFound'
        405:
          $ref: '#/responses/InvalidInput'
        500:
          $ref: '#/responses/ServerError'
      security:
        - api_key: []
  /cruising/lastChanges:
    get:
      tags:
        - "Cruising"
      summary: "Find cruising(s) last changes"
      description: "SOAP function : changementAvisNavigation"
      operationId: "lastchangesCruising"
      parameters:        
        - name: consultationDate
          in: query
          required: true
          type: string
          format: date-time
      responses:
        200:
          description: "successful operation"
          schema:
            type: "array"
            items:
              $ref: "#/definitions/Cruising"
        401:
          $ref: '#/responses/Unauthorized'
        404:
          $ref: '#/responses/NotFound'
        405:
          $ref: '#/responses/InvalidInput'
        500:
          $ref: '#/responses/ServerError'
      security:
        - api_key: []
  /cruising/search:
    get:
      tags:
        - "Cruising"
      summary: "Find cruising"
      description: "SOAP function : rechercherAvisNavigation"
      operationId: "searchCruising"
      parameters:
        - name: passportId
          in: query
          required: true
          type: integer
          format: int64
        - name: searchDate
          in: query
          required: true
          type: string
          format: date
      responses:
        200:
          description: "successful operation"
          schema:
            $ref: "#/definitions/Cruising"
        401:
          $ref: '#/responses/Unauthorized'
        404:
          $ref: '#/responses/NotFound'
        405:
          $ref: '#/responses/InvalidInput'
        500:
          $ref: '#/responses/ServerError'
      security:
        - api_key: []
  
  /heartbeat:
    get:
      tags:
        - "Heartbeat"
      summary: "Simple heartbeat testing"
      description: "SOAP function : heartbeat"
      operationId: "heartbeat"
      responses:
        200:
          description: "successful operation"
        401:
          $ref: '#/responses/Unauthorized'
        404:
          $ref: '#/responses/NotFound'
        500:
          $ref: '#/responses/ServerError'
      security:
        - api_key: []      
        
  /invoice:
    post:
      tags:
        - "Invoice"
      summary: "Add a new invoice"
      description: "SOAP function : creerFacture"
      operationId: "addInvoice"
      parameters:
        - in: "body"
          name: "body"
          description: "Invoice object that needs to be added"
          required: true
          schema:
            type: object
            required: 
              - passportId
              - statusId
              - externalInvoiceId
              - amountNet
              - amountGross
              - amountVat
              - amountRest
              - currency
              - generationDate
              - lastname
              - firstname
              - description
              - base64File
            properties:
              passportId:
                type: integer
                format: int32
              statusId:
                type: integer
                format: int32
              externalInvoiceId:
                type: string
              amountNet:
                type: number
                format: double
              amountGross:
                type: number
                format: double
              amountVat:
                type: number
                format: double
              amountRest:
                type: number
                format: double
              currency:
                type: string
              generationDate:
                type: string
                format: date
              paymentDate:
                type: string
                format: date
              lastname:
                type: string
              firstname:
                type: string
              description:
                type: string
              base64File:
                type: string
      responses:
        200:
          description: "successful operation"
          schema:
            $ref: "#/definitions/Invoice"
        401:
          $ref: '#/responses/Unauthorized'
        405:
          $ref: '#/responses/InvalidInput'
        500:
          $ref: '#/responses/ServerError'
      security:
        - api_key: []
    put:
      tags:
        - "Invoice"
      summary: "Update an existing invoice"
      description: "SOAP function : modifierFacture"
      operationId: "updateInvoice"
      parameters:
        - in: "body"
          name: "body"
          description: "Invoice object that needs to be updated"
          required: true
          schema:
            type: object
            required: 
              - passportId
              - statusId
              - externalInvoiceId
              - amountRest
              - base64File
            properties:
              passportId:
                type: integer
                format: int32
              statusId:
                type: integer
                format: int32
              externalInvoiceId:
                type: string
              amountRest:
                type: number
                format: double
              paymentDate:
                type: string
                format: date
              base64File:
                type: string
      responses:
        200:
          description: "successful operation"
          schema:
            $ref: "#/definitions/Invoice"
        401:
          $ref: '#/responses/Unauthorized'
        404:
          $ref: '#/responses/NotFound'
        405:
          $ref: '#/responses/InvalidInput'
        500:
          $ref: '#/responses/ServerError'
      security:
        - api_key: []
    get:
      tags:
        - "Invoice"
      summary: "Find invoice(s)"
      description: "SOAP function : listeFacture"
      operationId: "findInvoice"
      parameters:
        - name: invoiceId
          in: query
          required: false
          type: integer
          format: int64
        - name: passportId
          in: query
          required: false
          type: integer
          format: int64
        - name: statusId
          in: query
          required: false
          type: integer
          format: int64
        - name: externalInvoiceId
          in: query
          required: false
          type: string
        - name: generationDate
          in: query
          required: false
          type: string
          format: date
        - name: paymentDate
          in: query
          required: false
          type: string
          format: date
      responses:
        200:
          description: "successful operation"
          schema:
            type: "array"
            items:
              $ref: "#/definitions/Invoice"
        401:
          $ref: '#/responses/Unauthorized'
        404:
          $ref: '#/responses/NotFound'
        405:
          $ref: '#/responses/InvalidInput'
        500:
          $ref: '#/responses/ServerError'
      security:
        - api_key: []
  /invoice/validate:
    post:
      tags:
        - "Invoice"
      summary: "Validate invoice"
      description: "SOAP function : validerFacture"
      operationId: "validateInvoice"
      parameters:
        - in: "body"
          name: "body"
          description: "Invoice object that needs to be validated"
          required: true
          schema:
            type: object
            required: 
              - passportId
              - statusId
              - externalInvoiceId
              - amountNet
              - amountGross
              - amountVat
              - amountRest
              - currency
              - generationDate
              - lastname
              - firstname
              - description
              - base64File
            properties:
              passportId:
                type: integer
                format: int32
              statusId:
                type: integer
                format: int32
              externalInvoiceId:
                type: string
              amountNet:
                type: number
                format: double
              amountGross:
                type: number
                format: double
              amountVat:
                type: number
                format: double
              amountRest:
                type: number
                format: double
              currency:
                type: string
              generationDate:
                type: string
                format: date
              paymentDate:
                type: string
                format: date
              lastname:
                type: string
              firstname:
                type: string
              description:
                type: string
              base64File:
                type: string
      responses:
        200:
          description: "successful operation"
          schema:
            $ref: "#/definitions/Invoice"
        401:
          $ref: '#/responses/Unauthorized'
        404:
          $ref: '#/responses/NotFound'
        405:
          $ref: '#/responses/InvalidInput'
        500:
          $ref: '#/responses/ServerError'
      security:
        - api_key: []
        
  /marina:       
    get:
      tags:
        - "Marina"
      summary: "Find marina(s)"
      description: "SOAP function : listePort"
      operationId: "findMarina"
      parameters:
        - name: marinaGroupId
          in: query
          required: false
          type: integer
          format: int64
      responses:
        200:
          description: "successful operation"
          schema:
            type: "array"
            items:
              $ref: "#/definitions/Marina"
        401:
          $ref: '#/responses/Unauthorized'
        404:
          $ref: '#/responses/NotFound'
        405:
          $ref: '#/responses/InvalidInput'
        500:
          $ref: '#/responses/ServerError'
      security:
        - api_key: []

  /nightOffered:
    post:
      tags:
        - "NightOffered"
      summary: "Add a new night offered"
      description: "SOAP function : creerNuiteeOfferte"
      operationId: "addNightoffered"
      parameters:
        - in: "body"
          name: "body"
          description: "Night Offered object that needs to be added"
          required: true
          schema:
            type: object
            required: 
              - passportId
              - marinaInId
              - start
              - freenight
            properties:
              passportId:
                type: integer
                format: int32
              marinaInId:
                type: integer
                format: int32
              start:
                type: string
                format: date
              freenight:
                type: integer
                format: int32
      responses:
        200:
          description: "successful operation"
          schema:
            $ref: "#/definitions/NightOffered"
        401:
          $ref: '#/responses/Unauthorized'
        405:
          $ref: '#/responses/InvalidInput'
        500:
          $ref: '#/responses/ServerError'
      security:
        - api_key: []
  /nightOffered/{nightOfferedId}:
    delete:
      tags:
        - "NightOffered"
      summary: "Deletes a night offered"
      description: "SOAP function : annulerNuiteeOfferte"
      operationId: "nightofferedCruising"
      parameters:
        - name: "nightOfferedId"
          in: "path"
          description: "Night offered id to delete"
          required: true
          type: "integer"
          format: "int64"
      responses:
        200:
          description: "successful operation"
          schema:
            $ref: "#/definitions/NightOffered"
        401:
          $ref: '#/responses/Unauthorized'
        404:
          $ref: '#/responses/NotFound'
        405:
          $ref: '#/responses/InvalidInput'
        500:
          $ref: '#/responses/ServerError'
      security:
        - api_key: []
  /nightOffered/validate:
    post:
      tags:
        - "NightOffered"
      summary: "Validate night offered object"
      description: "SOAP function : validerNuiteeOfferte"
      operationId: "validateNightoffered"
      parameters:
        - in: "body"
          name: "body"
          description: "Night offered object that needs to be validated"
          required: true
          schema:
            type: object
            required: 
              - nightOfferedId
              - passportId
              - marinaInId
              - start
              - freenight
            properties:
              passportId:
                type: integer
                format: int32
              marinaInId:
                type: integer
                format: int32
              start:
                type: string
                format: date
              freenight:
                type: integer
                format: int32
      responses:
        200:
          description: "successful operation"
          schema:
            $ref: "#/definitions/NightOffered"
        401:
          $ref: '#/responses/Unauthorized'
        404:
          $ref: '#/responses/NotFound'
        405:
          $ref: '#/responses/InvalidInput'
        500:
          $ref: '#/responses/ServerError'
      security:
        - api_key: []
  /nightOffered/search:
    get:
      tags:
        - "NightOffered"
      summary: "Find night offered"
      description: "SOAP function : rechercherNuiteeOfferte"
      operationId: "searchNightoffered"
      parameters:
        - name: passportId
          in: query
          required: true
          type: integer
          format: int64
        - name: searchDate
          in: query
          required: true
          type: string
          format: date
      responses:
        200:
          description: "successful operation"
          schema:
            $ref: "#/definitions/NightOffered"
        401:
          $ref: '#/responses/Unauthorized'
        404:
          $ref: '#/responses/NotFound'
        405:
          $ref: '#/responses/InvalidInput'
        500:
          $ref: '#/responses/ServerError'
      security:
        - api_key: []
  /nightOffered/toInvoice:       
    get:
      tags:
        - "NightOffered"
      summary: "Find night(s) offered to invoice"
      description: "SOAP function : listeNuiteeOfferte"
      operationId: "findNightofferedToinvoice"
      parameters:
        - name: startMin
          in: query
          required: false
          type: string
          format: date
        - name: startMax
          in: query
          required: false
          type: string
          format: date
        - name: freenight
          in: query
          required: false
          type: integer
          format: int64
        - name: nightOfferedId
          in: query
          required: false
          type: integer
          format: int64
        - name: statusId
          in: query
          required: false
          type: integer
          format: int64
        - name: marinaId
          in: query
          required: false
          type: integer
          format: int64
        - name: passportId
          in: query
          required: false
          type: integer
          format: int64
        - name: createdDateMin
          in: query
          required: false
          type: string
          format: date
        - name: createdDateMax
          in: query
          required: false
          type: string
          format: date
        - name: createdMedia
          in: query
          required: false
          type: string
        - name: modifiedDateMin
          in: query
          required: false
          type: string
          format: date
        - name: modifiedDateMax
          in: query
          required: false
          type: string
          format: date
        - name: modifiedMedia
          in: query
          required: false
          type: string
      responses:
        200:
          description: "successful operation"
          schema:
            type: "array"
            items:
              $ref: "#/definitions/NightOffered"
        401:
          $ref: '#/responses/Unauthorized'
        404:
          $ref: '#/responses/NotFound'
        405:
          $ref: '#/responses/InvalidInput'
        500:
          $ref: '#/responses/ServerError'
      security:
        - api_key: []
  /nightOffered/toPay:       
    get:
      tags:
        - "NightOffered"
      summary: "Find night(s) offered to pay"
      description: "SOAP function : listeNuiteeOfferteDue"
      operationId: "findNightofferedTopay"
      parameters:
        - name: startMin
          in: query
          required: false
          type: string
          format: date
        - name: startMax
          in: query
          required: false
          type: string
          format: date
        - name: freenight
          in: query
          required: false
          type: integer
          format: int64
        - name: nightOfferedId
          in: query
          required: false
          type: integer
          format: int64
        - name: statusId
          in: query
          required: false
          type: integer
          format: int64
        - name: cruisingId
          in: query
          required: false
          type: integer
          format: int64
        - name: marinaInId
          in: query
          required: false
          type: integer
          format: int64
        - name: passportId
          in: query
          required: false
          type: integer
          format: int64
        - name: createdDateMin
          in: query
          required: false
          type: string
          format: date
        - name: createdDateMax
          in: query
          required: false
          type: string
          format: date
        - name: createdMedia
          in: query
          required: false
          type: string
        - name: modifiedDateMin
          in: query
          required: false
          type: string
          format: date
        - name: modifiedDateMax
          in: query
          required: false
          type: string
          format: date
        - name: modifiedMedia
          in: query
          required: false
          type: string
      responses:
        200:
          description: "successful operation"
          schema:
            type: "array"
            items:
              $ref: "#/definitions/NightOffered"
        401:
          $ref: '#/responses/Unauthorized'
        404:
          $ref: '#/responses/NotFound'
        405:
          $ref: '#/responses/InvalidInput'
        500:
          $ref: '#/responses/ServerError'
      security:
        - api_key: []
  /nightOffered/possibilities:       
    get:
      tags:
        - "NightOffered"
      summary: "Get NightOffered Possibilities for Passeport"
      operationId: "getNightOfferedPossibilities"
      parameters:
        - name: passportId
          in: query
          required: true
          type: integer
          format: int64
      responses:
        200:
          description: "successful operation"
          schema:
            type: "array"
            items:
              $ref: "#/definitions/NightOfferedPossibilities"
        401:
          $ref: '#/responses/Unauthorized'
        404:
          $ref: '#/responses/NotFound'
        405:
          $ref: '#/responses/InvalidInput'
        500:
          $ref: '#/responses/ServerError'
      security:
        - api_key: []
        
  /passport:
    post:
      tags:
        - "Passport"
      summary: "Add a new passport"
      description: "SOAP function : creerPasseport"
      operationId: "addPassport"
      parameters:
        - in: "body"
          name: "body"
          description: "Passport object that needs to be added"
          required: true
          schema:
            type: object
            required: 
              - marinaId
              - memberRef
              - lastname
              - firstname
              - address1
              - address2
              - address3
              - postcode
              - city
              - country
              - email
              - mobile
              - contractTypeId
              - contractDateStart
              - contractDateEnd
              - parkingLot
              - boatName
              - boatType
              - boatManufacturer
              - boatModel
              - boatBuiltDate
              - boatLength
              - boatWidth
              - boatDraught
            properties:
              marinaId:
                type: integer
                format: int32
              memberRef:
                type: string
              lastname:
                type: string
              firstname:
                type: string
              address1:
                type: string
              address2:
                type: string
              address3:
                type: string
              postcode:
                type: string
              city:
                type: string
              country:
                type: string
                description: country ISO 3166 alpha-2
              email:
                type: string
              mobile:
                type: string
              contractTypeId:
                type: integer
                format: int32
              contractDateStart:
                type: string
                format: date
              contractDateEnd:
                type: string
                format: date
              parkingLot:
                type: string
              boatName:
                type: string
              boatType:
                type: string
                enum: [VOILIER, MOTEUR, MULTICOQUE]
              boatManufacturer:
                type: string
              boatModel:
                type: string
              boatBuiltDate:
                type: string
                format: date
              boatLength:
                type: number
                format: double
              boatWidth:
                type: number
                format: double
              boatDraught:
                type: number
                format: double
              oldPassportId:
                type: integer
                format: int32
      responses:
        200:
          description: "successful operation"
          schema:
            $ref: "#/definitions/Passport"
        401:
          $ref: '#/responses/Unauthorized'
        404:
          $ref: '#/responses/NotFound'
        405:
          $ref: '#/responses/InvalidInput'
        500:
          $ref: '#/responses/ServerError'
      security:
        - api_key: []
    put:
      tags:
        - "Passport"
      summary: "Update an existing passport"
      description: "SOAP function : modifierPasseport"
      operationId: "updatePassport"
      parameters:
        - in: "body"
          name: "body"
          description: "Passport object that needs to be updated"
          required: true
          schema:
            type: object
            required: 
              - passportId
              - marinaId
              - memberRef
              - address1
              - address2
              - address3
              - postcode
              - city
              - country
              - email
              - mobile
              - contractTypeId
              - contractDateStart
              - contractDateEnd
              - parkingLot
              - boatType
              - boatManufacturer
              - boatModel
              - boatBuiltDate
              - boatDraught
            properties:
              passportId:
                type: integer
                format: int32
              marinaId:
                type: integer
                format: int32
              memberRef:
                type: string
              address1:
                type: string
              address2:
                type: string
              address3:
                type: string
              postcode:
                type: string
              city:
                type: string
              country:
                type: string
                description: country ISO 3166 alpha-2
              email:
                type: string
              mobile:
                type: string
              contractTypeId:
                type: integer
                format: int32
              contractDateStart:
                type: string
                format: date
              contractDateEnd:
                type: string
                format: date
              parkingLot:
                type: string
              boatType:
                type: string
                enum: [VOILIER, MOTEUR, MULTICOQUE]
              boatManufacturer:
                type: string
              boatModel:
                type: string
              boatBuiltDate:
                type: string
                format: date
              boatDraught:
                type: number
                format: double
      responses:
        200:
          description: "successful operation"
          schema:
            $ref: "#/definitions/Passport"
        401:
          $ref: '#/responses/Unauthorized'
        404:
          $ref: '#/responses/NotFound'
        405:
          $ref: '#/responses/InvalidInput'
        500:
          $ref: '#/responses/ServerError'
      security:
        - api_key: []
    get:
      tags:
        - "Passport"
      summary: "Find passport(s)"
      description: "SOAP function : listePasseport"
      operationId: "findPassport"
      parameters:
        - name: passportId
          in: query
          required: false
          type: integer
          format: int64
        - name: personId
          in: query
          required: false
          type: integer
          format: int64
        - name: memberRef
          in: query
          required: false
          type: string
        - name: mobile
          in: query
          required: false
          type: string
        - name: contractTypeId
          in: query
          required: false
          type: integer
          format: int64
        - name: contractValidity
          in: query
          required: false
          type: boolean
        - name: createdDateMin
          in: query
          required: false
          type: string
          format: date
        - name: createdDateMax
          in: query
          required: false
          type: string
          format: date
        - name: createdMedia
          in: query
          required: false
          type: string
        - name: modifiedDateMin
          in: query
          required: false
          type: string
          format: date
        - name: modifiedDateMax
          in: query
          required: false
          type: string
          format: date
        - name: modifiedMedia
          in: query
          required: false
          type: string
      responses:
        200:
          description: "successful operation"
          schema:
            type: "array"
            items:
              $ref: "#/definitions/Passport"
        401:
          $ref: '#/responses/Unauthorized'
        404:
          $ref: '#/responses/NotFound'
        405:
          $ref: '#/responses/InvalidInput'
        500:
          $ref: '#/responses/ServerError'
      security:
        - api_key: []
  /passport/validate:
    post:
      tags:
        - "Passport"
      summary: "Validate passport object"
      description: "SOAP function : validerPasseport"
      operationId: "validatePassport"
      parameters:
        - in: "body"
          name: "body"
          description: "Passport object that needs to be validated"
          required: true
          schema:
            type: object
            required: 
              - marinaId
              - memberRef
              - lastname
              - firstname
              - address1
              - address2
              - address3
              - postcode
              - city
              - country
              - email
              - mobile
              - contractTypeId
              - contractDateStart
              - contractDateEnd
              - parkingLot
              - boatName
              - boatType
              - boatManufacturer
              - boatModel
              - boatBuiltDate
              - boatLength
              - boatWidth
              - boatDraught
            properties:
              passportId:
                type: integer
                format: int32
              marinaId:
                type: integer
                format: int32
              memberRef:
                type: string
              lastname:
                type: string
              firstname:
                type: string
              address1:
                type: string
              address2:
                type: string
              address3:
                type: string
              postcode:
                type: string
              city:
                type: string
              country:
                type: string
                description: country ISO 3166 alpha-2
              email:
                type: string
              mobile:
                type: string
              contractTypeId:
                type: integer
                format: int32
              contractDateStart:
                type: string
                format: date
              contractDateEnd:
                type: string
                format: date
              parkingLot:
                type: string
              boatName:
                type: string
              boatType:
                type: string
                enum: [VOILIER, MOTEUR, MULTICOQUE]
              boatManufacturer:
                type: string
              boatModel:
                type: string
              boatBuiltDate:
                type: string
                format: date
              boatLength:
                type: number
                format: double
              boatWidth:
                type: number
                format: double
              boatDraught:
                type: number
                format: double
      responses:
        200:
          description: "successful operation"
          schema:
            $ref: "#/definitions/Passport"
        401:
          $ref: '#/responses/Unauthorized'
        404:
          $ref: '#/responses/NotFound'
        405:
          $ref: '#/responses/InvalidInput'
        500:
          $ref: '#/responses/ServerError'
      security:
        - api_key: []
  /passport/compare:
    post:
      tags:
        - "Passport"
      summary: "Compare with passport"
      description: "SOAP function : comparerPasseport"
      operationId: "comparePassport"
      parameters:
        - in: "body"
          name: "body"
          description: "Passport object that needs to be compare"
          required: true
          schema:
            type: object
            required: 
              - passportId
              - marinaId
              - lastname
              - firstname
              - boatLength
              - boatWidth
            properties:
              passportId:
                type: integer
                format: int32
              marinaId:
                type: integer
                format: int32
              lastname:
                type: string
              firstname:
                type: string
              boatName:
                type: string
              boatLength:
                type: number
                format: double
              boatWidth:
                type: number
                format: double
      responses:
        200:
          description: "successful operation"
          schema:
            $ref: "#/definitions/Passport"
        401:
          $ref: '#/responses/Unauthorized'
        404:
          $ref: '#/responses/NotFound'
        405:
          $ref: '#/responses/InvalidInput'
        500:
          $ref: '#/responses/ServerError'
      security:
        - api_key: []
  /passport/search:
    get:
      tags:
        - "Passport"
      summary: "Search passport"
      description: "SOAP function : rechercherNumeroPasseport"
      operationId: "searchPassport"
      parameters:
        - name: marinaId
          in: query
          required: true
          type: integer
          format: int64
        - name: lastname
          in: query
          required: true
          type: string
        - name: boatName
          in: query
          required: true
          type: string
      responses:
        200:
          description: "successful operation"
          schema:
            $ref: "#/definitions/Passport"
        401:
          $ref: '#/responses/Unauthorized'
        404:
          $ref: '#/responses/NotFound'
        405:
          $ref: '#/responses/InvalidInput'
        500:
          $ref: '#/responses/ServerError'
      security:
        - api_key: []
  /passport/{passportId}:
    get:
      tags:
        - "Passport"
      summary: "Get passport"
      description: "SOAP function : validerNumeroPasseport"
      operationId: "getPassport"
      parameters:
        - name: "passportId"
          in: "path"
          description: "Passport id to search"
          required: true
          type: "integer"
          format: "int64"
      responses:
        200:
          description: "successful operation"
          schema:
            $ref: "#/definitions/Passport"
        401:
          $ref: '#/responses/Unauthorized'
        404:
          $ref: '#/responses/NotFound'
        405:
          $ref: '#/responses/InvalidInput'
        500:
          $ref: '#/responses/ServerError'
      security:
        - api_key: []
    delete:
      tags:
        - "Passport"
      summary: "Deletes a passport"
      description: "SOAP function : annulerPasseport"
      operationId: "deletePassport"
      parameters:
        - name: "passportId"
          in: "path"
          description: "Passport id to delete"
          required: true
          type: "integer"
          format: "int64"
      responses:
        200:
          description: "successful operation"
          schema:
            $ref: "#/definitions/Passport"
        401:
          $ref: '#/responses/Unauthorized'
        404:
          $ref: '#/responses/NotFound'
        405:
          $ref: '#/responses/InvalidInput'
        500:
          $ref: '#/responses/ServerError'
      security:
        - api_key: []
                  
  /wifi:
    post:
      tags:
        - "Wifi"
      summary: "Add a new wifi"
      description: "SOAP function : creerAccesWifi"
      operationId: "addWifi"
      parameters:
        - in: "body"
          name: "body"
          description: "Wifi object that needs to be added"
          required: true
          schema:
            type: object
            required: 
              - passportId
              - accesType
              - login
              - password
              - validFrom
              - validTo
            properties:
              passportId:
                type: integer
                format: int32
              accesType:
                type: integer
                format: int32
              login:
                type: string
              password:
                type: string
              validFrom:
                type: string
                format: date
              validTo:
                type: string
                format: date
      responses:
        200:
          description: "successful operation"
          schema:
            $ref: "#/definitions/Wifi"
        401:
          $ref: '#/responses/Unauthorized'
        404:
          $ref: '#/responses/NotFound'
        405:
          $ref: '#/responses/InvalidInput'
        500:
          $ref: '#/responses/ServerError'
      security:
        - api_key: []
    get:
      tags:
        - "Wifi"
      summary: "Find wifi codes"
      description: ""
      operationId: "findWifi"
      parameters:
        - name: passportId
          in: query
          required: true
          type: integer
          format: int64
      responses:
        200:
          description: "successful operation"
          schema:
            type: "array"
            items:
              $ref: "#/definitions/Wifi"
        401:
          $ref: '#/responses/Unauthorized'
        404:
          $ref: '#/responses/NotFound'
        405:
          $ref: '#/responses/InvalidInput'
        500:
          $ref: '#/responses/ServerError'
      security:
        - api_key: []
securityDefinitions:
  api_key:
    type: apiKey
    name: access_token
    in: query
definitions:
  Cruising:
    type: "object"
    properties:
      cruisingId:
        type: integer
        format: int32
      statusId:
        type: integer
        format: int32
      passportId:
        type: integer
        format: int32
      marinaId:
        type: integer
        format: int32
      start:
        type: string
        format: date
      end:
        type: string
        format: date
      createdDate:
        type: string
        format: date-time
      createdMedia:
        type: string
      modifiedDate:
        type: string
        format: date-time
      modifiedMedia:
        type: string
    required:
      - statusId
      - passportId
      - marinaId
      - start
      - end
  Invoice:
    title: Invoice
    description: ''
    type: object
    properties:
      invoiceId:
        type: integer
        format: int32
      passportId:
        type: integer
        format: int32
      statusId:
        type: integer
        format: int32
      documentId:
        type: integer
        format: int32
      externalInvoiceId:
        type: string
      amountNet:
        type: number
        format: double
      amountGross:
        type: number
        format: double
      amountVat:
        type: number
        format: double
      amountRest:
        type: number
        format: double
      currency:
        type: string
      generationDate:
        type: string
        format: date
      paymentDate:
        type: string
        format: date
      lastname:
        type: string
      firstname:
        type: string
      description:
        type: string
      base64File:
        type: string
      createdDate:
        type: string
        format: date-time
      createdMedia:
        type: string
      modifiedDate:
        type: string
        format: date-time
      modifiedMedia:
        type: string
    required:
      - passportId
      - statusId
      - externalInvoiceId
      - amountNet
      - amountGross
      - amountVat
      - amountRest
      - currency
  Marina:
    title: Marina
    description: ''
    type: object
    properties:
      marinaId:
        type: integer
        format: int32
      name:
        type: string
    required:
      - marinaId
      - name
  NightOffered:
    title: Nightoffered
    description: ''
    type: object
    properties:
      nightOfferedId:
        type: integer
        format: int32
      statusId:
        type: integer
        format: int32
      rulesId:
        type: integer
        format: int32
      cruisingId:
        type: integer
        format: int32
      passportId:
        type: integer
        format: int32
      marinaId:
        type: integer
        format: int32
      marinaInId:
        type: integer
        format: int32
      start:
        type: string
        format: date
      freenight:
        type: integer
        format: int32
      createdDate:
        type: string
        format: date-time
      createdMedia:
        type: string
      modifiedDate:
        type: string
        format: date-time
      modifiedMedia:
        type: string
    required:
      - identifiantNuiteeOfferte
      - statutNuiteeOfferte
      - identifiantRegleNuiteeOfferte
      - identifiantAvisNavigation
      - numeroPasseport
      - numeroPortAttache
      - numeroPortEscale
      - dateArrivee
      - nombreNuitee
      - datetimeCreation
      - datetimeModification
      - mediaCreation
      - mediaModification
      - numeroErreur
      - descriptionErreur
  NightOfferedPossibilities:
    title: Nightoffered
    description: ''
    type: object
    properties:
      nightOfferedId:
        type: integer
        format: int32
  Passport:
    title: Passport
    description: ''
    type: object
    properties:
      passportId:
        type: integer
        format: int32
      personId:
        type: integer
        format: int32
      marinaId:
        type: integer
        format: int32
      memberRef:
        type: string
      lastname:
        type: string
      firstname:
        type: string
      address1:
        type: string
      address2:
        type: string
      address3:
        type: string
      postcode:
        type: string
      city:
        type: string
      country:
        type: string
        description: country ISO 3166 alpha-2
      email:
        type: string
      mobile:
        type: string
      contractTypeId:
        type: integer
        format: int32
      contractDateStart:
        type: string
        format: date
      contractDateEnd:
        type: string
        format: date
      parkingLot:
        type: string
      boatName:
        type: string
      boatType:
        type: string
      boatManufacturer:
        type: string
      boatModel:
        type: string
      boatBuiltDate:
        type: string
        format: date
      boatLength:
        type: number
        format: double
      boatWidth:
        type: number
        format: double
      boatDraught:
        type: number
        format: double
      createdDate:
        type: string
        format: date-time
      createdMedia:
        type: string
      modifiedDate:
        type: string
        format: date-time
      modifiedMedia:
        type: string
    required:
      - marinaId
  Wifi:
    title: Wifi
    description: ''
    type: object
    properties:
      wifiId:
        type: integer
        format: int32
      passportId:
        type: integer
        format: int32
      accesType:
        type: integer
        format: int32
      login:
        type: string
      password:
        type: string
      validFrom:
        type: string
        format: date
      validTo:
        type: string
        format: date
      createdDate:
        type: string
        format: date-time
      createdMedia:
        type: string
      modifiedDate:
        type: string
        format: date-time
      modifiedMedia:
        type: string
    required:
      - passportId
      - accesType
      - login
      - password
      - validFrom
      - validTo
  Error:
    type: object
    properties:
      errorCode:
        type: integer
      errorMessage:
        type: string
responses:
  NotFound:
    description: The specified resource was not found
    schema:
      $ref: '#/definitions/Error'
  InvalidInput:
    description: Invalid input
    schema:
      $ref: '#/definitions/Error'
  ServerError:
    description: Server error
    schema:
      $ref: '#/definitions/Error'
  Unauthorized:
    description: Unauthorized
    schema:
      $ref: '#/definitions/Error'
externalDocs:
  description: "Find out more about Swagger"
  url: "http://swagger.io"