Customizing the Look and Feel of the Developer Portal

The Developer Portal branding, general layout, page structure, appearance and behaviors are controlled by a JSON configuration file. You can customize the Developer Portal by editing this file and submitting it via the REST API.

You must be assigned the Administrator role to customize the look and feel of the Developer Portal.

See Sample Developer Portal Configuration File for a sample configuration file. The recommended method to customize the portal is to download the JSON file and change only the objects that you want to modify. The result will be a subset of the original configuration file that you can post to the REST service. The Developer Portal merges your definitions on top of the original configuration file at run-time and modifies the configuration. You can also post a partial JSON file as long as it retains the same structure as the original configuration file.

See Set configuration in the REST API for the Consumer Service in Oracle API Platform Cloud Service for details about what each line in the configuration file does.

Only users assigned the Administrator role can post a configuration file using the REST API.

  1. Download the current JSON configuration file from <Host where Developer Portal is deployed:port>/developers/oap/apiportal.config.json.
  2. Open the JSON file in a plain text editor and modify the properties you want to change. For example, you can modify the logo, background, product name, and page title. Save the file.
  3. Use cURL or the REST client of your choice to post the JSON file:
    curl -X PUT 
    --cacert ~/cacert.pem
    -u username:password
    -d @apiportal.config.json
    https://<developer portal location>/developers/services/v1/portal/customization/configuration

    See Set configuration in the REST API for the Consumer Service in Oracle API Platform Cloud Service.

See Delete configuration in the REST API for the Consumer Service in Oracle API Platform Cloud Serviceto revert the Developer Portal to its default appearance.

Sample Developer Portal Configuration File

The sample is the default Developer Portal configuration file included in a fresh Oracle API Platform Cloud Service - Classic deployment.

