import requests
url = "https://platform.ankra.app/org/service-packages"
payload = {
"schema_version": 1,
"name": "<string>",
"version": "<string>",
"publisher_id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"profiles": {},
"parameters": [
{
"name": "<string>",
"minimum": 500000000,
"maximum": 500000000,
"default": 500000000,
"unit": "<string>"
}
],
"secrets": [
{
"name": "<string>",
"modes": []
}
],
"outputs": [{ "name": "<string>" }],
"lifecycle": {
"verify": "<string>",
"upgrade": "<string>",
"recovery": "<string>",
"delete": "<string>"
}
}
headers = {
"cookie": "ankra_session=",
"X-Ankra-CSRF": "<x-ankra-csrf>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'POST',
headers: {
cookie: 'ankra_session=',
'X-Ankra-CSRF': '<x-ankra-csrf>',
'Content-Type': 'application/json'
},
body: JSON.stringify({
schema_version: 1,
name: '<string>',
version: '<string>',
publisher_id: '3c90c3cc-0d44-4b50-8888-8dd25736052a',
profiles: {},
parameters: [
{
name: '<string>',
minimum: 500000000,
maximum: 500000000,
default: 500000000,
unit: '<string>'
}
],
secrets: [{name: '<string>', modes: []}],
outputs: [{name: '<string>'}],
lifecycle: {
verify: '<string>',
upgrade: '<string>',
recovery: '<string>',
delete: '<string>'
}
})
};
fetch('https://platform.ankra.app/org/service-packages', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));curl --request POST \
--url https://platform.ankra.app/org/service-packages \
--header 'Content-Type: application/json' \
--header 'X-Ankra-CSRF: <x-ankra-csrf>' \
--cookie ankra_session= \
--data '
{
"schema_version": 1,
"name": "<string>",
"version": "<string>",
"publisher_id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"profiles": {},
"parameters": [
{
"name": "<string>",
"minimum": 500000000,
"maximum": 500000000,
"default": 500000000,
"unit": "<string>"
}
],
"secrets": [
{
"name": "<string>",
"modes": []
}
],
"outputs": [
{
"name": "<string>"
}
],
"lifecycle": {
"verify": "<string>",
"upgrade": "<string>",
"recovery": "<string>",
"delete": "<string>"
}
}
'{
"id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"publisher_id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"name": "<string>",
"version": "<string>",
"capability": "<string>",
"digest": "<string>",
"created_at": "2023-11-07T05:31:56Z",
"contract": {
"schema_version": 1,
"name": "<string>",
"version": "<string>",
"publisher_id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"capability": "logs",
"profiles": {
"hosted": {
"id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"version_id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"digest": "<string>"
},
"customer": {
"id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"version_id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"digest": "<string>"
},
"existing": {
"id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"version_id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"digest": "<string>"
}
},
"parameters": [
{
"name": "<string>",
"minimum": 500000000,
"maximum": 500000000,
"default": 500000000,
"unit": "<string>"
}
],
"secrets": [
{
"name": "<string>",
"modes": [
"hosted"
]
}
],
"outputs": [
{
"name": "<string>",
"kind": "endpoint"
}
],
"lifecycle": {
"verify": "<string>",
"upgrade": "<string>",
"recovery": "<string>",
"delete": "<string>"
}
}
}{
"detail": "<string>"
}{
"detail": "<string>"
}{
"detail": "<string>"
}{
"detail": "<string>"
}Publish an immutable private package version
Requires live profiles.read, profiles.write (publication), or profiles.share (recipient management) permission, intersected with token scopes. Catalogue publication does not grant deployment permission, approve hosted operation, or assert runtime readiness. Shared metadata can remain visible after underlying profile access is revoked; contract reads then return 404. Profile fingerprints are rechecked on contract reads.
import requests
url = "https://platform.ankra.app/org/service-packages"
payload = {
"schema_version": 1,
"name": "<string>",
"version": "<string>",
"publisher_id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"profiles": {},
"parameters": [
{
"name": "<string>",
"minimum": 500000000,
"maximum": 500000000,
"default": 500000000,
"unit": "<string>"
}
],
"secrets": [
{
"name": "<string>",
"modes": []
}
],
"outputs": [{ "name": "<string>" }],
"lifecycle": {
"verify": "<string>",
"upgrade": "<string>",
"recovery": "<string>",
"delete": "<string>"
}
}
headers = {
"cookie": "ankra_session=",
"X-Ankra-CSRF": "<x-ankra-csrf>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'POST',
headers: {
cookie: 'ankra_session=',
'X-Ankra-CSRF': '<x-ankra-csrf>',
'Content-Type': 'application/json'
},
body: JSON.stringify({
schema_version: 1,
name: '<string>',
version: '<string>',
publisher_id: '3c90c3cc-0d44-4b50-8888-8dd25736052a',
profiles: {},
parameters: [
{
name: '<string>',
minimum: 500000000,
maximum: 500000000,
default: 500000000,
unit: '<string>'
}
],
secrets: [{name: '<string>', modes: []}],
outputs: [{name: '<string>'}],
lifecycle: {
verify: '<string>',
upgrade: '<string>',
recovery: '<string>',
delete: '<string>'
}
})
};
fetch('https://platform.ankra.app/org/service-packages', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));curl --request POST \
--url https://platform.ankra.app/org/service-packages \
--header 'Content-Type: application/json' \
--header 'X-Ankra-CSRF: <x-ankra-csrf>' \
--cookie ankra_session= \
--data '
{
"schema_version": 1,
"name": "<string>",
"version": "<string>",
"publisher_id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"profiles": {},
"parameters": [
{
"name": "<string>",
"minimum": 500000000,
"maximum": 500000000,
"default": 500000000,
"unit": "<string>"
}
],
"secrets": [
{
"name": "<string>",
"modes": []
}
],
"outputs": [
{
"name": "<string>"
}
],
"lifecycle": {
"verify": "<string>",
"upgrade": "<string>",
"recovery": "<string>",
"delete": "<string>"
}
}
'{
"id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"publisher_id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"name": "<string>",
"version": "<string>",
"capability": "<string>",
"digest": "<string>",
"created_at": "2023-11-07T05:31:56Z",
"contract": {
"schema_version": 1,
"name": "<string>",
"version": "<string>",
"publisher_id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"capability": "logs",
"profiles": {
"hosted": {
"id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"version_id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"digest": "<string>"
},
"customer": {
"id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"version_id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"digest": "<string>"
},
"existing": {
"id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"version_id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"digest": "<string>"
}
},
"parameters": [
{
"name": "<string>",
"minimum": 500000000,
"maximum": 500000000,
"default": 500000000,
"unit": "<string>"
}
],
"secrets": [
{
"name": "<string>",
"modes": [
"hosted"
]
}
],
"outputs": [
{
"name": "<string>",
"kind": "endpoint"
}
],
"lifecycle": {
"verify": "<string>",
"upgrade": "<string>",
"recovery": "<string>",
"delete": "<string>"
}
}
}{
"detail": "<string>"
}{
"detail": "<string>"
}{
"detail": "<string>"
}{
"detail": "<string>"
}Authorizations
Browser session. Mutations also require X-Ankra-CSRF.
Headers
Must match the ankra_csrf cookie.
Body
At most 256 KiB. Duplicate keys, unknown properties and null contract values are rejected. Only publisher-owned profiles may be published. An identical retry returns the existing version; a changed contract at the same identity returns 409.
63^[a-z][a-z0-9]*(-[a-z0-9]+)*$32^(0|[1-9][0-9]*)\.(0|[1-9][0-9]*)\.(0|[1-9][0-9]*)$logs, metrics, traces, database, cache, search Show child attributes
Show child attributes
32Show child attributes
Show child attributes
16Show child attributes
Show child attributes
1 - 16 elementsShow child attributes
Show child attributes
Show child attributes
Show child attributes