{ "info": { "_postman_id": "2a811a10-0ad3-4a7b-9445-1917cdd54a4c", "name": "DROID REST SPI", "description": "These are the REST SPIs needed to be implemented by producers for either External Ingestion or Read-through DROID integration.", "schema": "https://schema.getpostman.com/json/collection/v2.0.0/collection.json" }, "item": [ { "name": "External Ingestion", "description": "DROID External Ingestion onboarding requires the implementation of 2 endpoints by the DROID data producer for External Batch Ingestion. These endpoints should adhere to the SPI contract outlined below.\n- **Scan Endpoint**: This is a list endpoint designed to return all item IDs with pagination.\n- **Query Endpoint**: This is a bulk GET endpoint that returns the payloads of the requested IDs.\n", "item": [ { "name": "/scan", "request": { "url": { "protocol": "{{protocol}}", "host": "{{host}}", "path": "{{basePath}}scan", "query": [], "variable": [] }, "method": "POST", "header": [ { "description": "", "disabled": false, "key": "Content-Type", "value": "application/json" }, { "description": "", "disabled": false, "key": "Accept", "value": "application/json" } ], "description": "The scan endpoint is designed to retrieve the list of identifiers to initiate calls.\n\n💡 JSON schemas for the endpoint can be found [here](../../reference/schemas/external-ingestion-live/).\n", "body": { "mode": "raw", "raw": "" } }, "response": [] }, { "name": "/query", "request": { "url": { "protocol": "{{protocol}}", "host": "{{host}}", "path": "{{basePath}}query", "query": [], "variable": [] }, "method": "POST", "header": [ { "description": "", "disabled": false, "key": "Content-Type", "value": "application/json" }, { "description": "", "disabled": false, "key": "Accept", "value": "application/json" } ], "description": "The query endpoint on your service is called for each set of identifiers and will return the payloads for those identifiers.\n\n💡 JSON schemas for the endpoint can be found [here](../../reference/schemas/external-ingestion-batch/).\n", "body": { "mode": "raw", "raw": "" } }, "response": [] } ] }, { "name": "Read-through", "description": "DROID Read-through onboarding requires the implementation of a Read-through endpoint. When a cache miss for a specific key and record type occurs, TCS makes an HTTP GET request to your backing store through this API.\n\nFor example: `GET /entity//` request results in `GET https:///` request to your service.\n\n💡️ Note: `` can contain `/` (e.g., `ari::cloud/abc123`) and is passed on exactly as provided by the consumer.\n", "item": [ { "name": "/{yourBaseUrl}/{key}", "request": { "url": { "protocol": "{{protocol}}", "host": "{{host}}", "path": "{{basePath}}yourBaseUrl/", "query": [], "variable": [] }, "method": "GET", "header": [ { "description": "", "disabled": false, "key": "Accept", "value": "application/json" } ], "description": "When a cache miss for a specific key and record type occurs, TCS makes an HTTP GET request to your backing store to retrieve the key.\n\n⚠️ Any response status other than 200 (e.g., 400) will be treated as an unexpected error and mapped to a 500 status code returned to consumers. Our 5xx alert thresholds are high (as defined in [service-descriptor.sd.yml](https://stash.atlassian.com/projects/es/repos/tlt-services/browse/tenant-context-service/service-descriptor.sd.yml), but they may eventually trigger. We expect Read-through producers to monitor their DROID endpoints.\n" }, "response": [] } ] } ], "variable": [ { "key": "protocol", "name": "Protocol", "description": "The HTTP Protocol that should be used for this REST API.", "type": "string", "value": "https" }, { "key": "host", "name": "Host", "description": "The HTTP host that should be used for this REST API.", "type": "string", "value": "api.atlassian.com" }, { "key": "basePath", "name": "Base Path", "description": "The path, after the host, of the base of the REST API.", "type": "string", "value": "v2/" } ] }