Skip to content

Project & Workflow Service

Introduction

The Project & Workflow Service provides a set of APIs to manage the entire collaboration project life-cycle such as modification, deletion, versioning and data schema.

Collaboration project structure

From the Project & Workflow Service perspective, the metadata to be ingested is called collaboration project. Below is a basic example of a Collaboration project with a brief explanation of each field:

{
   "id": "data-partition-id:hello:123456",
   "kind": "schema-authority:wks:hello:1.0.0",
   "version": 1562066009929332,
   "acl": {
     "viewers": ["data.default.viewers@data-partition-id.[osdu.opengroup.org]"],
     "owners": ["data.default.owners@data-partition-id.[osdu.opengroup.org]"]
   },
   "legal": {
     "legaltags": ["data-partition-id-sample-legaltag"],
     "otherRelevantDataCountries": ["FR","US","CA"],
     "status": "compliant"
   },
   "tags": {
    "NameOfKey": "String value"
  },
  "ancestry": {
    "parents": []
  },
  "meta": [
    {
      "kind": "Unit",
      "name": "m",
      "persistableReference": "{\"abcd\":{\"a\":0.0,\"b\":1.0,\"c\":1.0,\"d\":0.0},\"symbol\":\"m\",\"baseMeasurement\":{\"ancestry\":\"L\",\"type\":\"UM\"},\"type\":\"UAD\"}",
      "unitOfMeasureID": "namespace:reference-data--UnitOfMeasure:m:",
      "propertyNames": [
        "ProjectSpecifications[0].ProjectSpecificationQuantity",
        "Parameters[0].DataQuantityParameter"
      ]
    }
  ],
   "data": {
     "TrustedCollectionID": "namespace:work-product-component--CollaborationProjectCollection:CollaborationProjectCollection-911bb71f-06ab-4deb-8e68-b8c9229dc76b:",
     "LifecycleEvents": [
      {
        "EventID": "CreationEvent",
        "Name": "Example Name",
        "DateTime": "2020-02-13T09:13:15.55Z",
        "Remark": "Example Remark",
        "ResourceCollectionID": "namespace:work-product-component--CollaborationProjectCollection:CollaborationProjectCollection-911bb71f-06ab-4deb-8e68-b8c9229dc76b:",
        "WIPResourceCollectionID": "namespace:work-product-component--CollaborationProjectCollection:CollaborationProjectCollection-911bb71f-06ab-4deb-8e68-b8c9229dc76b:"
      }
    ],

   },
   "createUser": "user@email.com",
   "createTime": "2023-03-28T10:31:09.890Z",
   "modifyUser": "user@email.com",
   "modifyTime": "2023-03-28T10:31:09.890Z"
}
  • id: (optional) Previously called ResourceID or SRN which identifies this OSDU resource object without version. Must follow the naming convention: {Data-Partition-Id}:{object-type}:{uuid}.
  • kind: (mandatory) Kind of data being ingested. Must follow the naming convention: {Schema-Authority}:{dataset-name}:{record-type}:{version}.
  • acl: (mandatory) Group of users who have access to the record.
    • acl.viewers: List of valid groups which will have view/read privileges over the record. We follow the naming convention such that data groups begin with data..
    • acl.owners: List of valid groups which will have write privileges over the record. We follow the naming convention such that data groups begin with data..
  • version: (optional) The version number of this OSDU resource; set by the framework.
  • legal: (mandatory) Attributes which represent the legal constraints associated with the record.
    • legal.legaltags: List of legal tag names associated with the record.
    • legal.otherRelevantDataCountries: List of other relevant data countries. Must have at least 2 values: where the data was ingested from and where Data Ecosystem stores the data.
    • legal.status: The legal status. Set by the system after evaluation against the compliance rules associated with the "legaltags" using the Compliance Service.
  • tags: (optional) A generic dictionary of string keys mapping to string value. Only strings are permitted as keys and values.
  • ancestry: (optional) The links to data, which constitute the inputs, from which this record instance is derived. Fragment Description: A list of entity id:version references to record instances recorded in the data platform, from which the current record is derived and from which the legal tags must be derived. This structure is included by the SystemProperties "ancestry", which is part of all OSDU records. Not extensible.
    • ancestry.parents: An array of none, one or many entity references of 'direct parents' in the data platform, which mark the current record as a derivative. In contrast to other relationships, the source record version is required. During record creation or update the ancestry.parents[] relationships are used to collect the legal tags from the sources and aggregate them in the legal.legaltags[] array. As a consequence, should e.g., one or more of the legal tags of the source data expire, the access to the derivatives is also terminated. For details, see ComplianceService tutorial, 'Creating derivative Records'.
  • meta: _(optional) The Frame of Reference meta data section linking the named properties to self-contained definitions. Fragment Description: A meta data item, which allows the association of named properties or property values to a Unit/Measurement/CRS/Azimuth/Time context.
  • data: (optional) Common resources to be injected at root 'data' level for every entity, which is persistable in Storage. The insertion is performed by the OsduSchemaComposer script.
    • data.TrustedCollectionID: Data Platform System of Record trusted (input) resources that make up the Collaboration Project Data Collection.
    • data.LifecycleEvents: Recorded lifecycle events, like lifecycle status transitions and publish WIP events. Fragment Description: An event in the lifecycle of a CollaborationProject containing references to the CollaborationProjectCollections involved at the time of the event.
      • data.LifecycleEvents.EventID: A unique identifier of this event element in a sequence of events as, e.g., in CollaborationProject.
      • data.LifecycleEvents.Name: A user-given event name.
      • data.LifecycleEvents.DataTime: The date and time of the event.
      • data.LifecycleEvents.Remark: A user defined remark associated with this event.
      • data.LifecycleEvents.ResourceCollectionID: The relationship to a CollaborationProjectCollection containing the System of Record resources used by the project.
      • data.LifecycleEvents.WIPResourceCollectionID: The relationship to a CollaborationProjectCollection containing the Work in Progress resources published in the context of the project.
  • createUser: ID of the user who has created the collaboration project
  • createTime: Time at which the collaboration project was created
  • modifyUser: ID of the user who has last updated that specific version of the collaboration project
  • modifyTime: Time at which that version of the collaboration project was updated

Note: modifyUser and modifyTime values are only updated for data-block updates using the PATCH or PUT APIs. Metadata updates using the PATCH API do not create a new record version nor update the modifyTime and modifyUser attributes.