Last updated Jan 4, 2023

Rate this page:

Using Service Listing

Responsibility Model exposes a graphql endpoint for consumers. A Graphiql endpoint is available for exploration as well as a HTTP endpoint for API clients.

Disclaimer

This is the first version of the API, it may change in the future.

Before you begin

The GraphiQL Request Headers accepts a JSON representation of HTTP headers. The following JSON can be used to set the Authorization header.

1
2
{ "Authorization":"slauth <TOKEN>" }

TOKEN can be generated using the following command

1
2
atlas slauth token -a responsibility-model -e prod

API Terminology

Scenarios

Get information of a single zone

1
2
{
  services(
    attributesFilter: {
      zonesFilter: ["DATA_RESIDENCY_LATENCY"]
    }
  ) {
    id
    serviceOwner
    computeClassifications
    components
    zones
  }
}

Get information for multiple zones

1
2
{
  services(
    attributesFilter: {
      zonesFilter: ["DATA_RESIDENCY_LATENCY", "FEDRAMP_MODERATE"]
    }
  ) {
    id
    serviceOwner
    computeClassifications
    components
    zones
  }
}

Get information for a zone and compute classification

1
2
{
  services(
    attributesFilter: {
      computeClassificationsFilter:["UGC/Primary"]
      zonesFilter: ["DATA_RESIDENCY"]
    }
  ) {
    id
    serviceOwner
    computeClassifications
    components
    zones
  }
}

Get information for a service in scope of a zone

1
2
{
  services(
    attributesFilter: {
      serviceId:"content-vectorization"
      zonesFilter: ["DATA_RESIDENCY"]
    }
  ) {
    id
    serviceOwner
    computeClassifications
    components
    zones
  }
}

FAQs

Why is the zones filter mandatory?

At the moment, there is no source of truth of a main service listing for all of Atlassian. As a result, Service Discovery does not have a single main list of Atlassian services to start filtering off of. To work around this, we are requiring one of the supported zones to be provided for the time being.

Why is the response for a service empty?

Some of the services in the static services lists in Config Registry do not currently have data associated with them in our Socrates table. The first reason for this is that one of the limitations we put on ourselves in gathering data in Socrates was only getting data from production deployments in the last 30 days from zone_micros.current_state, which excludes some services that do not meet that criteria. The other reason is that some of the entries in the static lists contain “services” that don’t actually have a specific associated with them, such as “Confluence.” Until we figure out a solution for both the above scenarios, we will retain those services in our GraphQL output without some of the data associated with them.

Example:

1
2
{
  "id": "Confluence",
  "serviceOwner": "",
  "computeClassifications": [],
  "components": [],
  "zones": [
    "DATA_RESIDENCY"
  ]
}

How are the results in the response determined?

Implicit AND operation across fields at the root level and implicit ANY operation among elements in an array.

Rate this page: