Pacifica Metadata
Project description
Pacifica Metadata Services
This is the Pacifica Metadata Services API.
This service provides metadata for objects and relationships between objects. See the metadata model page for a complete listing of objects and relationships between objects.
Installing the Service
Use the Docker Container
docker pull pacifica/metadata
The Docker Compose Way
docker-compose up
The Manual Way
Install the dependencies using the pip
command:
pip install pacifica-metadata
Setup the database the default is PostgreSQL.
pacifica-metadata-cmd dbsync
Then, run the code:
pacifica-metadata
The API
The Pacifica Metadata Services API covers the complete object life-cycle: create, read, update, and delete.
The examples in this section demonstrate the life-cycle of the User
object
using a Pacifica Metadata Services deployment at http://localhost:8121/ (see
"Installing the Service" section).
Creating an Object
To create a new User
object, start by generating a new file create.json
to
store the JSON data:
{
"_id": 127,
"email_address": "john@doe.com",
"first_name": "John",
"last_name": "Doe",
"middle_initial": "",
"network_id": "guest"
}
Then, provide the contents of the new file as the body for a HTTP PUT request
using the curl
command:
curl -X PUT -T create.json 'http://localhost:8121/users'
Reading an Object
To retrieve the JSON data for the User
object that was just created, send a
HTTP GET request (with the _id
attribute as a query parameter) using the
curl
command:
curl -X GET 'http://localhost:8121/users?_id=127'
The response body is a JSON array of JSON objects.
Because the query uses the _id
attribute, a primary key, the JSON array
contains either zero (no match) or one (match) JSON objects:
[
{
"_id": 127,
"email_address": "john@doe.com",
"encoding": "UTF8",
"first_name": "John",
"last_name": "Doe",
"middle_initial": "",
"network_id": "guest",
"created": 1459204793,
"deleted": null,
"updated": 1459204793
}
]
Optionally, query on any other parts of an object by using its attributes as
query parameters, e.g., to query on both the first_name
and last_name
attributes using the curl
command:
curl -X GET 'http://localhost:8121/users?last_name=Doe&first_name=John'
Response bodies for queries on other parts may contain JSON data for more than one match:
[
{
"_id": 127,
"email_address": "john@doe.com",
"encoding": "UTF8",
"first_name": "John",
"last_name": "Doe",
"middle_initial": "",
"network_id": "guest",
"created": 1459204793,
"deleted": null,
"updated": 1459204793
},
...
]
Pagination
By default, Pacifica Metadata Services API endpoints respond with JSON data for all matching objects. Hence, the response size, and therefore, the response time is proportional to the number of matches.
To reduce the response time, but still enable access to all matching objects, all Pacifica Metadata Services API endpoints offer a "pagination" capability, where large responses are subdivided into "pages" with a fixed number of matching objects "per page".
For example, 100 matching objects are divided into 4 pages of 25 matching objects per page:
- Page 1 = Matching objects 1 to 25
- Page 2 = Matching objects 26 to 50
- Page 3 = Matching objects 51 to 75
- Page 4 = Matching objects 76 to 100
- Page >4 = No matching objects
Use the page_number
and items_per_page
query parameters to specify the
number of pages and the number of matching objects per page, respectively, e.g.,
to retrieve the 7th page of 10 User
s per page using the curl
command:
curl -X GET 'http://localhost:8121/users?items_per_page=10&page_number=7'
Updating an Object
To modify a preexisting object, use the query parameters to identify the object
(or objects) and then send a HTTP POST request with the JSON data for the
modified attributes as the request body, e.g., to modify the network_id
attribute, start by generating a new file update.json
to store the JSON data:
{
"network_id": "example"
}
Then, provide the contents of the new file as the body for a HTTP POST request
using the curl
command:
curl -X POST -T update.json 'http://localhost:8121/users?last_name=Doe&first_name=John'
Finally, verify the modifications by retrieving the most recent version of the
object (see "Reading an Object" section), e.g., using the curl
command:
curl -X GET 'http://localhost:8121/users?_id=127'
The updated
attribute is automatically set to the current time when an object
is modified:
[
{
"_id": 127,
"email_address": "john@doe.com",
"encoding": "UTF8",
"first_name": "John",
"last_name": "Doe",
"middle_initial": "",
"network_id": "example",
"created": 1459204793,
"deleted": null,
"updated": 1459205143
}
]
(Soft) Deleting an Object
To mark an object as deleted
, i.e., to "soft delete" an object, send a HTTP
DELETE request using the curl
command:
curl -X DELETE 'http://localhost:8121/users?_id=127'
NOTE Don't worry! The object isn't really deleted.
Finally, verify the "soft delete" by retrieving the most recent version of the
object (see "Reading an Object" section), e.g., using the curl
command:
curl -X GET 'http://localhost:8121/users?_id=127'
The deleted
attribute is automatically set to the current time when an object
is "soft deleted":
[
{
"_id": 127,
"email_address": "john@doe.com",
"encoding": "UTF8",
"first_name": "John",
"last_name": "Doe",
"middle_initial": "",
"network_id": "example",
"created": 1459204793,
"deleted": 1459205341,
"updated": 1459205143
}
]
Contributions
Contributions are accepted on GitHub via the fork and pull request workflow. GitHub has a good help article if you are unfamiliar with this method of contributing.
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distributions
Hashes for pacifica_metadata-0.4.1-py3-none-any.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | ff66a47216019828db685b845c00f007bbe7db5ac19840100613fc4f2c62cf93 |
|
MD5 | df8ca1e640ff9606ba12f853acb68fef |
|
BLAKE2b-256 | d450cf2675bd9e02e165de2639d061d389d9655fdbe829673cfe4415c3c0c5b5 |
Hashes for pacifica_metadata-0.4.1-py2-none-any.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | de82181dd31ab88f11b9c5f2f74c1fbbf333d393f1fefb67a88696bee7d7c553 |
|
MD5 | 104832b32cebfc21c6f05a0242874744 |
|
BLAKE2b-256 | d0c2efccbb49fb466fccd96ea70932a1664d30deb7137b297bfccefd522ab93c |