Removal of format query parameter

Removal of format query parameter

#%RAML 1.0
title: Digitale Delta - API
version: 2.0
securitySchemes:
  basic:
    type: Basic Authentication
  openidconnect:
    type: OAuth 2.0
baseUri: http://api.rws.nl/dl/
mediaType: [ application/json ]
description: Digital Delta API version 2.0
documentation:
 - title: Introduction
   content: !include Documentation/Introduction.md
 - title: Document history
   content: !include Documentation/Document_History.md
 - title: The API specification
   content: !include Documentation/The_API_Specification.md
 - title: Future enhancements and research
   content: !include Documentation/Future_Enhancements_and_Research.md

# HTTP is included as protocol but is optional as for security reasons a Provider might decide to support HTTPS only.
protocols:
  - HTTP
  - HTTPS

uses:
  DD-T: /Libraries/dd-base-types.raml
  GENERIC-RESP: /Libraries/generic-response-types.raml
  DD-RESP: /Libraries/dd-response-types.raml
  TRAITS: /Libraries/dd-traits.raml

#
# All data types are defined in external files (see above) so they can be shared between DD and DD-OPER API.
#
types:

#
# The resources
/dd/2.0:

# ##################################################

  /nodes:
    description: The Nodes endpoint returns the nodes that the provider offers.
    get:
      is: [ TRAITS.pageable, TRAITS.has403-AccessDeniedError, TRAITS.has500-ServerError ]
      queryParameters:
        process?:
          type: DD-T.ProcessName
        name?:
          type: string
          description: (Partial) name of the node. Partional meaning startsWith(...).
          example: AquaDeskPrimaryNode
      responses:
        200:
          description: |
            Succesfully retrieved resource.
          body:
            application/json:
              type: DD-RESP.NodeListResponse
              example: !include examples/dd-nodelist-response.json
    /{nodeId}:
      description: Request a specific Node by its unique dentifier.
      uriParameters:
        nodeId:
          type: DD-T.Identifier
      is: [ TRAITS.has403-AccessDeniedError, TRAITS.has404-NotFoundError, TRAITS.has500-ServerError ]
      get:
        queryParameters:
          process?:
            type: DD-T.ProcessName
        responses:
          200:
            description: |
              Succesfully retrieved resource.
            body:
              application/json:
                type: DD-RESP.NodeResponse
                example: !include examples/dd-node-response.json

# ##################################################

  /sources:
    description: Retrieve (data)source resources.
    is: [ TRAITS.pageable, TRAITS.has403-AccessDeniedError, TRAITS.has500-ServerError ]
    get:
      queryParameters:
        process?:
          type: DD-T.ProcessName
      responses:
        200:
          description: Succesfully retrieved resource.
          body:
            application/json:
              type: DD-RESP.SourceListResponse
              example: !include examples/dd-sourcelist-response.json

# #####################################################

  /locations:
    get:
      description: |
        Retrieve location resources.
      is: [ TRAITS.pageable, TRAITS.has400-InvalidRequestError, TRAITS.has403-AccessDeniedError, TRAITS.has500-ServerError, TRAITS.locationFilterable ]
      queryParameters:
        process?:
          type: DD-T.ProcessName
        boundingBox?:
          type: DD-T.BoundingBox
          example: [4.8, 52.0, 5.8, 54.0]
        locationName?:
          type: string
          description: (Partial) location name. Partional meaning startsWith(...).
          example: NEDHMT
        nodeId?:
          type: DD-T.Identifier
          description: This query parameter is deprecated.
        locationCode?:
          type: string
          description: Location code.
          example: NLWATB-RWTS_AFGDM_0001
        locationId?: DD-T.Identifier
      responses:
        200:
          description: Succesfully retrieved resource.
          body:
            application/json:
              type: DD-RESP.LocationListResponse
              example: !include examples/dd-locationslist-response.json

  /locations/geojson:
    get:
      description: |
        Retrieve location resources. Response is in GeoJSON format.
      is: [ TRAITS.pageable, TRAITS.has400-InvalidRequestError, TRAITS.has403-AccessDeniedError, TRAITS.has500-ServerError, TRAITS.locationFilterable ]
      queryParameters:
        process?:
          type: DD-T.ProcessName
        boundingBox?:
          type: DD-T.BoundingBox
          example: [4.8, 52.0, 5.8, 54.0]
        locationName?:
          type: string
          description: (Partial) location name. Partional meaning startsWith(...).
          example: NEDHMT
        nodeId?:
          type: DD-T.Identifier
          description: This query parameter is deprecated.
        locationCode?:
          type: string
          description: Location code.
          example: NLWATB-RWTS_AFGDM_0001
        locationId?: DD-T.Identifier
      responses:
        200:
          description: Succesfully retrieved resource.
          body:
            application/json:
              type: object
              example: !include examples/dd-locationslist-response.json

    /{locationId}:
      description: Request a specific location by its id. Response is always in GeoJSON format.
      uriParameters:
        locationId:
          type: DD-T.Identifier
      is: [ TRAITS.has403-AccessDeniedError, TRAITS.has404-NotFoundError, TRAITS.has500-ServerError ]
      get:
        description: |
          Request a specific Location by its unique dentifier.
        queryParameters:
          process?:
            type: DD-T.ProcessName
            default: measurement
        responses:
          200:
            description: |
              Succesfully retrieved resource
            body:
              application/json:
                type: object
                example: !include examples/dd-location-response-geojson.json

######################################################

  /aspectSets:
    description:
      Retrieves available aspect sets.
      Note - The request requires some parameters to provide a context for the response as aspects relate to observation types for instance.
      When aspects and aspect sets are not supported and empty List shall be returned.
    get:
      is: [ TRAITS.pageable, TRAITS.has400-InvalidRequestError, TRAITS.has403-AccessDeniedError, TRAITS.has500-ServerError  ]
      queryParameters:
        process?:
          type: DD-T.ProcessName
      responses:
        200:
          description: |
            Succesfully retrieved resource.
          body:
            application/json:
              type: DD-RESP.AspectSetListResponse
              example: !include examples/dd-aspectsetlist-response.json

######################################################

  /observationTypes:
    description: The ObservationTypes endpoint can return the observationtypes that the provider offers. Filtering: list of parameters.

About ObservationType

The ObservationType objects describe all attributes to correctly interpret what has been measured, and in what way. It is essential to have the quantity field.

    get:
      description: |
        Retrieve observationTypes resources.
      is: [ TRAITS.pageable, TRAITS.has400-InvalidRequestError, TRAITS.has403-AccessDeniedError, TRAITS.has500-ServerError, TRAITS.observationTypeFilterable ]
      queryParameters:
        process?:
          type: DD-T.ProcessName
        observationTypeId?:
          type: DD-T.Identifier
        quantity?:
          description: Retrieve only observation types that contain the specified quantity.
          type: string
        parameterCode?:
          description: Retrieve only observation types that contain the specified parameter code.
          type: string
      responses:
        200:
          description: |
            Succesfully retrieved timeseries.
          body:
            application/json:
              type: DD-RESP.ObservationTypeListResponse
              example: !include examples/dd-observationtypelist-response.json

    /{observationTypeId}:
      description: Request a specific ObservationType by its unique identifier.
      is: [ TRAITS.has403-AccessDeniedError, TRAITS.has404-NotFoundError, TRAITS.has500-ServerError ]
      uriParameters:
        observationTypeId:
          type: DD-T.Identifier
      get:
        queryParameters:
          process?:
            type: DD-T.ProcessName
        responses:
          200:
            description: |
              Succesfully retrieved resource.
            body:
              application/json:
                type: DD-RESP.ObservationTypeResponse
                example: !include examples/dd-observationtype-response.json

