{
"openapi": "3.0.0",
"info": {
"version": "1.0.0",
"title": "Dynamic Content - Management APIs",
"termsOfService": "https://amplience.com/terms-conditions",
"contact": {
"email": "support@amplience.com",
"url": "https://docs.amplience.net"
},
"description": "# Introduction\n\nThe Dynamic Content Management API helps you integrate your back end systems with Dynamic Content.\n\nThe API is designed for building back-office applications and you can use it for webhook integrations, content automation apps, or to integrate with your existing back end services.\n\nTo use the API, you'll need a client ID and secret. The authorization section below explains how to use the client ID and secret to obtain an access token that must be included with each request.\n\n# Authentication\n\n## oauth2\n\nDynamic Content uses [OAuth2](https://oauth.net/2/) to authorize access to the Dynamic Content management API.\n\nTo use the API you will need an API key and secret. These credentials will be provided to you by Amplience at the beginning of your project, or you can request them from Amplience support. Your API key will define the resources to which you have access.\n\nYour API key and secret are used to obtain an access token from the Amplience authorization service. This token must be included in the authorization header of all requests to the Dynamic Content management API and is set to expire after a set time period, generally 300 seconds.\n\n\n## Getting an access token\n\nTo get an authorization token, send a ```POST``` request to the Amplience authorization server at ```https://auth.amplience.net``` as follows.\n\n### Request\n\n```\nPOST https://auth.amplience.net/oauth/token\n```\n\n### Headers\n\n| Header | Description |\n| ------------- |-------------|\n|Content-Type |application/x-www-form-urlencoded\n\n\n### Parameters\n\nThe parameters should be URL encoded and included in the body of the request:\n```\nclient_id={yourclientid}&client_secret={yoursecret}&grant_type=client_credentials\n```\n\nReplace ```{yourclientid}``` and ```{yoursecret}``` with your client id and secret.\n\n| Parameter | Description |\n| ------------- |-------------|\n|client_id |The client id (API key) provided to you by Amplience |\n|client_secret|The client secret provided to you by Amplience |\n|grant_type|Set this to ```client_credentials``` to specify that the authorization token should be generated based on the client ID and secret |\n\n### Response\n\n#### Status codes\n\n| Status code | Description |\n| ------------- |-------------|\n|200|OK. Credentials are valid. |\n|400|Bad Request. client id or secret are not valid.|\n\n#### Response body\n\nIf the clientID and secret are valid, the response body will be returned as in the example below.\n\nNote that the example access_token has been truncated.\n\n```\n{\n \"access_token\": \"eyJraWQiOiJhbXBsaWVuY2UtdG9rZW4tc2lnbmluZy1rZXkiLCJhbGciOiJSUzI1NiJ9.eyJpc3MiOiJhbXBsaWVuY2UuY29tIiwiZXhwIjoxNTUzODY4NjIyLCJqdGkiOiJMT2pvZ1dtMFM3TkRNT2VsTk96cWVnIiwiaWF0IjoxNTUzODY3MzYyLCJzd…\",\n \"session_expires_in\": 0,\n \"expires_in\": 300\n}\n```\n\nYou will need to save the access token and include it in requests to the API. If the token has expired, request another token from the authorization service.\n\nThe [Dynamic Content management SDK](https://github.com/amplience/dc-management-sdk-js) contains code to help you manage the access token.\n\n\n## Including the token in an API request\n\nTo make a request to the Dynamic Content management API, for example to list all the hubs you have access to you would send a request such as:\n\n```\nGET https://api.amplience.net/v2/content/hubs\n```\n\nIn the request header you must set the Authorization format to \"Bearer\" and include the access token:\n\n```\nAuthorization : Bearer {access_token}\n```\n\nReplace {access_token} with the access token returned by the authorization service.\n\n\nIf the access token is valid, then the request is processed and the response is returned.\n\n\n# Usage\n\n## Routing\n\nResources can usually be retrieved using a `/resource-types/:id` endpoint.\nCollection resources will always be pluralised, regardless of how they are\naccessed. In cases where resources are nested under a parent resource, and this\ncontext is necessary for the request, this information is included in the\nrouting. For example, while a Content Repository can be retrieved by id using\n`GET /content-repositories/:id`, to create a new Content Repository it is\nnecessary to supply the ID of the parent Hub, so the route would take the form\n`POST /hubs/:hubId/content-repositories`.\n\n## HAL\n\nResources are returned in the HAL format, which provides a representation of\nHATEOAS information in JSON. This allows for discoverability of endpoints from\nresponses, as a response for a resource will contain links to related resources\nand actions. Links are contained within a `_links` object, and are keyed by\nname. In some cases, such as resource listing or search results, linked\nresources are included in the response inside an `_embedded` object, allowing\nmultiple resource to be returned within the same response body.\n\n## Status Codes\n\nResponse codes for the API are described in the table below.\n\n## Status Code Table\n\n| Status Code | Reason Phrase | Purpose |\n| ----------- |---------------| ------- |\n|200 | OK | Successful retrieval or update of a resource or list of resources |\n|201 | Created | Successful creation of a resource |\n|202 | Accepted | A background task has been initiated, but is still processing |\n|204 | No Content | Indicates the following:
* Success with deleting a resource
* Success with granting or revoking permissions
* Success with nothing to report |\n|400 | Bad Request | Non-specific error with request |\n|401 | Unauthorized | No valid token was supplied in the request, or the token could not be decoded |\n|403 | Forbidden | The user lacks either the required functional or ACL permissions to make this request |\n|404 | Not Found | The requested resource does not exist, or the user does not have access to it |\n|405 | Method Not Allowed | The requested HTTP method is not permitted for this resource type |\n|406 | Not Acceptable | The requested resource is not available in the format requested by the user agent |\n|409 | Conflict | The requested change conflicts with the current state of the resource |\n|415 | Unsupported Media Type | The format of the resource supplied by the user agent is not supported by the server |\n|500 | Internal Server Error | Non specific error occurred on the server |\n\n\n## Error Response Format\n\nIf an error occurs, the response body contains a JSON object containing an\nerrors array. This will contain one or more error objects, containing a message\nfield describing the error, and context specific metadata relating to this\ninstance of the error.\n\n```http\nHTTP/1.1 409 Conflict\nX-Content-Type-Options: nosniff\nX-XSS-Protection: 1; mode=block\nCache-Control: no-cache, no-store, max-age=0, must-revalidate\nPragma: no-cache\nExpires: 0\nStrict-Transport-Security: max-age=31536000 ; includeSubDomains\nX-Frame-Options: DENY\nContent-Type: application/hal+json;charset=UTF-8\nContent-Length: 145\n\n{\n \"errors\" : [ {\n \"entity\" : \"Hub\",\n \"property\" : \"name\",\n \"invalidValue\" : \"anya-finn\",\n \"message\" : \"name must be unique\"\n } ]\n}\n```\n\n\n## Guidance on using HTTP PATCH\n\nWhen updating a resource, the `PATCH` method is used. When making a `PATCH`\nrequest, any fields specified in the request will overwrite their associated\nvalues in the stored resource, but omitted fields will remain unchanged. This\nis in contrast to the `PUT` method, which would set omitted fields to null, and\nis not supported in this API. When making a `PATCH` request to a resource\ncontaining nested JSON objects, it is important to note that child objects are\nreplaced completely, and do not inherit the `PATCH` functionality of the root\nobject.\n\nFor example, given a stored resource in the format:\n\n```json\n{\n \"foo\": {\n \"bar\": \"abc\",\n \"baz\": \"xyz\"\n },\n \"bar\": \"123\"\n}\n```\n\nWhen the following request body is used in a `PATCH` request:\n\n```json\n{\n \"foo\": {\n \"bar\": \"def\"\n }\n}\n```\n\nThe resource would be transformed to the following:\n\n```json\n{\n \"foo\": {\n \"bar\": \"def\"\n },\n \"bar\": \"123\"\n}\n```\n\n### Payload Considerations\n\nWhen submitting a JSON payload to the API, the first **complete** JSON object in the body will be accepted, and any\nadditional information will be discarded. For example:\n\n```json\n{\n \"foo\": {\n \"bar\": \"def\"\n },\n \"unknownProperty\": \"will be ignored\"\n}\n```\n\nIn the above example, there is an extra closing brace and additional characters that follow a valid JSON object.\nAny extra input characters like this will be ignored by the API.\n"
},
"externalDocs": {
"description": "Amplience Documentation Hub",
"url": "https://docs.amplience.net"
},
"tags": [
{
"name": "Administration",
"description": "Administration allows you to add or revoke permissions for users and manage access to resources."
},
{
"name": "Content Items",
"description": "## Text Search Query Syntax\nA simple query syntax is provided to allow full text search on content items. Several characters have special meaning and are reserved:\n\n_Table 2. Reserved Search Characters_\n\n| Description | Symbol |\n| ----------- | -------- |\n| Negation Operator \t| - \t|\n| Field Search Operator \t| : \t|\n| Quote (for exact search) \t| \" \t|\n| Comma (list multiple search terms) \t| , \t|\n\nPlease note that the text search is case insensitive, and will only display content items within the hub. See the following examples for an explanation of the query syntax:\n\n_Table 3. Text Search Examples_\n\n| Query | Meaning |\n| ----- | ------- |\n| apple \t| Find all content items containing the word \"apple\" \t|\n| apple orange \t| Find all content items containing the words \"apple\" AND \"orange\" \t|\n| apple,orange \t| Find all content items containing either \"apple\" OR \"orange\" \t|\n| apple -orange \t| Find all content items that contain the word \"apple\" but NOT \"orange\" \t|\n| -apple-orange \t| Find all content items that don’t contain \"apple-orange\" (hyphens in the middle of a word are not treated as negation) \t|\n| label:apple \t| Find all content items that contain the word \"apple\" within the \"label\" field \t|\n| \"apple:orange\" \t| Find all content items containing \"apple:orange\" (quotes must be used to search for a colon character) \t|\n| apple label:orange \t| Find all content items containing the word \"apple\" anywhere within them, AND the word \"orange\" in the label field \t|\n"
},
{
"name": "Content Repositories"
},
{
"name": "Content Types"
},
{
"name": "Editions"
},
{
"name": "Events"
},
{
"name": "Extensions"
},
{
"name": "Folders",
"description": "Folders are used to organise items in a hierarchical structure. Currently only enabled for organising content items within a content repository."
},
{
"name": "Hubs",
"description": "Hubs are containers for multiple repositories including media, content, content types."
},
{
"name": "Localization",
"description": "There are 2 methods of localizing your content into multiple languages, field-level localization and item-level localization. With field-level localization, your content type schema defines which values in your content can be translated into different languages. All translations exist as data in a single item. With item-level localization, you create separate copies of your content for each language."
},
{
"name": "Integrations"
},
{
"name": "Localization"
},
{
"name": "Publishing Jobs"
},
{
"name": "Salesforce Commerce Cloud (SFCC)"
},
{
"name": "Salesforce Marketing Cloud (SFMC)"
},
{
"name": "Search Indexes",
"description": "Dynamic Content search is powered by Algolia. Algolia search indexes can be created to index data for one or more assigned content types. Content can then be queried from your frontend using [Algolia's search APIs and SDKs](https://www.algolia.com/doc/guides/building-search-ui/getting-started/js/)."
},
{
"name": "Search Indexes - Analytics"
},
{
"name": "Slots",
"description": "\"Slots\" are content-items which are stored in separate repositories from other content-items. Their role is to be placeholders for snapshots.\n\n## Example Slot Content Type\n\n```json\n{\n \"$schema\" : \"http://bigcontent.io/cms/schema/v1/schema#\",\n \"id\" : \"http://deliver.bigcontent.io/schema/simple-slot-type.json\",\n \"title\" : \"slot\",\n \"description\" : \"Slot Container\",\n \"type\":\"object\",\n \"properties\": {\n \"slot\": {\n \"title\": \"simple slot container\",\n \"allOf\":[\n {\"$ref\": \"http://bigcontent.io/cms/schema/v1/core#/definitions/content-link\" },\n {\n \"properties\": {\n \"contentType\": { \"enum\": [ \"http://deliver.bigcontent.io/schema/nested/nested-type.json\" ] }\n }\n }\n ]\n }\n }\n}\n```\nYou will need to register a content type capable of holding nested content in order to create a slot.\n\n## Pre-requsites\n\n### Creating a Slot Repository\nA Slot Repository is just a Content Repository with the \"slots\" feature. See [adding features to repositories](#operation/assignContentRepositoryFeature) for more information\n\n### Creating a Slot\nA Slot is a Content Item in a Slot Repository. Please refer to [creating a content item](#operation/createContentItem) for more information.\n\n## Associating Slots to Editions\n\nOnce you have a Slot Repository with some Slots you can then associate them with an Edition in order make them available for publishing.\n\n* Multiple Slots can be associated to an Edition, up to 200\n* A Slot can be associated with multiple Editions\n* A Slot can only be associated to an Edition once\n\nWhen you associate Slots to an Edition, the `slotsRemaining` property on the Edition will decrease. If you attempt to associate more Slots than there are remaining on the Edition, the operation will fail.\n\nPlease refer to the [Assign Edition Slots section](#operation/assignEditionSlots) for an example request.\n\n### Retrieving Slots associated to an Edition\nPlease refer to the [Retrieving Edition Slots section](#operation/getEditionSlots) for an example request.\n\n### Retrieving Slots associated to an Edition filter by content item\nTo filter by content item, we supply the `includedSlots` query parameter. Please refer to the [Get Edition Slots section](#operation/getEditionSlots) for an example request.\n\n### Retrieving an single Slot associated to an Edition\nPlease refer to the [Get Edition Slot section](#operation/getEditionSlot) for an example request.\n\n### Removing the association between a Slot and an Edition\nPlease refer to the [Delete Edition Slot section](#operation/deleteEditionSlot) for an example request.\n\n## Associating Snapshots to Slots\nA slot is a placeholder for one or more snapshots. In order to associate those snapshots to this slot you will need to post the resulting content-item to the slot url.\n\nNotice that in the below request, `body.slot.id` is the path to a snapshot. Not a content item.\n\nThe `body.slot.id` can also be set to null when the user hasn't currently assigned all of the fields. The service will accept this data, however the `valid` field will be set to false.\n\nPlease refer to the [Create Edition Slot Content section](#operation/putEditionSlotContent) for an example request.\n"
},
{
"name": "Snapshots",
"description": "A Snapshot is an immutable representation of a content item with all of its descendants (including their versions) at a given point in time."
},
{
"name": "Webhooks"
},
{
"name": "Workflows",
"description": "It is possible to define a list of workflow states on a hub which will allow users to implement one or more rudimentary workflows. Each content item within the hub can have its status set to one of the workflow states defined within the hub.\n\nIn the interest of flexibility, the transitions between states are not validated. In other words, it is possible to transition a content item from any state into any other state.\n\nFor more information on adding a workflow to a content item see [Assigning a workflow](#operation/assignContentItemWorkflowState)\n"
}
],
"servers": [
{
"url": "https://api.amplience.net/v2/content"
}
],
"paths": {
"/admin": {
"get": {
"tags": ["Administration"],
"summary": "List Administrative Operations",
"description": "Lists the available administrative operations.",
"operationId": "listAdminOps",
"responses": {
"200": {
"description": "List of HAL links to perform the desired operations",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/AdminResponse"
}
}
}
}
}
}
},
"/admin/access": {
"get": {
"tags": ["Administration"],
"security": [
{
"oauth2": ["FN: CONTENT:FUNCTIONAL:ADMIN:MANAGE_ACCESS"]
}
],
"summary": "Manage Access to Resources",
"description": "With the ability to manage access you can control which users have which permissions to the resources you administer.",
"operationId": "manageAccess",
"responses": {
"200": {
"description": "List of HAL links to manage permissions of users for resources",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/AdminAccessResponse"
}
}
}
}
}
}
},
"/admin/access/{resource}/{resourceId}": {
"get": {
"tags": ["Administration"],
"security": [
{
"oauth2": ["FN: CONTENT:FUNCTIONAL:ADMIN:MANAGE_ACCESS"]
}
],
"summary": "List Operations on a resource",
"description": "Given the id of a resource for which you are an administrator, you can see the various operations that you can perform. Simply follow the appropriate link for the resource passing in the id.\n\n| Resource Type | Required Functional Permissions | Required ACLs |\n|-----------------------|----------------------------------------------------------------------------------------|--------------------------------------------------|\n| hubs | `CONTENT:FUNCTIONAL:ADMIN:MANAGE_ACCESS` `CONTENT:FUNCTIONAL:HUB:MANAGE_ACCESS` | `Hub - READ``Hub - MANAGE_ACCESS` |\n| content\\-repositories | `CONTENT:FUNCTIONAL:ADMIN:MANAGE_ACCESS` `CONTENT:FUNCTIONAL:REPOSITORY:MANAGE_ACCESS` | `Hub - READ` `ContentRepository - MANAGE_ACCESS` |\n",
"operationId": "listOperations",
"parameters": [
{
"in": "path",
"name": "resource",
"schema": {
"type": "string",
"enum": ["hubs", "content-repositories"]
},
"required": true,
"description": "Resource Type",
"example": "hubs"
},
{
"in": "path",
"name": "resourceId",
"schema": {
"type": "string"
},
"required": true,
"description": "Resource ID",
"example": "00112233445566778899aabb"
}
],
"responses": {
"200": {
"description": "List of resource Operations",
"content": {
"application/json": {
"schema": {
"allOf": [
{
"$ref": "#/components/schemas/AdminOperationsListResponse"
},
{
"required": ["_links"]
}
]
},
"examples": {
"Hubs": {
"value": {
"_links": {
"self": {
"href": "https://api.amplience.net/v2/content/admin/access/hubs/5d5bc260c9e77c035fee1c6e"
},
"members": {
"href": "https://api.amplience.net/v2/content/admin/access/hubs/5d5bc260c9e77c035fee1c6e/members"
},
"member": {
"href": "https://api.amplience.net/v2/content/admin/access/hubs/5d5bc260c9e77c035fee1c6emembers/{sid}"
}
}
}
},
"Content Repositories": {
"value": {
"_links": {
"self": {
"href": "https://api.amplience.net/v2/content/admin/access/content-repositories/5d5bc260c9e77c035fee1c6e"
},
"members": {
"href": "https://api.amplience.net/v2/content/admin/access/content-repositories/5d5bc260c9e77c035fee1c6e/members"
},
"member": {
"href": "https://api.amplience.net/v2/content/admin/access/content-repositories/5d5bc260c9e77c035fee1c6emembers/{sid}"
}
}
}
}
}
}
}
}
}
}
},
"/admin/access/{resource}/{resourceId}/members": {
"get": {
"tags": ["Administration"],
"security": [
{
"oauth2": ["FN: CONTENT:FUNCTIONAL:ADMIN:MANAGE_ACCESS"]
}
],
"summary": "List members on a resource",
"description": "The memebrs link will list the memebrs that have access to a particular resource. This includes the member's id (sid) and the list of permissions they have.\n\n| Resource Type | Required Functional Permissions | Required ACLs |\n|-----------------------|----------------------------------------------------------------------------------------|--------------------------------------------------|\n| hubs | `CONTENT:FUNCTIONAL:ADMIN:MANAGE_ACCESS` `CONTENT:FUNCTIONAL:HUB:MANAGE_ACCESS` | `Hub - READ` `Hub - MANAGE_ACCESS` |\n| content\\-repositories | `CONTENT:FUNCTIONAL:ADMIN:MANAGE_ACCESS` `CONTENT:FUNCTIONAL:REPOSITORY:MANAGE_ACCESS` | `Hub - READ` `ContentRepository - MANAGE_ACCESS` |\n",
"operationId": "listMembers",
"parameters": [
{
"in": "path",
"name": "resource",
"schema": {
"type": "string",
"enum": ["hubs", "content-repositories"]
},
"required": true,
"description": "Resource Type",
"example": "hubs"
},
{
"in": "path",
"name": "resourceId",
"schema": {
"type": "string"
},
"required": true,
"description": "Resource ID",
"example": "00112233445566778899aabb"
}
],
"responses": {
"200": {
"description": "List of resource members",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/AdminMembersListResponse"
},
"examples": {
"hub": {
"summary": "Hub",
"value": {
"_embedded": {
"members": [
{
"sid": "alice",
"permissions": [
"READ",
"EDIT",
"DELETE",
"SHARE",
"CREATE_REPOSITORY",
"CREATE_EVENT",
"EDIT_EVENT",
"DELETE_EVENT",
"CREATE_EDITION",
"EDIT_EDITION",
"DELETE_EDITION",
"MANAGE_ACCESS",
"EDIT_WORKFLOW_STATES"
],
"_links": {
"self": {
"href": "https://api.amplience.net/v2/content/admin/access/hubs/00112233445566778899aabb/members/alice"
},
"revoke-permission": {
"href": "https://api.amplience.net/v2/content/admin/access/hubs/00112233445566778899aabb/members/alice/permissions/{permission}",
"templated": true
}
}
},
{
"sid": "bob",
"permissions": ["READ"],
"_links": {
"self": {
"href": "https://api.amplience.net/v2/content/admin/access/hubs/00112233445566778899aabb/members/bob"
},
"revoke-permission": {
"href": "https://api.amplience.net/v2/content/admin/access/hubs/00112233445566778899aabb/members/bob/permissions/{permission}",
"templated": true
}
}
},
{
"sid": "charlie",
"permissions": ["READ", "CREATE_REPOSITORY"],
"_links": {
"self": {
"href": "https://api.amplience.net/v2/content/admin/access/hubs/00112233445566778899aabb/members/charlie"
},
"revoke-permission": {
"href": "https://api.amplience.net/v2/content/admin/access/hubs/00112233445566778899aabb/members/charlie/permissions/{permission}",
"templated": true
}
}
},
{
"sid": "david",
"permissions": ["READ"],
"_links": {
"self": {
"href": "https://api.amplience.net/v2/content/admin/access/hubs/00112233445566778899aabb/members/david"
},
"revoke-permission": {
"href": "https://api.amplience.net/v2/content/admin/access/hubs/00112233445566778899aabb/members/david/permissions/{permission}",
"templated": true
}
}
},
{
"sid": "ewan",
"permissions": ["READ"],
"_links": {
"self": {
"href": "https://api.amplience.net/v2/content/admin/access/hubs/00112233445566778899aabb/members/ewan"
},
"revoke-permission": {
"href": "https://api.amplience.net/v2/content/admin/access/hubs/00112233445566778899aabb/members/ewan/permissions/{permission}",
"templated": true
}
}
}
]
},
"_links": {
"self": {
"href": "https://api.amplience.net/v2/content/admin/access/hubs/00112233445566778899aabb/members"
}
}
}
},
"content-repository": {
"summary": "Content Repository",
"value": {
"_embedded": {
"members": [
{
"sid": "alice",
"permissions": [
"READ",
"EDIT",
"DELETE",
"SHARE",
"CREATE_CONTENT",
"EDIT_CONTENT",
"DELETE_CONTENT",
"MANAGE_ACCESS"
],
"_links": {
"self": {
"href": "https://api.amplience.net/v2/content/admin/access/content-repositories/00112233445566778899aabb/members/alice"
},
"revoke-permission": {
"href": "https://api.amplience.net/v2/content/admin/access/content-repositories/00112233445566778899aabb/members/alice/permissions/{permission}",
"templated": true
}
}
},
{
"sid": "bob",
"permissions": ["READ"],
"_links": {
"self": {
"href": "https://api.amplience.net/v2/content/admin/access/content-repositories/00112233445566778899aabb/members/bob"
},
"revoke-permission": {
"href": "https://api.amplience.net/v2/content/admin/access/content-repositories/00112233445566778899aabb/members/bob/permissions/{permission}",
"templated": true
}
}
},
{
"sid": "charlie",
"permissions": ["READ", "CREATE_CONTENT"],
"_links": {
"self": {
"href": "https://api.amplience.net/v2/content/admin/access/content-repositories/00112233445566778899aabb/members/charlie"
},
"revoke-permission": {
"href": "https://api.amplience.net/v2/content/admin/access/content-repositories/00112233445566778899aabb/members/charlie/permissions/{permission}",
"templated": true
}
}
},
{
"sid": "david",
"permissions": ["READ"],
"_links": {
"self": {
"href": "https://api.amplience.net/v2/content/admin/access/content-repositories/00112233445566778899aabb/members/david"
},
"revoke-permission": {
"href": "https://api.amplience.net/v2/content/admin/access/content-repositories/00112233445566778899aabb/members/david/permissions/{permission}",
"templated": true
}
}
},
{
"sid": "ewan",
"permissions": ["READ"],
"_links": {
"self": {
"href": "https://api.amplience.net/v2/content/admin/access/content-repositories/00112233445566778899aabb/members/ewan"
},
"revoke-permission": {
"href": "https://api.amplience.net/v2/content/admin/access/content-repositories/00112233445566778899aabb/members/ewan/permissions/{permission}",
"templated": true
}
}
}
]
},
"_links": {
"self": {
"href": "https://api.amplience.net/v2/content/admin/access/content-repositories/00112233445566778899aabb/members"
}
}
}
}
}
}
}
}
}
}
},
"/admin/access/{resource}/{resourceId}/members/{sid}": {
"get": {
"tags": ["Administration"],
"security": [
{
"oauth2": ["FN: CONTENT:FUNCTIONAL:ADMIN:MANAGE_ACCESS"]
}
],
"summary": "Get a member by id",
"description": "Given a resource and a member id you can navigate directly to a specific member by following the \"member\" link from the resource.
\n\n| Resource Type | Required Functional Permissions | Required ACLs |\n|-----------------------|----------------------------------------------------------------------------------------|--------------------------------------------------|\n| hubs | `CONTENT:FUNCTIONAL:ADMIN:MANAGE_ACCESS` `CONTENT:FUNCTIONAL:HUB:MANAGE_ACCESS` | `Hub - READ` `Hub - MANAGE_ACCESS` |\n| content\\-repositories | `CONTENT:FUNCTIONAL:ADMIN:MANAGE_ACCESS` `CONTENT:FUNCTIONAL:REPOSITORY:MANAGE_ACCESS` | `Hub - READ` `ContentRepository - MANAGE_ACCESS` |\n",
"operationId": "adminAccessGetMember",
"parameters": [
{
"in": "path",
"name": "resource",
"schema": {
"type": "string",
"enum": ["hubs", "content-repositories"]
},
"required": true,
"description": "Resource Type",
"example": "hubs"
},
{
"in": "path",
"name": "resourceId",
"schema": {
"type": "string"
},
"required": true,
"description": "Resource ID",
"example": "00112233445566778899aabb"
},
{
"in": "path",
"name": "sid",
"schema": {
"type": "string"
},
"required": true,
"description": "Member ID",
"example": "alice"
}
],
"responses": {
"200": {
"description": "The requested member",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/Member"
},
"examples": {
"hub": {
"summary": "Hub",
"value": {
"sid": "alice",
"permissions": ["READ"],
"_links": {
"self": {
"href": "https://api.amplience.net/v2/content/admin/access/hubs/00112233445566778899aabb/members/alice"
},
"revoke-permission": {
"href": "https://api.amplience.net/v2/content/admin/access/hubs/00112233445566778899aabb/members/alice/permissions/{permission}",
"templated": true
}
}
}
}
}
}
}
}
}
}
},
"/admin/access/{resource}/{resourceId}/members/{sid}/permissions/{permissions}": {
"delete": {
"tags": ["Administration"],
"security": [
{
"oauth2": ["FN: CONTENT:FUNCTIONAL:ADMIN:MANAGE_ACCESS"]
}
],
"summary": "Revoking permissions",
"description": "Revoke access to a specific resource by deleting a members permission.
From a member, follow the \"revoke-permission\" link passing in the permission to delete.
You can specify one or multiple permissions. Multiple permissions are comma separated.
Resource Type | Required Functional Permissions | Required ACLs |
---|---|---|
hubs | CONTENT:FUNCTIONAL:ADMIN:MANAGE_ACCESS CONTENT:FUNCTIONAL:HUB:MANAGE_ACCESS | Hub - READ Hub - MANAGE_ACCESS |
content-repositories | CONTENT:FUNCTIONAL:ADMIN:MANAGE_ACCESS CONTENT:FUNCTIONAL:REPOSITORY:MANAGE_ACCESS | Hub - READ ContentRepository - MANAGE_ACCESS |