Closed
Bug 1505399
Opened 6 years ago
Closed 6 years ago
RFC 128 - 4.1 Changes to publishing API manifest
Categories
(Taskcluster :: Services, defect)
Taskcluster
Services
Tracking
(Not tracked)
RESOLVED
FIXED
People
(Reporter: pmoore, Assigned: dustin)
References
Details
4.1 Changes to publishing API manifest
If a service of a taskcluster deployment provides an API interface, the API reference document should be hosted under <TASKCLUSTER_ROOT_URL>/references/<serviceName>/<version>/api.json
If a service of a taskcluster deployment provides an Exchanges interface, the exchanges reference document should be hosted under <TASKCLUSTER_ROOT_URL>/references/<serviceName>/<version>/exchanges.json
A taskcluster deployment must serve the API references manifest under <TASKCLUSTER_ROOT_URL>/references/manifest.json with the following format:
{
"$schema" : "<fully-qualified-url-to-api-manifest-schema>",
"references": [
"<fully-qualified-url-to-reference-doc>",
"<fully-qualified-url-to-reference-doc>",
"<fully-qualified-url-to-reference-doc>",
"<fully-qualified-url-to-reference-doc>",
"<fully-qualified-url-to-reference-doc>",
....
]
}
For example, the current production taskcluster.net manifest would look like this:
{
"$schema" : "https://schemas.taskcluster.net/base/v1/api-manifest.json",
"references": [
"https://references.taskcluster.net/auth/v1/api.json",
"https://references.taskcluster.net/auth/v1/exchanges.json",
"https://references.taskcluster.net/aws-provisioner/v1/api.json",
"https://references.taskcluster.net/aws-provisioner/v1/exchanges.json",
"https://references.taskcluster.net/ec2-manager/v1/api.json",
"https://references.taskcluster.net/github/v1/api.json",
"https://references.taskcluster.net/github/v1/exchanges.json",
"https://references.taskcluster.net/hooks/v1/api.json",
"https://references.taskcluster.net/index/v1/api.json",
"https://references.taskcluster.net/login/v1/api.json",
"https://references.taskcluster.net/notify/v1/api.json",
"https://references.taskcluster.net/pulse/v1/api.json",
"https://references.taskcluster.net/purge-cache/v1/api.json",
"https://references.taskcluster.net/purge-cache/v1/exchanges.json",
"https://references.taskcluster.net/queue/v1/api.json",
"https://references.taskcluster.net/queue/v1/exchanges.json",
"https://references.taskcluster.net/secrets/v1/api.json",
"https://references.taskcluster.net/treeherder/v1/exchanges.json"
]
}
However, for a taskcluster deployment with TASKCLUSTER_ROOT_URL='https://tc.foo' would be served like this:
{
"$schema" : "https://tc.foo/schemas/base/v1/api-manifest.json",
"references": [
"https://tc.foo/references/auth/v1/api.json",
"https://tc.foo/references/auth/v1/exchanges.json",
"https://tc.foo/references/aws-provisioner/v1/api.json",
"https://tc.foo/references/aws-provisioner/v1/exchanges.json",
"https://tc.foo/references/ec2-manager/v1/api.json",
"https://tc.foo/references/github/v1/api.json",
"https://tc.foo/references/github/v1/exchanges.json",
"https://tc.foo/references/hooks/v1/api.json",
"https://tc.foo/references/index/v1/api.json",
"https://tc.foo/references/login/v1/api.json",
"https://tc.foo/references/notify/v1/api.json",
"https://tc.foo/references/pulse/v1/api.json",
"https://tc.foo/references/purge-cache/v1/api.json",
"https://tc.foo/references/purge-cache/v1/exchanges.json",
"https://tc.foo/references/queue/v1/api.json",
"https://tc.foo/references/queue/v1/exchanges.json",
"https://tc.foo/references/secrets/v1/api.json",
"https://tc.foo/references/treeherder/v1/exchanges.json"
]
}
A schema describing this format must be hosted under the location specified in the $schema property, e.g. under /schemas/base/v1/api-manifest.json for all deployments except https://taskcluster.net.
Assignee | ||
Updated•6 years ago
|
Assignee: nobody → dustin
Assignee | ||
Comment 1•6 years ago
|
||
This is being solved in tc-lib-references in bug 1506980
Status: NEW → RESOLVED
Closed: 6 years ago
Resolution: --- → DUPLICATE
Reporter | ||
Comment 2•6 years ago
|
||
TL;DR: The manifest.json is still not compliant, despite the changes to tc-lib-references in bug 1506980.
For example, the following manifests are not compliant with are not yet compliant with https://github.com/taskcluster/taskcluster-rfcs/blob/master/rfcs/0128-redeployable-clients.md#41-changes-to-publishing-api-manifest:
* https://dustin.taskcluster-dev.net/references/manifest.json
* https://references.taskcluster.net/manifest.json
----
This is the current output from the above URLs:
> {
> "services": [
> {
> "serviceName": "auth",
> "apis": [
> {
> "version": "v1",
> "reference": "/references/auth/v1/api.json"
> }
> ],
> "pulse": [
> {
> "version": "v1",
> "reference": "/references/auth/v1/exchanges.json"
> }
> ]
> },
> {
> "serviceName": "events",
> "apis": [
> {
> "version": "v1",
> "reference": "/references/events/v1/api.json"
> }
> ]
> },
> {
> "serviceName": "gce-provider",
> "apis": [
> {
> "version": "v1",
> "reference": "/references/gce-provider/v1/api.json"
> }
> ]
> },
> {
> "serviceName": "github",
> "apis": [
> {
> "version": "v1",
> "reference": "/references/github/v1/api.json"
> }
> ],
> "pulse": [
> {
> "version": "v1",
> "reference": "/references/github/v1/exchanges.json"
> }
> ]
> },
> {
> "serviceName": "hooks",
> "apis": [
> {
> "version": "v1",
> "reference": "/references/hooks/v1/api.json"
> }
> ],
> "pulse": [
> {
> "version": "v1",
> "reference": "/references/hooks/v1/exchanges.json"
> }
> ]
> },
> {
> "serviceName": "index",
> "apis": [
> {
> "version": "v1",
> "reference": "/references/index/v1/api.json"
> }
> ]
> },
> {
> "serviceName": "login",
> "apis": [
> {
> "version": "v1",
> "reference": "/references/login/v1/api.json"
> }
> ]
> },
> {
> "serviceName": "notify",
> "apis": [
> {
> "version": "v1",
> "reference": "/references/notify/v1/api.json"
> }
> ],
> "pulse": [
> {
> "version": "v1",
> "reference": "/references/notify/v1/exchanges.json"
> }
> ]
> },
> {
> "serviceName": "purge-cache",
> "apis": [
> {
> "version": "v1",
> "reference": "/references/purge-cache/v1/api.json"
> }
> ]
> },
> {
> "serviceName": "queue",
> "apis": [
> {
> "version": "v1",
> "reference": "/references/queue/v1/api.json"
> }
> ],
> "pulse": [
> {
> "version": "v1",
> "reference": "/references/queue/v1/exchanges.json"
> }
> ]
> },
> {
> "serviceName": "secrets",
> "apis": [
> {
> "version": "v1",
> "reference": "/references/secrets/v1/api.json"
> }
> ]
> }
> ],
> "$schema": "https://dustin.taskcluster-dev.net/schemas/common/manifest-v2.json#"
> }
> {
> "Auth": "https://references.taskcluster.net/auth/v1/api.json",
> "AuthEvents": "https://references.taskcluster.net/auth/v1/exchanges.json",
> "AwsProvisioner": "https://references.taskcluster.net/aws-provisioner/v1/api.json",
> "AwsProvisionerEvents": "https://references.taskcluster.net/aws-provisioner/v1/exchanges.json",
> "EC2Manager": "https://references.taskcluster.net/ec2-manager/v1/api.json",
> "Github": "https://references.taskcluster.net/github/v1/api.json",
> "GithubEvents": "https://references.taskcluster.net/github/v1/exchanges.json",
> "Hooks": "https://references.taskcluster.net/hooks/v1/api.json",
> "Index": "https://references.taskcluster.net/index/v1/api.json",
> "Login": "https://references.taskcluster.net/login/v1/api.json",
> "Notify": "https://references.taskcluster.net/notify/v1/api.json",
> "Pulse": "https://references.taskcluster.net/pulse/v1/api.json",
> "PurgeCache": "https://references.taskcluster.net/purge-cache/v1/api.json",
> "PurgeCacheEvents": "https://references.taskcluster.net/purge-cache/v1/exchanges.json",
> "Queue": "https://references.taskcluster.net/queue/v1/api.json",
> "QueueEvents": "https://references.taskcluster.net/queue/v1/exchanges.json",
> "Secrets": "https://references.taskcluster.net/secrets/v1/api.json",
> "TreeherderEvents": "https://references.taskcluster.net/treeherder/v1/exchanges.json"
> }
The RFC requires the manifests to look like this:
{
"$schema" : "https://tc.foo/schemas/base/v1/api-manifest.json",
"references": [
"https://tc.foo/references/auth/v1/api.json",
"https://tc.foo/references/auth/v1/exchanges.json",
"https://tc.foo/references/aws-provisioner/v1/api.json",
"https://tc.foo/references/aws-provisioner/v1/exchanges.json",
"https://tc.foo/references/ec2-manager/v1/api.json",
"https://tc.foo/references/github/v1/api.json",
"https://tc.foo/references/github/v1/exchanges.json",
"https://tc.foo/references/hooks/v1/api.json",
"https://tc.foo/references/index/v1/api.json",
"https://tc.foo/references/login/v1/api.json",
"https://tc.foo/references/notify/v1/api.json",
"https://tc.foo/references/pulse/v1/api.json",
"https://tc.foo/references/purge-cache/v1/api.json",
"https://tc.foo/references/purge-cache/v1/exchanges.json",
"https://tc.foo/references/queue/v1/api.json",
"https://tc.foo/references/queue/v1/exchanges.json",
"https://tc.foo/references/secrets/v1/api.json",
"https://tc.foo/references/treeherder/v1/exchanges.json"
]
}
Reopening this bug, as there is still some work to do here before the downstream bugs can be worked on.
Status: RESOLVED → REOPENED
Resolution: DUPLICATE → ---
Assignee | ||
Comment 3•6 years ago
|
||
Discussed in irc - it hasn't been deployed to dustin-dev yet, and I don't want to deploy to taskcluster.net until we have a client-generation process that can handle it. If that process is "ask pete to do it by hand" that's OK, but I haven't had confirmation that's the case yet. At any rate, this is implemented and if you need a "live" deployment of it (I guess for development?) then you could deploy it in your own dev environment.
Status: REOPENED → RESOLVED
Closed: 6 years ago → 6 years ago
Resolution: --- → FIXED
Updated•6 years ago
|
Component: Redeployability → Services
You need to log in
before you can comment on or make changes to this bug.
Description
•