type Bitbucket = {
username: string;
password: string;
};
/**
* Create a tag
* Creates a new tag in the specified repository.
*/
export async function main(
auth: Bitbucket,
repo_slug: string,
workspace: string,
body: {
type: string;
links?: {
self?: { href?: string; name?: string };
commits?: { href?: string; name?: string };
html?: { href?: string; name?: string };
};
name?: string;
target?: ({ type: string; [k: string]: unknown } & {
hash?: string;
date?: string;
author?: { type: string; [k: string]: unknown } & {
raw?: string;
user?: { type: string; [k: string]: unknown } & {
links?: {
avatar?: { href?: string; name?: string };
[k: string]: unknown;
};
created_on?: string;
display_name?: string;
username?: string;
uuid?: string;
[k: string]: unknown;
};
[k: string]: unknown;
};
message?: string;
summary?: {
raw?: string;
markup?: "markdown" | "creole" | "plaintext";
html?: string;
};
parents?: unknown[];
[k: string]: unknown;
}) & {
repository?: { type: string; [k: string]: unknown } & {
links?: {
self?: { href?: string; name?: string };
html?: { href?: string; name?: string };
avatar?: { href?: string; name?: string };
pullrequests?: { href?: string; name?: string };
commits?: { href?: string; name?: string };
forks?: { href?: string; name?: string };
watchers?: { href?: string; name?: string };
downloads?: { href?: string; name?: string };
clone?: { href?: string; name?: string }[];
hooks?: { href?: string; name?: string };
};
uuid?: string;
full_name?: string;
is_private?: boolean;
parent?: unknown;
scm?: "git";
owner?: { type: string; [k: string]: unknown } & {
links?: {
avatar?: { href?: string; name?: string };
[k: string]: unknown;
};
created_on?: string;
display_name?: string;
username?: string;
uuid?: string;
[k: string]: unknown;
};
name?: string;
description?: string;
created_on?: string;
updated_on?: string;
size?: number;
language?: string;
has_issues?: boolean;
has_wiki?: boolean;
fork_policy?: "allow_forks" | "no_public_forks" | "no_forks";
project?: { type: string; [k: string]: unknown } & {
links?: {
html?: { href?: string; name?: string };
avatar?: { href?: string; name?: string };
};
uuid?: string;
key?: string;
owner?: ({ type: string; [k: string]: unknown } & {
links?: {
avatar?: { href?: string; name?: string };
[k: string]: unknown;
};
created_on?: string;
display_name?: string;
username?: string;
uuid?: string;
[k: string]: unknown;
}) & {
links?: {
avatar?: { href?: string; name?: string };
[k: string]: unknown;
} & {
self?: { href?: string; name?: string };
html?: { href?: string; name?: string };
members?: { href?: string; name?: string };
projects?: { href?: string; name?: string };
repositories?: { href?: string; name?: string };
[k: string]: unknown;
};
[k: string]: unknown;
};
name?: string;
description?: string;
is_private?: boolean;
created_on?: string;
updated_on?: string;
has_publicly_visible_repos?: boolean;
[k: string]: unknown;
};
mainbranch?: { [k: string]: unknown } & {
merge_strategies?: ("merge_commit" | "squash" | "fast_forward")[];
default_merge_strategy?: string;
[k: string]: unknown;
};
[k: string]: unknown;
};
participants?: ({ type: string; [k: string]: unknown } & {
user?: { type: string; [k: string]: unknown } & {
links?: {
avatar?: { href?: string; name?: string };
[k: string]: unknown;
};
created_on?: string;
display_name?: string;
username?: string;
uuid?: string;
[k: string]: unknown;
};
role?: "PARTICIPANT" | "REVIEWER";
approved?: boolean;
state?: "approved" | "changes_requested" | null;
participated_on?: string;
[k: string]: unknown;
})[];
[k: string]: unknown;
};
[k: string]: unknown;
} & {
message?: string;
date?: string;
tagger?: { type: string; [k: string]: unknown } & {
raw?: string;
user?: { type: string; [k: string]: unknown } & {
links?: {
avatar?: { href?: string; name?: string };
[k: string]: unknown;
};
created_on?: string;
display_name?: string;
username?: string;
uuid?: string;
[k: string]: unknown;
};
[k: string]: unknown;
};
[k: string]: unknown;
}
) {
const url = new URL(
`https://api.bitbucket.org/2.0/repositories/${workspace}/${repo_slug}/refs/tags`
);
const response = await fetch(url, {
method: "POST",
headers: {
"Content-Type": "application/json",
Authorization: "Basic " + btoa(`${auth.username}:${auth.password}`),
},
body: JSON.stringify(body),
});
if (!response.ok) {
const text = await response.text();
throw new Error(`${response.status} ${text}`);
}
return await response.json();
}
Submitted by hugo697 394 days ago
type Bitbucket = {
username: string;
password: string;
};
/**
* Create a tag
* Creates a new tag in the specified repository.
The payload of the POST should consist of a JSON document that
contains the name of the tag and the target hash.
```
curl https://api.bitbucket.org/2.0/repositories/jdoe/myrepo/refs/tags \
-s -u jdoe -X POST -H "Content-Type: application/json" \
-d '{
"name" : "new-tag-name",
"target" : {
"hash" : "a1b2c3d4e5f6",
}
}'
```
This endpoint does support using short hash prefixes for the commit
hash, but it may return a 400 response if the provided prefix is
ambiguous. Using a full commit hash is the preferred approach.
*/
export async function main(
auth: Bitbucket,
repo_slug: string,
workspace: string,
body: {
type: string;
links?: {
self?: { href?: string; name?: string };
commits?: { href?: string; name?: string };
html?: { href?: string; name?: string };
};
name?: string;
target?: ({ type: string; [k: string]: unknown } & {
hash?: string;
date?: string;
author?: { type: string; [k: string]: unknown } & {
raw?: string;
user?: { type: string; [k: string]: unknown } & {
links?: {
avatar?: { href?: string; name?: string };
[k: string]: unknown;
};
created_on?: string;
display_name?: string;
username?: string;
uuid?: string;
[k: string]: unknown;
};
[k: string]: unknown;
};
message?: string;
summary?: {
raw?: string;
markup?: "markdown" | "creole" | "plaintext";
html?: string;
};
parents?: unknown[];
[k: string]: unknown;
}) & {
repository?: { type: string; [k: string]: unknown } & {
links?: {
self?: { href?: string; name?: string };
html?: { href?: string; name?: string };
avatar?: { href?: string; name?: string };
pullrequests?: { href?: string; name?: string };
commits?: { href?: string; name?: string };
forks?: { href?: string; name?: string };
watchers?: { href?: string; name?: string };
downloads?: { href?: string; name?: string };
clone?: { href?: string; name?: string }[];
hooks?: { href?: string; name?: string };
};
uuid?: string;
full_name?: string;
is_private?: boolean;
parent?: unknown;
scm?: "git";
owner?: { type: string; [k: string]: unknown } & {
links?: {
avatar?: { href?: string; name?: string };
[k: string]: unknown;
};
created_on?: string;
display_name?: string;
username?: string;
uuid?: string;
[k: string]: unknown;
};
name?: string;
description?: string;
created_on?: string;
updated_on?: string;
size?: number;
language?: string;
has_issues?: boolean;
has_wiki?: boolean;
fork_policy?: "allow_forks" | "no_public_forks" | "no_forks";
project?: { type: string; [k: string]: unknown } & {
links?: {
html?: { href?: string; name?: string };
avatar?: { href?: string; name?: string };
};
uuid?: string;
key?: string;
owner?: ({ type: string; [k: string]: unknown } & {
links?: {
avatar?: { href?: string; name?: string };
[k: string]: unknown;
};
created_on?: string;
display_name?: string;
username?: string;
uuid?: string;
[k: string]: unknown;
}) & {
links?: {
avatar?: { href?: string; name?: string };
[k: string]: unknown;
} & {
self?: { href?: string; name?: string };
html?: { href?: string; name?: string };
members?: { href?: string; name?: string };
projects?: { href?: string; name?: string };
repositories?: { href?: string; name?: string };
[k: string]: unknown;
};
[k: string]: unknown;
};
name?: string;
description?: string;
is_private?: boolean;
created_on?: string;
updated_on?: string;
has_publicly_visible_repos?: boolean;
[k: string]: unknown;
};
mainbranch?: { [k: string]: unknown } & {
merge_strategies?: ("merge_commit" | "squash" | "fast_forward")[];
default_merge_strategy?: string;
[k: string]: unknown;
};
[k: string]: unknown;
};
participants?: ({ type: string; [k: string]: unknown } & {
user?: { type: string; [k: string]: unknown } & {
links?: {
avatar?: { href?: string; name?: string };
[k: string]: unknown;
};
created_on?: string;
display_name?: string;
username?: string;
uuid?: string;
[k: string]: unknown;
};
role?: "PARTICIPANT" | "REVIEWER";
approved?: boolean;
state?: "approved" | "changes_requested" | null;
participated_on?: string;
[k: string]: unknown;
})[];
[k: string]: unknown;
};
[k: string]: unknown;
} & {
message?: string;
date?: string;
tagger?: { type: string; [k: string]: unknown } & {
raw?: string;
user?: { type: string; [k: string]: unknown } & {
links?: {
avatar?: { href?: string; name?: string };
[k: string]: unknown;
};
created_on?: string;
display_name?: string;
username?: string;
uuid?: string;
[k: string]: unknown;
};
[k: string]: unknown;
};
[k: string]: unknown;
}
) {
const url = new URL(
`https://api.bitbucket.org/2.0/repositories/${workspace}/${repo_slug}/refs/tags`
);
const response = await fetch(url, {
method: "POST",
headers: {
"Content-Type": "application/json",
Authorization: "Basic " + btoa(`${auth.username}:${auth.password}`),
},
body: JSON.stringify(body),
});
if (!response.ok) {
const text = await response.text();
throw new Error(`${response.status} ${text}`);
}
return await response.json();
}
Submitted by hugo697 394 days ago