Closed Bug 1505399 Opened 6 years ago Closed 6 years ago

RFC 128 - 4.1 Changes to publishing API manifest

Categories

(Taskcluster :: Services, defect)

defect
Not set
normal

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: nobody → dustin
Blocks: 1506980
This is being solved in tc-lib-references in bug 1506980
Status: NEW → RESOLVED
Closed: 6 years ago
Resolution: --- → DUPLICATE
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 → ---
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 ago6 years ago
Resolution: --- → FIXED
Component: Redeployability → Services
You need to log in before you can comment on or make changes to this bug.