Skip to content

docs: company certificate standard/update & fix merge conflicts#1

Open
PaddseL wants to merge 68 commits into
mainfrom
docs/company-certiciate-standard/update-fix-merge-conflicts
Open

docs: company certificate standard/update & fix merge conflicts#1
PaddseL wants to merge 68 commits into
mainfrom
docs/company-certiciate-standard/update-fix-merge-conflicts

Conversation

@PaddseL
Copy link
Copy Markdown
Owner

@PaddseL PaddseL commented Nov 12, 2025

This version of the PR has the latest upstream changes merged into and the merge conflicts resolved.

Bumped version to v2.4.0

nicoprow and others added 30 commits July 24, 2025 18:09
first draft for revising response codes
Updated state machine image
Explained EDC HTTP response limitations.
- Added explanation for use of Certificate Receiver/Distributor terms.
- Reworked the information regarding the feedbackUrl (also made them part of the normative standard).
- Reworked the Note for the EDC issue with 400 response codes.
Fixed formatting for one **MUST**
Fixed more normative formatting.
Added comments from todays discussion.
Added restriction to one unique asset per API (version/subject)
Such comments should go onto the pull request on github instead
- Added all changes from todays expert group discussion
- refactored naming
- updated all legacy images and changed them from png to svg
@PaddseL PaddseL changed the title Docs/company certiciate standard/update fix merge conflicts docs: company certificate standard/update & fix merge conflicts Nov 12, 2025
@FEILSTE
Copy link
Copy Markdown

FEILSTE commented Nov 18, 2025

@PaddseL Thank you for your consolidation efforts!

