Page cover

๐Ÿ”ƒVersions

Get content versions

GET /wiki/rest/api/content/{id}/version

Deprecated, use Confluence's v2 API.

Returns the versions for a piece of content in descending order.

package main

import (
	"context"
	"fmt"
	"github.com/ctreminiom/go-atlassian/confluence"
	"log"
	"os"
)

func main() {

	var (
		host  = os.Getenv("HOST")
		mail  = os.Getenv("MAIL")
		token = os.Getenv("TOKEN")
	)

	instance, err := confluence.New(nil, host)
	if err != nil {
		log.Fatal(err)
	}

	instance.Auth.SetBasicAuth(mail, token)
	instance.Auth.SetUserAgent("curl/7.54.0")

	var (
		ctx       = context.Background()
		contentID = "80412692"
		expand    = []string{"collaborators", "content"}
		start     = 0
		limit     = 50
	)

	versions, response, err := instance.Content.Version.Gets(ctx, contentID, expand, start, limit)
	if err != nil {
		if response != nil {
			log.Println(response.Bytes.String())
			log.Println("Endpoint:", response.Endpoint)
		}
		log.Fatal(err)
	}

	for _, version := range versions.Results {
		fmt.Println(version.Number, version.Content.Title, version.By.Email)
	}
}

Restore content version

POST /wiki/rest/api/content/{id}/version

Restores a historical version to be the latest version. That is, a new version is created with the content of the historical version.

package main

import (
	"context"
	"fmt"
	"github.com/ctreminiom/go-atlassian/confluence"
	"github.com/ctreminiom/go-atlassian/pkg/infra/models"
	"log"
	"os"
)

func main()  {

	var (
		host  = os.Getenv("HOST")
		mail  = os.Getenv("MAIL")
		token = os.Getenv("TOKEN")
	)

	instance, err := confluence.New(nil, host)
	if err != nil {
		log.Fatal(err)
	}

	instance.Auth.SetBasicAuth(mail, token)
	instance.Auth.SetUserAgent("curl/7.54.0")

	ctx := context.Background()
	contentID := "80412692"
	expand := []string{"collaborators", "content"}

	payload := &models.ContentRestorePayloadScheme{
		OperationKey: "restore",
		Params: &models.ContentRestoreParamsPayloadScheme{
			VersionNumber: 1,
			Message:       "message sample :)",
			RestoreTitle:  true,
		},
	}

	version, response, err := instance.Content.Version.Restore(ctx, contentID, payload, expand)
	if err != nil {
		if response != nil {
			log.Println(response.Bytes.String())
			log.Println("Endpoint:", response.Endpoint)
		}
		log.Fatal(err)
	}

	fmt.Println(version.Content.Title)
	fmt.Println(version.Content.ID)
	fmt.Println(version.By.Email)
	fmt.Println(version.By.Type)
	fmt.Println(version.By.AccountID)
	fmt.Println(version.Collaborators.UserKeys)
}

Get content version

GET /wiki/rest/api/content/{id}/version/{versionNumber}

Deprecated, use Confluence's v2 API.

Returns a version for a piece of content.

package main

import (
	"context"
	"fmt"
	"github.com/ctreminiom/go-atlassian/confluence"
	"log"
	"os"
)

func main() {

	var (
		host  = os.Getenv("HOST")
		mail  = os.Getenv("MAIL")
		token = os.Getenv("TOKEN")
	)

	instance, err := confluence.New(nil, host)
	if err != nil {
		log.Fatal(err)
	}

	instance.Auth.SetBasicAuth(mail, token)
	instance.Auth.SetUserAgent("curl/7.54.0")

	var (
		ctx       = context.Background()
		contentID = "80412692"
		versionID = 1
		expand    = []string{"collaborators", "content"}
	)

	version, response, err := instance.Content.Version.Get(ctx, contentID, versionID, expand)
	if err != nil {
		if response != nil {
			log.Println(response.Bytes.String())
			log.Println("Endpoint:", response.Endpoint)
		}
		log.Fatal(err)
	}

	fmt.Println(version.Content.Title)
	fmt.Println(version.Content.ID)
	fmt.Println(version.By.Email)
	fmt.Println(version.By.Type)
	fmt.Println(version.By.AccountID)
	fmt.Println(version.Collaborators.UserKeys)
}

Delete content version

DELETE /wiki/rest/api/content/{id}/version/{versionNumber}

Delete a historical version. This does not delete the changes made to the content in that version, rather the changes for the deleted version are rolled up into the next version. Note, you cannot delete the current version.

package main

import (
	"context"
	"github.com/ctreminiom/go-atlassian/confluence"
	"log"
	"os"
)

func main() {

	var (
		host  = os.Getenv("HOST")
		mail  = os.Getenv("MAIL")
		token = os.Getenv("TOKEN")
	)

	instance, err := confluence.New(nil, host)
	if err != nil {
		log.Fatal(err)
	}

	instance.Auth.SetBasicAuth(mail, token)
	instance.Auth.SetUserAgent("curl/7.54.0")

	var (
		ctx           = context.Background()
		contentID     = "80412692"
		versionNumber = 2
	)

	response, err := instance.Content.Version.Delete(ctx, contentID, versionNumber)
	if err != nil {
		if response != nil {
			log.Println(response.Bytes.String())
			log.Println("Endpoint:", response.Endpoint)
		}
		log.Fatal(err)
	}
}

Last updated

Was this helpful?