######################################################

  /timeseries:
    get:
      description: |
        Retrieve timeseries resources.
        A request where both startTime and endTime are omitted returns a response with just the metadata (implicit includeMetaData = true).
      is: [ TRAITS.pageable, TRAITS.has400-InvalidRequestError, TRAITS.has403-AccessDeniedError, TRAITS.has500-ServerError, TRAITS.timeseriesFilterable, TRAITS.locationFilterable, TRAITS.observationTypeFilterable ]
      queryParameters:
        process?:
          type: DD-T.ProcessName
        startTime?:
          type: DD-T.StartTime
        endTime?:
          type: DD-T.EndTime
        locationCode?:
          type: string
          example: "HVH"
        locationName?:
          type: DD-T.LocationName
          example: "Hoek.vanHolland.nieuwewat"
        sourceName:
          type: DD-T.SourceName
          example: rws_prediction
        observationTypeId?:
          type: DD-T.Identifier
        realizationCount?:
          description: ??? Added Count as this is the name in ObservationType response.
          type: integer
        parameterCode?:
          type: string
        quantity:
          description:
          type: string
        aspectSet?:
          type: DD-T.AspectSetName
        quantityName?:
          type: DD-T.QuantityName
        includeMetaData?:
          description: This url query parameter replaces the '/data' control extension of the /timeseries endpoint.
            Metadata is included in the response by default, but can be excluded to reduce response size.
          type: boolean
          default: true
        intervalLength?:
           type: DD-T.IntervalLength
        nodeId?:
          type: DD-T.Identifier
      responses:
        200:
          description: |
            Succesfully retrieved timeseries.
          body:
            application/json:
              type: DD-RESP.TimeseriesListResponse
              example: !include examples/dd-timeserieslist-response-verwachtingen-en-metingen-fulldd.json

    /{timeseriesId}:
      description: Request a specific (single) Timeseries by its unique identifier.
      uriParameters:
        timeseriesId:
          type: DD-T.Identifier
      is: [ TRAITS.has403-AccessDeniedError, TRAITS.has404-NotFoundError, TRAITS.has500-ServerError ]
      get:
        queryParameters:
          process?:
            type: DD-T.ProcessName
            default: measurement
        responses:
          200:
            description: |
              Succesfully retrieved resource
            body:
              application/json:
                type: DD-RESP.TimeseriesResponse
                example: !include examples/dd-timeseries-response-single.json

#%RAML 1.0
title: Digitale Delta - API
version: 2.0
securitySchemes:
  basic:
    type: Basic Authentication
  openidconnect:
    type: OAuth 2.0
baseUri: http://api.rws.nl/dl/
mediaType: [ application/json ]
description: Digital Delta API version 2.0
documentation:
 - title: Introduction
   content: !include Documentation/Introduction.md
 - title: Document history
   content: !include Documentation/Document_History.md
 - title: The API specification
   content: !include Documentation/The_API_Specification.md
 - title: Future enhancements and research
   content: !include Documentation/Future_Enhancements_and_Research.md

# HTTP is included as protocol but is optional as for security reasons a Provider might decide to support HTTPS only.
protocols:
  - HTTP
  - HTTPS

uses:
  DD-T: /Libraries/dd-base-types.raml
  GENERIC-RESP: /Libraries/generic-response-types.raml
  DD-RESP: /Libraries/dd-response-types.raml
  TRAITS: /Libraries/dd-traits.raml

#
# All data types are defined in external files (see above) so they can be shared between DD and DD-OPER API.
#
types:

#
# The resources
/dd/2.0:

# ##################################################

  /nodes:
    description: The Nodes endpoint returns the nodes that the provider offers.
    get:
      is: [ TRAITS.pageable, TRAITS.has403-AccessDeniedError, TRAITS.has500-ServerError ]
      queryParameters:
        process?:
          type: DD-T.ProcessName
        name?:
          type: string
          description: (Partial) name of the node. Partional meaning startsWith(...).
          example: AquaDeskPrimaryNode
      responses:
        200:
          description: |
            Succesfully retrieved resource.
          body:
            application/json:
              type: DD-RESP.NodeListResponse
              example: !include examples/dd-nodelist-response.json
    /{nodeId}:
      description: Request a specific Node by its unique dentifier.
      uriParameters:
        nodeId:
          type: DD-T.Identifier
      is: [ TRAITS.has403-AccessDeniedError, TRAITS.has404-NotFoundError, TRAITS.has500-ServerError ]
      get:
        queryParameters:
          process?:
            type: DD-T.ProcessName
        responses:
          200:
            description: |
              Succesfully retrieved resource.
            body:
              application/json:
                type: DD-RESP.NodeResponse
                example: !include examples/dd-node-response.json

# ##################################################

  /sources:
    description: Retrieve (data)source resources.
    is: [ TRAITS.pageable, TRAITS.has403-AccessDeniedError, TRAITS.has500-ServerError ]
    get:
      queryParameters:
        process?:
          type: DD-T.ProcessName
      responses:
        200:
          description: Succesfully retrieved resource.
          body:
            application/json:
              type: DD-RESP.SourceListResponse
              example: !include examples/dd-sourcelist-response.json

# #####################################################

  /locations:
    get:
      description: |
        Retrieve location resources.
      is: [ TRAITS.pageable, TRAITS.has400-InvalidRequestError, TRAITS.has403-AccessDeniedError, TRAITS.has500-ServerError, TRAITS.locationFilterable ]
      queryParameters:
        process?:
          type: DD-T.ProcessName
        boundingBox?:
          type: DD-T.BoundingBox
          example: [4.8, 52.0, 5.8, 54.0]
        locationName?:
          type: string
          description: (Partial) location name. Partional meaning startsWith(...).
          example: NEDHMT
        nodeId?:
          type: DD-T.Identifier
          description: This query parameter is deprecated.
        locationCode?:
          type: string
          description: Location code.
          example: NLWATB-RWTS_AFGDM_0001
        locationId?: DD-T.Identifier
        format?:
          type: string
          description: Specification of the requested response format. Default is "json".
            By specifying "format=geojson", a pure GeoJSON response is returned (i.e. a FeatureCollection, without provider information and paging links).
      responses:
        200:
          description: Succesfully retrieved resource.
          body:
            application/json:
              type: DD-RESP.LocationListResponse
              example: !include examples/dd-locationslist-response.json

  /locations/geojson:
    get:
      description: |
        Retrieve location resources. Response is in GeoJSON format.
      is: [ TRAITS.pageable, TRAITS.has400-InvalidRequestError, TRAITS.has403-AccessDeniedError, TRAITS.has500-ServerError, TRAITS.locationFilterable ]
      queryParameters:
        process?:
          type: DD-T.ProcessName
        boundingBox?:
          type: DD-T.BoundingBox
          example: [4.8, 52.0, 5.8, 54.0]
        locationName?:
          type: string
          description: (Partial) location name. Partional meaning startsWith(...).
          example: NEDHMT
        nodeId?:
          type: DD-T.Identifier
          description: This query parameter is deprecated.
        locationCode?:
          type: string
          description: Location code.
          example: NLWATB-RWTS_AFGDM_0001
        locationId?: DD-T.Identifier
        format?:
          type: string
          description: Specification of the requested response format. Default is "json".
            By specifying "format=geojson", a pure GeoJSON response is returned (i.e. a FeatureCollection, without provider information and paging links).
      responses:
        200:
          description: Succesfully retrieved resource.
          body:
            application/json:
              type: object
              example: !include examples/dd-locationslist-response.json

    /{locationId}:
      description: Request a specific location by its id. Response is always in GeoJSON format.
      uriParameters:
        locationId:
          type: DD-T.Identifier
      is: [ TRAITS.has403-AccessDeniedError, TRAITS.has404-NotFoundError, TRAITS.has500-ServerError ]
      get:
        description: |
          Request a specific Location by its unique dentifier.
        queryParameters:
          process?:
            type: DD-T.ProcessName
            default: measurement
        responses:
          200:
            description: |
              Succesfully retrieved resource
            body:
              application/json:
                type: object
                example: !include examples/dd-location-response-geojson.json