See the Set Configuration operation in the REST API for the Consumer Service in Oracle API Platform Cloud Servicefor details about what each line in the configuration file does.
{
  "language": "en",
  "resources": "oap/core/i18n/resources/",
  "branding": {
    "vendor": "${i18n.branding.vendor}",
    "product": "${i18n.branding.product}",
    "product_short": "${i18n.branding.product_short}",
    "title": "${i18n.branding.title}",
    "logo": {
      "url": "oap/css/images/login/OracleLogoBLK.png",
      "width": "auto",
      "height": "17px",
      "alignment": "baseline"
    },
    "login": {
      "logo": {
        "url": "oap/css/images/login/OracleLogoBLK.png",
        "width": "137px"
      },
      "splash": "img/OracleLogoWHT.png",
      "productLogo": "oap/css/images/login/productLogo.png",
      "background": {
        "desktop": "oap/css/images/login/Desktop.jpg",
        "tablet": {
          "portrait": "oap/css/images/login/TabletPT.jpg",
          "landscape": "oap/css/images/login/TabletLS.jpg"
        },
        "mobile": {
          "portrait": "oap/css/images/login/MobilePT.jpg",
          "landscape": "oap/css/images/login/MobileLS.jpg"
        }
      },
      "css": {
      }
    },
    "icon": {
      "url": "oap/css/images/general/favicon.ico",
      "type": "image/x-icon"
    },
    "about": {
      "body": [
        "${i18n.oap.navbar.about.paragraph1}",
        "${i18n.oap.navbar.about.paragraph2}"
      ],
      "links": [
        {
          "text": "${i18n.oap.navbar.about.links.aboutOracle}",
          "url": "http://www.oracle.com/us/corporate/index.html#menu-about"
        },
        {
          "text": "${i18n.oap.navbar.about.links.contactUs}",
          "url": "http://www.oracle.com/us/corporate/contact/index.html"
        },
        {
          "text": "${i18n.oap.navbar.about.links.legalNotices}",
          "url": "http://www.oracle.com/us/legal/index.html"
        },
        {
          "text": "${i18n.oap.navbar.about.links.termsOfUse}",
          "url": "http://www.oracle.com/us/legal/terms/index.html"
        },
        {
          "text": "${i18n.oap.navbar.about.links.privacyRights}",
          "url": "http://www.oracle.com/us/legal/privacy/index.html"
        }
      ]
    },
    "copyright": "${i18n.branding.copyright}"
  },
  "css": {
    "*": {
      "font-family": "\"Helvetica Neue\",Helvetica,Arial,sans-serif",
      "font-size": "14px"
    }
  },
  "services": {
    "portal": "services/portal/v1/",
    "manager": "services/management/v1/",
    "analytics": "services/analytics/v1/",
    "administration": "services/administration/v1/",
    "console": "console/"
  },
  "session": {
    "logout": "${documentBaseUri}/logout",
    "timeout": "${documentBaseUri}/logout?session"
  },
  "modules": {
    "base": "oap/modules/",
    "inventory": {
      "header": {
        "path": "header/",
        "css": {
          "*": {
            "font-size": "1.5em",
            "background-color": "#f0f0f0"
          }
        }
      },
      "navbar": {
        "path": "navbar/",
        "documentationUrl": "http://www.oracle.com/pls/topic/lookup?ctx=cloud&id=api-platform-cloud-dev-tasks"
      },
      "messaging": {
        "path": "messaging/"
      },
      "error": {
        "path": "error/"
      },
      "login": {
        "path": "login/",
        "urlScheme": "login",
        "loadIndicator": false,
        "fullScreen": "full-height,no-viewport-scaling"
      },
      "api.catalog": {
        "path": "api/catalog/",
        "urlScheme": "apis",
        "pageId": {
          "root": "EB69C5B6-3B51-48E1-91CF-B4E8996A1973"
        }
      },
      "api.details": {
        "path": "api/details/",
        "urlScheme": [
          "apis/{vanityName}",
          "apis/{vanityName}/{iteration:published|current}",
          "apis/{vanityName}/{section:overview|documentation}",
          "apis/{vanityName}/{section:overview|documentation}/{iteration:published|current}",
          "apis/{vanityName}/{iteration:published|current}/{section:overview|documentation}"
        ],
        "title": "${api.name} - ${config.branding.title}",
        "pageId": {
          "root": "AA9E8B29-E37D-48A3-A497-45FD5150C722",
          "deep": {
            "documentation": "BECD3CE5-3945-4A24-AF14-D703A43BC62F"
          }
        },
        "domain": "api.catalog",
        "data": {
          "apiaryTheme": {
            "tableOfContents": {
              "section": {
                "color": "#0572ce",
                "fontFamily": "arial, helvetica, sans serif",
                "fontWeight": "normal",
                "paddingBottom": "10px",
                "title": {
                  "padding": "2px 0px",
                  "$hover": {
                    "backgroundColor": "#e4f0fa",
                    "text": {
                    }
                  }
                },
                "item": {
                  "paddingLeft": "16px",
                  "borderLeft": "3px solid transparent",
                  "text": {
                    "margin": "2px 0px 1px 0px"
                  },
                  "$hover": {
                    "backgroundColor": "#e4f0fa",
                    "text": {
                    }
                  },
                  "$selected": {
                    "borderLeft": "3px solid #0572ce",
                    "text": {
                    }
                  },
                  "subitems": {
                    "subitem": {
                      "borderLeft": "2px solid transparent",
                      "$hover": {
                        "text": {
                        }
                      },
                      "$selected": {
                        "borderLeft": "2px solid #0572ce",
                        "text": {
                        }
                      }
                    }
                  }
                }
              }
            },
            "humanColumn": {
              "content": {
                "fontFamily": "arial, helvetica, sans serif",
                "apiName": {
                  "color": "black",
                  "fontSize": "36px",
                  "fontWeight": "normal"
                },
                "section": {
                  "marginBottom": "20px",
                  "title": {
                    "text": {
                      "color": "#ed813e"
                    }
                  },
                  "apiDescription": {
                    "p": {
                      "color": "black",
                      "fontSize": "15px",
                      "lineHeight": "1.1em"
                    }
                  },
                  "resourceGroups": {
                    "resourceGroup": {
                      "marginTop": "0px",
                      "name": {
                        "color": "black",
                        "fontSize": "24px",
                        "fontWeight": "normal",
                        "marginBottom": "10px"
                      },
                      "resources": {
                        "resource": {
                          "name": {
                            "color": "black",
                            "fontSize": "28px",
                            "fontWeight": "normal"
                          },
                          "description": {
                            "p": {
                              "color": "black",
                              "fontSize": "15px",
                              "lineHeight": "1.1em"
                            }
                          },
                          "actions": {
                            "action": {
                              "paddingLeft": "0px",
                              "description": {
                                "p": {
                                  "color": "black",
                                  "fontSize": "15px",
                                  "lineHeight": "1.1em"
                                }
                              },
                              "invitation": {
                                "$hover": {
                                  "backgroundColor": "#e4f0fa"
                                },
                                "$selected": {
                                  "backgroundColor": "#0572ce"
                                },
                                "$selected$hover": {
                                  "backgroundColor": "#0572ce"
                                },
                                "tag": {
                                  "$get": {
                                    "backgroundColor": "#267db3"
                                  },
                                  "$post": {
                                    "backgroundColor": "#68c182"
                                  },
                                  "$put": {
                                    "backgroundColor": "#fad55c"
                                  },
                                  "$delete": {
                                    "backgroundColor": "#ed6647"
                                  },
                                  "$patch": {
                                    "backgroundColor": "#8561c8"
                                  },
                                  "$head": {
                                    "backgroundColor": "#6ddbdb"
                                  },
                                  "$options": {
                                    "backgroundColor": "#ffb54d"
                                  }
                                }
                              }
                            }
                          }
                        }
                      },
                      "description": {
                        "color": "black",
                        "fontSize": "15px",
                        "lineHeight": "1.1em"
                      }
                    }
                  }
                }
              }
            },
            "machineColumn": {
              "header": {
              },
              "content": {
                "destination": {
                  "container": {
                    "uriTemplate": {
                      "container": {
                        "variable": {
                          "color": "#0572ce"
                        }
                      }
                    },
                    "method": {
                      "color": "white",
                      "border-radius": "0px",
                      "border": "1px solid #ccc",
                      "$get": {
                        "color": "white",
                        "backgroundColor": "#267db3"
                      },
                      "$post": {
                        "color": "white",
                        "backgroundColor": "#68c182"
                      },
                      "$put": {
                        "color": "black",
                        "backgroundColor": "#fad55c"
                      },
                      "$delete": {
                        "color": "white",
                        "backgroundColor": "#ed6647"
                      },
                      "$patch": {
                        "color": "white",
                        "backgroundColor": "#8561c8"
                      },
                      "$head": {
                        "color": "black",
                        "backgroundColor": "#6ddbdb"
                      },
                      "$options": {
                        "color": "black",
                        "backgroundColor": "#ffb54d"
                      }
                    }
                  }
                },
                "parameters": {
                  "list": {
                    "parameter": {
                      "key": {
                        "color": "#0572ce"
                      }
                    }
                  }
                }
              },
              "console": {
                "breadcrumbs": {
                  "font-size": "15px",
                  "color": "#999",
                  "backgroundColor": "#e4f0fa",
                  "borderTop": "0px",
                  "borderBottom": "0px",
                  "height": "32px",
                  "action": {
                    "color": "#666"
                  }
                },
                "form": {
                  "tabs": {
                    "buttonGroup": {
                      "borderRadius": "2px",
                      "border": "1px solid #c4ced7",
                      "height": "28px",
                      "item": {
                        "backgroundColor": "#e4e8ea",
                        "color": "black",
                        "$selected": {
                          "backgroundColor": "#0572ce",
                          "color": "white",
                          "fontWeight": "normal"
                        }
                      }
                    }
                  },
                  "headers": {
                    "addHeaderButton": {
                      "p": {
                        "color": "#0572ce"
                      }
                    }
                  },
                  "destination": {
                    "container": {
                      "uriTemplate": {
                        "container": {
                          "variable": {
                            "color": "#0572ce"
                          }
                        }
                      },
                      "method": {
                        "border-radius": "0px",
                        "border": "1px solid #ccc",
                        "$get": {
                          "color": "white",
                          "backgroundColor": "#267db3"
                        },
                        "$post": {
                          "color": "white",
                          "backgroundColor": "#68c182"
                        },
                        "$put": {
                          "color": "black",
                          "backgroundColor": "#fad55c"
                        },
                        "$delete": {
                          "color": "white",
                          "backgroundColor": "#ed6647"
                        },
                        "$patch": {
                          "color": "white",
                          "backgroundColor": "#8561c8"
                        },
                        "$head": {
                          "color": "black",
                          "backgroundColor": "#6ddbdb"
                        },
                        "$options": {
                          "color": "black",
                          "backgroundColor": "#ffb54d"
                        }
                      }
                    }
                  },
                  "parameters": {
                    "list": {
                      "parameter": {
                        "name": {
                          "color": "#0572ce"
                        }
                      }
                    }
                  },
                  "buttons": {
                    "submit": {
                      "button": {
                        "backgroundColor": "#009c38",
                        "text": {
                          "color": "white"
                        }
                      }
                    },
                    "reset": {
                      "button": {
                        "backgroundColor": "#e4e8ea",
                        "text": {
                          "color": "black"
                        }
                      }
                    }
                  }
                }
              }
            }
          }
        }
      },
      "api.register": {
        "path": "api/register/",
        "urlScheme": "apis/{vanityName}/register",
        "title": "${api.name} - ${config.branding.title}",
        "domain": "api.catalog",
        "pageId": {
          "root": "982267B8-72E1-4468-BE46-E24D78301665"
        }
      },
      "api.embeddeddoc": {
        "path": "api/embeddeddoc/"
      },
      "application.catalog": {
        "path": "application/catalog/",
        "urlScheme": "applications",
        "pageId": {
          "root": "DE7D5CC2-7FD2-47E0-90A3-84D86B74203C",
          "deep": {
            "create": "8B5CF77F-8C0A-4B72-A295-E96808B2907A"
          }
        }
      },
      "application.details": {
        "path": "application/details/",
        "urlScheme": [
          "applications/{id:number}",
          "applications/{id:number}/{section:overview|registeredapis|analytics|users}"
        ],
        "domain": "application.catalog",
        "pageId": {
          "root": "792268FC-FCA1-435F-A199-AA4E545C650E",
          "deep": {
            "apis": "ED226B19-251B-4676-82AC-E7E610325059",
            "grants": "43610297-84FA-425D-9F7E-37886D692C18"
          }
        }
      },
      "application.edit": {
        "path": "application/edit/"
      },
      "application.analytics": {
        "path": "application/analytics/",
        "data": {
          "refreshFrequency": 15,
          "ranges": {
            "default": "last24hours",
            "main": {
              "today": {
                "order": 1,
                "title": "${i18n.oap.application.analytics.label.today}",
                "range": {
                  "from": "day.floor(now)",
                  "to": "day.offset(from,1)"
                },
                "granularity": {
                  "unit": "minute",
                  "length": 30
                }
              },
              "last24hours": {
                "order": 2,
                "title": "${i18n.oap.application.analytics.label.last24hours}",
                "range": {
                  "from": "day.offset(now,-1)",
                  "to": "now"
                },
                "granularity": {
                  "unit": "minute",
                  "length": 30
                }
              }
            },
            "other": {
              "currentHour": {
                "order": 1,
                "title": "${i18n.oap.application.analytics.timecontrol.currentHour}",
                "range": {
                  "from": "hour.floor(now)",
                  "to": "hour.offset(from,1)"
                },
                "granularity": {
                  "unit": "minute",
                  "length": 1
                }
              },
              "currentWeek": {
                "order": 2,
                "title": "${i18n.oap.application.analytics.timecontrol.currentWeek}",
                "range": {
                  "from": "week.floor(now)",
                  "to": "week.offset(from,1)"
                },
                "granularity": {
                  "unit": "hour",
                  "length": 6
                }
              },
              "month": {
                "order": 3,
                "title": "${i18n.oap.application.analytics.timecontrol.month}",
                "items": {
                  "current": {
                    "order": 1,
                    "title": "${i18n.oap.application.analytics.timecontrol.current}",
                    "range": {
                      "from": "month.floor(now)",
                      "to": "month.offset(from,1)"
                    },
                    "granularity": {
                      "unit": "day",
                      "length": 1
                    }
                  },
                  "january": {
                    "order": 2,
                    "title": "${i18n.oap.commonui.months.january}",
                    "range": {
                      "from": "year.last(date(now.year,1,1))",
                      "to": "month.offset(from,1)"
                    },
                    "granularity": {
                      "unit": "day",
                      "length": 1
                    }
                  },
                  "february": {
                    "order": 3,
                    "title": "${i18n.oap.commonui.months.february}",
                    "range": {
                      "from": "year.last(date(now.year,2,1))",
                      "to": "month.offset(from,1)"
                    },
                    "granularity": {
                      "unit": "day",
                      "length": 1
                    }
                  },
                  "march": {
                    "order": 4,
                    "title": "${i18n.oap.commonui.months.march}",
                    "range": {
                      "from": "year.last(date(now.year,3,1))",
                      "to": "month.offset(from,1)"
                    },
                    "granularity": {
                      "unit": "day",
                      "length": 1
                    }
                  },
                  "april": {
                    "order": 5,
                    "title": "${i18n.oap.commonui.months.april}",
                    "range": {
                      "from": "year.last(date(now.year,4,1))",
                      "to": "month.offset(from,1)"
                    },
                    "granularity": {
                      "unit": "day",
                      "length": 1
                    }
                  },
                  "may": {
                    "order": 6,
                    "title": "${i18n.oap.commonui.months.may}",
                    "range": {
                      "from": "year.last(date(now.year,5,1))",
                      "to": "month.offset(from,1)"
                    },
                    "granularity": {
                      "unit": "day",
                      "length": 1
                    }
                  },
                  "june": {
                    "order": 7,
                    "title": "${i18n.oap.commonui.months.june}",
                    "range": {
                      "from": "year.last(date(now.year,6,1))",
                      "to": "month.offset(from,1)"
                    },
                    "granularity": {
                      "unit": "day",
                      "length": 1
                    }
                  },
                  "july": {
                    "order": 8,
                    "title": "${i18n.oap.commonui.months.july}",
                    "range": {
                      "from": "year.last(date(now.year,7,1))",
                      "to": "month.offset(from,1)"
                    },
                    "granularity": {
                      "unit": "day",
                      "length": 1
                    }
                  },
                  "august": {
                    "order": 9,
                    "title": "${i18n.oap.commonui.months.august}",
                    "range": {
                      "from": "year.last(date(now.year,8,1))",
                      "to": "month.offset(from,1)"
                    },
                    "granularity": {
                      "unit": "day",
                      "length": 1
                    }
                  },
                  "september": {
                    "order": 10,
                    "title": "${i18n.oap.commonui.months.september}",
                    "range": {
                      "from": "year.last(date(now.year,9,1))",
                      "to": "month.offset(from,1)"
                    },
                    "granularity": {
                      "unit": "day",
                      "length": 1
                    }
                  },
                  "october": {
                    "order": 11,
                    "title": "${i18n.oap.commonui.months.october}",
                    "range": {
                      "from": "year.last(date(now.year,10,1))",
                      "to": "month.offset(from,1)"
                    },
                    "granularity": {
                      "unit": "day",
                      "length": 1
                    }
                  },
                  "november": {
                    "order": 12,
                    "title": "${i18n.oap.commonui.months.november}",
                    "range": {
                      "from": "year.last(date(now.year,11,1))",
                      "to": "month.offset(from,1)"
                    },
                    "granularity": {
                      "unit": "day",
                      "length": 1
                    }
                  },
                  "december": {
                    "order": 13,
                    "title": "${i18n.oap.commonui.months.december}",
                    "range": {
                      "from": "year.last(date(now.year,12,1))",
                      "to": "month.offset(from,1)"
                    },
                    "granularity": {
                      "unit": "day",
                      "length": 1
                    }
                  }
                }
              },
              "year": {
                "order": 4,
                "title": "${i18n.oap.application.analytics.timecontrol.year}",
                "items": {
                  "2016": {
                    "order": 1,
                    "title": "2016",
                    "range": {
                      "from": "date(2016,1,1)",
                      "to": "year.offset(from,1)"
                    },
                    "granularity": {
                      "unit": "week",
                      "length": 1
                    }
                  },
                  "2015": {
                    "order": 2,
                    "title": "2015",
                    "range": {
                      "from": "date(2015,1,1)",
                      "to": "year.offset(from,1)"
                    },
                    "granularity": {
                      "unit": "week",
                      "length": 1
                    }
                  },
                  "2014": {
                    "order": 3,
                    "title": "2014",
                    "range": {
                      "from": "date(2014,1,1)",
                      "to": "year.offset(from,1)"
                    },
                    "granularity": {
                      "unit": "week",
                      "length": 1
                    }
                  }
                }
              },
              "last": {
                "order": 5,
                "title": "${i18n.oap.application.analytics.timecontrol.last}",
                "items": {
                  "last15minutes": {
                    "order": 1,
                    "title": "${i18n.oap.application.analytics.timecontrol.last15minutes}",
                    "range": {
                      "from": "minute.offset(now,-14)",
                      "to": "now"
                    },
                    "granularity": {
                      "unit": "minute",
                      "length": 1
                    }
                  },
                  "last60minutes": {
                    "order": 2,
                    "title": "${i18n.oap.application.analytics.timecontrol.last60minutes}",
                    "range": {
                      "from": "hour.offset(now,-1)",
                      "to": "now"
                    },
                    "granularity": {
                      "unit": "minute",
                      "length": 1
                    }
                  },
                  "last24hours": {
                    "order": 3,
                    "title": "${i18n.oap.application.analytics.timecontrol.last24hours}",
                    "range": {
                      "from": "day.offset(now,-1)",
                      "to": "now"
                    },
                    "granularity": {
                      "unit": "minute",
                      "length": 30
                    }
                  },
                  "last7days": {
                    "order": 4,
                    "title": "${i18n.oap.application.analytics.timecontrol.last7days}",
                    "range": {
                      "from": "day.offset(day.floor(now),-6)",
                      "to": "day.ceil(now)"
                    },
                    "granularity": {
                      "unit": "hour",
                      "length": 6
                    }
                  },
                  "last30days": {
                    "order": 5,
                    "title": "${i18n.oap.application.analytics.timecontrol.last30days}",
                    "range": {
                      "from": "day.offset(day.floor(now),-29)",
                      "to": "day.ceil(now)"
                    },
                    "granularity": {
                      "unit": "day",
                      "length": 1
                    }
                  },
                  "last365days": {
                    "order": 6,
                    "title": "${i18n.oap.application.analytics.timecontrol.last365days}",
                    "range": {
                      "from": "day.offset(day.floor(now),-364)",
                      "to": "day.ceil(now)"
                    },
                    "granularity": {
                      "unit": "week",
                      "length": 1
                    }
                  }
                }
              }
            }
          }
        },
        "pageId": {
          "deep": {
            "general": "CBD80181-7B89-4B34-AEF9-65833F9736CD",
            "errors": "83BB0064-6774-4F39-8B31-4D3CEC84B1E9"
          }
        }
      }
    },
    "redirect": {
    }
  },
  "layout": {
    "home": {
      "module": "api.catalog"
    },
    "panels": {
      "header": {
        "selector": "header",
        "module": "header"
      },
      "main": {
        "selector": "main",
        "module": "${window.location.pathname}",
        "options": {
          "loadIndicator": true,
          "updatePageTitle": true
        }
      },
      "messages": {
        "selector": "main .oap-messaging",
        "module": "messaging"
      }
    },
    "navigation": {
      "panel": "main",
      "trackHistory": true
    }
  },
  "documentation": {
    "url": "http://www.oracle.com/pls/topic/lookup?ctx=cloud&id=APFDV-GUID-${pageId}"
  },
  "tracers": {
    "i18n": "Error",
    "services": "Error",
    "applications": "Error",
    "apis": "Error"
  }
}