Create
cancel
Showing results for 
Search instead for 
Did you mean: 
Sign up Log in

edit label

Jana Tate June 1, 2016
 

4 answers

1 accepted

0 votes
Answer accepted
Steven F Behnke
Rising Star
Rising Star
Rising Stars are recognized for providing high-quality answers to other users. Rising Stars receive a certificate of achievement and are on the path to becoming Community Leaders.
June 9, 2016

There is no built-in way to accomplish this. Since Atlassian publishes their own REST API as public, we could take advantage of that API to do this job for us. It would require scripting in whatever language someone at your company is familiar with. I can talk in pseudo code.

Our script could run a search to return some results – 

https://confluence.domain.com/rest/api/search?cql=label=badlabel

This would return a list of results. I searched for badlabel and I was returned two results, both are attachments. This list is paginated so we only could receive twenty-five pages at a time, at which point we'd have to pass the &start=25 parameter to indicate where to start the results. We might also want to limit results to &type=attachment. I included an example of my results below.

Results are returned in an array, so we'd like to obtain each content's ID.

{  
  results:[  
    {  
      content:{  
        id:"att37029975",
        type:"attachment",
        title:"image2015-10-15 9:55:5.png",
        _links:{  
          webui:"/display/~steve/Using+Transitions+to+set+Resolution?preview=%2F37029969%2F37029975%2Fimage2015-10-15+9%3A55%3A5.png",
          self:"https://confluence.domain.com/rest/api/content/att37029975"
        },
        _expandable:{  
          container:"",
          metadata:"",
          extensions:"",
          operations:"",
          children:"",
          history:"/rest/api/content/att37029975/history",
          ancestors:"",
          body:"",
          version:"",
          descendants:"",
          space:"/rest/api/space/~steve"
        }
      },
      title:"image2015-10-15 9:55:5.png",
      excerpt:"badlabel",
      url:"/display/~steve/Using+Transitions+to+set+Resolution?preview=%2F37029969%2F37029975%2Fimage2015-10-15+9%3A55%3A5.png",
      resultParentContainer:{  
        title:"Using Transitions to set Resolution",
        displayUrl:"/display/~steve/Using+Transitions+to+set+Resolution"
      },
      resultGlobalContainer:{  
        title:"Steve Behnke",
        displayUrl:"/display/~steve"
      },
      entityType:"content",
      iconCssClass:"icon-file-image",
      lastModified:"2015-10-15T09:55:05.000-07:00",
      friendlyLastModified:"Oct 15, 2015"
    },
    {  
      content:{  
        id:"att37029973",
        type:"attachment",
        title:"image2015-10-15 9:54:19.png",
        _links:{  
          webui:"/display/~steve/Using+Transitions+to+set+Resolution?preview=%2F37029969%2F37029973%2Fimage2015-10-15+9%3A54%3A19.png",
          self:"https://confluence.domain.com/rest/api/content/att37029973"
        },
        _expandable:{  
          container:"",
          metadata:"",
          extensions:"",
          operations:"",
          children:"",
          history:"/rest/api/content/att37029973/history",
          ancestors:"",
          body:"",
          version:"",
          descendants:"",
          space:"/rest/api/space/~steve"
        }
      },
      title:"image2015-10-15 9:54:19.png",
      excerpt:"badlabel",
      url:"/display/~steve/Using+Transitions+to+set+Resolution?preview=%2F37029969%2F37029973%2Fimage2015-10-15+9%3A54%3A19.png",
      resultParentContainer:{  
        title:"Using Transitions to set Resolution",
        displayUrl:"/display/~steve/Using+Transitions+to+set+Resolution"
      },
      resultGlobalContainer:{  
        title:"Steve Behnke",
        displayUrl:"/display/~steve"
      },
      entityType:"content",
      iconCssClass:"icon-file-image",
      lastModified:"2015-10-15T09:54:20.000-07:00",
      friendlyLastModified:"Oct 15, 2015"
    }
  ],
  start:0,
  limit:25,
  size:2,
  totalSize:2,
  cqlQuery:"label=badlabel",
  searchDuration:58,
  _links:{  
    base:"https://confluence.domain.com",
    context:""
  }
}

We will then loop through all attachment ID's we received. First we should add the new label. If we use a program like CURL we can indicate POST and pass the label – 

curl -H "Content-Type: application/json" -X POST -d '{"prefix":"global","name":"goodLabel"}' https://confluence.domain.com/rest/api/content/att37029975/label

Then we should loop through all attachment ID's again and remove the old label – 

https://confluence.domain.com/rest/api/content/att37029975l/label?badLabel

 

0 votes
Jana Tate June 10, 2016

Thanks mucho Steven!  The client has decided to take 30 lashes and tackle the issue manually.  I sincerely appreciate your thorough and useful reply!  I'll forward the info to our Sys Admins, should this happen to another client in the future smile

0 votes
Jana Tate June 2, 2016

Apologies for my cryptic entry!  I didn't realize I was interacting with the system in this way. 

 

Yes, we've got Confluence 5.8, and I'm not a Sys Admin, just a user trying to help an internal customer who accidentally fat-fingered the wrong year for a label. It's on ~ 200 attachments, so I was hoping to find an end-user way to edit/replace her erroneous entry.  After much digging, it seems there are several add-on possibilities, but I doubt my Sys Admins will install it just for this one client.

Any insights on how I can accomplish this for a single Space w/o involving the tech team?

0 votes
Meck
Rising Star
Rising Star
Rising Stars are recognized for providing high-quality answers to other users. Rising Stars receive a certificate of achievement and are on the path to becoming Community Leaders.
June 1, 2016

Jana, Are you trying edit a label?

Suggest an answer

Log in or Sign up to answer
TAGS
AUG Leaders

Atlassian Community Events