######################################################

  /aspectSets:
    description:
      Retrieves available aspect sets.
      Note - The request requires some parameters to provide a context for the response as aspects relate to observation types for instance.
      When aspects and aspect sets are not supported and empty List shall be returned.
    get:
      is: [ TRAITS.pageable, TRAITS.has400-InvalidRequestError, TRAITS.has403-AccessDeniedError, TRAITS.has500-ServerError  ]
      queryParameters:
        process?:
          type: DD-T.ProcessName
      responses:
        200:
          description: |
            Succesfully retrieved resource.
          body:
            application/json:
              type: DD-RESP.AspectSetListResponse
              example: !include examples/dd-aspectsetlist-response.json

######################################################

  /observationTypes:
    description: The ObservationTypes endpoint can return the observationtypes that the provider offers. Filtering: list of parameters.

About ObservationType

The ObservationType objects describe all attributes to correctly interpret what has been measured, and in what way. It is essential to have the quantity field.

    get:
      description: |
        Retrieve observationTypes resources.
      is: [ TRAITS.pageable, TRAITS.has400-InvalidRequestError, TRAITS.has403-AccessDeniedError, TRAITS.has500-ServerError, TRAITS.observationTypeFilterable ]
      queryParameters:
        process?:
          type: DD-T.ProcessName
        observationTypeId?:
          type: DD-T.Identifier
        quantity?:
          description: Retrieve only observation types that contain the specified quantity.
          type: string
        parameterCode?:
          description: Retrieve only observation types that contain the specified parameter code.
          type: string
      responses:
        200:
          description: |
            Succesfully retrieved timeseries.
          body:
            application/json:
              type: DD-RESP.ObservationTypeListResponse
              example: !include examples/dd-observationtypelist-response.json

    /{observationTypeId}:
      description: Request a specific ObservationType by its unique identifier.
      is: [ TRAITS.has403-AccessDeniedError, TRAITS.has404-NotFoundError, TRAITS.has500-ServerError ]
      uriParameters:
        observationTypeId:
          type: DD-T.Identifier
      get:
        queryParameters:
          process?:
            type: DD-T.ProcessName
        responses:
          200:
            description: |
              Succesfully retrieved resource.
            body:
              application/json:
                type: DD-RESP.ObservationTypeResponse
                example: !include examples/dd-observationtype-response.json

######################################################

  /timeseries:
    get:
      description: |
        Retrieve timeseries resources.
        A request where both startTime and endTime are omitted returns a response with just the metadata (implicit includeMetaData = true).
      is: [ TRAITS.pageable, TRAITS.has400-InvalidRequestError, TRAITS.has403-AccessDeniedError, TRAITS.has500-ServerError, TRAITS.timeseriesFilterable, TRAITS.locationFilterable, TRAITS.observationTypeFilterable ]
      queryParameters:
        process?:
          type: DD-T.ProcessName
        startTime?:
          type: DD-T.StartTime
        endTime?:
          type: DD-T.EndTime
        locationCode?:
          type: string
          example: "HVH"
        locationName?:
          type: DD-T.LocationName
          example: "Hoek.vanHolland.nieuwewat"
        sourceName:
          type: DD-T.SourceName
          example: rws_prediction
        observationTypeId?:
          type: DD-T.Identifier
        realizationCount?:
          description: ??? Added Count as this is the name in ObservationType response.
          type: integer
        parameterCode?:
          type: string
        quantity:
          description:
          type: string
        aspectSet?:
          type: DD-T.AspectSetName
        quantityName?:
          type: DD-T.QuantityName
        includeMetaData?:
          description: This url query parameter replaces the '/data' control extension of the /timeseries endpoint.
            Metadata is included in the response by default, but can be excluded to reduce response size.
          type: boolean
          default: true
        intervalLength?:
           type: DD-T.IntervalLength
        nodeId?:
          type: DD-T.Identifier
      responses:
        200:
          description: |
            Succesfully retrieved timeseries.
          body:
            application/json:
              type: DD-RESP.TimeseriesListResponse
              example: !include examples/dd-timeserieslist-response-verwachtingen-en-metingen-fulldd.json

    /{timeseriesId}:
      description: Request a specific (single) Timeseries by its unique identifier.
      uriParameters:
        timeseriesId:
          type: DD-T.Identifier
      is: [ TRAITS.has403-AccessDeniedError, TRAITS.has404-NotFoundError, TRAITS.has500-ServerError ]
      get:
        queryParameters:
          process?:
            type: DD-T.ProcessName
            default: measurement
        responses:
          200:
            description: |
              Succesfully retrieved resource
            body:
              application/json:
                type: DD-RESP.TimeseriesResponse
                example: !include examples/dd-timeseries-response-single.json


rename qparam

rename qparam

#%RAML 1.0
title: Invoice API
baseUri: https://www.mybring.com/invoicearchive
types:
  Invoices:
    type: object
    properties:
      customerNumber:
        type: string
        required: false
        description: Represents a customerNumber
      invoiceNumber:
        type: string
        required: true
        description: Represents a invoiceNumber
      invoiceDate:
        type: string
        required: true
        description: Represents a invoice date
      invoiceIssuer:
        type: string
        required: false
        description: Represents the invoice issuer
      status:
        type: string
        required: false
        description: Represents the invoice status
      totalAmount:
        type: string
        required: false
        description: Represents the invoice total amount
      currency:
        type: string
        required: false
        description: Represents the currency used in invoice
      type:
        type: string
        required: false
        description: Represents the invoice or credit note
      dueDate:
        type: string
        required: false
        description: Represents the invoice due date
      attachmentCount:
        type: number
        required: false
        description: Represents the number of attachments associated with invoice number
      batchSource:
        type: string
        required: true
        description: Represents the invoice generated source
      invoiceSpecificationAvailable:
        type: boolean
        required: false
        description: Represents the invoice specification report available or not
      parentInvoiceNumber:
        type: string
        required: false
        description: Represents the parent invoice number

