docs: def artifactCreated(self, *args, **kwargs):
          """
          Artifact Creation Messages
  
          Whenever the `createArtifact` end-point is called, the queue will create
          a record of the artifact and post a message on this exchange. All of this
          happens before the queue returns a signed URL for the caller to upload
          the actual artifact with (pending on `storageType`).
  
          This means that the actual artifact is rarely available when this message
          is posted. But it is not unreasonable to assume that the artifact will
          will become available at some point later. Most signatures will expire in
          30 minutes or so, forcing the uploader to call `createArtifact` with
          the same payload again in-order to continue uploading the artifact.
  
          However, in most cases (especially for small artifacts) it's very
          reasonable assume the artifact will be available within a few minutes.
          This property means that this exchange is mostly useful for tools
          monitoring task evaluation. One could also use it count number of
          artifacts per task, or _index_ artifacts though in most cases it'll be
          smarter to index artifacts after the task in question have completed
          successfully.
  
          This exchange outputs: ``v1/artifact-created-message.json#``This exchange takes the following keys:
  
           * routingKeyKind: Identifier for the routing-key kind. This is always `'primary'` for the formalized routing key. (required)
  
           * taskId: `taskId` for the task this message concerns (required)
  
           * runId: `runId` of latest run for the task, `_` if no run is exists for the task. (required)
  
           * workerGroup: `workerGroup` of latest run for the task, `_` if no run is exists for the task. (required)
  
           * workerId: `workerId` of latest run for the task, `_` if no run is exists for the task. (required)
  
           * provisionerId: `provisionerId` this task is targeted at. (required)
  
           * workerType: `workerType` this task must run on. (required)
  
           * schedulerId: `schedulerId` this task was created by. (required)
  
           * taskGroupId: `taskGroupId` this task was created in. (required)
  
           * reserved: Space reserved for future routing-key entries, you should always match this entry with `#`. As automatically done by our tooling, if not specified.
          """
  
          ref = {
              'exchange': 'artifact-created',
              'name': 'artifactCreated',
              'routingKey': [
                  {
                      'constant': 'primary',
                      'multipleWords': False,
                      'name': 'routingKeyKind',
                  },
                  {
                      'multipleWords': False,
                      'name': 'taskId',
                  },
                  {
                      'multipleWords': False,
                      'name': 'runId',
                  },
                  {
                      'multipleWords': False,
                      'name': 'workerGroup',
                  },
                  {
                      'multipleWords': False,
                      'name': 'workerId',
                  },
                  {
                      'multipleWords': False,
                      'name': 'provisionerId',
                  },
                  {
                      'multipleWords': False,
                      'name': 'workerType',
                  },
                  {
                      'multipleWords': False,
                      'name': 'schedulerId',
                  },
                  {
                      'multipleWords': False,
                      'name': 'taskGroupId',
                  },
                  {
                      'multipleWords': True,
                      'name': 'reserved',
                  },
              ],
              'schema': 'v1/artifact-created-message.json#',
          }
          return self._makeTopicExchange(ref, *args, **kwargs)