Find four points of mine described below, but other than that this gets a confirmation from me:

  • 2.1.1.3 Company Certificate Feedback (and following) -> Please change it back from Status to Feedback, since this is where the Consumer provides Feedback to the Provider. We explicitly changed the naming from Status to Feedback, to make this clear. (Also in the Context change it to Feedback: "context": "CompanyCertificateManagement-CCMAPI-Feedback:1.0.0" (also revert back in 2.1.5.1 and 2.1.5.2)

  • For the Certificate Status Update (in terms of the pull scenario, which was requested during one of the last meetings), please let's use a separate naming:
    2.1.1.4 Company Certificate Available -> perhaps name the heading '2.1.1.4 Company Certificate Available for Pull' -> then as you designed; but perhaps change the context: "context": "CompanyCertificateManagement-CCMAPI-Cert-Available:1.0.0"

  • In 2.1.4.1 Notification API you describe the API as 'Notification API'; I'd argue that this is not a notification API, but just an API, so perhaps it makes sense to drop the "notification" and just call it 'cx-taxo:CompanyCertificateApi'? But I also don't have strong feelings about keeping the naming as is now.

  • I just noticed, that we made a mistake in line 647: "- Business Application Provider MUST offer the push mechanism option to the Certificate Consumer application user, if the Certificate Consumer supports the push mechanism.". Let's drop the Certificate Consumer before the application user -> "- Business Application Provider MUST offer the push mechanism option to the application user, if the Certificate Consumer supports the push mechanism." Since of course it would be the Certificate Provider who uses the push mechanism.

"receiverBpn" : "BPNL0000000002CD",
"sentDateTime" : "2025-05-04T00:00:00-07:00",
"version" : "3.1.0"
"header": {
Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I'm not sure if it is by purpose or maybe I have missed something, but this request and all requests below are slightly different than the ones defined in the openapi spec.

image

You can see that in the API spec there are additional fields like: 'expectedResponseBy' and 'context'. This is the case for ALL endpoints in the standard expect /status
Why are they in the API spec and not mentioned in the standard. Should we support those ? What is their purpose ?

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

@nicoprow I would say remove from the open API spec?

Copy link
Copy Markdown
Owner Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

context is in the example in line 127, relatedMessageId and expectedResponseBy are optional attributes in the message header aspect model, which is referenced in the openAPI yaml.

I would leave it as it is, like this we're reusing the message header from CX0151 but are only specifying the relevant information in the examples.

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

But I think it still should be explained in the standard what this property is if we have it in the spec. Does not matter if it is optional or not.

Ok, for the 'context'. Missed it. Thanks.

```

>**`documentId` explanation**:
> The reasoning why a documentId (the unique ID of EDC asset of the certificate) is to be returned (and not for example the certificate as a return payload) is,
Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

So can I assume that documentI**d** present in the standard (through all endpoints) is always the Id of the asset representing the certificate and the documentI**D** present in the PUSH is only an internal Id of the certificate not related to the asset of certificate ?

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

seems to me that way; I can only speak for the documentId that we added to the pull scenario - that is intended to act as a shortcut for getting the new certificate, so the edc catalog filter returns only exactly this one document and no others

Copy link
Copy Markdown
Owner Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

they are referring to the same ID. the spelling with the capital D is just due to the business certificate aspect model, changing the aspect model is out of scope for this patch release from my understanding.

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I was more asking about the relation between the asset ID representing the certificate and documentId.

So you are saying that the docuemntID present in the request body of the PUSH mechanism is the ID of the asset of the certificate in the EDC ?

Copy link
Copy Markdown
Owner Author

@PaddseL PaddseL Nov 19, 2025

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I also raised that at the initial version of the PR: there is no written requirement on the naming of the asset for the pull mechanism.

When using the push mechanism, the certificate technically and by standard does not need an EDC asset:

Certificate Provider MUST expose company certificates in their catalog when using the pull mechanism.

However, for me it would make sense to implement it that way (asset ID = documentID) when using both mechanisms.

EDIT:
I just realized where the confusion comes from. The wording

documentId (the unique ID of EDC asset of the certificate)

might be misleading here, i would suggest changing it to

documentId (the unique ID of the certificate)

which is more fitting in my opinion.

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

If this comes down to interpretation, it means we need to write it explicitly into the standard. If we end up with non-interoperable solutions, then the standard did not do its job. For the pull scenario we explicitly defined the documentId as the EDC assetId.
Since it appears to be not clear for the push scenario, I would suggest the expert group votes on if this also will be defined that way for the push scenario?

Copy link
Copy Markdown

@leszekszajnowski leszekszajnowski Nov 19, 2025

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Yes exacly! But those IDs are 2 different things.
I can imagine that a provider has the certificate persisted somewhere with this metadata including documentID, and can expose this certificate in 2 different edcs for 2 different use cases (for whatever reason). Then the 'documentID' as reference to asset id makes no sense in this case as there can be multiple asset Ids (?). It also creates a dependency to the asset Id - and what if this changes?

That is why I'm more on saying:

  • documentId (present in CM APIs) = the unique ID of EDC asset of the certificate
  • documentID (present in Certificate metadata) = some internal certificate ID of the provider, not related to the asset id.

Copy link
Copy Markdown
Owner Author

@PaddseL PaddseL Nov 19, 2025

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Sorry but i can't find any explicit requirement for the naming of certificate assets (for the pull mechanism), the only thing i found is the following:

The following sections detail how notification API and certificate assets should be offered in the dataspace. Please note the depicted examples show @id fields with random example UUIDs. Every dataspace participant may use their individual random uuid.

Also, to search for certificate assets with a catalog request, following requirements are specified:

The certificate assets MUST be created by the Certificate Provider in their connector catalog to be consumed by the Certificate Consumer. The property certificateType MUST reference the type of the certificate as defined in 3.2.2 Certificate Type. The property enclosedSites MUST contain all BPNSs for which the certificate is valid. The subject MUST reference cx-taxo:CompanyCertificate. Additionally, the assets MUST contain the type cx-taxo:Submodel and the semanticId specified in 3.1.2 Business Partner Company Certificate Submodel.

Also, this hint:

The certificate assets are identified by the combination of dct:subject, dct:certificateType and dct:enclosedSites. When searching the EDC catalog for a specific asset for which the assetId is unkown, make use of those properties in the catalog filter.

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Sorry but i can't find any explicit requirement for the naming of certificate assets (for the pull mechanism), the only thing i found is the following:

The following sections detail how notification API and certificate assets should be offered in the dataspace. Please note the depicted examples show @id fields with random example UUIDs. Every dataspace participant may use their individual random uuid.

Also, to search for certificate assets with a catalog requests, following requirements are specified:

The certificate assets MUST be created by the Certificate Provider in their connector catalog to be consumed by the Certificate Consumer. The property certificateType MUST reference the type of the certificate as defined in 3.2.2 Certificate Type. The property enclosedSites MUST contain all BPNSs for which the certificate is valid. The subject MUST reference cx-taxo:CompanyCertificate. Additionally, the assets MUST contain the type cx-taxo:Submodel and the semanticId specified in 3.1.2 Business Partner Company Certificate Submodel.

Also, this hint:

The certificate assets are identified by the combination of dct:subject, dct:certificateType and dct:enclosedSites. When searching the EDC catalog for a specific asset for which the assetId is unkown, make use of those properties in the catalog filter.

So for me, this documentID in the Certificate metadata (Push content) is nothing more but an internal ID.
We search those assets using only the criterias you mentioned here.

@leszekszajnowski
Copy link
Copy Markdown

leszekszajnowski commented Nov 19, 2025

  • 2.1.1.3 Company Certificate Feedback (and following) -> Please change it back from Status to Feedback, since this is where the Consumer provides Feedback to the Provider. We explicitly changed the naming from Status to Feedback, to make this clear. (Also in the Context change it to Feedback: "context": "CompanyCertificateManagement-CCMAPI-Feedback:1.0.0" (also revert back in 2.1.5.1 and 2.1.5.2)

Maybe I miss understood you, but do you want to change the endpoint from /status to /feedback ? Because that would be a breaking change.

  • In 2.1.4.1 Notification API you describe the API as 'Notification API'; I'd argue that this is not a notification API, but just an API, so perhaps it makes sense to drop the "notification" and just call it 'cx-taxo:CompanyCertificateApi'? But I also don't have strong feelings about keeping the naming as is now.

That would be also a breaking change, as this is one of the property used to search this asset in the catalog call.

@FEILSTE
Copy link
Copy Markdown

FEILSTE commented Nov 19, 2025

  • 2.1.1.3 Company Certificate Feedback (and following) -> Please change it back from Status to Feedback, since this is where the Consumer provides Feedback to the Provider. We explicitly changed the naming from Status to Feedback, to make this clear. (Also in the Context change it to Feedback: "context": "CompanyCertificateManagement-CCMAPI-Feedback:1.0.0" (also revert back in 2.1.5.1 and 2.1.5.2)

Maybe I miss understood you, but do you want to change the endpoint from /status to /feedback ? Because that would be a breaking change.

  • In 2.1.4.1 Notification API you describe the API as 'Notification API'; I'd argue that this is not a notification API, but just an API, so perhaps it makes sense to drop the "notification" and just call it 'cx-taxo:CompanyCertificateApi'? But I also don't have strong feelings about keeping the naming as is now.

That would be also a breaking change, as this is one of the property used to search this asset in the catalog call.

Yes to both;
But as I wrote, it would be fine for me that the second change is postponed and discussed again to a later date.
To the first point though: feedback and status are two different things. The request API for the pull method now provides the status of the request as a polling mechanism. The feedback api is used by both methods (pull and push), and what is provided to this api is business feedback (accept, reject, ...) to a specific certificate and not the status of a process. This is why I would like to keep the naming change from status to feedback in the standard. We could - to prevent a breaking change - leave the context the same (Status instead of Feedback), but I would like to at least update the wording in the standard to use Feedback instead of Status in all the describing text and the headings. Then a later update could do the breaking change and rename the context.

@PaddseL PaddseL force-pushed the docs/company-certiciate-standard/update-fix-merge-conflicts branch 2 times, most recently from db10d3e to 485baa9 Compare November 21, 2025 13:44
…/update' into docs/company-certiciate-standard/update-fix-merge-conflicts
@PaddseL PaddseL force-pushed the docs/company-certiciate-standard/update-fix-merge-conflicts branch from 485baa9 to c19428b Compare November 21, 2025 14:46
Business Application Provider:

- Business Application Provider **MUST** implement all features of the Certificate Notification API, including the support of the push, the pull and also the feedback and available mechanism.
- Business Application Provider **MUST** offer the push mechanism option to the Certificate Consumer application user, if the Certificate Consumer supports the push mechanism.
Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Can you change it to:

Business Application Provider MUST offer the push mechanism option to the application user, if the Certificate Consumer supports the push mechanism." Since of course it would be the Certificate Provider who uses the push mechanism.

@PaddseL PaddseL force-pushed the docs/company-certiciate-standard/update-fix-merge-conflicts branch from 78f4c8c to 5b9a41d Compare November 25, 2025 18:09
…/update' into docs/company-certiciate-standard/update-fix-merge-conflicts
@PaddseL PaddseL force-pushed the docs/company-certiciate-standard/update-fix-merge-conflicts branch from 5b9a41d to c10f1ca Compare November 25, 2025 18:20
"version": "3.1.0"
},
"content": {
"requestStatus": "IN_PROGRESS"
Copy link
Copy Markdown

@leszekszajnowski leszekszajnowski Nov 26, 2025

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

If the /request is answered with "requestStatus": "IN_PROGRESS", how to answer with a follow up call with
"content": { "documentId": "00000000-0000-0000-0000-000000000001", "requestStatus": "COMPLETED" }

or with REJECTED ?

This is not part of the /status (where there is no requestStatus field call) so how should it work ?

Copy link
Copy Markdown
Owner Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

The request mechanism is designed to be polled. The Certificate Consumer needs to repeatedly call the / request endpoint of the Certificate Provider until the requestStatus is in a final state, therefore COMPLETED or REJECTED. If the final state is COMPLETED, the Certificate Consumer can consume the certificate from the Certificate Provider with the pull mechanism.

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

ok, thanks @PaddseL :)

@FEILSTE
Copy link
Copy Markdown

FEILSTE commented Nov 26, 2025

Thank you @PaddseL ; I won't be able to make it to today's sync, but this gets an approval from MB side.

@leszekszajnowski
Copy link
Copy Markdown

The added comment regarding the locations in the certififcate request is accurate.

Thanks Patrick!

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

4 participants