/api/invoices/{apiCustomerNumber}{mediaTypeExtension}:
  displayName: List of all Invoices
  description: Gets the list of invoices corresponding to the given customer number.
               By default it shows last 65 days of invoices, with the possibility to access last 365 days by providing "fromDate" and "toDate".
               This endpoint supports Parcel Domestic, Parcel International and Cargo customers.
  uriParameters:
    apiCustomerNumber:
      enum: [ Main customer number,EXPRESS_SWEDEN-xxxxx,EXPRESS_NORWAY-xxxxx,EXPRESS_DENMARK-xxxxx,EXPRESS_FINLAND-xxxxx]
      description: Unique API Customer Number.
    mediaTypeExtension:
      enum: [ .json, .xml ]
      description: Use .json to specify application/json or .xml to specify application/xml
  get:
    description: List of invoices
    headers:
      X-MyBring-API-Uid:
        description: Your Mybring login ID
      X-MyBring-API-Key:
        description: Your user's API key
      X-Bring-Client-URL:
        description: A URL that sort of identifies where you're using the APIs.
    queryParameters:
      fromDate:
        description: Start date for fetching invoices in format dd.mm.yyyy.
        type: string
        required: false
        example: 15.01.2020
      toDate:
        description: End date for fetching invoices in format dd.mm.yyyy.
        type: string
        required: false
        example: 25.01.2020
      invoicesWithSpecification:
        description: Displays only invoices with available specifications when set to true.
        type: boolean
        required: false
        example: true
    responses:
      200:
        displayName: Successful response
        description:
        body:
          application/json:
            type: Invoices
            examples:
              successful:
                displayName: Successful
                description: The example below shows an list of invoices
                value: !include example/list_invoices.json
          application/xml:
            type: Invoices
            examples:
              successful:
                displayName: Successful
                description: The example below shows an list of invoices
                value: !include example/list_invoices.xml

/pdf/{apiCustomerNumber}/{invoiceNumber}.pdf:
  displayName: Invoice PDF download endpoint
  description: This link is used to download the invoice pdf for the customers by providing API customer number and invoice number in URI params.
  uriParameters:
    apiCustomerNumber:
      description: Unique API Customer Number for each customer.
    invoiceNumber:
      description: Invoice number of the particular invoice to be downloaded.
  get:
    description: Download pdf for invoice

#%RAML 1.0
title: Invoice API
baseUri: https://www.mybring.com/invoicearchive
types:
  Invoices:
    type: object
    properties:
      customerNumber:
        type: string
        required: false
        description: Represents a customerNumber
      invoiceNumber:
        type: string
        required: true
        description: Represents a invoiceNumber
      invoiceDate:
        type: string
        required: true
        description: Represents a invoice date
      invoiceIssuer:
        type: string
        required: false
        description: Represents the invoice issuer
      status:
        type: string
        required: false
        description: Represents the invoice status
      totalAmount:
        type: string
        required: false
        description: Represents the invoice total amount
      currency:
        type: string
        required: false
        description: Represents the currency used in invoice
      type:
        type: string
        required: false
        description: Represents the invoice or credit note
      dueDate:
        type: string
        required: false
        description: Represents the invoice due date
      attachmentCount:
        type: number
        required: false
        description: Represents the number of attachments associated with invoice number
      batchSource:
        type: string
        required: true
        description: Represents the invoice generated source
      invoiceSpecificationAvailable:
        type: boolean
        required: false
        description: Represents the invoice specification report available or not
      parentInvoiceNumber:
        type: string
        required: false
        description: Represents the parent invoice number

/api/invoices/{apiCustomerNumber}{mediaTypeExtension}:
  displayName: List of all Invoices
  description: Gets the list of invoices corresponding to the given customer number.
               By default it shows last 65 days of invoices, with the possibility to access last 365 days by providing "fromDate" and "toDate".
               This endpoint supports Parcel Domestic, Parcel International and Cargo customers.
  uriParameters:
    apiCustomerNumber:
      enum: [ Main customer number,EXPRESS_SWEDEN-xxxxx,EXPRESS_NORWAY-xxxxx,EXPRESS_DENMARK-xxxxx,EXPRESS_FINLAND-xxxxx]
      description: Unique API Customer Number.
    mediaTypeExtension:
      enum: [ .json, .xml ]
      description: Use .json to specify application/json or .xml to specify application/xml
  get:
    description: List of invoices
    headers:
      X-MyBring-API-Uid:
        description: Your Mybring login ID
      X-MyBring-API-Key:
        description: Your user's API key
      X-Bring-Client-URL:
        description: A URL that sort of identifies where you're using the APIs.
    queryParameters:
      fromDate:
        description: Start date for fetching invoices in format dd.mm.yyyy.
        type: string
        required: false
        example: 15.01.2020
      toDate:
        description: End date for fetching invoices in format dd.mm.yyyy.
        type: string
        required: false
        example: 25.01.2020
      specifiedInvoices:
        description: Displays only invoices with available specifications when set to true.
        type: boolean
        required: false
        example: true
    responses:
      200:
        displayName: Successful response
        description:
        body:
          application/json:
            type: Invoices
            examples:
              successful:
                displayName: Successful
                description: The example below shows an list of invoices
                value: !include example/list_invoices.json
          application/xml:
            type: Invoices
            examples:
              successful:
                displayName: Successful
                description: The example below shows an list of invoices
                value: !include example/list_invoices.xml

/pdf/{apiCustomerNumber}/{invoiceNumber}.pdf:
  displayName: Invoice PDF download endpoint
  description: This link is used to download the invoice pdf for the customers by providing API customer number and invoice number in URI params.
  uriParameters:
    apiCustomerNumber:
      description: Unique API Customer Number for each customer.
    invoiceNumber:
      description: Invoice number of the particular invoice to be downloaded.
  get:
    description: Download pdf for invoice


Fix JSON schema syntax

Fix JSON schema syntax

#%RAML 0.8
---
title: e-BookMobile API
baseUri: http://api.e-bookmobile.com/{version}
version: v1

/authors:
  get:
    description: Retrieve a list of authors
    responses:
      200:
        body:
          application/json:
            schema: |
              {
                "$schema": "http://json-schema.org/draft-04/schema#",
                "description": "schema for a list of authors",
                "type": "object",
                "properties": {
                  "data": {
                    "type": "array",
                    "items": {
                      "type": "object",
                      "properties": {
                        "id": {
                          "type": "number"
                        },
                        "first_name": {
                          "type": "string"
                        },
                        "last_name": {
                          "type": "string"
                        }
                      }
                    }
                  }
                }
              }

#%RAML 0.8
---
title: e-BookMobile API
baseUri: http://api.e-bookmobile.com/{version}
version: v1

/authors:
  get:
    description: Retrieve a list of authors
    responses:
      200:
        body:
          application/json:
            schema: |
              {
                "$schema": "http://json-schema.org/draft-04/schema#",
                "description": "schema for a list of authors",
                "type": "object",
                "properties": {
                  "data": {
                    "type": "array",
                    "items": {
                      "type": "object",
                      "properties": {
                        "id": "number",
                        "first_name": "string",
                        "last_name": "string"
                      }
                    }
                  }
                }
              }


Updated content and supported extensions

#%RAML 0.8
---
title: Invoice API
baseUri: https://www.mybring.com

documentation:
- title: Introduction
  content: |
      The Invoice API is used to download the invoice pdfs same as in Mybring.

