{"id":388,"date":"2025-10-06T12:55:36","date_gmt":"2025-10-06T12:55:36","guid":{"rendered":"https:\/\/aiportcenter.nl\/?page_id=388"},"modified":"2025-11-29T22:56:14","modified_gmt":"2025-11-29T22:56:14","slug":"terminal-operations","status":"publish","type":"page","link":"https:\/\/aiportcenter.nl\/index.php\/terminal-operations\/","title":{"rendered":"Terminal Operations"},"content":{"rendered":"\n<!-- ======= BREADCRUMB (FULL WIDTH MATCH + ADMIN LINK + WP SPACING REMOVED) ======= -->\n\n<style>\n\/* Remove WordPress default spacing ONLY for this breadcrumb block *\/\n.breadcrumb-wrapper.wp-block-html {\n  margin-top: 0 !important;\n  margin-bottom: 0 !important;\n}\n\n\/* Wrapper that matches .pc-container.polished width *\/\n.breadcrumb-container {\n  max-width: 1200px;\n  margin: -110px auto 0 auto;   \/* negative top only *\/\n  padding: 0 20px;\n  box-sizing: border-box;\n  position: relative;\n  z-index: 10;\n}\n\n\/* Styled breadcrumb bar *\/\n.breadcrumb {\n  font-family: Inter, system-ui, sans-serif;\n  font-size: 0.92rem;\n  color: var(--muted, #5b6570);\n  display: flex;\n  flex-wrap: wrap;\n  align-items: center;\n  gap: 6px;\n\n  margin-top: 8px;\n  margin-bottom: 12px;\n\n  padding: 10px 14px;\n  border-radius: 10px;\n  background: linear-gradient(180deg, rgba(10,106,176,0.06), rgba(10,106,176,0.02));\n  box-shadow: 0 2px 6px rgba(10,29,56,0.08);\n  border: 1px solid rgba(10,106,176,0.12);\n}\n\n.breadcrumb a {\n  color: var(--accent, #0a5c94);\n  text-decoration: none;\n  font-weight: 500;\n}\n\n.breadcrumb a:hover {\n  text-decoration: underline;\n}\n\n.breadcrumb .current {\n  color: var(--muted, #5b6570);\n  font-weight: 500;\n}\n<\/style>\n\n<div class=\"breadcrumb-wrapper wp-block-html\">\n<div class=\"breadcrumb-container\">\n  <nav class=\"breadcrumb\">\n\n    <a href=\"https:\/\/aiportcenter.nl\/\">Home<\/a>\n    <span>\u203a<\/span>\n\n    <a href=\"https:\/\/aiportcenter.nl\/index.php\/port-call\/\">Port-Call Data Hub<\/a>\n    <span>\u203a<\/span>\n\n    <a href=\"https:\/\/aiportcenter.nl\/index.php\/port-call\/\">Processes Timeline<\/a>\n    <span>\u203a<\/span>\n\n    <span class=\"current\">Terminal Operations<\/span>\n\n  <\/nav>\n<\/div>\n<\/div>\n\n<!-- ======= \/END BREADCRUMB ======= -->\n\n\n\n<!-- ========= PORT CALL: TERMINAL OPERATIONS (ROTTERDAM) \u2014 POLISHED DROP-IN (Datasets as Table) ========= -->\n<div class=\"pc-container polished\" id=\"terminalops-rotterdam\">\n  <header class=\"pc-hero\" role=\"banner\" aria-label=\"Terminal Operations overview\">\n    <div class=\"pc-hero-bg\" aria-hidden=\"true\"><\/div>\n    <div class=\"pc-hero-inner\">\n      <div class=\"pc-hero-eyebrow\">Port-Call Optimization at the Port of Rotterdam<\/div>\n      <h1>Terminal Operations<\/h1>\n      <p class=\"lead\">Executes the planned move set including discharge, load, and shifts under yard and vessel stowage constraints. Crane sequencing, yard stacking, reefer control, IMDG rules, and equipment dispatch are synchronized. Key measures include gross and net crane rates, truck, rail, and barge turn times, and adherence to cut-off plans. Inputs include the TOS with stow plans and yard maps, DG lists, reefer set points, and real-time exceptions. The purpose is safe, fast, and error-free cargo flow with reliable timestamps for all partners. The outcome is a stow that meets stability and trim targets and supports scheduled hinterland connections.<\/p>\n      <nav class=\"pc-steps-nav\" aria-label=\"Steps\">\n        <a href=\"#step-1\" class=\"chip\" data-step=\"1\"><span class=\"num\">1<\/span> Cargo Unloading<\/a>\n        <a href=\"#step-2\" class=\"chip\" data-step=\"2\"><span class=\"num\">2<\/span> Cargo Loading<\/a>\n        <a href=\"#step-3\" class=\"chip\" data-step=\"3\"><span class=\"num\">3<\/span> Containers Allocation<\/a>\n        <a href=\"#step-4\" class=\"chip\" data-step=\"4\"><span class=\"num\">4<\/span> Handling Equipment<\/a>\n        <a href=\"#research\" class=\"chip\" data-step=\"4\"><span class=\"num\">5<\/span> Research Problems<\/a>\n        <a href=\"#exec\" class=\"chip\" data-step=\"4\"><span class=\"num\">6<\/span> Execution Party<\/a>\n        <a href=\"#plan\" class=\"chip\" data-step=\"4\"><span class=\"num\">7<\/span> Planning Party<\/a>\n        <a href=\"#data\" class=\"chip\" data-step=\"4\"><span class=\"num\">8<\/span> Available Data<\/a>\n      <\/nav>\n    <\/div>\n  <\/header>\n\n  <aside class=\"pc-toc\" aria-label=\"On-page navigation\">\n    <div class=\"pc-toc-inner\">\n      <div class=\"pc-toc-title\">On this page<\/div>\n      <ol>\n        <li><a href=\"#step-1\">Cargo Unloading<\/a><\/li>\n        <li><a href=\"#step-2\">Cargo Loading<\/a><\/li>\n        <li><a href=\"#step-3\">Containers Allocation<\/a><\/li>\n        <li><a href=\"#step-4\">Handling Equipment<\/a><\/li>\n        <li><a href=\"#research\">Research Problems<\/a><\/li>\n        <li><a href=\"#exec\">Execution Party<\/a><\/li>\n        <li><a href=\"#plan\">Planning Party<\/a><\/li>\n        <li><a href=\"#data\">Available Data<\/a><\/li>\n      <\/ol>\n    <\/div>\n  <\/aside>\n\n  <main class=\"pc-main\">\n  <!-- Step 1 -->\n  <section class=\"pc-step card\" id=\"step-1\" data-keywords=\"discharge imports transshipment DG reefer yard first last lift KPIs\" aria-labelledby=\"title-step-1\">\n    <div class=\"card-accent\" aria-hidden=\"true\"><\/div>\n    <header class=\"card-head\">\n      <h2 id=\"title-step-1\"><span class=\"badge\">Step 1<\/span>Cargo Unloading<\/h2>\n    <\/header>\n    <p class=\"pc-desc\">Discharges import and transshipment units or bulk into the yard, tanks, or silos. Crane windows are protected, and exceptions such as damaged units or IMDG cargo follow dedicated lanes. Accurate timestamps of first and last lift support KPIs and onward connections. Yard planning enables rapid handoff to truck, rail, or barge after clearance. The purpose is fast and safe removal from the vessel\u2019s critical path. Performance is defined by zero damage and adherence to plan.<\/p>\n  <\/section>\n\n  <!-- Step 2 -->\n  <section class=\"pc-step card\" id=\"step-2\" data-keywords=\"stow outbound stability schedule cut-offs exceptions last lift trim GM\" aria-labelledby=\"title-step-2\">\n    <div class=\"card-accent\" aria-hidden=\"true\"><\/div>\n    <header class=\"card-head\">\n      <h2 id=\"title-step-2\"><span class=\"badge\">Step 2<\/span>Cargo Loading<\/h2>\n    <\/header>\n    <p class=\"pc-desc\">Builds the outbound stow to meet stability limits, schedules, and connection commitments. Loads follow optimized crane sequences and cut-off compliance. Late arrivals are handled through controlled exceptions or rolled to the next sailing. Time events feed carrier reliability metrics and berth release forecasts. The purpose is a seaworthy and schedule-compliant departure. Success is on-time last lift with compliant trim and GM.<\/p>\n  <\/section>\n\n  <!-- Step 3 -->\n  <section class=\"pc-step card\" id=\"step-3\" data-keywords=\"slotting yard stacks IMDG reefer weight connection rules reshuffles crane productivity\" aria-labelledby=\"title-step-3\">\n    <div class=\"card-accent\" aria-hidden=\"true\"><\/div>\n    <header class=\"card-head\">\n      <h2 id=\"title-step-3\"><span class=\"badge\">Step 3<\/span>Containers Allocation<\/h2>\n    <\/header>\n    <p class=\"pc-desc\">Assigns yard and onboard slots respecting weight, IMDG, reefer, and connection constraints. Balances vessel stability with crane reach and yard travel distance. Reshuffles are minimized through efficient stacking and pick-path planning. Real-time disruptions are handled through small, contained reallocations. The purpose is high throughput with minimal handling waste. Performance is measured by low restow and reshuffle counts and high crane productivity.<\/p>\n  <\/section>\n\n  <!-- Step 4 -->\n  <section class=\"pc-step card\" id=\"step-4\" data-keywords=\"cranes AGVs straddles forklifts spreaders telematics RTLS uptime moves per hour\" aria-labelledby=\"title-step-4\">\n    <div class=\"card-accent\" aria-hidden=\"true\"><\/div>\n    <header class=\"card-head\">\n      <h2 id=\"title-step-4\"><span class=\"badge\">Step 4<\/span>Handling Equipment<\/h2>\n    <\/header>\n    <p class=\"pc-desc\">Dispatches cranes, straddles or AGVs, forklifts, spreaders, and reefer racks. Maintenance status and operator availability determine usable capacity. Safety envelopes define where and when equipment may operate. Telematics and RTLS provide live location and utilization data. The purpose is to convert the plan into physical moves at target rates. Performance is measured by high uptime and moves per hour without incidents.<\/p>\n  <\/section>\n\n  <!-- Execution Party -->\n  \n  <!-- Research Problems -->\n  <section class=\"pc-step card\" id=\"research\" data-keywords=\"research quay-crane yard-vehicle-routing truck-appointment\" aria-labelledby=\"title-research\">\n    <div class=\"card-accent\" aria-hidden=\"true\"><\/div>\n    <header class=\"card-head\">\n      <h2 id=\"title-research\">Research Problems<\/h2>\n      <div class=\"sub\">Key research problems relevant to terminal operations.<\/div>\n    <\/header>\n\n    <div class=\"pc-research-note\" aria-hidden=\"false\" style=\"margin-top:10px; margin-bottom:6px; display:flex; align-items:center; gap:10px;\">\n      <span class=\"highlight-dot\" aria-hidden=\"true\" style=\"display:inline-block;width:12px;height:12px;border-radius:50%;background:linear-gradient(90deg,#74c9ff,#2aa7e8);box-shadow:0 4px 12px rgba(42,167,232,0.18);animation:pcPulse 2s infinite;\"><\/span>\n      <div class=\"instruction\" style=\"color:var(--muted);font-size:0.95rem;\">Click on a card to open the webpage and data sets for each research problem.<\/div>\n    <\/div>\n\n    <div class=\"pc-grid onecol\" style=\"margin-top:12px;\">\n      <article class=\"pc-card\" data-url=\"https:\/\/aiportcenter.nl\/index.php\/quay-crane\/\">\n        <div class=\"pc-card-head\">\n          <span class=\"pc-icon\" aria-hidden=\"true\"><svg viewBox=\"0 0 24 24\" width=\"20\" height=\"20\" fill=\"currentColor\"><path d=\"M3 7h18v10H3V7Zm2 2v6h14V9H5Z\"\/><\/svg><\/span>\n          <h3>Quay-Crane Scheduling<\/h3>\n        <\/div>\n        <p>Optimizing crane sequences and allocations to minimize vessel time alongside and maximize moves per crane-hour.<\/p>\n      <\/article>\n\n      <article class=\"pc-card\" data-url=\"https:\/\/aiportcenter.nl\/index.php\/yard-vehicle-routing\/\">\n        <div class=\"pc-card-head\">\n          <span class=\"pc-icon\" aria-hidden=\"true\"><svg viewBox=\"0 0 24 24\" width=\"20\" height=\"20\" fill=\"currentColor\"><path d=\"M4 6h16v2H4V6Zm0 5h16v2H4v-2Zm0 5h10v2H4v-2Z\"\/><\/svg><\/span>\n          <h3>Yard-Vehicle Routing<\/h3>\n        <\/div>\n        <p>Routing yard vehicles (straddles, AGVs, tractors) to reduce travel time, congestion, and energy use while respecting timing windows.<\/p>\n      <\/article>\n\n      <article class=\"pc-card\" data-url=\"https:\/\/aiportcenter.nl\/index.php\/truck-appointment-scheduling\/\">\n        <div class=\"pc-card-head\">\n          <span class=\"pc-icon\" aria-hidden=\"true\"><svg viewBox=\"0 0 24 24\" width=\"20\" height=\"20\" fill=\"currentColor\"><path d=\"M2 16h20v2H2v-2Zm2-6h8v4H4v-4Zm10-6h6v10h-6V4Z\"\/><\/svg><\/span>\n          <h3>Truck Appointment Scheduling<\/h3>\n        <\/div>\n        <p>Scheduling and slotting truck arrivals to reduce gate queues and improve terminal throughput and truck turn times.<\/p>\n      <\/article>\n    <\/div>\n  <\/section>\n\n  <section class=\"pc-step card\" id=\"exec\" data-keywords=\"crane ops yard ops reefer DG handlers horizontal transport\" aria-labelledby=\"title-exec\">\n    <div class=\"card-accent\" aria-hidden=\"true\"><\/div>\n    <header class=\"card-head\">\n      <h2 id=\"title-exec\">Execution Party<\/h2>\n      <div class=\"sub\">Below, the main companies involved in the execution of terminal operations are listed.<\/div>\n    <\/header>\n\n    <div class=\"pc-grid\">\n      <article class=\"pc-card\">\n        <div class=\"pc-card-head\">\n          <span class=\"pc-icon\" aria-hidden=\"true\"><!-- container icon --><svg viewBox=\"0 0 24 24\" width=\"20\" height=\"20\" fill=\"currentColor\"><path d=\"M3 7h18v10H3V7Zm2 2v6h14V9H5Z\"\/><\/svg><\/span>\n          <h3>Hutchison Ports ECT Rotterdam (Delta, Euromax)<\/h3>\n        <\/div>\n        <ul>\n          <li>Operates major container terminals, handling vessel ops, yard ops, rail\/barge connections, and hinterland trucking.<\/li>\n        <\/ul>\n      <\/article>\n\n      <article class=\"pc-card\">\n        <div class=\"pc-card-head\">\n          <span class=\"pc-icon\" aria-hidden=\"true\"><!-- agv\/crane icon --><svg viewBox=\"0 0 24 24\" width=\"20\" height=\"20\" fill=\"currentColor\"><path d=\"M3 20h18v2H3v-2Zm2-2h2V8h6v10h2V6h2V4H7V2H5v16Z\"\/><\/svg><\/span>\n          <h3>APM Terminals Maasvlakte II<\/h3>\n        <\/div>\n        <ul>\n          <li>Fully automated terminal using AGVs and remote-controlled cranes, driven by an advanced TOS.<\/li>\n        <\/ul>\n      <\/article>\n\n      <article class=\"pc-card\">\n        <div class=\"pc-card-head\">\n          <span class=\"pc-icon\" aria-hidden=\"true\"><!-- logistics icon --><svg viewBox=\"0 0 24 24\" width=\"20\" height=\"20\" fill=\"currentColor\"><path d=\"M4 6h16v2H4V6Zm0 5h16v2H4v-2Zm0 5h10v2H4v-2Z\"\/><\/svg><\/span>\n          <h3>Rhenus Port Logistics<\/h3>\n        <\/div>\n        <ul>\n          <li>Multipurpose logistics including warehousing, bulk\/breakbulk handling, and value-added services.<\/li>\n        <\/ul>\n      <\/article>\n\n      <article class=\"pc-card\">\n        <div class=\"pc-card-head\">\n          <span class=\"pc-icon\" aria-hidden=\"true\"><!-- multipurpose icon --><svg viewBox=\"0 0 24 24\" width=\"20\" height=\"20\" fill=\"currentColor\"><path d=\"M3 5h18v4H3V5Zm0 6h18v8H3v-8Zm2 2v4h14v-4H5Z\"\/><\/svg><\/span>\n          <h3>Hanseatic Global Terminals<\/h3>\n        <\/div>\n        <ul>\n          <li>Multipurpose terminal operator handling general cargo and storage.<\/li>\n        <\/ul>\n      <\/article>\n    <\/div>\n  <\/section>\n\n  <!-- Planning Party -->\n  <section class=\"pc-step card\" id=\"plan\" data-keywords=\"cut-offs connections stow stability trim crane windows stack strategy equipment rosters\" aria-labelledby=\"title-plan\">\n    <div class=\"card-accent\" aria-hidden=\"true\"><\/div>\n    <header class=\"card-head\">\n      <h2 id=\"title-plan\">Planning Party<\/h2>\n      <div class=\"sub\">Below, the main companies involved in planning terminal operations are listed.<\/div>\n    <\/header>\n\n    <div class=\"pc-grid\">\n      <article class=\"pc-card\">\n        <div class=\"pc-card-head\">\n          <span class=\"pc-icon\" aria-hidden=\"true\"><!-- layout icon --><svg viewBox=\"0 0 24 24\" width=\"20\" height=\"20\" fill=\"currentColor\"><path d=\"M3 3h18v18H3V3Zm2 2v14h14V5H5Zm2 2h10v4H7V7Zm0 6h6v4H7v-4Z\"\/><\/svg><\/span>\n          <h3>Port of Rotterdam Authority<\/h3>\n        <\/div>\n        <ul>\n          <li>Coordinates infrastructure usage, berth planning, and integrates terminal ops with overall port traffic flows.<\/li>\n        <\/ul>\n      <\/article>\n\n      <article class=\"pc-card\">\n        <div class=\"pc-card-head\">\n          <span class=\"pc-icon\" aria-hidden=\"true\"><!-- association icon --><svg viewBox=\"0 0 24 24\" width=\"20\" height=\"20\" fill=\"currentColor\"><path d=\"M12 2 2 7v10l10 5 10-5V7L12 2Zm0 3.1 7 3.5v.2l-7 3.5-7-3.5v-.2l7-3.5Z\"\/><\/svg><\/span>\n          <h3>Rotterdam Terminal Operators\u2019 Association (VRTO)<\/h3>\n        <\/div>\n        <ul>\n          <li>Represents terminal operators; supports harmonisation, policy input, and joint coordination.<\/li>\n        <\/ul>\n      <\/article>\n\n      <article class=\"pc-card\">\n        <div class=\"pc-card-head\">\n          <span class=\"pc-icon\" aria-hidden=\"true\"><!-- carrier icon --><svg viewBox=\"0 0 24 24\" width=\"20\" height=\"20\" fill=\"currentColor\"><path d=\"M3 7h18v10H3V7Zm2 2v6h14V9H5Z\"\/><\/svg><\/span>\n          <h3>Hapag-Lloyd<\/h3>\n        <\/div>\n        <ul>\n          <li>Global carrier coordinating berth planning and container flow scheduling with ECT and APMT.<\/li>\n        <\/ul>\n      <\/article>\n\n      <article class=\"pc-card\">\n        <div class=\"pc-card-head\">\n          <span class=\"pc-icon\" aria-hidden=\"true\"><!-- carrier icon --><svg viewBox=\"0 0 24 24\" width=\"20\" height=\"20\" fill=\"currentColor\"><path d=\"M2 16h20v2H2v-2Zm2-6h8v4H4v-4Zm10-6h6v10h-6V4Z\"\/><\/svg><\/span>\n          <h3>Evergreen Marine<\/h3>\n        <\/div>\n        <ul>\n          <li>Ocean Alliance carrier coordinating berth slots and exchanges in Rotterdam.<\/li>\n        <\/ul>\n      <\/article>\n    <\/div>\n  <\/section>\n\n  <!-- Datasets (TABLE) -->\n  <section class=\"pc-step card\" id=\"data\" data-keywords=\"TOS schedules yard planning crane windows barge rail Portbase depot map\" aria-labelledby=\"title-data\">\n    <div class=\"card-accent\" aria-hidden=\"true\"><\/div>\n    <header class=\"card-head\">\n      <h2 id=\"title-data\">Available Data<\/h2>\n      <div class=\"sub\">Free, real-time data sources and official guidance used in terminal operations in Rotterdam.<\/div>\n    <\/header>\n\n    <div class=\"pc-table-wrap\">\n      <table class=\"pc-table pc-anim-table\" role=\"table\" aria-label=\"Terminal operations datasets\">\n        <thead>\n          <tr>\n            <th scope=\"col\">Data Source<\/th>\n            <th scope=\"col\">Description<\/th>\n          <\/tr>\n        <\/thead>\n        <tbody>\n            <tr>\n              <td>\n                <a href=\"https:\/\/myterminal.ect.nl\/\" target=\"_blank\" rel=\"noopener\">ECT \u2014 MyTerminal<\/a>\n                <div class=\"last-updated\">Last update: <time id=\"ect-last\"><\/time><\/div>\n              <\/td>\n              <td>Free account gives operational visibility for ECT (container status, visits, planning tools; premium optional).\n                <div class=\"version\">Version: Free (registration)<\/div>\n              <\/td>\n            <\/tr>\n          <tr>\n            <td>\n              <a href=\"https:\/\/www.rwg.nl\/en\/services\" target=\"_blank\" rel=\"noopener\">RWG \u2014 Services &amp; Operational Data<\/a>\n              <div class=\"last-updated\">Last update: <time id=\"rwg-last\"><\/time><\/div>\n            <\/td>\n            <td>Real-time terminal information: container statuses, handling updates, planned maintenance and disruptions.\n              <div class=\"version\">Version: Free (public)<\/div>\n            <\/td>\n          <\/tr>\n          <tr>\n            <td>\n              <a href=\"https:\/\/www.apmterminals.com\/track-and-trace\/vessel-schedule?terminal=NLMSV\" target=\"_blank\" rel=\"noopener\">APM Terminals MVII \u2014 Vessel Schedule<\/a>\n              <div class=\"last-updated\">Last update: <time id=\"apm-mvii-last\"><\/time><\/div>\n            <\/td>\n            <td>Live schedule for vessels alongside\/expected at MVII.\n              <div class=\"version\">Version: Free (public)<\/div>\n            <\/td>\n          <\/tr>\n          <tr>\n            <td>\n              <a href=\"https:\/\/www.portbase.com\/en\/services\/hinterland-container-notification-barge\/\" target=\"_blank\" rel=\"noopener\">Portbase \u2014 HCN Barge<\/a>\n              <div class=\"last-updated\">Last update: <time id=\"portbase-barge-last\"><\/time><\/div>\n            <\/td>\n            <td>Prenotify barge visits\/containers and receive handling status for rotations.\n              <div class=\"version\">Version: Free (registration)<\/div>\n            <\/td>\n          <\/tr>\n          <tr>\n            <td>\n              <a href=\"https:\/\/www.portbase.com\/en\/services\/hinterland-container-notification-road\/\" target=\"_blank\" rel=\"noopener\">Portbase \u2014 HCN Road<\/a>\n              <div class=\"last-updated\">Last update: <time id=\"portbase-road-last\"><\/time><\/div>\n            <\/td>\n            <td>Truck visit prenotification with terminal feedback for gate\/slot prep and turn-time control.\n              <div class=\"version\">Version: Free (registration)<\/div>\n            <\/td>\n          <\/tr>\n          <tr>\n            <td>\n              <a href=\"https:\/\/www.portofrotterdam.com\/sites\/default\/files\/2021-06\/container-terminals-and-depots-in-the-rotterdam-port-area.pdf\" target=\"_blank\" rel=\"noopener\">Container Terminals &amp; Depots (Rotterdam, PDF)<\/a>\n              <div class=\"last-updated\">Last update: <time id=\"depots-last\"><\/time><\/div>\n            <\/td>\n            <td>Quay lengths, drafts, cranes, and locations for feasibility checks.\n              <div class=\"version\">Version: Free (PDF)<\/div>\n            <\/td>\n          <\/tr>\n          <tr>\n            <td>\n              <a href=\"https:\/\/www.ect.nl\/sites\/www.ect.nl\/files\/2021-12\/201908id-fs017_guideline_inl_cont_shipping_en_0.pdf\" target=\"_blank\" rel=\"noopener\">ECT \u2014 Inland Container Shipping Guidelines (PDF)<\/a>\n              <div class=\"last-updated\">Last update: <time id=\"ect-guideline-last\"><\/time><\/div>\n            <\/td>\n            <td>Guidance for barge\/terminal coordination: ETA\/ETD updates, cut-offs, operational rules.\n              <div class=\"version\">Version: Free (PDF)<\/div>\n            <\/td>\n          <\/tr>\n          <tr>\n            <td>\n              <a href=\"https:\/\/www.portbase.com\/en\/marketplace\/spotlight-api\/\" target=\"_blank\" rel=\"noopener\">Portbase \u2014 Spotlight API (Berth\/Terminal Infra)<\/a>\n              <div class=\"last-updated\">Last update: <time id=\"portbase-spotlight-last\"><\/time><\/div>\n            <\/td>\n            <td>Free API with terminal\/berth location data for berth selection and planning.\n              <div class=\"version\">Version: Free (registration)<\/div>\n            <\/td>\n          <\/tr>\n        <\/tbody>\n      <\/table>\n      \n      <!-- Title placed below the table and left-aligned, just before the legend -->\n      <div class=\"pc-desc-title\">Description of Versions<\/div>\n\n    <\/div>\n      <div class=\"pc-table-legend\" aria-hidden=\"false\">\n        <p><b>Free (public):<\/b> The content is publicly accessible on the website without login or payment.<\/p>\n        <p><b>Free (registration):<\/b> The resource is free but requires creating a (free) account or signing-in to access certain features or datasets.<\/p>\n        <p><b>Free (PDF):<\/b> The resource is a downloadable PDF (static document) that is free to download and read.<\/p>\n      <\/div>\n    <\/div>\n  <\/section>\n  <\/main>\n<\/div>\n\n<style>\n    \/* Hide WordPress default page\/post title if present *\/\n    h1.entry-title, .entry-title, .page-title { display: none !important; }\n\n\/* ===== Dynamic sticky top: WP admin bar + theme header + extra offset (matches your accepted ~4 cm setting) ===== *\/\n:root{\n  --wp-adminbar: 0px;\n  --site-header: 0px;\n  --extra-offset: 160px; \/* \u22484cm; tweak here if your theme header changes *\/\n  --sticky-offset: calc(var(--wp-adminbar) + var(--site-header) + var(--extra-offset) + 12px);\n  scroll-padding-top: calc(var(--sticky-offset) + 8px);\n}\nbody.admin-bar{ --wp-adminbar: 32px; }\n@media (max-width: 782px){ body.admin-bar{ --wp-adminbar: 46px; } }\n\n\/* ===== Scoping: only style within .pc-container.polished ===== *\/\n.pc-container.polished {\n  --ink: #0b1220;\n  --muted: #5b6570;\n  --bg: #f6f8fb;\n  --card: #ffffff;\n  --accent: #0a5c94;\n  --accent-2: #7ccdf0;\n  --radius: 14px;\n  --shadow: 0 8px 28px rgba(10, 29, 56, 0.09);\n  --gap: 18px;\n  --ring: 0 0 0 3px rgba(43,176,237,.25);\n  position: relative;\n  isolation: isolate;\n  width: 100%;\n  max-width: 1200px;\n  margin: -15px;\n  padding: 20px;\n  box-sizing: border-box;\n  font-family: Inter, system-ui, Segoe UI, Roboto, Arial, sans-serif;\n  color: var(--ink);\n}\n\n\/******** Hero ********\/\n.pc-container.polished .pc-hero {\n  position: relative;\n  overflow: hidden;\n  border-radius: calc(var(--radius) + 4px);\n  padding: 28px 28px 20px;\n  box-shadow: var(--shadow);\n  background: linear-gradient(180deg, rgba(10,106,176,.03), rgba(10,106,176,.005));\n}\n.pc-container.polished .pc-hero-bg::before,\n.pc-container.polished .pc-hero-bg::after{\n  content:\"\"; position:absolute; inset:auto -10% -40% -10%; height:180px;\n  background: radial-gradient(60% 80% at 50% 0%, rgba(43,176,237,.08), transparent 70%);\n  filter: blur(40px); pointer-events:none;\n}\n.pc-container.polished .pc-hero-inner{ position: relative; z-index: 1; }\n.pc-container.polished .pc-hero-eyebrow{\n  font-size:.8rem; letter-spacing:.12em; text-transform:uppercase; color:var(--accent);\n  margin-bottom:6px; font-weight:600;\n}\n.pc-container.polished .pc-hero h1{ margin:.1rem 0 .4rem; font-size: clamp(1.4rem, 2.2vw, 2rem); letter-spacing:-.2px; }\n.pc-container.polished .lead{ margin:0; color: var(--muted); font-size: .98rem; }\n\n.pc-container.polished .pc-steps-nav{ display:flex; gap:10px; flex-wrap:wrap; margin-top:14px; }\n.pc-container.polished .chip{\n  display:inline-flex; align-items:center; gap:.5rem; padding:.48rem .72rem; border-radius:999px;\n  background: #fff; color: var(--ink); box-shadow: var(--shadow); text-decoration:none; transition: transform .2s ease, box-shadow .2s ease;\n}\n.pc-container.polished .chip .num{\n  display:inline-grid; place-items:center; width:24px; height:24px; border-radius:50%; font-size:.9rem; font-weight:700; color:#fff; background: linear-gradient(135deg, var(--accent), var(--accent-2));\n}\n.pc-container.polished .chip:hover{ transform: translateY(-2px); box-shadow: 0 10px 24px rgba(0,0,0,.10); }\n\n\/******** Sticky TOC ********\/\n.pc-container.polished .pc-toc{ position: sticky; top: var(--sticky-offset); margin: 18px 0; z-index: 3; }\n.pc-container.polished .pc-toc-inner{\n  border-radius: var(--radius); background: #ffffff; box-shadow: var(--shadow); padding: 14px 16px; border: 1px solid rgba(10,106,176,.10);\n}\n.pc-container.polished .pc-toc-title{ font-size:.9rem; font-weight:700; margin-bottom:6px; color: var(--accent); }\n.pc-container.polished .pc-toc ol{ list-style:none; padding:0; margin:0; display:grid; gap:6px; }\n.pc-container.polished .pc-toc a{ color: var(--ink); text-decoration:none; padding:6px 8px; border-radius:8px; display:block; }\n.pc-container.polished .pc-toc a:is(:hover,:focus){ background: rgba(43,176,237,.08); box-shadow: var(--ring); outline: none; }\n.pc-container.polished .pc-toc a.active{ background: linear-gradient(180deg, rgba(43,176,237,.12), rgba(43,176,237,.06)); }\n\n\/******** Cards ********\/\n.pc-container.polished .card{\n  position: relative; background: var(--card); border-radius: var(--radius); padding: 18px; margin: 16px 0; box-shadow: var(--shadow);\n}\n.pc-container.polished .card-head h2{ font-size: 1.2rem; margin: 0 0 6px; display:flex; align-items:center; gap:10px; }\n.pc-container.polished .card-head .sub{ color: var(--muted); font-size:.95rem; }\n.pc-container.polished .badge{ display:inline-flex; align-items:center; justify-content:center; height:24px; padding:0 8px; font-size:.75rem; border-radius:6px; background: linear-gradient(135deg, var(--accent), var(--accent-2)); color:#fff; box-shadow: inset 0 -1px 0 rgba(255,255,255,.25); }\n.pc-container.polished .pc-desc{ color: var(--muted); margin: 0 0 10px; }\n\/* Ensure anchor scrolling accounts for sticky bars *\/\n.pc-container.polished .pc-step{ scroll-margin-top: calc(var(--sticky-offset) + 16px); }\n.pc-container.polished .card-accent{\n  position:absolute; inset:0; border-radius: inherit; padding:1px; background: linear-gradient(135deg, rgba(10,106,176,.28), rgba(43,176,237,.28)); -webkit-mask: linear-gradient(#000 0 0) content-box, linear-gradient(#000 0 0);\n  mask: linear-gradient(#000 0 0) content-box, linear-gradient(#000 0 0);\n  -webkit-mask-composite: xor; mask-composite: exclude; pointer-events:none; opacity:.7;\n}\n\n\/* Hide the decorative blue accent for the Research card only (we use a pulsing dot hint instead) *\/\n.pc-step#research .card-accent{ display: none !important; }\n\n\/* Research hint: use the same pulsing highlight-dot as in Berth Visit for visual parity *\/\n.pc-research-hint{ display:inline-flex; align-items:center; gap:10px; margin-left:12px; font-size:.95rem; }\n.pc-research-hint .dot{ display:inline-block; width:12px; height:12px; border-radius:50%; background: linear-gradient(90deg,#74c9ff,#2aa7e8); box-shadow:0 4px 12px rgba(42,167,232,0.18); animation:pcPulse 2s infinite; }\n.pc-research-hint .hint-text{ color:var(--muted); font-size:0.95rem; }\n@keyframes pcPulse { 0%,100%{ transform:scale(1); } 50%{ transform:scale(1.18); } }\n\n\/******** Grid for org cards ********\/\n.pc-container.polished .pc-grid{ display:grid; grid-template-columns: repeat(12, 1fr); gap: 14px; margin-top: 10px; }\n.pc-container.polished .pc-grid.onecol{ grid-template-columns: repeat(12, 1fr); }\n.pc-container.polished .pc-card{ grid-column: span 6; background:#fff; border:1px solid rgba(10,106,176,.10); border-radius: 12px; padding: 14px; transition: transform .2s ease, box-shadow .2s ease; }\n.pc-container.polished .pc-card:hover{ transform: translateY(-4px); box-shadow: 0 14px 28px rgba(10, 29, 56, .12); }\n.pc-container.polished .pc-card.list{ grid-column: 1 \/ -1; }\n.pc-container.polished .pc-card-head{ display:flex; align-items:center; gap:10px; margin-bottom:6px; }\n.pc-container.polished .pc-card h3{ margin:0; font-size:1.05rem; font-weight:700; }\n.pc-container.polished .pc-card ul{ margin:0; padding-left: 1.15rem; color: var(--muted); }\n.pc-container.polished .pc-icon{ display:inline-grid; place-items:center; width:28px; height:28px; border-radius:8px; background: linear-gradient(135deg, rgba(10,106,176,.15), rgba(43,176,237,.15)); color: var(--accent); flex-shrink:0; }\n.pc-container.polished .pc-icon svg{ display:block; }\n\n\/******** Links ********\/\n.pc-container.polished a{ color: var(--accent); text-decoration: none; }\n.pc-container.polished a:hover{ text-decoration: underline; }\n\n\/******** Layout ********\/\n@media (min-width: 900px){\n  \/* Two-column grid: TOC left (fixed 260px), content right (auto height), no overlap *\/\n  .pc-container.polished{ display:grid; grid-template-columns: 260px 1fr; gap:20px; align-items:start; }\n  .pc-container.polished .pc-hero{ grid-column: 1 \/ -1; }\n  .pc-container.polished .pc-toc{ grid-column: 1; align-self:start; }\n  .pc-container.polished .pc-main{ grid-column: 2; min-width:0; }\n}\n@media (max-width: 899.98px){\n  .pc-container.polished .pc-grid{ grid-template-columns: repeat(6, 1fr); }\n  .pc-container.polished .pc-card{ grid-column: 1 \/ -1; }\n}\n\n\/******** Accessible focus ********\/\n.pc-container.polished :is(a,button,[tabindex]){ outline: none; }\n.pc-container.polished :is(a,button,[tabindex]):focus{ box-shadow: var(--ring); border-radius: 8px; }\n\n\/* ===== Datasets table (sharp corners, full grid, table-only hover) ===== *\/\n.pc-table-wrap{ margin-top: 10px; }\n\n.pc-table{\n  width: 100%;\n  border-collapse: collapse;\n  background: #fff;\n  border: 1px solid rgba(10,106,176,.25);   \/* single outer border *\/\n  border-radius: 0;                          \/* sharp corners *\/\n  table-layout: fixed;\n}\n\n.pc-table th,\n.pc-table td{\n  border: 1px solid rgba(10,106,176,.2);     \/* full grid *\/\n  padding: 10px 12px;\n  vertical-align: top;\n  word-wrap: break-word;\n}\n\n\/* Header: centered black text, light transparent blue background *\/\n.pc-table thead th{\n  background: rgba(215,236,251,0.55);\n  color: #000;\n  font-weight: 700;\n  text-align: center;\n}\n\n\/* Body base *\/\n.pc-table tbody td{ text-align: left; }\n\n\/* Column colors: Data (blue), Description (muted grey) *\/\n.pc-table tbody td:first-child{\n  color: #084EAE; \/* slightly darker blue (LinkedIn-like) *\/\n}\n.pc-table tbody td:first-child a{\n  color: #084EAE;\n  text-decoration: none;\n}\n.pc-table tbody td:first-child a:hover{\n  text-decoration: underline;\n}\n.pc-table tbody td:nth-child(2){\n  color: var(--muted);\n}\n\n\/* Gentle hover lift on the table (no container\/card movement) *\/\n.pc-anim-table{\n  transition: transform .16s ease, box-shadow .16s ease;\n  will-change: transform;\n}\n.pc-anim-table:hover,\n.pc-anim-table:focus-within{\n  transform: translateY(-3px);\n  box-shadow: 0 10px 24px rgba(10, 29, 56, 0.12);\n}\n\n@media (prefers-reduced-motion: reduce){\n  .pc-anim-table{ transition: none; }\n  .pc-anim-table:hover,\n  .pc-anim-table:focus-within{ transform: none; box-shadow: none; }\n}\n<\/style>\n\n<style>\n\/* Small title when placed below the table *\/\n.pc-desc-title{ color: #000; font-weight:700; font-size: .95rem; text-align: left; margin: 10px 0 6px; }\n\n\/* Legend headings match link blue but render normal weight *\/\n.pc-table-legend{ margin-top: 12px; font-size: .95rem; color: var(--muted); }\n.pc-table-legend b{ color: #084EAE; font-weight: 400; }\n\n\/* Left-column small 'last-updated' text only *\/\n.pc-table tbody td:first-child .last-updated{\n  color: #666;\n  display: block;\n  font-size: .9rem;\n  margin-top: 6px;\n  font-style: italic;\n}\n\n\/* Version text for right-column descriptions *\/\n.pc-table tbody td:nth-child(2) .version{\n  color: var(--muted);\n  display: block;\n  font-size: .92rem;\n  margin-top: 8px;\n  font-style: italic;\n}\n<\/style>\n<script>\n\/\/ ===== Research Problems \u2014 make .pc-card clickable and keyboard accessible =====\n(function () {\n  try {\n    var researchLinks = [\n      { title: 'Quay-Crane Scheduling', url: 'https:\/\/aiportcenter.nl\/index.php\/quay-crane\/' },\n      { title: 'Yard-Vehicle Routing', url: 'https:\/\/aiportcenter.nl\/index.php\/yard-vehicle-routing\/' },\n      { title: 'Truck Appointment Scheduling', url: 'https:\/\/aiportcenter.nl\/index.php\/truck-appointment-scheduling\/' }\n    ];\n    \/\/ optional external mapping by index (left undefined previously in some pages)\n    var linksByIndex = [];\n\n    const section = document.getElementById('research');\n    if(!section) return;\n\n    const cards = Array.from(section.querySelectorAll('.pc-card'));\n    cards.forEach((card, idx) => {\n      const h3 = card.querySelector('h3');\n      const title = h3 ? h3.textContent.trim() : null;\n      const dataUrl = card.dataset && (card.dataset.url || card.dataset.href || card.dataset.link);\n      let mapping = null;\n      if(dataUrl) mapping = { url: dataUrl };\n      if(!mapping) mapping = researchLinks.find(r => r.title === title && r.url);\n      if(!mapping && linksByIndex[idx]) mapping = { url: linksByIndex[idx] };\n\n      if(mapping && mapping.url){\n        \/\/ Make keyboard accessible\n        card.tabIndex = 0;\n        card.setAttribute('role','link');\n        card.style.cursor = 'pointer';\n\n        \/\/ Click \/ keyboard handlers\n        card.addEventListener('click', (e) => { window.open(mapping.url, '_blank'); });\n        card.addEventListener('keydown', (ev) => { if(ev.key === 'Enter' || ev.key === ' '){ ev.preventDefault(); window.open(mapping.url, '_blank'); } });\n\n        \/\/ Add an invisible anchor overlay to preserve pointer semantics\n        const anchor = document.createElement('a');\n        anchor.href = mapping.url;\n        anchor.target = '_blank';\n        anchor.rel = 'noopener noreferrer';\n        anchor.setAttribute('aria-hidden','true');\n        anchor.style.position = 'absolute';\n        anchor.style.inset = '0';\n        anchor.style.zIndex = '2';\n        anchor.style.background = 'transparent';\n        anchor.style.textDecoration = 'none';\n        const pos = getComputedStyle(card).position;\n        if(!pos || pos === 'static') card.style.position = 'relative';\n        card.appendChild(anchor);\n      }\n    });\n\n    \/\/ Ensure the TOC entry exists and uses the desired label for this page\n    const toc = document.querySelector('#terminalops-rotterdam .pc-toc ol');\n    if(toc){\n      const existing = toc.querySelector('a[href=\"#research\"]');\n      if(!existing){\n        const li = document.createElement('li');\n        const a = document.createElement('a'); a.href = '#research'; a.textContent = 'Research Problems';\n        li.appendChild(a);\n        const execItem = toc.querySelector('a[href=\"#exec\"]');\n        if(execItem && execItem.parentNode) toc.insertBefore(li, execItem.parentNode);\n        else toc.appendChild(li);\n      } else {\n        existing.textContent = 'Research Problems';\n      }\n    }\n  } catch (err) { \/* defensive: never break the page *\/ }\n})();\n<\/script>\n<script>\n  try{\n    const root = document.documentElement;\n    const detect = () => {\n      const nodes = Array.from(document.querySelectorAll(\n        'header, .site-header, #masthead, .navbar, .header, [data-fixed-header], ' +\n        '.sticky-header, .header-wrapper, .elementor-location-header, ' +\n        '.fl-page-header, .fusion-header, .kadence-header, .ast-primary-header-bar, ' +\n        '.generatepress-header, .blocksy-header'\n      ));\n      const fixedLike = nodes.filter(el => {\n        const cs = getComputedStyle(el);\n        const pos = cs.position;\n        const top = Math.round(el.getBoundingClientRect().top);\n        return (pos==='fixed' || pos==='sticky') && top <= 0 &#038;&#038; el.offsetHeight > 0;\n      });\n      const h = fixedLike.reduce((m,el)=> Math.max(m, el.offsetHeight||0), 0);\n      root.style.setProperty('--site-header', h + 'px');\n    };\n    ['load','resize','scroll'].forEach(ev=> window.addEventListener(ev, detect, { passive:true }));\n    detect();\n  }catch(e){}\n\n  const tocLinks = Array.from(document.querySelectorAll('#terminalops-rotterdam .pc-toc a'));\n  const sections = tocLinks.map(a => document.querySelector(a.getAttribute('href'))).filter(Boolean);\n\n  tocLinks.forEach(a=>a.addEventListener('click', e=>{\n    e.preventDefault();\n    document.querySelector(a.getAttribute('href')).scrollIntoView({behavior:'smooth', block:'start'});\n  }));\n\n  const io = new IntersectionObserver((entries)=>{\n    entries.forEach(entry=>{\n      const id = '#' + entry.target.id;\n      const link = tocLinks.find(l=>l.getAttribute('href')===id);\n      if(link && entry.isIntersecting){\n        tocLinks.forEach(l=>l.classList.remove('active'));\n        link.classList.add('active');\n      }\n    })\n  },{ rootMargin: 'calc(var(--sticky-offset) * -1) 0px -60% 0px', threshold: 0.01 });\n  sections.forEach(sec=> io.observe(sec));\n})();\n<\/script>\n<script>\n  \/* Populate \"Last update\" times for links in the datasets table.\n     Uses HEAD then GET, falls back to scanning page text for common \"updated\" labels,\n     and finally uses document.lastModified if nothing found. *\/\n  (function () {\n    const rows = Array.from(document.querySelectorAll('.pc-table tbody td:first-child'));\n    if (!rows.length) return;\n\n    function formatDateOnly(d) {\n      try {\n        const day = String(d.getDate()).padStart(2, '0');\n        const month = String(d.getMonth() + 1).padStart(2, '0');\n        const year = d.getFullYear();\n        return `${day}\/${month}\/${year}`;\n      } catch (e) { return d.toISOString().slice(0,10); }\n    }\n\n    async function fetchLastModified(url) {\n      try {\n        let resp = null;\n        try { resp = await fetch(url, { method: 'HEAD', mode: 'cors', cache: 'no-cache' }); } catch (e) { resp = null; }\n        let last = resp && resp.ok ? resp.headers.get('last-modified') : null;\n\n        if (!last) {\n          try { resp = await fetch(url, { method: 'GET', mode: 'cors', cache: 'no-cache' }); } catch (e) { resp = null; }\n          if (resp && resp.ok) {\n            last = resp.headers.get('last-modified');\n            if (!last) {\n              try {\n                const txt = await resp.text();\n                const m = txt.match(\/(?:Last updated|Last update|Updated on|Updated:|Last modified)[:\\s]*([A-Za-z0-9,\\-:\\.\\s]+)\/i);\n                if (m && m[1]) last = m[1].trim();\n              } catch (e) { \/* ignore parsing errors *\/ }\n            }\n          }\n        }\n\n        return last || null;\n      } catch (err) { return null; }\n    }\n\n    rows.forEach(async (td) => {\n      const a = td.querySelector('a[href]');\n      const timeEl = td.querySelector('time');\n      if (!a || !timeEl) return;\n      const url = a.href;\n\n      const last = await fetchLastModified(url);\n      if (!last) {\n        const dLocal = new Date(document.lastModified || Date.now());\n        timeEl.dateTime = dLocal.toISOString();\n        timeEl.textContent = formatDateOnly(dLocal);\n        return;\n      }\n\n      const d = new Date(last);\n      if (!isNaN(d)) {\n        timeEl.dateTime = d.toISOString();\n        timeEl.textContent = formatDateOnly(d);\n      } else {\n        timeEl.textContent = String(last).split('\\n')[0].trim();\n      }\n    });\n  })();\n<\/script>\n<!-- ========= \/END TERMINAL OPERATIONS (POLISHED) ========= -->\n","protected":false},"excerpt":{"rendered":"<p>Home \u203a Port-Call Data Hub \u203a Processes Timeline \u203a Terminal Operations Port-Call Optimization at the Port of Rotterdam Terminal Operations Executes the planned move set including discharge, load, and shifts under yard and vessel stowage constraints. Crane sequencing, yard stacking, reefer control, IMDG rules, and equipment dispatch are synchronized. Key measures include gross and net [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":0,"parent":0,"menu_order":0,"comment_status":"closed","ping_status":"closed","template":"","meta":{"_uag_custom_page_level_css":"","footnotes":""},"class_list":["post-388","page","type-page","status-publish","hentry"],"blocksy_meta":{"styles_descriptor":{"styles":{"desktop":"","tablet":"","mobile":""},"google_fonts":[],"version":7}},"uagb_featured_image_src":{"full":false,"thumbnail":false,"medium":false,"medium_large":false,"large":false,"1536x1536":false,"2048x2048":false},"uagb_author_info":{"display_name":"peterwenzel","author_link":"https:\/\/aiportcenter.nl\/index.php\/author\/peterwenzel\/"},"uagb_comment_info":0,"uagb_excerpt":"Home \u203a Port-Call Data Hub \u203a Processes Timeline \u203a Terminal Operations Port-Call Optimization at the Port of Rotterdam Terminal Operations Executes the planned move set including discharge, load, and shifts under yard and vessel stowage constraints. Crane sequencing, yard stacking, reefer control, IMDG rules, and equipment dispatch are synchronized. Key measures include gross and net&hellip;","jetpack_sharing_enabled":true,"_links":{"self":[{"href":"https:\/\/aiportcenter.nl\/index.php\/wp-json\/wp\/v2\/pages\/388","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/aiportcenter.nl\/index.php\/wp-json\/wp\/v2\/pages"}],"about":[{"href":"https:\/\/aiportcenter.nl\/index.php\/wp-json\/wp\/v2\/types\/page"}],"author":[{"embeddable":true,"href":"https:\/\/aiportcenter.nl\/index.php\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/aiportcenter.nl\/index.php\/wp-json\/wp\/v2\/comments?post=388"}],"version-history":[{"count":28,"href":"https:\/\/aiportcenter.nl\/index.php\/wp-json\/wp\/v2\/pages\/388\/revisions"}],"predecessor-version":[{"id":1656,"href":"https:\/\/aiportcenter.nl\/index.php\/wp-json\/wp\/v2\/pages\/388\/revisions\/1656"}],"wp:attachment":[{"href":"https:\/\/aiportcenter.nl\/index.php\/wp-json\/wp\/v2\/media?parent=388"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}