Kuehne+Nagel ShipmentEventIntegration API

Validates and accepts incoming shipment event entries from third parties. Inbound only; the specification names a third-party application as the intended publisher.

OpenAPI Specification

kuehne-nagel-shipment-event-integration-v1-openapi.json Raw ↑
{
  "openapi" : "3.0.3",
  "info" : {
    "title" : "ShipmentEventIntegration",
    "description" : "This API allows to get, view and validate incoming events for shipments from the 3rd parties (raft.ai app).",
    "termsOfService" : "https://api-guidelines.int.kn/restful-api-guidelines/current/index.html",
    "contact" : {
      "name" : "Team Pegasus",
      "url" : "https://home.kuehne-nagel.com/en/service-request-api",
      "email" : "TLL-FYIT-PEGASUS@kuehne-nagel.com"
    },
    "version" : "v1",
    "x-project-id" : "Public Event Entry service API",
    "x-api-id" : "8f77e208-8906-4227-8dd9-57a0b0048b53",
    "x-api-guideline-version" : "1.9.4",
    "x-api-version" : "1.0.1"
  },
  "servers" : [ {
    "url" : "https://internal.api.kuehne-nagel.com/integration/event/shipment/event-integration/v1"
  } ],
  "security" : [ {
    "default" : [ ]
  }, {
    "api_key" : [ ]
  } ],
  "tags" : [ {
    "name" : "Post event",
    "description" : "Post event description"
  } ],
  "paths" : {
    "/shipments/events/entries" : {
      "post" : {
        "tags" : [ "Post event" ],
        "summary" : "Validate external event entry message for shipment",
        "description" : "This API operation is to validate incoming event entry for shipment from 3rd parties. The request must be in JSON format and include a filled in form.",
        "operationId" : "ShipmentsEntries",
        "requestBody" : {
          "content" : {
            "application/json" : {
              "schema" : {
                "$ref" : "#/components/schemas/PostEventRequest"
              },
              "examples" : {
                "example1" : {
                  "$ref" : "#/components/examples/shipment-event-entries-request-post-event-success"
                }
              }
            }
          },
          "required" : true
        },
        "responses" : {
          "201" : {
            "description" : "Event successfully created."
          },
          "default" : {
            "description" : "error occurred - see status code and problem object for more information.",
            "content" : {
              "application/problem+json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/Problem"
                },
                "examples" : {
                  "example1" : {
                    "$ref" : "#/components/examples/shipment-event-entries-response-400-bad-request-1"
                  },
                  "example5" : {
                    "$ref" : "#/components/examples/shipment-event-entries-response-400-business-rule-violation"
                  },
                  "example6" : {
                    "$ref" : "#/components/examples/shipment-event-entries-response-401-unauthorized"
                  },
                  "example7" : {
                    "$ref" : "#/components/examples/shipment-event-entries-response-404-not-found"
                  },
                  "example8" : {
                    "$ref" : "#/components/examples/shipment-event-entries-response-415-unsupported-media"
                  },
                  "example9" : {
                    "$ref" : "#/components/examples/shipment-event-entries-response-503-service-unavailable"
                  },
                  "example10" : {
                    "$ref" : "#/components/examples/shipment-event-entries-response-500-internal-server-error"
                  }
                }
              }
            }
          }
        },
        "security" : [ {
          "default" : [ ]
        }, {
          "api_key" : [ ]
        } ],
        "x-throttling-tier" : "50KPerMin",
        "x-auth-type" : "Application & Application User"
      }
    }
  },
  "components" : {
    "schemas" : {
      "ProblemDetail" : {
        "type" : "object",
        "properties" : {
          "title" : {
            "maxLength" : 128,
            "type" : "string",
            "description" : "A short summary of the problem type. Written in English and readable for engineers, usually not suited for non technical stakeholders and not localized.\n",
            "example" : "The requested container is not available."
          },
          "detail" : {
            "maxLength" : 256,
            "type" : "string",
            "description" : "A human readable explanation specific to this occurrence of the problem that is helpful to locate the problem and give advice on how to proceed.\n",
            "example" : "The requested container is already in use during the requested period."
          }
        }
      },
      "Problem" : {
        "required" : [ "code", "detail", "timestamp", "title" ],
        "type" : "object",
        "properties" : {
          "code" : {
            "maxLength" : 6,
            "type" : "string",
            "description" : "Error code identifying the issue.",
            "example" : "ERR001"
          },
          "title" : {
            "maxLength" : 128,
            "type" : "string",
            "description" : "A short summary of the problem type. Written in English and readable for engineers, usually not suited for non technical stakeholders and not localized.\n",
            "example" : "The requested container is not available."
          },
          "status" : {
            "maximum" : 600,
            "exclusiveMaximum" : true,
            "minimum" : 100,
            "type" : "integer",
            "description" : "The HTTP status code generated by the origin server for this occurrence of the problem.\n",
            "format" : "int32",
            "example" : 409
          },
          "detail" : {
            "maxLength" : 256,
            "type" : "string",
            "description" : "A human readable explanation specific to this occurrence of the problem that is helpful to locate the problem and give advice on how to proceed.\n",
            "example" : "The requested container is already in use during the requested period."
          },
          "instance" : {
            "type" : "string",
            "description" : "A URI reference that identifies the specific occurrence of the problem.",
            "format" : "uri-reference",
            "example" : "/shipments/events/entries"
          },
          "timestamp" : {
            "type" : "integer",
            "description" : "The Unix Epoch time in milliseconds at which the event described  by the error occurred.\n",
            "format" : "bigint",
            "example" : 1714648020821
          },
          "details" : {
            "maxItems" : 100,
            "minItems" : 1,
            "type" : "array",
            "items" : {
              "$ref" : "#/components/schemas/ProblemDetail"
            }
          }
        }
      },
      "PostEventRequest" : {
        "required" : [ "customerCode", "eventCode", "eventDate", "eventTimezone", "reasonCode", "responsibleParty", "shipmentNumber" ],
        "type" : "object",
        "properties" : {
          "insertUser" : {
            "maxLength" : 50,
            "minLength" : 1,
            "type" : "string",
            "description" : "User that is inserting the event"
          },
          "customerCode" : {
            "maxLength" : 7,
            "minLength" : 7,
            "type" : "string",
            "description" : "Customer code"
          },
          "modeOfTransport" : {
            "maxLength" : 10,
            "type" : "string",
            "description" : "Mode of transport",
            "x-extensible-enum" : [ "AIR", "SEA", "ROAD", "PARCEL", "CEP", "RAIL" ]
          },
          "movementType" : {
            "maxLength" : 10,
            "type" : "string",
            "description" : "Movement Type",
            "x-extensible-enum" : [ "D2D", "P2D", "D2P", "P2P", "H2D", "D2H", "H2P", "P2H", "H2H", "INVALID" ]
          },
          "shipmentNumber" : {
            "maxLength" : 128,
            "type" : "string",
            "description" : "Shipment number"
          },
          "eventCode" : {
            "maxLength" : 4,
            "minLength" : 4,
            "type" : "string",
            "description" : "Event code"
          },
          "eventDate" : {
            "type" : "string",
            "description" : "Event Time",
            "format" : "datetime"
          },
          "eventTimezone" : {
            "maxLength" : 101,
            "type" : "string",
            "description" : "Local timezone of Event"
          },
          "locationCode" : {
            "maxLength" : 101,
            "type" : "string",
            "description" : "Location code for event"
          },
          "shipmentStop" : {
            "maxLength" : 101,
            "type" : "string",
            "description" : "Stop number for shipment location"
          },
          "reasonCode" : {
            "maxLength" : 4,
            "minLength" : 4,
            "type" : "string",
            "description" : "Reason code for event"
          },
          "reasonNote" : {
            "maxLength" : 101,
            "type" : "string",
            "description" : "Free text for reason note"
          },
          "eventNote" : {
            "maxLength" : 101,
            "type" : "string",
            "description" : "Free text for Event note"
          },
          "responsibleParty" : {
            "maxLength" : 40,
            "type" : "string",
            "description" : "Responsible party"
          },
          "additions" : {
            "maxItems" : 100,
            "minItems" : 1,
            "type" : "array",
            "items" : {
              "$ref" : "#/components/schemas/Addition"
            }
          }
        },
        "description" : "Event entry message for shipment as sent in the request."
      },
      "Addition" : {
        "required" : [ "qualifier", "type", "values" ],
        "type" : "object",
        "properties" : {
          "type" : {
            "maxLength" : 100,
            "type" : "string",
            "description" : "Addition Type"
          },
          "qualifier" : {
            "required" : [ "code" ],
            "type" : "object",
            "properties" : {
              "code" : {
                "maxLength" : 100,
                "type" : "string"
              }
            }
          },
          "values" : {
            "maxItems" : 100,
            "minItems" : 1,
            "type" : "array",
            "items" : {
              "maxLength" : 100,
              "type" : "string"
            }
          }
        },
        "description" : "An auxiliary business information, not represented by a dedicated field that can be added to any BO"
      }
    },
    "examples" : {
      "shipment-event-entries-response-400-bad-request-1" : {
        "summary" : "Bad Request",
        "value" : {
          "code" : "ERR003",
          "title" : "Bad Request",
          "status" : 400,
          "detail" : "The request is not valid. Please check for missing or invalid values.",
          "instance" : "/shipments/events/entries",
          "timestamp" : 1714648020821,
          "details" : [ {
            "title" : "Missing Parameter",
            "detail" : "'<fieldName>' is missing!"
          }, {
            "title" : "Invalid Parameter",
            "detail" : "'<fieldName>' is invalid! <details of validation>"
          } ]
        }
      },
      "shipment-event-entries-response-400-business-rule-violation" : {
        "summary" : "Business rule violation",
        "value" : {
          "code" : "ERR004",
          "title" : "Business rule violation",
          "status" : 400,
          "detail" : "Shipment number for this customer code not found!",
          "instance" : "/shipments/events/entries",
          "timestamp" : 1714648020821
        }
      },
      "shipment-event-entries-response-401-unauthorized" : {
        "summary" : "Unauthorized",
        "value" : {
          "code" : "ERR001",
          "title" : "Unauthorized",
          "status" : 401,
          "detail" : "User is not authenticated.",
          "instance" : "/shipments/events/entries",
          "timestamp" : 1714648020821
        }
      },
      "shipment-event-entries-response-404-not-found" : {
        "summary" : "Not found",
        "value" : {
          "code" : "ERR007",
          "title" : "Not Found",
          "status" : 404,
          "detail" : "Requested resource not found.",
          "instance" : "/shipments/events/entries",
          "timestamp" : 1714648020821
        }
      },
      "shipment-event-entries-response-415-unsupported-media" : {
        "summary" : "Unsupported media type",
        "value" : {
          "code" : "ERR002",
          "title" : "Unsupported media type",
          "status" : 415,
          "detail" : "Unsupported content type (Content type must be 'application/json)",
          "instance" : "/shipments/events/entries",
          "timestamp" : 1714648020821
        }
      },
      "shipment-event-entries-response-503-service-unavailable" : {
        "summary" : "Service Temporarily Unavailable",
        "value" : {
          "code" : "ERR005",
          "title" : "Service Temporarily Unavailable",
          "status" : 503,
          "detail" : "Service temporarily unavailable.",
          "instance" : "/shipments/events/entries",
          "timestamp" : 1714648020821
        }
      },
      "shipment-event-entries-response-500-internal-server-error" : {
        "summary" : "Internal Server Error",
        "value" : {
          "code" : "ERR006",
          "title" : "Internal Server Error",
          "status" : 500,
          "detail" : "An un-expected error occurred.",
          "instance" : "/shipments/events/entries",
          "timestamp" : 1714648020821
        }
      },
      "shipment-event-entries-request-post-event-success" : {
        "summary" : "Successful Request",
        "value" : {
          "insertUser" : "john.doe",
          "customerCode" : "CHSGI42",
          "modeOfTransport" : "ROAD",
          "movementType" : "D2D",
          "shipmentNumber" : "AI23000917",
          "eventCode" : "0500",
          "eventDate" : "2019-07-30T06:43:40.252Z",
          "eventTimezone" : "Europe/Amsterdam",
          "locationCode" : "NL_3274_KM_HDW_0000217626_544380_033",
          "shipmentStop" : "0",
          "reasonCode" : "1005",
          "reasonNote" : "FreeTextForReasonNote",
          "eventNote" : "FreeTextForEventNote",
          "responsibleParty" : "CARRIER",
          "additions" : [ {
            "type" : "references",
            "qualifier" : {
              "code" : "TID"
            },
            "values" : [ "4503054933", "7890605" ]
          } ]
        }
      }
    },
    "securitySchemes" : {
      "default" : {
        "type" : "oauth2",
        "flows" : {
          "implicit" : {
            "authorizationUrl" : "https://internal.api.kuehne-nagel.com/authorize",
            "scopes" : { }
          }
        }
      },
      "api_key" : {
        "type" : "apiKey",
        "name" : "apikey",
        "in" : "header"
      }
    }
  }
}