- title: Authentication
  content: |
    The Invoice API requires authentication for all its endpoints. See the [getting started guide on authentication](/api/#authentication) if you're not sure what this means.

    | Header | Example | Comment |
    |:-------|:--------|:--------|
    | `X-MyBring-API-Uid` | `john.doe@example.com` | Mybring login ID |
    | `X-MyBring-API-Key` | `1234abc-abcd-1234-5678-abcd1234abcd ` | Mybring login's API key |
    | `X-Bring-Client-URL` | `https://example.com/ ` | A URL that sort of identifies where you're using the APIs. |

    Those headers must be present for authenticating requests.

/invoicearchive/pdf/{customerNumberUnique}/{invoiceNumber}.pdf:
  displayName: Invoice PDF download endpoint
  securedBy: [mybring_headers, null]
  description: |
      This link is used to download the invoice pdf for the customers by providing API Customer Id and invoice number in URI params.

  uriParameters:
    customerNumberUnique:
      description: Unique API Customer Number for each customer.
    invoiceNumber:
      description: Invoice number of the particular invoice to be downloaded.

  get:
    description: Download pdf for invoice

/reports/api/invoices/{customerOrGroupId}{mediaTypeExtension}:
  displayName: List of all Invoices
  description: |
    Use the existing [Reports Api List invoice numbers](/api/reports/#list-invoice-numbers) for this feature. Gets the list of invoice numbers for a customer id or a customer group. By default it shows last 65 days of invoices, with the possibilty to access 365 days data by providing from date and to date.
  uriParameters:
      customerOrGroupId:
        description: Id for customer or customer group. Customer group id should have the prefix `GROUP_` e.g. GROUP_12345
        type: string
        required: true
      mediaTypeExtension:
        enum: [ .json, .xml ]
        description: Use .json to specify application/json or .xml to specify application/xml

  get:
    description: List invoice numbers
    queryParameters:
      fromDate:
        description: Start date for fetching invoices in format dd.mm.yyyy.
        type: string
        required: false
        example: 01.01.2019
      toDate:
        description: End date for fetching invoices in format dd.mm.yyyy.
        type: string
        required: false
        example: 30.06.2019

/invoicearchive/api/invoices/{customerNumberUnique}{mediaTypeExtension}:
  displayName: List of all Invoices (NEW)
  description: |
    Gets all the invoice numbers corresponding to primary customer and its cross references based on "fetchAll" indicator for the given API customer number. By default it shows last 365 days of invoices, with the possibilty filtering by providing from date and to date.
  uriParameters:
      customerNumberUnique:
        description: Unique API Customer Number for each customer.
        type: string
        required: true
      mediaTypeExtension:
        enum: [ .json, .xml ]
        description: Use .json to specify application/json or .xml to specify application/xml

  get:
    description: List invoice numbers
    queryParameters:
      fromDate:
        description: Start date for fetching invoices in format mm.dd.yyyy.
        type: string
        required: false
        example: 01.01.2019
      toDate:
        description: End date for fetching invoices in format mm.dd.yyyy.
        type: string
        required: false
        example: 01.30.2019
      fetchAll:
        description: Indicator to fetch all invoices including cross references in case of customer master number
        type: boolean
        required: false
        default value: true
        example: true or false

#%RAML 0.8
---
title: Invoice API
baseUri: https://www.mybring.com

documentation:
- title: Introduction
  content: |
      The Invoice API is used to download the invoice pdfs same as in Mybring.

- title: Authentication
  content: |
    The Invoice API requires authentication for all its endpoints. See the [getting started guide on authentication](/api/#authentication) if you're not sure what this means.

    | Header | Example | Comment |
    |:-------|:--------|:--------|
    | `X-MyBring-API-Uid` | `john.doe@example.com` | Mybring login ID |
    | `X-MyBring-API-Key` | `1234abc-abcd-1234-5678-abcd1234abcd ` | Mybring login's API key |
    | `X-Bring-Client-URL` | `https://example.com/ ` | A URL that sort of identifies where you're using the APIs. |

    Those headers must be present for authenticating requests.

/invoicearchive/pdf/{customerNumberUnique}/{invoiceNumber}.pdf:
  displayName: Invoice PDF download endpoint
  securedBy: [mybring_headers, null]
  description: |
      This link is used to download the invoice pdf for the customers by providing API Customer Id and invoice number in URI params.

  uriParameters:
    customerNumberUnique:
      description: Unique API Customer Number for each customer.
    invoiceNumber:
      description: Invoice number of the particular invoice to be downloaded.

  get:
    description: Download pdf for invoice

/reports/api/invoices/{customerOrGroupId}{mediaTypeExtension}:
  displayName: List of all Invoices
  description: |
    Use the existing [Reports Api List invoice numbers](/api/reports/#list-invoice-numbers) for this feature. Gets the list of invoice numbers for a customer id or a customer group. By default it shows last 65 days of invoices, with the possibilty to access 365 days data by providing from date and to date.
  uriParameters:
      customerOrGroupId:
        description: Id for customer or customer group. Customer group id should have the prefix `GROUP_` e.g. GROUP_12345
        type: string
        required: true
      mediaTypeExtension:
        enum: [ .json, .xml ]
        description: Use .json to specify application/json or .xml to specify application/xml

  get:
    description: List invoice numbers
    queryParameters:
      fromDate:
        description: Start date for fetching invoices in format dd.mm.yyyy.
        type: string
        required: false
        example: 01.01.2019
      toDate:
        description: End date for fetching invoices in format dd.mm.yyyy.
        type: string
        required: false
        example: 30.06.2019

/invoicearchive/api/invoices/{customerNumberUnique}.{extension}:
  displayName: List of all Invoices (NEW)
  description: |
    Gets the list of invoice numbers for the given API customer number based on "fetchAll" indicator to decide invoices to be retrieved for all the cross reference in case of customer master number. By default it shows last 365 days of invoices, with the possibilty filtering by providing from date and to date.
  uriParameters:
      customerNumberUnique:
        description: Unique API Customer Number for each customer.
        type: string
        required: true
      mediaTypeExtension:
              enum: [ .json, .xml ]
              description: Use .json to specify application/json or .xml to specify application/xml

  get:
    description: List invoice numbers
    queryParameters:
      fromDate:
        description: Start date for fetching invoices in format dd.mm.yyyy.
        type: string
        required: false
        example: 01.01.2019
      toDate:
        description: End date for fetching invoices in format dd.mm.yyyy.
        type: string
        required: false
        example: 30.06.2019
      fetchAll:
        description: Indicator to fetch all invoices including cross references in case of customer master number
        type: boolean
        required: false
        default value: true
        example: true or false


Update api.raml

Update api.raml

#%RAML 0.8
---
title: Pickup Point API
baseUri: https://api.bring.com/pickuppoint/api/pickuppoint

documentation:
- title: Introduction
  content: |

        Final deadline for authenticating Pickup Point API requests - 15th of February 2021

            We have now started to limit the data in the responses for unauthenticated requests:

             - From 01.11.2020, coordinates and map links have been removed from all responses.
             - From 09.11.2020, only 1 pickup point will be returned in the responses for the postal code and location endpoints

            From Monday 11th of January, we will start rate limiting the responses of the Pickup Point API. The rate limit (requests per minute) will be lowered week by week until the final deadline for authentication - 15th of February 2021. After this date, unauthenticated requests will not be accepted.

            We recommend making the adjustment as soon as possible to avoid any problems with your integration setup.

      The Pickup point API provides a list of locations for package pickup. Based on a specified postal code or a geographical location, the 10 nearest pickup points are returned, sorted by driving time by car(source: Google). In instances where google is unable to retrieve driving times from a location to a pickup point(e.g. location on mainland and pickup point on an island), these pickup points will be sorted by aerial distance and placed last in the list. Response is available as either XML or JSON.

      A pickup point is defined as any location delivering shipments on behalf of Bring and Posten, such as post offices, selected grocery stores, lockers, etc.

      It is important to note, there are two sets of addresses in the response, postbox(address, postalCode) and visiting address(visitingAddress,visitingPostalCode).Postbox address is required to get a package produced correctly, use this AS RECIPIENT address on label. Visiting address is more appropriate for user interface (Street address of the PIB).

      ### Filtering results

      In addition to postal code or location, one or more optional parameters can be added to the request, adding additional restrictions to the pickup points being returned. One such parameter is `searchForText=<texts>`, resulting in a response where all pickup points have at least a partial match with the search string given in `<texts>`. This can be the name of the pickup point, its address, city, county, municipality or location. Go to the reference table or see additional examples for more information.

      ### Rate limiting

      The Pickup point API had a rate limit, primarily considered on a per-user basis.

      Since the Pickup Point API became authenticated from 01.11.2020, it is mandatory to be authenticated.

      There will be no rate limiting once you authenticate yourself before calling Pickuppoint API.

      #### Distinct PickupPointType

      Norway :
        - Type 4  : Post i Butikk
        - Type 19 : Posten pakkeutlevering
        - Type 21 : Postkontor
        - Type 27 : Pakkeautomat
        - Type 32 : Postpunkt, egendrevet
        - Type 33 : Postpunkt
        - Type 37 : Pakkeboks

      Sweden :
        - Type 34 : Manned

      Denmark :
        - Type 85 : Manned
        - Type 86 : Locker

      Finland :
        - Type SmartPOST  : Finland Smart Post Pickup
        - Type Posti      : Finland Posti Pickup Point
        - Type Noutopiste : Finland Pickup Point
        - Type LOCKER     : Finland Locker Pickup Point

- title: Authentication
  content: |
      The Pickup Point API requires authentication. To make API requests, you will need an API key from Mybring. Steps for getting a key and description of headers can be found on the general API [Getting Started / Authentication](/api/#authentication) page.

/{countryCode}/postalCode/{postalCode}{mediaTypeExtension}:
  displayName: Pickup points for postal code
  uriParameters:
    countryCode:
      displayName: Country
      enum: [ "NO", "DK", "SE", "FI" ]
    postalCode:
      displayName: Postal code
      type: string
    mediaTypeExtension:
      enum: [ .json, .xml ]
      description: Use .json to get application/json, .xml to get application/xml or .html to get HTML.
  get:
    description: List pickup points for postal code
    queryParameters:
      searchForText:
        displayName: Text filter
        type: string
      openingHoursSearchType:
        displayName: Filter using opening hours
        enum: [ ALL_WEEKDAYS, MONDAY, TUESDAY, WEDNESDAY, THURSDAY, FRIDAY, SATURDAY, SUNDAY ]
      openOnOrBefore:
        description: Format `HHmm`. Return only pickup points that are open on or before the specified time.
        type: string
        pattern: ^([01][0-9]|2[0-3])[0-5][0-9]$
      openOnOrAfter:
        description: Format `HHmm`. Return only pickup points that are open on or after the specified time.
        type: string
        pattern: ^([01][0-9]|2[0-3])[0-5][0-9]$
      pickupPointType:
        displayName: Pickup-point type
        description: Currently available for Swedish, Finnish and Danish pickup point request only.
        enum: [ manned, locker ]
      numberOfResponses:
        description: Return the specified number of pickup points instead of the default. Try this param to get more pickup points, if a desired pickup point is missing in the response.
        type: integer
        default: 10
      street:
        description: Searches for the nearest pickup points to the given street. Use this param to get more accurate result.
        type: string
      streetNumber:
        description: Searches for the nearest pickup points to the given street number.Use this param to get more accurate result.
        type: string
      callback:
        description: JSONP callback function name.
        type: string
      requestCountryCode:
        description: Country code of the requester. Only applicable for Norwegian pickup points.
        type: string
    responses:
      200:
        displayName: Example response for NO/postalCode/1407
        body:
          application/json:
            example: !include examples/by_postal_code.json
          application/xml:
            example: !include examples/by_postal_code.xml
      250:
        displayName: Using postal code and street address
        description: |
          Sometimes (especially in Denmark) it's a good idea to also specify the address when searching for pickup points, to get more accurate results.

          In [this example](https://api.bring.com/pickuppoint/api/pickuppoint/DK/postalCode/2000.json?street=Smallegade&streetNumber=3), we look for pickup points in Smallegade 3, 2000 Frederiksberg.
        body:
          application/json:
            example: !include examples/filter_address.json
          application/xml:
            example: !include examples/filter_address.xml
      251:
        displayName: Find pickup points containing a specific string
        description: |
          If you want to return only the pickup points matching a specific string, you may use the `searchForText` query param. The given text can be the name of the pickup point, its address, city, county, municipality or location. Partial matches are also allowed.

          In [this example](https://api.bring.com/pickuppoint/api/pickuppoint/NO/postalCode/1407.json?searchForText=KIWI), we look for pickup points near NO/1407 cotaining "Kiwi".
        body:
          application/json:
            example: !include examples/filter_search.json
          application/xml:
            example: !include examples/filter_search.xml
      252:
        displayName: Find pickup points open on specific days
        description: |
          If you want to return only the pickup points open on specified days, you may use the `openingHoursSearchType=<day>` query param. `<day>` be:

          - `ALL_WEEKDAYS` (default)
          - `MONDAY`
          - `TUESDAY`
          - `WEDNESDAY`
          - `THURSDAY`
          - `FRIDAY`
          - `SATURDAY`
          - `SUNDAY`

          If you want you can also add `openOnOrBefore` and / or `openOnOrAfter`, to limit the search even more.

          In [this example](https://api.bring.com/pickuppoint/api/pickuppoint/NO/postalCode/1407.json?openingHoursSearchType=SUNDAY), we look for pickup points near NO/1407 that are open Sundays.
        body:
          application/json:
            example: !include examples/filter_days.json
          application/xml:
            example: !include examples/filter_days.xml
      253:
        displayName: Find pickup points open at specific hours
        description: |
          If you want to return only the pickup points open on specific hours, you may use the `openOnOrBefore=<time>` and/or `openOnOrAfter=<time>` query params.

          The format of `<time>` is `HHmm`.

          In [this example](https://api.bring.com/pickuppoint/api/pickuppoint/NO/postalCode/1407.json?openOnOrBefore=0800), we look for pickup points near NO/1407 open on or before 08:00.
        body:
          application/json:
            example: !include examples/filter_hours.json
          application/xml:
            example: !include examples/filter_hours.xml

/{countryCode}/location/{latitude},{longitude}{mediaTypeExtension}:
  displayName: Pickup points for location
  uriParameters:
    countryCode:
      displayName: Country
      enum: [ "NO", "DK", "SE", "FI" ]
    latitude:
      displayName: Latitude
      description: Geographic coordinate specifying the north-south position.
      type: string
    longitude:
      displayName: Longitude
      description: Geographic coordinate specifying the east-west position.
      type: string
    mediaTypeExtension:
      enum: [ .json, .xml ]
      description: Use .json to get application/json or .xml to get application/xml.
  get:
    description: List pickup points closest to location
    queryParameters:
      searchForText:
        displayName: Text filter
        type: string
      openingHoursSearchType:
        displayName: Filter using opening hours
        enum: [ ALL_WEEKDAYS, MONDAY, TUESDAY, WEDNESDAY, THURSDAY, FRIDAY, SATURDAY, SUNDAY ]
      openOnOrBefore:
        description: Format `HHmm`. Return only pickup points that are open on or before the specified time.
        type: string
        pattern: ^([01][0-9]|2[0-3])[0-5][0-9]$
      openOnOrAfter:
        description: Format `HHmm`. Return only pickup points that are open on or after the specified time.
        type: string
        pattern: ^([01][0-9]|2[0-3])[0-5][0-9]$
      pickupPointType:
        displayName: Pickup-point type
        description: Currently available for Swedish, Finnish and Danish pickup point request only.
        enum: [ manned, locker ]
      numberOfResponses:
        description: Return the specified number of pickup points instead of the default.
        type: integer
        default: 10
      street:
        description: Searches for the nearest pickup points to the given street.
        type: string
      streetNumber:
        description: Searches for the nearest pickup points to the given street number.
        type: string
      callback:
        description: JSONP callback function name.
        type: string
      requestCountryCode:
        description: Country code of the requester. Only applicable for Norwegian pickup points.
        type: string
    responses:
      200:
        displayName: Example response for location/60.395226,5.321725
        body:
          application/json:
            example: !include examples/by_coordinates.json
          application/xml:
            example: !include examples/by_coordinates.xml

/{countryCode}/id/{id}{mediaTypeExtension}:
  displayName: A specific pickup point
  uriParameters:
    countryCode:
      displayName: Country
      enum: [ "NO", DK, SE, FI ]
    mediaTypeExtension:
      enum: [ .json, .xml ]
      description: Use .json to get application/json or .xml to get application/xml.
  get:
    description: Look up a specific pickup point
    queryParameters:
      callback:
        displayName: JSONP support
        description: Callback function name.
        type: string
      requestCountryCode:
        description: Country code of the requester. Only applicable for Norwegian pickup points.
        type: string
    responses:
      200:
        displayName: Example response for id/121110
        body:
          application/json:
            example: !include examples/by_id.json
          application/xml:
            example: !include examples/by_id.xml

/{countryCode}/all{mediaTypeExtension}:
  displayName: All pickup points in a country
  uriParameters:
    countryCode:
      displayName: Country
      enum: [ "NO", DK, SE, FI ]
    mediaTypeExtension:
      enum: [ .json, .xml ]
      description: Use .json to get application/json or .xml to get application/xml.
  get:
    description: All pickup points in a country
    queryParameters:
      callback:
        displayName: JSONP support
        description: Callback function name.
        type: string
      requestCountryCode:
        description: Country code of the requester. Only applicable for Norwegian pickup points.
        type: string

/{countryCode}/postalCode/{postalCode}/default/{mediaTypeExtension}:
  displayName: Default pickup point(s) for a postal code
  uriParameters:
    countryCode:
      displayName: Country
      enum: [ "NO" ]
    postalCode:
      displayName: Postal code
      type: string
    mediaTypeExtension:
      enum: [ .json, .xml ]
      description: Use .json to get application/json or .xml to get application/xml.
  get:
    description: List default pickup point(s) for a postal code
    responses:
      200:
        displayName: Example response for postal code 1481
        body:
          application/json:
            example: !include examples/default_pickup_point_by_postal_code.json
          application/xml:
            example: !include examples/default_pickup_point_by_postal_code.xml

#%RAML 0.8
---
title: Pickup Point API
baseUri: https://api.bring.com/pickuppoint/api/pickuppoint

documentation:
- title: Introduction
  content: |

        The Pickup Point API became authenticated from 01.11.2020

            We have now started to limit the data in the responses for unauthenticated requests:

             - From 01.11.2020, coordinates and map links have been removed from all responses.
             - From 09.11.2020, only 1 pickup point will be returned in the responses for the postal code and location endpoints

            We recommend making the adjustment as soon as possible to avoid any problems with your integration setup during peak.

      The Pickup point API provides a list of locations for package pickup. Based on a specified postal code or a geographical location, the 10 nearest pickup points are returned, sorted by driving time by car(source: Google). In instances where google is unable to retrieve driving times from a location to a pickup point(e.g. location on mainland and pickup point on an island), these pickup points will be sorted by aerial distance and placed last in the list. Response is available as either XML or JSON.

      A pickup point is defined as any location delivering shipments on behalf of Bring and Posten, such as post offices, selected grocery stores, lockers, etc.

      It is important to note, there are two sets of addresses in the response, postbox(address, postalCode) and visiting address(visitingAddress,visitingPostalCode).Postbox address is required to get a package produced correctly, use this AS RECIPIENT address on label. Visiting address is more appropriate for user interface (Street address of the PIB).

      ### Filtering results

      In addition to postal code or location, one or more optional parameters can be added to the request, adding additional restrictions to the pickup points being returned. One such parameter is `searchForText=<texts>`, resulting in a response where all pickup points have at least a partial match with the search string given in `<texts>`. This can be the name of the pickup point, its address, city, county, municipality or location. Go to the reference table or see additional examples for more information.

      ### Rate limiting

      The Pickup point API had a rate limit, primarily considered on a per-user basis.

      Since the Pickup Point API became authenticated from 01.11.2020, it is mandatory to be authenticated.

      There will be no rate limiting once you authenticate yourself before calling Pickuppoint API.

      #### Distinct PickupPointType

      Norway :
        - Type 4  : Post i Butikk
        - Type 19 : Posten pakkeutlevering
        - Type 21 : Postkontor
        - Type 27 : Pakkeautomat
        - Type 32 : Postpunkt, egendrevet
        - Type 33 : Postpunkt
        - Type 37 : Pakkeboks

      Sweden :
        - Type 34 : Manned

      Denmark :
        - Type 85 : Manned
        - Type 86 : Locker

      Finland :
        - Type SmartPOST  : Finland Smart Post Pickup
        - Type Posti      : Finland Posti Pickup Point
        - Type Noutopiste : Finland Pickup Point
        - Type LOCKER     : Finland Locker Pickup Point

- title: Authentication
  content: |
      The Pickup Point API requires authentication. To make API requests, you will need an API key from Mybring. Steps for getting a key and description of headers can be found on the general API [Getting Started / Authentication](/api/#authentication) page.

/{countryCode}/postalCode/{postalCode}{mediaTypeExtension}:
  displayName: Pickup points for postal code
  uriParameters:
    countryCode:
      displayName: Country
      enum: [ "NO", "DK", "SE", "FI" ]
    postalCode:
      displayName: Postal code
      type: string
    mediaTypeExtension:
      enum: [ .json, .xml ]
      description: Use .json to get application/json, .xml to get application/xml or .html to get HTML.
  get:
    description: List pickup points for postal code
    queryParameters:
      searchForText:
        displayName: Text filter
        type: string
      openingHoursSearchType:
        displayName: Filter using opening hours
        enum: [ ALL_WEEKDAYS, MONDAY, TUESDAY, WEDNESDAY, THURSDAY, FRIDAY, SATURDAY, SUNDAY ]
      openOnOrBefore:
        description: Format `HHmm`. Return only pickup points that are open on or before the specified time.
        type: string
        pattern: ^([01][0-9]|2[0-3])[0-5][0-9]$
      openOnOrAfter:
        description: Format `HHmm`. Return only pickup points that are open on or after the specified time.
        type: string
        pattern: ^([01][0-9]|2[0-3])[0-5][0-9]$
      pickupPointType:
        displayName: Pickup-point type
        description: Currently available for Swedish, Finnish and Danish pickup point request only.
        enum: [ manned, locker ]
      numberOfResponses:
        description: Return the specified number of pickup points instead of the default. Try this param to get more pickup points, if a desired pickup point is missing in the response.
        type: integer
        default: 10
      street:
        description: Searches for the nearest pickup points to the given street. Use this param to get more accurate result.
        type: string
      streetNumber:
        description: Searches for the nearest pickup points to the given street number.Use this param to get more accurate result.
        type: string
      callback:
        description: JSONP callback function name.
        type: string
      requestCountryCode:
        description: Country code of the requester. Only applicable for Norwegian pickup points.
        type: string
    responses:
      200:
        displayName: Example response for NO/postalCode/1407
        body:
          application/json:
            example: !include examples/by_postal_code.json
          application/xml:
            example: !include examples/by_postal_code.xml
      250:
        displayName: Using postal code and street address
        description: |
          Sometimes (especially in Denmark) it's a good idea to also specify the address when searching for pickup points, to get more accurate results.

          In [this example](https://api.bring.com/pickuppoint/api/pickuppoint/DK/postalCode/2000.json?street=Smallegade&streetNumber=3), we look for pickup points in Smallegade 3, 2000 Frederiksberg.
        body:
          application/json:
            example: !include examples/filter_address.json
          application/xml:
            example: !include examples/filter_address.xml
      251:
        displayName: Find pickup points containing a specific string
        description: |
          If you want to return only the pickup points matching a specific string, you may use the `searchForText` query param. The given text can be the name of the pickup point, its address, city, county, municipality or location. Partial matches are also allowed.

          In [this example](https://api.bring.com/pickuppoint/api/pickuppoint/NO/postalCode/1407.json?searchForText=KIWI), we look for pickup points near NO/1407 cotaining "Kiwi".
        body:
          application/json:
            example: !include examples/filter_search.json
          application/xml:
            example: !include examples/filter_search.xml
      252:
        displayName: Find pickup points open on specific days
        description: |
          If you want to return only the pickup points open on specified days, you may use the `openingHoursSearchType=<day>` query param. `<day>` be:

          - `ALL_WEEKDAYS` (default)
          - `MONDAY`
          - `TUESDAY`
          - `WEDNESDAY`
          - `THURSDAY`
          - `FRIDAY`
          - `SATURDAY`
          - `SUNDAY`

          If you want you can also add `openOnOrBefore` and / or `openOnOrAfter`, to limit the search even more.

          In [this example](https://api.bring.com/pickuppoint/api/pickuppoint/NO/postalCode/1407.json?openingHoursSearchType=SUNDAY), we look for pickup points near NO/1407 that are open Sundays.
        body:
          application/json:
            example: !include examples/filter_days.json
          application/xml:
            example: !include examples/filter_days.xml
      253:
        displayName: Find pickup points open at specific hours
        description: |
          If you want to return only the pickup points open on specific hours, you may use the `openOnOrBefore=<time>` and/or `openOnOrAfter=<time>` query params.

          The format of `<time>` is `HHmm`.

          In [this example](https://api.bring.com/pickuppoint/api/pickuppoint/NO/postalCode/1407.json?openOnOrBefore=0800), we look for pickup points near NO/1407 open on or before 08:00.
        body:
          application/json:
            example: !include examples/filter_hours.json
          application/xml:
            example: !include examples/filter_hours.xml

/{countryCode}/location/{latitude},{longitude}{mediaTypeExtension}:
  displayName: Pickup points for location
  uriParameters:
    countryCode:
      displayName: Country
      enum: [ "NO", "DK", "SE", "FI" ]
    latitude:
      displayName: Latitude
      description: Geographic coordinate specifying the north-south position.
      type: string
    longitude:
      displayName: Longitude
      description: Geographic coordinate specifying the east-west position.
      type: string
    mediaTypeExtension:
      enum: [ .json, .xml ]
      description: Use .json to get application/json or .xml to get application/xml.
  get:
    description: List pickup points closest to location
    queryParameters:
      searchForText:
        displayName: Text filter
        type: string
      openingHoursSearchType:
        displayName: Filter using opening hours
        enum: [ ALL_WEEKDAYS, MONDAY, TUESDAY, WEDNESDAY, THURSDAY, FRIDAY, SATURDAY, SUNDAY ]
      openOnOrBefore:
        description: Format `HHmm`. Return only pickup points that are open on or before the specified time.
        type: string
        pattern: ^([01][0-9]|2[0-3])[0-5][0-9]$
      openOnOrAfter:
        description: Format `HHmm`. Return only pickup points that are open on or after the specified time.
        type: string
        pattern: ^([01][0-9]|2[0-3])[0-5][0-9]$
      pickupPointType:
        displayName: Pickup-point type
        description: Currently available for Swedish, Finnish and Danish pickup point request only.
        enum: [ manned, locker ]
      numberOfResponses:
        description: Return the specified number of pickup points instead of the default.
        type: integer
        default: 10
      street:
        description: Searches for the nearest pickup points to the given street.
        type: string
      streetNumber:
        description: Searches for the nearest pickup points to the given street number.
        type: string
      callback:
        description: JSONP callback function name.
        type: string
      requestCountryCode:
        description: Country code of the requester. Only applicable for Norwegian pickup points.
        type: string
    responses:
      200:
        displayName: Example response for location/60.395226,5.321725
        body:
          application/json:
            example: !include examples/by_coordinates.json
          application/xml:
            example: !include examples/by_coordinates.xml

/{countryCode}/id/{id}{mediaTypeExtension}:
  displayName: A specific pickup point
  uriParameters:
    countryCode:
      displayName: Country
      enum: [ "NO", DK, SE, FI ]
    mediaTypeExtension:
      enum: [ .json, .xml ]
      description: Use .json to get application/json or .xml to get application/xml.
  get:
    description: Look up a specific pickup point
    queryParameters:
      callback:
        displayName: JSONP support
        description: Callback function name.
        type: string
      requestCountryCode:
        description: Country code of the requester. Only applicable for Norwegian pickup points.
        type: string
    responses:
      200:
        displayName: Example response for id/121110
        body:
          application/json:
            example: !include examples/by_id.json
          application/xml:
            example: !include examples/by_id.xml

/{countryCode}/all{mediaTypeExtension}:
  displayName: All pickup points in a country
  uriParameters:
    countryCode:
      displayName: Country
      enum: [ "NO", DK, SE, FI ]
    mediaTypeExtension:
      enum: [ .json, .xml ]
      description: Use .json to get application/json or .xml to get application/xml.
  get:
    description: All pickup points in a country
    queryParameters:
      callback:
        displayName: JSONP support
        description: Callback function name.
        type: string
      requestCountryCode:
        description: Country code of the requester. Only applicable for Norwegian pickup points.
        type: string

/{countryCode}/postalCode/{postalCode}/default/{mediaTypeExtension}:
  displayName: Default pickup point(s) for a postal code
  uriParameters:
    countryCode:
      displayName: Country
      enum: [ "NO" ]
    postalCode:
      displayName: Postal code
      type: string
    mediaTypeExtension:
      enum: [ .json, .xml ]
      description: Use .json to get application/json or .xml to get application/xml.
  get:
    description: List default pickup point(s) for a postal code
    responses:
      200:
        displayName: Example response for postal code 1481
        body:
          application/json:
            example: !include examples/default_pickup_point_by_postal_code.json
          application/xml:
            example: !include examples/default_pickup_point_by_postal_code.xml